异步fifo(异步fifo verilog)
异步fifo(异步fifo verilog)
1、我们知道,最简易的结构可以由一个实现,只不过不需要地址,每个数据的存取位置都是顺序变化的,遵守先进先出的原则,这一点是与正常的存储器不同的地方。想要了解有关的内容,可以到牛客网多刷刷题,在上面可以找到许多涉及编程的编程题目,刷题页面还提供了详细的解题思路和答案解析,抽空多刷刷题可以不断优化自己的编程技能。牛客网-找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网。回到正题,在设计之前,首先需要明白以下这些问题:何为同步和异步。
2、首先要理清我们所说的“同步”与“异步”的关系。上一篇文章也有提到,“同步”是指时序逻辑的信号变化是基于同一个时钟。若信号是基于不同的时钟变化,比如1和2,这两个时钟没有确定的相位关系。
3、所以,这里所说的异步则是读时钟和写时钟为异步的。对于异步,其中有一个很重要的点在于“跨时钟域处理”。
4、在处理器和外设之间,一般处理器的数据吞吐率很高,使用异步就能避免这种速度差异造成的数据丢失问题为什么要跨时钟域处理呢。因为在同步中,我们知道,产生空满信号时根据_计数产生。
5、但是在异步中,读指针在读时钟域,写指针在写时钟域,所以不能单独使用一个计数器去产生空满信号了。因此,我们需要将写指针同步到读时钟域去产生空信号,将读指针同步到写时钟域去产生满信号。
异步fifo(异步fifo verilog)
1、跨时钟域处理会面临什么问题呢。——建立时间和保持时间的违背,从而产生亚稳态。在两个时钟域的情况下,很容易出现一个时钟域的输出在另外一个时钟域中的时钟上升沿到来时发生改变的现象,从而产生亚稳态。如何进行跨时钟域处理。
2、上小节提到同步,这里首先介绍“同步器”,对于单信号:从慢时钟到快时钟,我们可以通过同步器进行打拍的方式进行同步。如果同步器的第一级触发器产生亚稳态输出,这个亚稳态将在第二级触发器取样前稳定,如图1和图2所示。增加更多级触发器,可以进一步降低亚稳态出现的可能性,但会带来的问题是增加了整体电路的时延,从快时钟到慢时钟,可能会存在数据丢失的情况,必须将源数据进行展宽,以保证在两个连续变化的源数据之间至少有一个目标时钟到达但是对于多信号,不能直接通过同步器去实现同步,可能导致错误采样。
3、比如到000转换时,每一位数据都在变化,由于每个的延时不同,最后可能采到的数据是001、05、100等。因此,需要避免使用二进制计数器实现指针。
4、考虑到格雷码具有一定的特殊性:每次当从一个值变化到另外一个值时,有且只有一位发生变化。因此可以使用格雷码去取代二进制计数器,并且用打拍的方式去同步,只有深度为2的次方才能用格雷码的方式去同步,这样才能保证最大值和最小值只有一位的变化,我们可以将指针转为格雷码同步到另一个时钟域再进行比较。如果同步时钟在计数值转换期间到来,这种编码能够消除绝大部分的错误。
5、在进行同步之后,如何产生空满信号呢。空信号:读指针等于写指针,复位时,或者读指针追上写指针,满信号:写指针等于读指针,写更快,写完一圈追上读指针,
相关推荐
评论列表
暂无评论,快抢沙发吧~
你 发表评论:
欢迎