首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于SRAM 和DRAM 结构的大容量FIFO的设计与实现(2)

基于SRAM 和DRAM 结构的大容量FIFO的设计与实现(2)

3.4 时序控制
    写入(或读出)数据的时候,CPLD需要模拟FIFO基本的写(或读)操作时序:CPLD接收到nWEN(nREN)和WCLK(RCLK),即当nWEN(nREN)为低,WCLK(RCLK)为上升沿时,将当前I/O上的数据写入(读出)。在数据写入(读出)RAM 的时候,CPLD应按照HY57V281620E器件的写(读)时序来控制写(读)操作:CPLD首先控制nRAS从高电平变至低电平,选择行地址。再通过控制nCAS选择列地址。这里,当写入(或读出)数据在同一块当中进行,可以保持nRAS低电平,连续选择多列数据操作(也称作快页模式读写)。当数据地址超过块容量,则需要重新选择行地址,然后再进行连续多列数据读写操作。读写使能控制和SRAM类似。通过nOE和BWE(低有效)来控制。
    图5是DRAM主要读写控制时序。可以看出,影响所构建FIFO读写速度的主要因素是tpc,这也是决定DRAM速率的关键所在。因此,所构建FIFO的理论速度也应该接近DRAM最高频率。同时,还必须考虑DRAM 的刷新操作。这里,系统采用nCAS先于nRAS的方式(CBR),即控制nCS、nCAS、nRAS,并保持nWE为高电平,利用芯片内部计数器决定要被刷新的行。HY57V281620E提供了这种自刷新模式,刷新速率由tref来决定,通常为64 ms。在系统或某存储块长时间无操作的情况下,需要定时刷新。以保持数据完整。
4 实验结果和分析
    图6是用QuartusII4.0根据2.3中设立的头尾指针算法设计仿真出来的时序波形。

    可以看出。系统从0x000底开始写数据。当写入3个数据时,EndPos增加到0x003。再进行3个数据读操作,即StartPos增加到0x003,此时,所构建的FIFO是读空状态。可以看到读空信号Empty在这时变为高电平。达到FIFO设计所需要求。
    还需要注意:由于所采用的RAM 只采用一个数据总线作为输入输出,因此在写数据的时候不能进行读操作。而常用FIFO器件可以同时读写。所以,如果要在同一时间内进行读和写操作,那么需要在一个FIFO读写时钟周期内对RAM 进行读写等多个操作,这时所构建的FIFO速率将降低。
     此外,在与DRAM构建高速FIFO时,由于存储块选择需要一定时间操作。因此跨块存储操作在频率较高时会影响正常的数据读写,出现个别数据丢失情况。而且当某段时间进行刷新操作时,有突发数据需要读或写,这时不允许中断。解决这种问题的办法是用一个I/O引脚(nREADY)标识出当前所构建的FIFO是否可读写,如果有上述情况发生。则nREADY为高,可以读写时为低。
    常用的FIFO器件还有半满、接近满、接近空等状态指示,可以在上述构建FIFO的基础上加上简单的逻辑控制,计算StartPos和EndPos之间的差值,根据当前是写操作还是读操作来指示。其他状态信号也可以通过CPLD经由逻辑运算很方便地实现。同时,读和写同步时钟可以不一致,这样就可以很方便地构成同步或者异步两种FIFO,具有很好的可扩展性。
5 结束语
    现在。SRAM的数据传输速率可以达到10 ns以内,DRAM要比SRAM稍慢一些。因此。SRAM通常用于高速缓冲存储。而DRAM则通常用来存储较大的数据。从成本来考虑,DRAM 比SRAM成本要低得多。
    采用本文给出的结构和设计思想。避免了以往主CPU接管RAM时的一系列复杂读写操作。而直接类似FIFO使用,接口简单方便,而且避开了传统FIFO器件容量和成本的限制。本文通过理论分析,实际电路设计调试,已成功实现用两种不同结构的RAM构建FIFO,并应用于多个实时高速信号采集系统中。
继承事业,薪火相传
返回列表