首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于VHDL的异步FIFO设计
来源:本站整理  作者:佚名  2011-08-21 07:41:53




3 解决问题的方法
3.1 同步寄存器
    当信号在不相关或者异步时钟域传输时,在新的时钟域使用这个信号之前必须进行同步,比如异步FIFO的读指针被同步到写时钟域或写指针被同步到读时钟域。新时钟域里的第一个寄存器的作用就是一个同步寄存器。同步装置中寄存器到寄存器路径上的时序裕量可以为亚稳态信号提供稳定时间。由两个寄存器组成的二级同步链如图3所示,它大大的提高了系统的平均无故障工作时间(MTBF),减少了信号传输过程中亚稳态问题的风险。此外,可以通过三级同步进一步增加MTBF值,但在实际中很少需要。

c.jpg


3.2 格雷码(Gray code)计数器
    设计异步FIFO的原则是安全可靠地把数据从一个时钟域传输到另一个时钟域。如果用一个相对于计数器时钟是异步的时钟来取样计数器的值,就要考虑计数器的每一位在哪个范围内变化,每一位都有机会同时发生变化,比如从FFFF变化到0000,这时每个单独的位都处于亚稳态。这种变化意味着读数有可能是0000~FFFF之间的任意一个值。这种情况下FIFO将无法正常工作,于是设计一个格雷码来表示的计数器,
因为格雷码是最小距离码,相邻的码元只有1位不同,它可以避免因延迟不一致而引起的毛刺现象。
    d.jpg
    计数器由触发器组和累加器组成,处理格雷码计数器的办法为:将格雷码转换为二进制码元,然后加1,再将它转换回格雷码并存储,这是解决产生N位格雷码算法棘手问题的一个办法。异步FIFO的写地址和读地址由格雷码计数器来实现计数,读/写指针均用格雷码来表示,格雷码计数器指针原理如图4所示,当FIFO非空或者非满时,读指针或者写指针实现加1操作。

e.jpg


3.3 一种新颖的设计方法产生空满标志
    空满标志位是通过比较读/写指针来判断的,空满标志的判断方法:对于二进制地址来说,如果RAM大小为M,那么它需要的地址位宽度为N=log2 M。假设双口RAM大小是8 B,所需寻址地址位宽度是3 b。如果读/写指针均用3位来表示的话,那么当读/写指针相等时,无法判别是读时针追上了写时针造成读空还是写时针追上了读时针造成写满,这样就无法正确判断空、满标志。为了方便的区分空、满,读/写指针各增加1位,取地址指针宽度为log2M+1,寻址中没有使用的最高位地址标记为MSB,即读/写指针为N+1位,寻址范围为2n。表1为格雷码表示的4位地址指针。

f.jpg

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:154,914.10000 毫秒