社区
单片机/工控
帖子详情
为什么在FPGA中读取FIFO时,读的第一个数据和第二个数据之间会有两个时钟周期的延迟呢?
neu_2015
2017-04-30 09:35:35
在使用Modesim仿真时,读FIFO的第一个数和第二个数据之间有2个时钟的延迟,这是什么原因造成的啊
...全文
1605
3
打赏
收藏
为什么在FPGA中读取FIFO时,读的第一个数据和第二个数据之间会有两个时钟周期的延迟呢?
在使用Modesim仿真时,读FIFO的第一个数和第二个数据之间有2个时钟的延迟,这是什么原因造成的啊
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ao_
2018-11-25
打赏
举报
回复
1
用的是Xilinx 的 FPGA 吧, 去看官网提供的官方 IP 用户手册 USER GUIDE 里都有写得很详细, 里面解释了为什么读出的时候要有两个时钟的延迟,和他在片子里的实现有关,牵涉到几个寄存器,需要有几个时钟的时间才能到达输出端口。
uid123
2017-04-30
打赏
举报
回复
还有另一种可能,就是在外部存储器中,文件不是以连续的形式存储在存储器中的,是不连续的,所以在每一段的结尾就会有识别字节和下一段地址的字节放入在这个段的末尾,在读到当前段的跳转时占一个时钟,在读取下一段的首地址时占一个时钟。
uid123
2017-04-30
打赏
举报
回复
没程序段不知道,但大概能估计来,可能我说的也不对。你用的这个应该是上操作系统了,最早在单片机里面有靠FOR循环走一个数值进入忙等待,比方说51控制的LED灯闪烁就可以用for循环进行延时,到了操作系统里面,这种延时被操作系统中的中断功能以wait这种方式交到其他程序种运行来实现延时等待,在接到中断后,这个过程种就有2个运算进行(刚刚好2个时钟),一个是记录当前指针的数据压入堆栈,第二个是等待程序的地址指针出到达当前指针寄存器。所以就能运行其他程序,然后等待时间过后回复之前程序运行。
FPGA
例化的内部RAM
读
取
延迟
差异
之前一直将这种RAM和
FIFO
的操作等同了,其实二者的
数据
读
取
还是有区别的,
FIFO
在
读
请求有效的下一个
时
钟即有
数据
输出;而单口RAM是在地址有效的下下个
时
钟周期
才能得到
读
取
的
数据
。
nios ii
中
读
取
fifo
数据
的软件
一个利用nios ii来进行对
fifo
读
取
的例子,包涵整个工程文件
FPGA
异步
FIFO
vivado工程代码 两种
读
取
模式 含testbench
自编异步
FIFO
,有normal和show-ahead两种模式,testbench仿真结果与xilinx IP一致。
FPGA
中
的
FIFO
主要讲的是
FPGA
中
FIFO
的应用,虽能简单,但也有人不懂,我也是今天才学的这个。。
fpga
通过vivado实现
FIFO
fpga
通过vivado实现
FIFO
单片机/工控
27,517
社区成员
28,798
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章