首页 > 资讯 > 知识 > 异步fifo,怎么使用异步fifo 进行跨时钟信号处理

异步fifo,怎么使用异步fifo 进行跨时钟信号处理

来源:整理 时间:2023-09-03 06:57:51 编辑:智能门户 手机版

本文目录一览

1,怎么使用异步fifo 进行跨时钟信号处理

实际上你打?的地方做的是一个打2拍处理这个操作在处理异步问题的时候很常用由于异步fifo的读端和写端时钟不同步,因此需要解决异步时钟域的问题,会导致亚稳态而将异步信号使用自己的时钟打2拍再进行使用可以有效避免亚稳态的传播

怎么使用异步fifo 进行跨时钟信号处理

2,异步FIFO的国内外研究与需求状况异步FIFO应用在那些领域

异步FIFO主要用于不同时钟域的转换,不同速率的数据匹配,关于FIFO的经典论文可以找Clifford E. Cummings F 和Vijay A. Nebhrajani的论文,可以去http://www.61eda.com/去下载,百度文库里还有相关翻译之后的中文版
好像这个问题与有些书上介绍的“fpga存在延迟不可预测的缺陷”这一说法有关。 我在遇到这类问题的时候,采用不修改描述,而是将所选的器件换成cpld(比如max系列)后,仿真就不会出现上述问题了。 但如何在仍然选用fpga的情况下,通过修改描述来避...

异步FIFO的国内外研究与需求状况异步FIFO应用在那些领域

3,同步FIFO和异步FIFO各在什么情况下应用

1.首先要明白这里的同步FIFO和异步FIFO的使用场合。当你的设计中只有一个时钟信号的时候,所有的寄存器都使用同一个时钟,他们之间不会产生传输速度不匹配的情况;而当你的设计中存在多个时钟信号,并且需要在这几个时钟域之间传输数据的时候,寄存器会由于时钟信号的频率不匹配而产生数据丢失等情况,这个时候需要用异步FIFO来进行缓存,保证数据能够正确传输,因此一般异步FIFO会包含一个双端口的RAM,用于数据记录,详细地可以参考FIFO的相关资料。这里的异步指的是不同频率/不同相位的时钟信号。而同步FIFO一般只用来作buffer。大概就是这样子。2.FIFO是不会实现数据位数的变换的。它只是实现了数据能被正确的传递。同步就不用说了,异步时,当写满和读空时都有相应的信号告诉发送和接受模块,这样就不会用冲突了3.如果ad送过来的数据随路时钟能跟fpga内部的接口、处理器时钟同步,那么用同步fifo完成数据的缓冲就ok了如果异步,那要用异步fifo来完成时钟域的过渡。

同步FIFO和异步FIFO各在什么情况下应用

4,同步FIFO和异步FIFO各在什么情况下应用

当你的设计中只有一个时钟信号的时候,所有的寄存器都使用同一个时钟,他们之间不会产生传输速度不匹配的情况;而当你的设计中存在多个时钟信号,并且需要在这几个时钟域之间传输数据的时候,寄存器会由于时钟信号的频率不匹配而产生数据丢失等情况,这个时候需要用异步FIFO来进行缓存,保证数据能够正确传输,因此一般异步FIFO会包含一个双端口的RAM,用于数据记录,详细地可以参考FIFO的相关资料。这里的异步指的是不同频率/不同相位的时钟信号。而同步FIFO一般只用来作buffer。大概就是这样子。2.FIFO是不会实现数据位数的变换的。它只是实现了数据能被正确的传递。同步就不用说了,异步时,当写满和读空时都有相应的信号告诉发送和接受模块,这样就不会用冲突了
1.首先要明白这里的同步fifo和异步fifo的使用场合。当你的设计中只有一个时钟信号的时候,所有的寄存器都使用同一个时钟,他们之间不会产生传输速度不匹配的情况;而当你的设计中存在多个时钟信号,并且需要在这几个时钟域之间传输数据的时候,寄存器会由于时钟信号的频率不匹配而产生数据丢失等情况,这个时候需要用异步fifo来进行缓存,保证数据能够正确传输,因此一般异步fifo会包含一个双端口的ram,用于数据记录,详细地可以参考fifo的相关资料。这里的异步指的是不同频率/不同相位的时钟信号。而同步fifo一般只用来作buffer。大概就是这样子。2.fifo是不会实现数据位数的变换的。它只是实现了数据能被正确的传递。同步就不用说了,异步时,当写满和读空时都有相应的信号告诉发送和接受模块,这样就不会用冲突了3.如果ad送过来的数据随路时钟能跟fpga内部的接口、处理器时钟同步,那么用同步fifo完成数据的缓冲就ok了如果异步,那要用异步fifo来完成时钟域的过渡。

5,请高手指教异步fifo的设计方法

1.你说这个设计的空满信号不能及时释放,这个就是问题,因为正确的FIFO设计应该是空满信号能及时标记,以阻止读信号或者写信号,防止underrun和overrun的出现。我不是很清楚你说的gray encoded fifo是那种FIFO,最好能有代码或者功能的spec,这样的话能说得更清楚些。2.信号过不同时钟域用2个寄存器是为了防止亚稳态的出现,这个情况感觉主要出现在握手信号等。数据线和地址线过不同时间域情况比较少,不过如果需要也应当通过2个寄存器来保证信号的正确性。
1.你说这个设计的空满信号不能及时释放,这个就是问题,因为正确的FIFO设计应该是空满信号能及时标记,以阻止读信号或者写信号,防止underrun和overrun的出现。我不是很清楚你说的gray encoded fifo是那种FIFO,最好能有代码或者功能的spec,这样的话能说得更清楚些。2.信号过不同时钟域用2个寄存器是为了防止亚稳态的出现,这个情况感觉主要出现在握手信号等。数据线和地址线过不同时间域情况比较少,不过如果需要也应当通过2个寄存器来保证信号的正确性。
我不是高手当我想说几句我的理解 FIFO是一定有满空的 首先要了解他的硬件结构,通过指针来判断他的空满 其实你因该了解你做的FIFO的SRAM的大小 不然你怎么判断什么时候是满或空的标志呢 只有自己心理有数才能限制好设计,其实有一个简单的方法就是当读的指针和写的指针相等的时候哪个时候就是满空的时候,现在的FIFO为了不出错误都是在满或空的前几位就开始判断为满空了 你可以借鉴以下
是不是指空的时候读,满的时候写的情况呢?不知道你具体的情况是什么,一般除了空满信号外,会有将空或者将忙的信号来提示。

6,异步fifo中同步为什么要用两级触发器

异步FIFO通过比较读写地址进行满空判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理,将写地址同步到读时钟域再和读地址比较进行FIFO空状态判断(同步后的写地址一定是小于或者等于当前的写地址,所以此时判断FIFO为空不一定是真空,这样更保守),将读地址同步到写时钟域再和写地址比较进行FIFO满状态判断(同步后的读地址一定是小于或者等于当前的读地址,所以此时判断FIFO为满不一定是真空,这样更保守),这样可以保证FIFO的特性:FIFO空之后不能继续读取,FIFO满之后不能继续写入。  大多数情形下,异步FIFO两端的时钟不是同频的,或者读快写慢,或者读慢写快,这时候进行地址同步的时候,可能会有地址遗漏,以读慢写快为例,进行满标志判断的时候需要将读地址同步到写时钟域,因为读慢写快,所以不会有读地址遗漏,同步后的读地址滞后当前读地址,所以可能满标志会提前产生。进行空标志判断的时候需要将写地址同步到读地址,因为读慢写快,所以当读时钟同步写地址的时候,必然会漏掉一部分写地址(写时钟快,写地址随写时钟翻转,直到满标志出现为止),那到底读时钟会同步到哪个写地址?不必在意是哪一个,我们关注的是漏掉的地址会不会对FIFO的空标志产生影响。比如写地址从0写到10,期间读时钟域只同步到了2,5,7这三个写地址,漏掉了其他地址。同步到7地址时,真实的写地址可能已经写到10地址,相当于“在读时钟域还没来得及觉察的情况下,写时钟域可能偷偷写了数据到FIFO去”,这样在比较读写地址的时候不会产生FIFO“空”读操作。漏掉的地址也没有对FIFO的逻辑操作产生影响。  我们可以对异步FIFO的地址采用binary编码,这样并不影响异步FIFO的功能,前提是读写地址同步时能够保持正确。这种情况在功能仿真时完全正确,问题只有到时序仿真时才会遇到。毛刺可以说是异步电路的杀手,一个毛刺被触发器采样后会被放大,然后传播,导致电路功能出错。binary编码的地址总线在跳变时极易产生毛刺,因为binary编码是多位跳变,在实现电路时不可能做到所有的地址总线等长,address bus skew必然存在,而且写地址和读地址分属不同时钟域,读写时钟完全异步,这样地址总线在进行同步过程中出错不可避免,比如写地址在从0111到1000转换时4条地址线同时跳变,这样读时钟在进行写地址同步后得到的写地址可能是0000-1111的某个值,这个完全不能确定,所以用这个同步后的写地址进行FIFO空判断的时候难免出错。  这个时候gray码体现了价值,一次只有一位数据发生变化,这样在进行地址同步的时候,只有两种情况:1.地址同步正确;2.地址同步出错,但是只有1位出错;第一种正确的情况不需要分析,我们关注第二种,假设写地址从000->001,读时钟域同步出错,写地址为000->000,也就是地址没有跳变,但是用这个错误的写地址去做空判断不会出错,最多是让空标志在FIFO不是真正空的时候产生,而不会出现空读的情形。所以gray码保证的是同步后的读写地址即使在出错的情形下依然能够保证FIFO功能的正确性,当然同步后的读写地址出错总是存在的(因为时钟异步,采样点不确定)。这里需要注意gray码只是在相邻两次跳变之间才会出现只有1位数据不一致的情形,超过两个周期则不一定,所有地址总线bus skew一定不能超过一个周期,否则可能出现gray码多位数据跳变的情况,这个时候gray码就失去了作用,因为这时候同步后的地址已经不能保证只有1位跳变了。  另外需要将地址总线打两拍,这是为了避免亚稳态传播,理论上将打两拍不能消除亚稳态现象,因为时钟异步,亚稳态不可避免,但是可以极大降低亚稳态传播的概率,低频情况下甚至STA不需要分析这里的异步时序,因为寄存器都可以在一拍内将亚稳态消除,恢复到正常0/1态。而在高频情况下则不一定,尤其在28nm工艺以下,需要检查两级触发器的延迟,保证延迟低,这样可以提高Tr,提高系统MTBF。
我是来看评论的
文章TAG:异步怎么使用进行异步fifo进行跨时钟信号处理

最近更新

  • 720p分辨率,720p是多少分辨率720p分辨率,720p是多少分辨率

    720p是多少分辨率2,高清标准中的720P分辩为多少3,解释显示器720P4,分辨率720P的好不好5,什么是720P什么是1080P什么是1080I6,1080i720p的分辨率各是多少多少哪个更清晰1,720p是多少分辨率128.....

    知识 日期:2023-09-03

  • 苹果 对数据线要求,苹果13数据线怎么变了苹果 对数据线要求,苹果13数据线怎么变了

    苹果数据线有多长?原创苹果数据线有多长?“苹果数据线路贵。”苹果手机需要原装数据线和充电器吗?苹果数据线内也有筹码游戏,可能有人还记得,早在30针“大平头”时代,苹果数据line还没这么贵.....

    知识 日期:2023-09-03

  • cmb,cmb是什么cmb,cmb是什么

    cmb是什么2,cMB是什么意思3,CMB指的是什么4,什么是cmb文件5,cmb是什么东西啊6,什么是CMB色彩季节理论1,cmb是什么执行命令的2,cMB是什么意思1、美国中华医学基金会2、立方米(cubicmeter)3、是.....

    知识 日期:2023-09-03

  • 达芬奇机器人手术的价格达芬奇机器人手术的价格

    垄断高价美国的利润手术-1达芬奇,达芬奇手术机器人。达芬奇机器人手术费用可以抵扣税款吗?no达芬奇机器人手术费用不在医保报销范围内,达芬奇机器人手术有什么优点?手术机器人优点"达芬奇.....

    知识 日期:2023-09-03

  • nullmax,本人菜鸟下面哪里错了nullmax,本人菜鸟下面哪里错了

    本人菜鸟下面哪里错了2,sql语句的问题3,如何判断一个字段是否为空4,C那位高手能帮忙看一下哪出问题了1,本人菜鸟下面哪里错了如果我没看错的话,你的p->n是0,自然无法打印element2,sql语句的问.....

    知识 日期:2023-09-03

  • 进化算法,进化规划算法的MATLAB程序进化算法,进化规划算法的MATLAB程序

    进化规划算法的MATLAB程序2,你好我想知道像差分进化算法蚁群算法蜂群算法量子进化算法3,请问遗传算法和进化算法是什么关系4,什么是进化计算它包括哪些内容它们的出发点是什么5,各种进化算.....

    知识 日期:2023-09-03

  • 数据脱敏规则数据脱敏规则

    数据脱敏是指某些敏感信息被脱敏规则转化,实现敏感隐私数据。数据脱敏技术上可分为静态数据脱敏和动态数据脱敏,数据脱敏有高级数据通信吗?数据脱敏数通科技提供的解决方案,支持多种数据-0.....

    知识 日期:2023-09-03

  • 智能机器人的应用有哪些,生活中有哪些智能机器人的应用智能机器人的应用有哪些,生活中有哪些智能机器人的应用

    手册智能有哪些应用?人工智能的应用领域有哪些?手动智能有哪些应用场景?人工智能在生活中有哪些应用?人工智能的应用领域有哪些?智能机器人、劳动智能劳动智能相关领域的特点有哪些应用1。.....

    知识 日期:2023-09-03