怎样解决VGA显示中,读写SRAM冲突?1024*768@60Hz
系统中的一个模块,显示简单的内容MCU<--------->CPLD<-------------->1片SRAM
|
|
VGA
显示分辨率是1024*768@60
使用512k*16bit的SRAM
即一次可以读出两个像素字节
使用verilog
现在只能静态的画面,即只能连续读SRAM
当需要修改画面,就会打断读SRAM,打断VGA显示 MCU干嘛用的?
可以尝试两片SRAM 利用 行场消隐 的时间做写操作, 会影响帧速,但不会很闪。 MCU把图片数据,发给CPLD,然后存入SRAM
最后显示
2片SRAM贵呀
刚开始设想一片SRAM应该可以完成 hell-prototypes 发表于 2014-1-16 17:17
利用 行场消隐 的时间做写操作, 会影响帧速,但不会很闪。
现在MCU发数周期1.6uS
但MCU并不知道现在是否是消隐时间
增加MCU读CPLD状态,判断是否消隐时刻 我之前在做一个类似的项目,也是只用一片SDRAM,发现也是行不通
因为竞争冒险问题,不能同时对SDRAM进行读和写的操作,所以后来就想到用两片 本帖最后由 Oliver 于 2014-1-17 10:16 编辑
你XGA屏幕是8位RGB还是16位RGB哦
如果是8位肯定没问题的,如果是16位的必须用-8的SRAM
另外如果您TFT是16位RGB,那SRAM容量还差256KWORD Oliver 发表于 2014-1-17 10:15
你XGA屏幕是8位RGB还是16位RGB哦
如果是8位肯定没问题的,如果是16位的必须用-8的SRAM
8位色
用的10ns的SRAM,一个周期读出2字节
能指点下吗?
现在我预先读出6字节缓存,然后用类似乒乓操作的方式,送显示
但要写的时候也会被打断读缓存 这个不象C语言那么好搞,谈不上指点
你需要建一个SRAM模型,然后写代码测试,
既然SRAM带宽是RGB的2倍或者以上,那肯定可以的,
慢慢调试代码看波形吧
PS,网上可以下SRAM模型,你的代码必须要做到1CLK读/写,并且读写转换不需要插入NOP 这个当然需要进行带宽计算
按你SRAM跑100MHz带宽为100M*16
那么你显示输入输出的带宽是多少? 你要算下带宽啊,1024*768*60*8bit 输出带宽(还没带上消隐)大概是400多mbps,输出时钟大概50多M。SRAM需要读写两路,所以需要输出带宽的两倍也就是800mbps,因为位宽是16bit 所以频率也是50多M。因为用的CPLD面积小,节省冲裁资源,就用最简单的方法----就是读写时分复用各占25M的时钟去轮询。这样设计刚刚好也没什么压力,但是就是帧缓存要做两帧乒乓操作而你的容量貌似不够 所以早期电脑显卡用的是双口RAM。
页:
[1]