异步fifo,怎么使用异步fifo 进行跨时钟信号处理
来源:整理 编辑:智能门户 2023-09-03 06:57:51
本文目录一览
1,怎么使用异步fifo 进行跨时钟信号处理
实际上你打?的地方做的是一个打2拍处理这个操作在处理异步问题的时候很常用由于异步fifo的读端和写端时钟不同步,因此需要解决异步时钟域的问题,会导致亚稳态而将异步信号使用自己的时钟打2拍再进行使用可以有效避免亚稳态的传播
2,异步FIFO的国内外研究与需求状况异步FIFO应用在那些领域
异步FIFO主要用于不同时钟域的转换,不同速率的数据匹配,关于FIFO的经典论文可以找Clifford E. Cummings F 和Vijay A. Nebhrajani的论文,可以去http://www.61eda.com/去下载,百度文库里还有相关翻译之后的中文版好像这个问题与有些书上介绍的“fpga存在延迟不可预测的缺陷”这一说法有关。 我在遇到这类问题的时候,采用不修改描述,而是将所选的器件换成cpld(比如max系列)后,仿真就不会出现上述问题了。 但如何在仍然选用fpga的情况下,通过修改描述来避...
3,同步FIFO和异步FIFO各在什么情况下应用
1.首先要明白这里的同步FIFO和异步FIFO的使用场合。当你的设计中只有一个时钟信号的时候,所有的寄存器都使用同一个时钟,他们之间不会产生传输速度不匹配的情况;而当你的设计中存在多个时钟信号,并且需要在这几个时钟域之间传输数据的时候,寄存器会由于时钟信号的频率不匹配而产生数据丢失等情况,这个时候需要用异步FIFO来进行缓存,保证数据能够正确传输,因此一般异步FIFO会包含一个双端口的RAM,用于数据记录,详细地可以参考FIFO的相关资料。这里的异步指的是不同频率/不同相位的时钟信号。而同步FIFO一般只用来作buffer。大概就是这样子。2.FIFO是不会实现数据位数的变换的。它只是实现了数据能被正确的传递。同步就不用说了,异步时,当写满和读空时都有相应的信号告诉发送和接受模块,这样就不会用冲突了3.如果ad送过来的数据随路时钟能跟fpga内部的接口、处理器时钟同步,那么用同步fifo完成数据的缓冲就ok了如果异步,那要用异步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 进行跨时钟信号处理
大家都在看
-
佳能50d自动模式,佳能50d自动对焦系统功能介绍
2022-12-23
-
ipad微博自动播放视频格式,如何在手机成功发送消息视频?
2022-12-27
-
miui设置自动开关机,如何设置定时打开小米手机关机功能?
2022-12-28
-
联想a60 自动重启,本地新增12起病例连续十天无本土病例
2023-01-22
-
手机 禁止程序自动运行,手机用起来感觉卡!可以尝试以下操作
2023-01-27
-
苹果6开机自动截屏,苹果6怎么办?点击截屏即可看!
2023-01-29
-
魅族重启自动优化应用程序,魅族科技成立50年拥三大手机产品
2023-02-06
-
电动车开电车子自动,电动车三大故障:一起来看看这里!
2023-02-10
-
卖车去哪个平台,卖车到哪个平台好
2023-03-04
-
净水器直饮加热一体机,我有直饮净水器要加热需要什么
2023-03-07
-
surface 自动睡眠,电脑设备管理器如何进行电源管理?
2023-03-15
-
江西高科技智能门锁多少钱,智能锁的价格大概是多少家庭用的家里装修想买个智能锁不知道
2023-04-15
-
喵喵机不会自动出纸,打印纸没有字怎么办?
2023-04-22
-
自动获取封面,我建议你用谷歌音乐下载中文歌曲
2023-04-25
-
制水机多少钱一台,电解制水机多少钱一台
2023-05-01