我是靠谱客的博主 俏皮钢笔,最近开发中收集的这篇文章主要介绍FIFO的读写,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.同步时钟FIFO的读写(用同一个时钟)
具体的工程可见FPGA的工程中:
不空的标志出现从第一个数据写入,最后一个数据读出的时间;
满标志出现在最后一个数据的写入,到第一个数据的读出之前的时间段;
















2.异步步时钟FIFO的读写:
异步FIFO实例,对FPGA片内DCFIFO进行读写测试,FIFO的读写时钟不同,且写入位宽为8bit,读出位宽为16bit
1.在本设计中FIFO的读写使能通过计数器隔离开,先写后读。
2.设计中仿真数据没有32位,故满标志一直未满;
3.1
图一整体的读写时序
3.2写时序的开始ba数据开始
写操作时序
(fifo_wren通过计数器给出)12.5M时钟写入宽度为8bits

3.2读时序
FIFO的读时钟是写时钟的4倍,即50M,读出的位宽设置为16bits;
4说明:
从图一可以得知FIFO的读写时钟频率与位宽没有直接的关系,FIFO就是一个装置,读时钟越快,读的宽度越大,把FIFO的读空的时间越短而已;














5.fifo的读写使能都为1,边读边写(个人理解);、

fifo_controller uut_fifo_controller(
.rst(!rst_n), // input rst
.wr_clk(wr_clk), // input wr_clk//PLL输出12.5MHz时钟
.rd_clk(rd_clk), // input rd_clk//PLL输出50MHz时钟
.din(fifo_wrdb), // input [7 : 0] din
.wr_en(1), // input wr_en
.rd_en(1), // input rd_en
.dout(fifo_rddb), // output [15 : 0] dout
.full(fifo_full), // output full
.empty(fifo_empty) // output empty
);
边读边写的整体时序
说明:边读边写的特点
1.写时序的时间=读时序的时间
2.与读写时钟的频率无关,不是读时钟50M,数据就是50M,
具体要计算读出数据的频率,
写时钟频率*写数据宽度= 读数据宽度*读出数据的频率( 不是读时钟频率
如:12.5*writ_dth(8)=rd_width(16)*6.25( 不是50M)








最后

以上就是俏皮钢笔为你收集整理的FIFO的读写的全部内容,希望文章能够帮你解决FIFO的读写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部