搜索
bottom↓
回复: 8

问个用CPLD TFT屏驱动问题

[复制链接]

出0入0汤圆

发表于 2010-8-18 23:40:26 | 显示全部楼层 |阅读模式
写了个驱动  问题是 屏的CLK最高能多少?

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

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 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 ;

出0入0汤圆

发表于 2010-8-19 08:11:46 | 显示全部楼层
RAM读写是要快点好,TFT时序控制时钟也要分频处理。
只是楼主这样分频,综合器不出警告?行波时钟之类的。

出0入0汤圆

发表于 2010-8-19 08:18:42 | 显示全部楼层
屏的手册一般会给出数据时钟的频率范围的,最好不要超频,不稳定。读SRAM快慢有毛关系呀,数据时钟定了,刷新率就定了,按手册上的参数来是最保险的。

出0入0汤圆

 楼主| 发表于 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时间如果很快的话,就会有大量间隔,应该可以写.

出0入0汤圆

发表于 2010-8-19 09:42:28 | 显示全部楼层
假设CPLD跑50M,TFT只用去了6.5M的带宽,还剩了四十多M的带宽,这还不够MCU用吗?你MCU才能跑多快

出0入0汤圆

发表于 2010-8-19 09:53:04 | 显示全部楼层
50M的主频,MCU这边异步接口的话可以做到10M多点,同步的话那就快好几倍

出0入0汤圆

发表于 2010-8-19 10:54:56 | 显示全部楼层
回复【5楼】fzfh1219
假设cpld跑50m,tft只用去了6.5m的带宽,还剩了四十多m的带宽,这还不够mcu用吗?你mcu才能跑多快
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-12-28 13:10:51 | 显示全部楼层
学习下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 11:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表