电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

使用VerilogHDL实现异步FIFO设计与实现FIFO读写时序

使用VerilogHDL实现异步FIFO设计与实现FIFO读写时序_第1页
1/11
使用VerilogHDL实现异步FIFO设计与实现FIFO读写时序_第2页
2/11
使用VerilogHDL实现异步FIFO设计与实现FIFO读写时序_第3页
3/11
使用Verilog HDL 实现异步FIFO 设计与实现 FIFO 读写 时序 在现代IC 设计中,特别是在模块与外围芯片的通信设计中,多时钟域的情况不可避免。当数据从一个时钟域传递到另一个域,并且目标时钟域与源时钟域不相关时,这些域中的动作是不相关的,从而消除了同步操作的可能性,并使系统重复地进入亚稳定状态[1]。在有大量的数据需要进行跨时钟域传输且对数据传输速度要求比较高的场合,异步FIFO是一种简单、快捷的解决方案。 异步FIFO 用一种时钟写入数据,而用另外一种时钟读出数据。读写指针的变化动作由不同的时钟产生。因此,对FIFO 空或满的判断是跨时钟域的。如何根据异步的指针信号产生正确的空、满标志,是异步FIFO 设计成败的关键。本文提出一种新颖的异步FIFO 设计方案,它通过先比较读写地址并结合象限检测法产生异步的空/满标志,再把异步的空/满标志同步到相应的时钟域。通过仿真验证,该方法是稳定有效的。 1 异步信号传输问题的分析 在一个ASIC 或 FPGA 库 中,每 种触 发 器 都 有时序要求。对于 使用上升 沿 触 发 的触 发 器 来 说 ,建 立 时间 (Setup Time)是在时钟上 升 沿 到来 之前 ,触 发 器 数据保 持 稳定的最 小 时间 ; 而保 持 时间 (Hold Time)是在时钟上 升 沿 到来 之 后 ,触 发 器 数据还 应该保 持 的最 小 时间 [2]。如图 1 所示,在时钟上升沿前后的这个窗口内数据应该保持不变,否则会使触发器工作在一个不确定的状态,即亚稳态。当触发器处于亚稳态,且处于亚稳态的时间超过了一个时钟周期时,这种不确定的状态将会影响到下一级的触发器,最终导致连锁反应,从而使整个系统功能失常。当一个信号跨越某个时钟域时,对新时钟域的电路来说它就是一个异步信号。由于异步信号之间的时序是毫无关系的,因此必然存在Setup Time/Hold Time 冲突。为了避免亚稳态问题,采用如图 2 所示的双锁存器法[3],即在一个信号进入另一个时钟域前,将该信号用两个锁存器连续锁存两次,最后得到的采样结果就可以消除亚稳态。 消除亚稳态只是保证了信号电平的稳定,要在不同时钟域中准确传输数据还需要一个接口电路。异步FIFO 就是一种不同时钟域之间传递多位数据的常用方法。 2 异步FIFO 设计 异步FIFO 是一种先进先出电路,用在需要实时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。主要由双口存储器、读地址产生逻辑...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

使用VerilogHDL实现异步FIFO设计与实现FIFO读写时序

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部