异步FIFO设计

小鱼FPGA 小鱼FPGA
“格雷码;跨时钟域同步;异步FIFO常用于跨时钟域数据缓冲;参数化可配的异步FIFO”

01 — 异步FIFO结构

异步FIFO的整体结构大致如下:
这里写图片描述

Write_control:控制写操作与满信号(w_full)的判断与产生。

Read_control:控制读操作与空信号(r_empty)的判断与产生。

RAM:双端口数据存取RAM。

Bin_to_gray:二进制码转格雷码模块。用于将读写地址二进制码转成格雷码。

SYN:跨时钟同步模块,即将读地址的格雷码(r_g_addr)向w_clk同步;将写地址的格雷码(w_g_addr)向r_clk同步。主要操作就是通过寄存器打两拍。

02 — 关键点解释

1.跨时钟域传递信号做时钟同步一般通过打两拍。

2.采用格雷码编码,因为格雷码每次跳转只会有一位发生变化,所以如果出现不确定状态也只会有两种状况,即正确变化了和不变。因此在读写时钟不一样的情况下,纵使读写时钟同步过程中出现毛刺,也不会使得FIFO在实际空或者满之后,FIFO却没有正确的产生出空满信号。只有可能是实际没有空或者满,但产生了空满信号,但这对于FIFO的功能不会有影响,只会使得FIFO的读或者写操作暂停。

3.读比写时钟更快,只会只出现实际没满,但误判为满;不会对功能(数据流)造成错误。

4.写比读时钟更快,只会出现实际没空,但误判为空;不会对功能(数据流)造成错误。

公众号回复:“ASYN_FIFO”获取示例设计代码。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_38306698/article/details/82142636