简单的存储器应用案例
需求:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一款PDA上原本使用的320*240/3.5寸液晶由于停产,现需要在不更改原设计PDA部分程序的前提下,制作一块转接板,将旧液晶的接口时序和一款新液晶的接口时序匹配起来。
解决方案:
如图1所示,系统硬件只需要一款CPLD做接口时序的转换匹配以及数据流的控制,一片SRAM作为数据缓存。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图1
如图2所示,根据旧LCD的行频、场频、同步时钟(大约160ns)对数据帧进行译码,相应的存储到256K*16bit的SRAM存储器中。新的LCD驱动逻辑也由CPLD产生,它所需的显示数据也都从前端缓存下来的SRAM中读取。SRAM的地址和读写控制部分逻辑由两个LCD模块产生的地址来控制,SRAM数据总线在写入时,交由旧LCD数据进行连接;而SRAM数据在需要读出的时候,交由新的LCD进行驱动。
图2
如图3所示,在旧LCD的时钟LCDWR_CLK上升沿锁存需要写入SRAM的数据,并发起写SRAM操作;在新的LCD的时钟LCDRD_CLK下降沿后发起读SRAM操作,之所以在下降沿发起读操作,是要在LCDRD_CLK的上升沿的建立保持时间内数据时保持稳定的。
图3
当然,图3的示意对两个LCD时钟只是一个可能的相位关系,在实际应用中很可能LCDWR_CLK的上升沿和LCDRD_CLK的下降沿同时来到,或者说他们的操作请求同时产生,那么此时的内部逻辑会优先执行读操作,并且保证在LCDRD_CLK的上升沿一个系统时钟周期(50MHz,即20ns,远满足相应的建立时间要求)内数据是稳定的。
SRAM的读写地址分别由两个模块来控制,读模块和写模块分别有自己的地址发生器(寄存器),他们分别根据数据流的情况对地址的累积变化进行控制,保证对应的行数据和列数据有序的存放在固定的地址空间中。对于这种液晶缓存的存储器应用项目,比较常见的地址映射方式如图4所示,由于该项目的液晶显示分辨率为320*240,因此存储器的低9位地址对应着显示区域的行,0-319为使用的地址区,而存储器的高8位地址对应着显示区域的列,0-239为使用的地址区。这么映射地址的一个好处是寻址方便,定位容易,缺点也显而易见,就是无法充分利用地址空间。另一种地址映射方法相对比较简单,就是从把数据从0地址依次顺序叠加,这在只是简单缓存或显示的应用中是可行的,该项目就可以使用这种存储方式。
图4
文章评论(0条评论)
登录后参与讨论