FPGA学习之FIFO
来源:互联网 发布:华劲集团待遇知乎 编辑:程序博客网 时间:2024/05/22 09:49
FIFO是一种先进先出的电路,使用在需要产生数据接口的部分,用来存储、缓冲在两个一部时钟之间的数据传输。在一部电路中,由于时钟之间周期和相位完全独立,因为数据丢失概率不为零。使用FIFO可以在两个不同时钟域系统之间快速而方便地传输实时数据。在网络接口、图像处理灯方面,FIFO得到广泛的应用。
FIFO的设计难点:产生可靠的FIFO读写指针和生成FIFO“空”、“满”状态标识。
异步FIFO地址最好使用Gray计数器,这是因为,采用二进制数时又可能变化计数一次所有位都会有所变化,而Gray码计数器就只是计数一次数据变化一次。
1、FIFO“空”/“满”状态
由于FIFO“空”/“满”状态都表明读写指针相等,所以必须要准确区分是空还是满。
解决办法是将FIFO地址空间按最高量为划分成4个象限,每当读写地址相等时,通过对最高两位译码以申城正空的空”/“满”标志。
如果写指针比读指针之后一个象限,则表明FIFO接近满。此时置标志位direction为1,并且锁存其值。相应的等式为:
wire dirset_n = ~(( wptr[N]^rptr[N-1]) & ~(wptr[N-1]^rptr[N]));
如果写指针比读指针超前一个象限,则表明FIFO为接近空状态,如图所示。此时置标志direction为0,并且锁存其值。相应的等式为:
wire dirclr_n = ~((~(wptr[n]^rptr[n-1]) & (wptr[n-1] ^ rptr[n])) | ~wrst_n;
2、FIFO模块结构
(1)顶层模块,对所有FIFO模块进行封装
(2)双口RAM模块,用于实现读写操作
(3)异步比较器,用于实现FIFO读写指针比较,并输出状态信号以生成正确的FIFO空满标志
(4)FIFO写指针与满逻辑控制模块,用于生成FIFO写地址指针并且生成FIFO满标志。
(5)FIFO读指针与空逻辑控制模块,用于生成FIFO读地址指针并且生成FIFO空标志。
代码如下:
0 0
- FPGA学习之FIFO
- FPGA之FIFO
- FPGA学习之路——FIFO读写
- 八、FPGA设计之FIFO
- FPGA FIFO
- FPGA之FIFO设计(一)
- FPGA之FIFO设计(二)
- FPGA的IP核之FIFO
- FIFO的FPGA实现
- FPGA FIFO REFERENCE
- FIFO的FPGA实现
- FPGA学习之路
- FPGA学习之SPI
- FPGA之为什么要学习FPGA?
- 异步FIFO及FPGA设计
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- 异步FIFO的FPGA实现
- ubuntu手动安装redmine并且设置成为开机启动
- 自定义控件专题之二:滑动开关
- NYOJ 586 疯牛
- SQL储存过程(增删改查)
- python文件读写操作
- FPGA学习之FIFO
- java中equals()方法应该具有的特性
- TI C66x DSP 四种内存保护问题 -之- 针对CPU访问外存(DDR3 or MSM)时的内存保护问题
- 报ORA-00845:MEMORY_TARGET not supported on this system故障解决
- Java中static成员的用法
- Python基础编程(一)基础知识
- 我的Vimrc
- VMware下Ubuntu与宿主Windows共享文件夹
- COCOS2D-X 3.0 文字按钮 不显示 或者闪动