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

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

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

1 引言
    FIFO(First In First Out)是一种具有先进先出存储功能的部件,在高速数字系统当中通常用作数据缓存。在高速数据采集、传输和实时显示控制领域中,往往需要对大量数据进行快速存储和读取,而这种先进先出的结构特点很好地适应了这些要求,是传统RAM无法达到的。
    许多系统都需要大容量FIFO作为缓存,但是由于成本和容量限制,常采用多个FIFO芯片级联扩展,这往往导致系统结构复杂,成本高。本文分别针对Hynix公司的两款SRAM和DRAM器件,介绍了使用CPLD进行接口连接和编程控制,来构成低成本、大容量、高速度FIFO的方法。该方法具有通用性,可以方便地移植到与其他RAM器件相连的应用中去。
2 基于SRAM的设计与实现
2.1 SRAM结构芯片HY64UD16322A
    静态随机存取存储器SRAM(Static Random Access Memory)是一种非常重要的易失性存储器,它的速度非常快,并且能在快速读取和刷新时保持数据完整性。本系统SRAM器件采用Hynix公司的HY64UD16322A。HY64UD16322A是高速、超低功耗32Mbit SRAM,内部具有2097152个16 bit字容量。采用了CMOS制造工艺、TTL电平接口以及三态输出,具有较大的输入电压和温度范围。同时HY64UD16322A支持DPD(Deep Power Down)模式,保证其在待机模式下功耗进一步降低。

2.2 系统硬件设计
    整个系统采用CPLD作为控制核心器件。CPLD选用Altera公司的MAX7128AETC100-5。MAX7128基于Altera公司第二代MAX乘积项结构,是采用CMOS EEPROM技术制造的EPLD,它集成了2500个可用门,128个宏单元以及100个I/O引脚。
    图1是HY64UD16322A内部结构以及与CPLD接口设计的系统连接图。可以看出,HY64UD16322A由地址译码、逻辑控制模块以及大容量存储阵列组成。CPLD接收到FIFO控制信号,按照该SRAM读写时序要求完成相应的读写操作,再通过所构造FIFO的数据输入输出和状态控制接口返回。

2.3 指针算法程序设计
    系统采用CPLD作为总控制器件。根据FIFO的特点,需要将SRAM按地址存储用程序控制成先进先出的结构。这里采用指针算法来实现这种结构设计:设置两个指针变量StartPos和EndPos,分别作为进入数据头尾指针。当有新数据写入时,数据从上一次存储最后位置的下一个位置开始存放,存入一个数据,EndPos就自动加1,保持与最后数据位置同步。当EndPos超过整个RAM 的最大容量(RAM_SIZE)时,就需要循环返回,从0x000位置存放,一直到EndPos与StartPos重合,这时可以认为RAM 已经存满。同理,读出数据时,起始位置StartPos自动加1。当StartPos超过整个RAM 的最大容量时,就从0x000位置读取,一直到StartPos与EndPos重合,这时可以认为RAM 已经读空。在这两个过程当中,CPLD需要对地址线进行控制。不难发现,写数据的时候Address与EndPos一致。读数据的时候Address与StartPos一致。图2是整个系统写和读时序控制的流程图。

2.4 时序控制
    写入数据的时候,CPLD需要模拟FIFO基本的写操作时序:CPLD接收到nWEN(写使能,低有效)和WCLK(写时钟,上升沿有效),即当nWEN为低,WCLK为上升沿时,将当前I/O上的数据写入。在数据写入RAM 的时候,CPLD应按照HY64UD16322A的写时序来控制写操作。这里,CPLD首先按照上述流程计算出当前数据应存放的地址,然后控制nWE信号,nWE为低时,数据自动写入RAM。然后再写下一位数据。整个写时序如图3所示。

    同理,CPLD接收到nREN(读使能,低有效)和RLCK (读时钟,上升沿有效)时,将最先写入的数据读出。这里,CPLD首先按照读数据流程计算出当前读出数据存放地址,然后控制nOE信号(低电平有效)。数据自动读出RAM。然后再进行下一位数据读出操作。
    可以看出,影响所构建FIFO读写速度的关键因素是twc,该参数也是决定HY64UD16322A速度的主要因素,因此,所构建FIFO的理论速率应该接近HY64UD16322A的速率。
3 基于DRAM的设计与实现
3.1 DRAM 结构芯片HY57V281620E
    一般来说,动态随机存取存储器DRAM(Dynamic Random Access Memory)是由大的矩形存储单元阵列与用来对阵列读和写的支持性逻辑电路,以及维持存储数据完整性的刷新电路组成。尽管操作较SRAM复杂,但由于DRAM具有每存储位单元低成本和高密度的优点,使得它们成为商业领域最广泛使用的半导体存储器。本系统的DRAM芯片采用Hynix公司的134 217 728 bit同步DHY57V281620E。它由4块2097 152x16 bit组成。采用了CMOS制造工艺。LVTTL电平接口。

3.2 系统硬件设计
    同样采用MAX7128AETC100-5完成系统控制。图4是HY57V281620E内部结构以及与CPLD接口的系统连接图。接口控制原理类似2.2所述。不同的是.HY57V281620E内部由行列地址译码、多块大容量存储单元阵列和一些逻辑控制模块组成。

3.3 程序设计
    这里,主要采用2.3中设立头尾两个指针的思想。与SRAM不同的是。DRAM采用的矩形存储单元阵列是由行线和列线来控制。并且内部采用分块结构,这里HY57V281620E由4块存储单元组成,通过BA1和BA0来控制。在写数据操作的时候。当存放数据长度超过当前存储单元容量时。需要CPLD切换至下一存储块进行存储,同样,读操作的时候也存在这种操作,即如果StartPos或者EndPos超过了存储块容量.这里是2097 152,则通过一个模4计数器控制切换至下一个存储块。
继承事业,薪火相传
返回列表