为什么在FPGA中读取FIFO时,读的第一个数据和第二个数据之间会有两个时钟周期的延迟呢?

neu_2015 2017-04-30 09:35:35
在使用Modesim仿真时,读FIFO的第一个数和第二个数据之间有2个时钟的延迟,这是什么原因造成的啊
...全文
1605 3 打赏 收藏 转发到动态 举报
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个时钟),一个是记录当前指针的数据压入堆栈,第二个是等待程序的地址指针出到达当前指针寄存器。所以就能运行其他程序,然后等待时间过后回复之前程序运行。

27,517

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧