FIFO各端口详解_领航者开发板

1.先入先出(First In First Out ,FIFO)

(1)根据下图讲解FIFO涉及的各引脚
①根据使用的资源类型不同,FIFO可分为两类,一种是使用BRAM(Block RAM)的FIFO,另一种是使用DRAM(Distribute RAM)的FIFO。
其中
BRAM
支持FIFO读写位宽不相同(最常用);
DRAM读写位宽必须相同。

②如图所示,FIFO大体可分为”写模块(Write Clock Domain)“与”读模块(Read Clock Domain)“两部分
③具体引脚定义如下:

  • rst::总复位;
  • wr_rst:写复位;
  • rd_rst:读复位;
  • wr_en:写使能;
  • full:写满信号,FIFO被写满时拉高;
  • almost_full:即将写满信号,在写满之前的一个时钟拉高;
  • Prog_full:可编程的写满信号,即给定一个值,在写数据达到给定值时,该标志拉高;
  • din[n:0]:自定义位宽为n的写入数据;
  • wr_ack:写反馈,对于每个时钟的数据写入,成功后均提供一次反馈值(信号拉高)
  • overflow:写溢出,这个信号用来指示在前一个时钟周期的写请求(wr_en)被拒绝,因为FIFO已经满了;
  • wr_data_count:这个值表明FIFO中已经写入的数据的数目,该信号在写入数据时被触发(在FIFO同步时钟与位宽相同的情况下,该值与rd_data_count的值相等,——注意理解这句话);
  • prog_full_thresh_assert:动态调整prog_full的值;(暂时不太理解具体使用场景)
  • prog_full_thresh_negate:门限值失效;
  • prog_full_thresh:用来设定prog_full的有效时的数据数目,和无效时的数据数目;
  • injectsbiterr:注入单bit错误,略,基本用不上;
  • injectdbiterr:注入双bit错误,略,基本用不上;
  • rd_en:读使能;
  • empty:读空信号,FIFO可读数据为0时拉高;
  • almost_empty:即将读空信号,在FIFO被读空之前的一个时钟拉高;
  • Prog_empty:可编程的读空信号,即给定一个值,在可读数据大于给定值时,该信号拉高;
  • dout[n:0]:自定义位宽为n的读出数据
  • valid:数据有效标志,表示FIFO读出的信号是否有效,有效则拉高;
  • underflow:表明前一次读操作被拒绝了,因为FIFO已经空了;
  • rd_data_count:这个值表明FIFO中可以读取的数据的数目,在读操作的时候,通过对这个数据进 行判断,可以保证当FIFO中没有数据的时候,停止读操作。当发生一次读操作时,会在下一个时钟的上升沿对rd_data_count进行改变。即写入一个数据的时候rd_data_count+1,当读出一个数据的时候,rd_data_count-1;
  • prog_empty_thresh_assert:动态调整prog_empty的值;
  • prog_empty_thresh_negate:门限值失效;
  • prog_empty_thresh:用来设定prog_empty的有效时的数据数目,和无效时的数据数目;
  • sbiterr:配合injectsbiterr使用,略,基本用不上;
  • dbitter:配合injectdbiterr使用,略,基本用不上。

在这里插入图片描述

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值