首页 > 范文大全 > 正文

异步FIFO的设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇异步FIFO的设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

《电子器件杂志》2014年第三期

1FIFO状态判断设计

1.1写、读指针的产生过程在FIFO的工作过程中,数据的写入和读出是按顺序进行的,一旦给其上电,写\读指针都指向第1个存储单元,每当收到写\读指令时,写\读指针都加1,当写\读指针指向存储器最后一个单元时,写\读指针又回到初始位置,形成环形地址[5]。由于在写入前一个数据的同时要对下一个数据进行预充电,所以,在写入第1个数据时是不需要预充电的,这样写计数器输出的写地址指针要从0开始计数,在写时钟处于低电平期间进行数据写入,在写时钟上升沿时发生跳变,而读地址指针则是从1开始计数的,在读时钟的上升沿发生跳变。本设计的FIFO容量为1MB(Mbyte),因此地址指针有20bit。FIFO的工作原理如下:刚开始时,FIFO是处于复位(RESET)状态的,读写地址都相等且为0,FIFO处于空状态,读信号被阻塞,只能进行写操作,每进行一次,写指针就递增1。在对FIFO进行最后一次写操作时,写指针的值由19回到0,此时读写地址指针又相等,FIFO处于满状态。此后写信号被阻塞,只能进行读操作,同理,每进行一次,读指针就递增1,直到读指针再次回到0,此时FIFO再次回到空状态。综上所述,FIFO的空满状态都是在读、写地址指针相等时才会出现,于是判断空满状态的问题就归结于如何在读、写地址指针相等时,判断出FIFO是处于空状态还是满状态。传统的方法是直接将读、写指针通过一个减法器进行运算,将运算结果与一个预设值进行比较:若(读指针地址—写地址指针<=预设值)时,为满状态,相反为空状态。此法存在两个弊端。首先,采用减法器这样复杂的运算逻辑会降低FIFO的运行效率。其次,由于运算结果是和一个预设值进行比较,会产生一个相对误差,其准确性也会降低。本设计采用为写\读地址指针分别附加一位的方法来判断FIFO的状态,当写\读指针遍历一次存储器地址时,则增加的这一位改其“0”,“1”状态,通过判断写、读指针该改变位是否相等,从而正确判断空满状态。即写逻辑产生WP,WE,WF三组指针,读逻辑产生RP,RE,RF三组指针,如图2所示[6]。这里先给出结论:WF要比WP提前一个写时钟周期,WE要比WF延迟半个周期,其波形示意如图3;RF要比RP提前半个读时钟周期,RE要比RP提前一个读时钟周期。其波形示意图如图4。

1.2空满状态判断当WE[20:0]=RE[20:0]时,存储器处于空状态,EF低电平有效,空状态比较逻辑图如图5所示[7]。图5中,将经过寄存器输出的信号WET组地址指针和经由写地址产生模块输出的RE组地址指针进行比较。这个寄存器是由写时钟W_clk控制的,高电平有效,主要起到同步信号的作用,减少亚稳态出现的概率[8]。空标志EF的寄存器由读时钟R_clk控制,低电平有效,当开始向存储器最后一个空间内读出数据时,那么在读时钟的下降沿触发时,空标志EF降为低电平。此后对存储器进行写入操作,即在写时钟的上升沿触发时,空标志EF再次升为高电平。另外,为了避免读时钟W_clk的高电平和R_clk的低电平同时到来的情况,EF寄存器的置位端由写时钟和其延迟后的信号产生的窄脉冲来控制[9]。由于EF寄存器在读时钟为低电平时将数据输出,所以RE指针在读时钟的下降沿不能发生跳变,而只能在上升沿跳变,因此得出结论RE比RP提前一个周期。当WF[19:0]=RF[19:0],但WF[20]≠RF[20],即增添的附加位不相等时,存储器处于满状态,满状态比较逻辑图如图6所示。同理,将经过寄存器输出的信号RFT组地址指针和经由写地址产生模块输出的WF组地址指针进行比较。当开始向存储器最后一个空间内写入数据时,那么在写时钟的下降沿触发时,满标志FF降为低电平。此后对存储器进行读操作,即在读时钟的上升沿触发时,满标志FF再次升为高电平。由于FF寄存器在写时钟为低电平时将数据输出,所以WF指针在写时钟的下降沿不能发生跳变,而只能在上升沿跳变,因此,WF要比WP提前1个周期。如图7和图8所示为使用Verilog仿真得到的写操作过程波形图,在写时钟W_clk的某个下降沿来临时,满状态出现,此时FF变为低电平。

2转发功能

FIFO的转发能力是指当FIFO从一个系统接入另一个系统时,不论当前的读地址指针处于什么位置,第2个系统都能够将FIFO存储器中的数据重新读取。这样,FIFO中存入的数据可以被多次读出。如图9所示,读地址指针RT处于低电平时有效,在读时钟上升沿到来时,系统重新读出存储数据。

3测试结果分析

芯片容量为1MB(Mbyte),数据宽度为18bit,经0.18μmCMOS工艺流片。如表1所示,在电源电压为5V的情况下,使用J750测试系统对芯片进行测试,输出的最高电压为2.8V,输出的电流为20mA左右。根据测试结果,支持异步读写及转发功能,读写速度超过160MHz,其转发功能测试,状态标志位功能测试均可达到100MHz,且状态判断准确。

4结束语

本设计采用分别为读、写地址增添一位地址的方法,使得读写逻辑分别输出三组地址,这与原先最直接的做法相比,明显提高了fifo的速度,提高了状态判断的准确性。转发功能的实现使得FIFO在一些特定的环境下具有很好的使用价值。

作者:王凯孙锋单位:江南大学物联网工程学院中国电子科技集团公司58所