40130064 发表于 2010-8-18 23:40:26

问个用CPLD TFT屏驱动问题

写了个驱动问题是 屏的CLK最高能多少?

自己写的 用的屏推荐是6。5M      我用25M显示正常,但VS有200多HZ                   50M CLK的话就显示不了 基本上是白屏

但 25M从RAM读数的话是不是太慢了这问题怎么解决?

40130064 发表于 2010-8-18 23:48:46

一个我经常用的分频程序


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity clk_div is
port(clk50M:in std_logic;------时钟信号50MhZ
       clk25M:out std_logic;----频率信号输出25M
      clk5M:out std_logic;----频率信号输出5M
       clk2M5:out std_logic;------频率信号输出2M5
       clk500k:out std_logic;-----频率信号输出500kHz
      clk250k:out std_logic;-----频率信号输出250kHz
      clk10k:out std_logic);----频率信号输出10K


end;
architecture one of clk_div is
signal clk25M_1:std_logic;
signal clk5M_1:std_logic;
signal clk2M5_1:std_logic;
signal clk500k_1:std_logic;
signal clk250k_1:std_logic;
signal clk10k_1:std_logic;
begin
-------------------------------2分频产生25M时钟
process(clk50M)
begin
if clk50M'event and clk50M='1' then
       clk25M_1<=not clk25M_1;
end if;
end process;
----------------------------------10分频产生5MHz时钟
process(clk50M)
variable count:integer range 0 to 4;
begin
if clk50M'event and clk50M='1' then
if count=4 then
       clk5M_1<=not clk5M_1;
       count:=0;
else
   count:=count+1;
end if;
end if;
end process;
-------------------------------2分频产生2.5M时钟
process(clk5M_1)
begin
if clk5M_1'event and clk5M_1='1' then
       clk2M5_1<=not clk2M5_1;
end if;
end process;
---------------------------------10分频产生250KHz时钟
process(clk2M5_1)
variable count:integer range 0 to 4;
begin
if clk2M5_1'event and clk2M5_1='1' then
if count=4 then
       clk250k_1<=not clk250k_1;
       count:=0;
else
   count:=count+1;
end if;
end if;
end process;

---------------------------------10分频产生250KHz时钟
process(clk5M_1)
variable count:integer range 0 to 4;
begin
if clk5M_1'event and clk5M_1='1' then
if count=4 then
       clk500k_1<=not clk500k_1;
       count:=0;
else
   count:=count+1;
end if;
end if;
end process;

---------------------------------10分频产生25KHz时钟
process(clk250k_1)
variable count:integer range 0 to 12;
begin
if clk250k_1'event and clk250k_1='1' then
if count=12 then
       clk10k_1<=not clk10k_1;
       count:=0;
else
   count:=count+1;
end if;
end if;
end process;

--------------------------------------
clk25M<=clk25M_1;
clk5M<=clk5M_1;
clk2M5<=clk2M5_1;
clk500k<=clk500k_1;
clk250k<=clk250k_1;
clk10K<=clk10K_1;
end ;

suipeng70 发表于 2010-8-19 08:11:46

RAM读写是要快点好,TFT时序控制时钟也要分频处理。
只是楼主这样分频,综合器不出警告?行波时钟之类的。

fzfh1219 发表于 2010-8-19 08:18:42

屏的手册一般会给出数据时钟的频率范围的,最好不要超频,不稳定。读SRAM快慢有毛关系呀,数据时钟定了,刷新率就定了,按手册上的参数来是最保险的。

40130064 发表于 2010-8-19 08:47:22

我的RGB数据从MCU送到SRAM,发送完要显示的内容后。TFT再从SRAM读一屏的RGB数。和TFT CLK有关系,因为要和行同步。 行频CLK决定了TFT再从SRAM读数的速度。

其实算一下,6。5M 1S可以刷 60 屏数据, 不会闪。

但MCU写到SRAM比较慢,TFT读SRAM时不能写.


TFT读SRAM时间如果很快的话,就会有大量间隔,应该可以写.

fzfh1219 发表于 2010-8-19 09:42:28

假设CPLD跑50M,TFT只用去了6.5M的带宽,还剩了四十多M的带宽,这还不够MCU用吗?你MCU才能跑多快

again 发表于 2010-8-19 09:53:04

50M的主频,MCU这边异步接口的话可以做到10M多点,同步的话那就快好几倍

suipeng70 发表于 2010-8-19 10:54:56

回复【5楼】fzfh1219
假设cpld跑50m,tft只用去了6.5m的带宽,还剩了四十多m的带宽,这还不够mcu用吗?你mcu才能跑多快
-----------------------------------------------------------------------

有几个概念不能混淆,6.5MHz只能是DotClock,不是CPLD的主时钟。
要兼顾MCU接口,RAM接口,都要使用主时钟去同步。你有胆敢玩异步的?
还有各个接口位宽,解像度,色阶数,是否播动画...
时序!还是时序!!

hunningtu 发表于 2011-12-28 13:10:51

学习下。
页: [1]
查看完整版本: 问个用CPLD TFT屏驱动问题