首页 > 编程知识 正文

异步fifo sdc约束如何设置,异步fifo优点

时间:2023-05-04 22:57:33 阅读:60275 作者:463

实现异步FIFO的基本原理总结1、概要2、基本原理1、写入读写空闲2、安静的提取编码3、FIFO实现方案1、整体模块分割2、读写FIFO控制子模块内部框图

一.概述

在上一篇文章中,我们通过调用XILINX提供的FIFO IP核心来熟悉FIFO的具体功能。 之后,在verilog HDL中实现了异步FIFO,更全面地理解了FIFO的基本原理。 由于知道总体设计是具体实现的前提,在HDL中实现异步FIFO之前,后续FIFO实现的基本知识和FIFO内部结构模块设计等总结如下。

二、基本原理1、写指针和读空在上面,FIFO有两个非常重要的输出信号,w_full (写指针赶上读指针; 和r_empty (读取空信号),即读取指针赶上写入指针,并且FIFO读/写使能可以将这两个信号设置为任一确定条件。 一般来说,将FIFO深度的地址空间扩展1位,判断该扩展位是满还是空。

例如,以16深的FIFO为例,地址空间由4位表示,扩展后为5bit。 因此,空信号的写入或读出的判断条件可以表示为:

{~w_addr[4],w _ addr [ :0 ] }==r _ addr [ 433600 ]时,写入已满;

w _ addr [ 4:0 ]=r _ addr [ 4:0 ]时读空;

这也是FIFO深度为2的整数次幂的原因,因为FIFO空间是循环寻址。

2、安静的取码异步FIFO读写时钟非同源,在判断写满还是空时,涉及跨时钟字段读取多位地址信息,所以将w_addr和r_addr安静的取码根据安静的引出码的特性,前后传输的数据只有单比特不同,因此可以用单比特信号2拍打的方式大幅降低副稳定度(例如

安静的抽屉码的具体实现比较简单:

assignw_gaddr=(waddr1) waddr。

必须先安静地提取地址信号进行编码,因此必须注意写入和空闲信号的判断条件。

{~w_gaddr[4:3],w _ g addr [ 233600 ] }==r _ g addr [ 433600 ]时为满写;

w _ g addr [ 4:0 ]=r _ g addr [ 4:0 ]时读取空。

三、FIFO实现方案1、总体模块划分FIFO内部主要由读写FIFO控制模块和双口RAM模块组成,如下图所示。 其中,写入RAM的使能信号w_RAM_en由写入数据使能和写入满信号决定,在写入满时不能向RAM写入数据。

2、读写FIFO控制子模块内部框图FIFO控制子模块内部实现框图如下图所示。 这里,潮湿的抽屉编码模块是组合逻辑,并且使用两个寄存器的目的是使输出的读写RAM地址与产生的潮湿的抽屉编码地址同步。

需要注意的是,w_gaddr和r_addr必须拍打2拍才能避免准稳态。 虽然是2拍前的状态,但是读写指针即使继续移动,也能判断读写的状态。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。