收藏 分享(赏)

一种基于格雷码异步FIFO设计与实现.doc

上传人:fmgc7290 文档编号:6206979 上传时间:2019-04-02 格式:DOC 页数:12 大小:161.50KB
下载 相关 举报
一种基于格雷码异步FIFO设计与实现.doc_第1页
第1页 / 共12页
一种基于格雷码异步FIFO设计与实现.doc_第2页
第2页 / 共12页
一种基于格雷码异步FIFO设计与实现.doc_第3页
第3页 / 共12页
一种基于格雷码异步FIFO设计与实现.doc_第4页
第4页 / 共12页
一种基于格雷码异步FIFO设计与实现.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、飞天雄鹰没有希望的明天,就是在浪费今天。主页博客相册|个人档案|好友| i 贴吧查看文章【转】异步 FIFO 实现(汇总二)2012-03-08 12:27转载自 zjh20tz最终编辑 zjh20tz.一种基于格雷码的异步 FIFO 设计与实现时间:2008-02-18 来源: 作者:吴昆 黄坤 点击: 1558 字体大小:【大 中 小】1 引言FIFO(First IN First Out)先进先出电路是一种实现数据先进先出的存储器件,普遍用作数据缓冲器。FIFO 的基本单元是寄存器,作为存储器件,FIFO 的存储能力是由其内部定义的存储寄存器的数量决定。FIFO 通常是双端口的存储器,其

2、中一个端口用于写入数据,而另一个端口用于读出数据。可以同时对存储器字存储单元进行写入和读出操作。它的数据吞吐率是普通 RAM 的两倍。FIFO 型的存储器不需要由地址来存取数据。需要由另外的信号线(或标志)来指明存储器的内容状态。在现代数字系统设计中,FPGA(现场可编程门阵列)器件凭借其灵活、方便、资源丰富的优势在很多领域得到了广泛应用。随着其片内存储资源的增加,把FIFO 器件集成到其中是一种方便地代替专用芯片的实现方法。根据异步逻辑的设计方法,引入乒乓操作的设计技巧,给出了一种新颖的异步 FIFO 设计方案,解决 FPGA 多时钟系统中不同时钟域传输数据的问题。2 异步 FIFO 的设计

3、与实现2.1 通用异步 FIFO 的基本结构在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步 FIFO 是解决这个问题一种简便、快捷的解决方案。使用异步 FIFO 可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步 FIFO 得到了广泛的应用。异步 FIFO 常用于存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步 FIFO 电路便成为一个难点。下面将介绍解决这一问题的一种方法

4、,其结构框图如图 1 所示。本系统 FPGA 内部 FIFO 的存储介质是一块双端口的 RAM,具有两个独立的读写时钟,整个系统也分为两个完全独立的时钟域读时钟域和写时间域。FIFO 的控制逻辑执行所有的读写指针管理,产生各种状态标志。在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟域部分由读地址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互比较产生空/满标志。本设计的外部引脚如表 1 所示。这种 FIFO 设计当中有两个难点:一是如何正确地设计空、满信号的控制电路;二是如何同步异步信号,使触发器不产生亚稳态。下一小节将具体阐述解决方法。2.2 FIFO 的

5、读写控制空/满标志的产生是 FIFO 的核心部分,如何正确设计这部分逻辑,直接影响到FIFO 的性能。空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么时候,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地址的时候,满标志应该有效,表示此时 FIFO 已满。在满信号有效时若继续向 FIFO 写数据,应根据设计的要求对数据作保持或抛弃重发处理,空标志的产生也是如此。最直接的做法是,采用读写地址相比较来产生空满标志。当读写地址的差值等于一个预设值的时候,空/满信号被置位。这种实现方法逻辑简单,但它是减法器形成的一个比较大的组合逻辑,因而限制了 FIFO

6、的速度。所以,一般只采用相等不相等的比较逻辑,避免使用减法器。即:空标志1)bnext。格雷码gnext 经寄存器输出格雷码指针 ptr。这种方法采用了两组寄存器,虽然面积较大,但是有助于提高系统的工作频率。2.2 空/满标志产生逻辑正确地产生空/满标志是设计任何类型 FIFO 的关键点。空/满标志产生的原则是:写满而不溢出,能读空而不多读。传统的异步 FIFO 把读写地址信号同步后再进行同步比较以产生空满标志,由于读写地址的每一位都需要两级同步电路,大量使用寄存器必然要占用很大的面积。这种方法不适合设计大容量的 FIFO。当读、写指针相等也就是指向同一个内存位置时,FIFO 可能处于满或空两

7、种状态,必须区分 FIFO是处于空状态还是满状态。传统的做法是把读、写地址寄存器扩展一位,最高位设为状态位,其余低位作为地址位。当读写指针的地址位和状态位全部吻合时,FIFO 处于空状态;当读写指针的地址位相同而状态位相反时, FIFO 处于满状态。传统的异步 FIFO 工作频率低、面积大。下面将介绍一种产生空/满标志的新方法。随着设计规模的不断增大,一个系统中往往包含多个时钟。时钟的增多给异步时钟之间的接口带来了很多的问题。使用异步 FIFO 可以在两个不同的时钟系统之间方便快速的传输数据。异步时钟是一种先进先出的电路,用来存储,缓存在两个异步时钟域之间的数据。在异步电路中,由于时钟之间周期

8、和相位的完全独立,因而数据的丢失概率不为 0.异步 FIFO 的基本结构:异步双端口 ram,和控制逻辑。异步双端口 ram 采用 altea 公司 quaruts ii 定制 ip 核实现,定制一个存储深度为 128bit 的双端口 ram。控制逻辑:空满逻辑的原理是,判定满标志时,将读指针用写时钟同步后采样,与当前写指针一起融入满判定逻辑;判定空标志时,将写指针用读时钟同步后采样,与当前读指针一起送入空判定逻辑。当同步读指针时,实际的读指针可能已经发生变化。这样从写操作的角度考虑,会发生少读的现象,即条件(这个条件后面讨论)满足,判定 FIFO 满,实际上FIFO 可能未满,因为读指针可能

9、仍在变化。同理,当同步写操作时,实际的写指针可能已经发生变化,因为读操作方看到的只是被同步的或者是被延迟的写指针,从而认定 FIFO 空,但其实仍在进行写操作,写指针仍在变化,但读操作方是“看不见”的。简而言之就是,当 FIFO 未满时,写操作方可能称 FIFO 已经满了,当 FIFO 未空时,读操作方可能认为 FIFO 已经空了。这样的效果好像是 FIFO 存储空间动态的缩小了,但是这毫无坏处,因为,如果在 FIFO 真正的空时,去读,或者当FIFO 真正的满时,去写,这才是真正的坏处。接下来我们分析判断空满所谓的条件:存储器的空满状态指示是整个 fifo 设计的核心,其基本原则是在任何时候

10、都不会出现异步 FIFO 对同一存储单元进行读/写操作。当读,写指针相等的时候,要么是存储器满,要么是存储器空,必须加以区分。区分的方法有很多,一种是:当写指针追赶读指针时,输出几乎满标志,当读指针和写指针相等时,且几乎满标志有效,则判定 FIFO 为满;当读指针追赶写指针时,输出几乎空标志,当读指针和写指针相等时,且几乎空标志有效,则判定 FIFO 为空。另一种方法是:通过对读写指针进行编码,将格雷码指针转换为二进制指针。这里 fifo 的深度为 2N,而指针采用 N+1 位。当二进制编码中的最高位不一致,而其他位都相等时,FIFO 满,当二进制编码完全相等的时候,FIFO 空。注意,指针不

11、是影响空满标志的唯一因素,产生空标志是读操作引起的空满标志相等,产生满标志的条件是,写操作引起的读写指针相等。例如:存储深度为 16bit,即 24,读写指针宽度为 5 位。上电复位后,读地址和写地址都为 00000,向 fifo 中写入 16 个数据,写指针变为 10000,而读地址仍然为00000,则 FIFO 满;假设再进行 16 次读操作,写指针为 10000,读指针为10000,这就是空标志;再进行 16 次写操作使得写指针变为 00000,而读指针仍然为 10000,则 FIFO 满。空标志判断的 VHDL 语言描述:architecture behave of empty_cmp

12、 isbeginempty=1 when wr_addr(n-1 downto 0)=rd_addr(n-1 downto 0)else0;end behave;满标志判断的 VHDL 语言描述:architecture behave of full_cmp isbeginfull=1 when(wr_addr(n-1)/=rd_addr(n-1)and (wr_addr(n-2 downto 0)=rd_addr(n-2 downto 0)else 0;end behave;同步逻辑:同步逻辑就是加一个寄存器对上一个状态进行一下缓存,这样造成了一个时钟周期的延时。beginprocess(clk)beginif rising_edge (clk) thenaddr_s=temp;temp=addr_a;end if;end process;end behave;格雷码计数器参见另一篇博文:整体 RTL 图如下:kongmanpanding

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报