-
1.为什么要用fifo
模块时钟不同步,可能造成数据错误,多用在跨时钟域传输。FPGA程序中模块与模块之间存在数据交互的不同步,并且数据量较大的时候,FIFO几乎为FPGA工程师提供了最佳的解决途径。当然在实际项目工程中,这种不同步可能是源于跨时钟域的数据交互、也可能是由于各个模块数据处理速度的不平衡等很多因素所造成的
2.Fifo端口
Fifo读写端口独立,在写端口具有写满标志信号full、使能信号we_en,写时钟wr_clk,输入数据端口din,写端口数据量wr_data_coun;读端口具有读空信号empty,rd_en,rd_clk,dout, rd_data_count。
3.fifo中存在的问题
(1)写满读空产生的原因
在设计读写机制时不考虑写端口的full信号和wr_data_count写入多少数据的指示信号,也不考虑读端口的empty信号和rd_data_count可读多少数据的指示信号。跟蓄水池原理一样
(2)如何避免写满读空
在进行写操作时可以根据wr_data_cout加入逻辑判断,在进行读操作时根据empty信号使用组合逻辑来产生rd_en信号,如果使用时序逻辑会产生延迟。
深度计算:
Fifo模式
1.Standard FIFO和First-word-Fall-Through两种读模式,FWFT(First-word-Fall-Through)可以不需要读命令,自动的将最新数据放在dout上。
2.就是异步复位信号持续时间需要多长的问题,理论上 1 个较小的 时钟周期(读写时钟周期中较小的那个,这里说的是周期较小的,也就是频率高的那个的) 就行,实际使用推荐至少保持有 3 个或着设置同步级数个周期。这里提到的同步级数就是在 IP 设置的第一个界面中的 Synchronization Stages,这个只有在选择独立时钟 FIFO 类型时才 会有这个设置,在相同时钟 FIFO 类型下是没有这个设置的。
FIFO原理解析及应用
最新推荐文章于 2024-07-19 17:42:39 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)