欢迎光临散文网 会员登陆 & 注册

基础知识学习-1.异步 FIFO 的设计(1)理论

2023-03-08 21:23 作者:旷世奇才k  | 我要投稿

1.Random Access Memory:ram 特点:随时存取,速度快

RAM 存储器可以进一步分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)两大类。SRAM 具有快速访问的优点,但生产成本较为昂贵,一个典型的应用是缓存。而 DRAM 由于具有较低的单位容量价格,所以被大量的采用作为系统的主存。

2.读写指针

异步FIFO由于读写时钟独立,使用RAM作为缓冲区,引入读指针和写指针,写指针指向下一个要被写入的地址,读指针指向下一次要被读出的地址。同步FIFO是wptr和rptr在同一时钟上升沿变化,异步FIFO则是各自独立的时钟上升沿变化

3.判断标志

FULL、EMPTY。在缓冲区满时,产生 FULL 信号,以阻塞数据继续向 FIFO 写入。而在缓冲区空时,产生 EMPTY 信号,以阻塞数据继续从 FIFO 中读出。外部的读写控制器将从标志信号 FULL、EMPTY 决定继续写入或读出。

初始想法空信号:读指针追上写指针,满信号:写指针追上读指针。具体如何设计是FIFO设计的重点

异步FIFO有两种解决方案

1). 采用握手协议来保证在采样过程中指针不变,但是这样的做法效率很低

2). 通过读时钟来采样写指针,写时钟来采样读指针,然后通过采样的写指针和读指针判断是否为 EMPTY,采样的读指针和写指针判断是否为 FULL

一种同步fifo的读写时序
一种异步fifo的读写时序

4.深入考虑-亚稳态问题

写时钟采用读时钟(或者反过来)会涉及到亚稳态问题,造成标志位判断错误的问题,用下图的一个采样电路举例-类比读写时钟的相互采样

采样电路

两个是D触发器,图中的a_clk和b_clk是异步的时钟,b_clk在采样data_a时,如果data_a数据发生改变,set-hold时间内触发器的输入信号发生变化,输出结果是不可知,就是亚稳态(metastability),下图中b_clk上升沿采样时data_a处在s-h time中,会导致得到的data_b产生亚稳态。

采样电路产生的亚稳态时序

亚稳态发生的概率用参数MTBF(mean time between failures平均无故障时间间隔)来衡量,MTBF表示触发器采样失败的时间间隔,

采样失败的时间间隔,分辨率越高,采样时钟频率越小,异步信号触发频率越小,最终失败时间间隔越长,另外两个参数和触发器的电器参数有关系

其中分辨率指metastability resolution time,公式就不具体展开讲解,解决方法是采用双锁存器(b_clk多加一个d触发器),MTBF*MTBF

双锁存器法

双锁存器的问题:引入两级锁存器的同时带来了对输入信号的一级延时,再如 a_clk 的频率比 b_clk 的频率高,将可能出现因为 dat 变化太快,而使 b_clk 无法采样的问题。即在信号从快时钟域向慢时钟域过渡的时候,如果信号变化太快,慢时钟将可能无法对该信号进行正确的采样,所以在使用双锁存器法的时候,应该使原始信号保持足够长的时间,以便另一个时钟域的锁存器可以正确地对其进行采样。之后再分析这个问题


基础知识学习-1.异步 FIFO 的设计(1)理论的评论 (共 条)

分享到微博请遵守国家法律