您的位置 首页 电源

用FPGA芯片完成高速异步FIFO的一种办法

用FPGA芯片实现高速异步FIFO的一种方法-现代集成电路芯片中,随着设计规模的不断扩大。一个系统中往往含有数个时钟。多时钟带来的一个问题就是,如何设计异步时钟之间的接口电路。异步 FIFO(Firs

  现代集成电路芯片中,跟着规划规划的不断扩大。一个体系中往往含有数个时钟。多时钟带来的一个问题便是,怎么规划异步时钟之间的接口电路。异步 FIFO(First In First Out)是处理这个问题的一种简洁、方便的处理方案。运用异步FIFO能够在两个不一起钟体系之间快速而方便地传输实时数据。在网络接口、图画处理等方面,异步FIFO都得到广泛的运用。异步FIFO是一种先进先出的电路,运用在数据接口部分,用来存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,因为时钟之间周期和相位彻底独立,因而数据的丢掉概率不为零。怎么规划一个牢靠性高、速度高的异步FIFO电路便成为一个难点。

  1 异步FIFO的作业原理及逻辑框图

  本文依据实践作业的需求。给出了一种运用片内RAM结构FIFO器材的规划,要点强调了规划有用。牢靠的握手信号FULL和EMPTY的办法。并在LATTICE公司的FPGA芯片LFXP2-5E上完成。LFXP2-5E归于LATIICE公司XP2系列的一款,他选用优化的FlexiFLASH结构。内部包括有根据查找表的逻辑、分布式和嵌入式存储器,锁相环(PLL)。工程预制的源同步I/0以及增强的SysDSP块。有166Kbits的EBRSRAM。运用其内部的EBRSRAM能够完成必定容量的异步FIFO.而无需独自购买FIF0器材。

  由图1能够看出:异步FIFO一般由四个模块构成:数据存储单元,写地址发生模块,读地址发生模块,标志位发生模块。整个体系分为两个彻底独立的时钟域—读时钟域和写时钟域:在写时钟域部分由写地址发生逻辑发生写操控信号和写地址:读时钟域部分,由读地址发生逻辑发生读操控信号和读地址;在标志位发生模块部分,由读写地址彼此比较发生空/满标志。异步FIFO的操作过程为:在写时钟的上升沿。当写使能有用时,将数据写入到双口RAM中写地址对应的方位中:在读时钟的上升沿,当读使能有用时。则按先进先出次序读出数据。在FIFO写满或读空的状况下。分别对满标志FuLL或空标志EMPTY信号置位。来表明FIFO的两种特别状况。

  图1异步FIFO逻辑框图

  2 异步FIFO的VHDL完成读时钟

  2.1 FIFO规划的难点

  怎么同步异步信号,使触发器不发生亚稳态是规划异步FIFO的难点。国内外处理此问题的较老练办法是对写地址膜地址选用格雷码,本文也直接选用格雷码。异步FIFO规划的另一个难点是怎么判别FIFO的空/满状况。为了确保数据正确的写入或读出。有必要确保异步FIFO在满的状况下。不能进行写操作:在空的状况下不能进行读操作。通常状况下将存储器组织成一个环形链表。

  满/空标志发生的原则是:写满不溢出。读空不多读。即不管在什么状况。都不该呈现读写地址一起对一个存储器地址操作的状况。在读写地址持平或相差一个或多个地址的时分,满标志应该有用。表明此刻FIFO已满,外部电路应中止对FIFO发数据。在满信号有用时写数据应依据规划的要求,或坚持、或扔掉重发。同理,空标志的发生也是如此。为了更好的判别满/空标志。选用在FIFO本来深度的基础上添加一位的办法,而由该位组成的格雷码并不代表新的地址。也便是说3位格雷码可表明8位的深度,若再加一位最高位MSB,则这一位加其他三位组成的格雷码并不代表新的地址,也便是说格雷码的0100表明7,而1100依然表明7,只不过格雷码在通过一个以0位MSB的循环后进入一个以1为MSB的循环,然后又进入一个以0位MSB的循环。其他的三位码依然是格雷码。举例说明:一个深度为8字节的FIFO怎样作业(运用已转换为二进制的指针),N=3,指针宽度为N+I=4。开端Rd_ptr_bin和 Wr_ptr_bin均为“0000”。此刻FIFO中写入8个字节的数据。

  Wr_ptr_bin=“1000“,Rd_ptr_bin=“0000”。当然,这便是满条件。现在,假定执行了8次的读操作。使得 Rd_ptr_bin=“1000”,这便是空条件。别的的8次写操作将使Wr_ptr_bin等于“0000”,但Rd_ptr_bin依然等于 “1000”,因而,FIFO为满条件。

  由以上可知。满标志的发生条件为:写指针赶上读指针。即写满后,又从零地址开端写直到赶上读指针,这时期读写指针的最高位不同,其他位相同,这便是满条件。空标志的发生条件为:复位或者是读指针赶上写指针。即在写指针循环到第二轮时读指针赶上写指针,这时读写指针的高低位均相同,这便是空条件。

  2.2异步FIFO的VHDL言语完成

  以下为本程序的中心部分

  程序1格雷码计数器的完成



  3 仿真验证

  根据以上的剖析结合实践本文结构了一个8192×8的FIFO,用MODELSIM进行仿真。对该异步FIFO编写测验向量进行仿真,如图2所示。

  

  图2仿真波形图

  图2中,WClk为写时钟,Writeen_in为写使能,Full_out为满信号,Data_in为数据入,RClk为读时钟,ReadEn_in为读时能,Empty_out为空信号,Data_out为数据出,Clear_in为体系清零信号。上面部分为写地址发生模块部分的信号波形,从图2中能够看出。在写时钟的上升沿。在写时能为高有用期间擞据开端输入到RAM里边,而在读时钟的上升沿,在读时能有用时,在本仿真时刻的195ns处。开端输出数据。将程序下载到LATT%&&&&&%E公司的FPGA芯片中,通过测验验证,体系的时钟频率可达33MHz。

  4 总结

  本文首要研讨了用FPGA芯片完成异步FIFO的一种办法。具体论述了空,满标志信号的发生办法。依照以上思维所规划的异步FIFO已经在实践电路中得到了运用。实践证明他能够处理大多数异步FIFO电路常见的过错。一起添加了体系的牢靠性和运用灵活性。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/168913.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部