手撕FIFO:首字下降模式和标准模式的差异与PG0

本文讨论了FIFO操作中的读写策略,强调了读写使能的时机、标准模式与首字下降模式的差异,以及数据计数在不同情况下的准确性。特别提到了Vivado和ISE工具在空满信号控制上的区别,以及两种模式在深度判断上的实际效果。
摘要由CSDN通过智能技术生成

        在对FIFO操作的时候,读写使能要掌握好时序,而读写数据可以提前一些赋值,不要卡太死,这是因为总要有读写使能才能写入数据的,早到一点总比晚到了写不进去要好。

        其次,在先入先出模式中。RD_DATA会和RD_EN的变化同步,建议是:

        标准模式下,在延迟读使能一拍以后的时刻可以调用这部分数据;

        标准模式:

                                        

        而首字下降模式可以同步进行:

    assign WRITE_SDRAM_DQ = FIFO_RD_DATA;
//FIFO_RD_EN
always @(posedge Sys_clk or negedge Rst_n) begin
    if(Rst_n == 'd0) begin
        FIFO_RD_EN <= 'd0;
    end else if(STATE == STATE_WR_NOW) begin
        FIFO_RD_EN <= 1'b1;
    end else begin
        FIFO_RD_EN <= 'd0;
    end

空满信号和计数信号在vivado 中的控制要比在ISE里精确很多。

        对于使用更准确的数据计数(使用额外逻辑)的 FWFT 实现,当 FIFO 中存在字时,data_count 保证准确,但当其接近空或几乎为空或在空 FIFO 上发生初始写入时除外。在这些情况下,data_count 最多可能有两个字不正确。
        从写入接口的角度来看,data_count 始终准确,一旦第一个字写入 FIFO,就会立即报告。

        然而,从读取接口的角度来看,data_count 输出可能会过量报告最多两个字,直到almost_empty 和empty 均已置低为止。

        这是由于第一个字失效 FIFO 中空置低的延迟造成的(参见表 3-18)。此延迟允许 data_count 反映可能尚无法读取的写入字。
        从读取接口的角度来看,数据计数在置空到空时开始从多报到准确报转变。此转换在almost_empty 解除断言后完成。在almost_empty 置低之前,data_count 信号可能会表现出以下行为:

         • 从读取接口的角度来看,data_count 可能会过度报告最多两个字。

        先入先出模式和标准模式之间也有差异。

标准模式的空满信号:

首字下降: :

可见:

        空信号在首字下降模式下要晚一个时钟周期拉低。

 标准模式

首字下降: :

对于满信号,标准模式下的判断要更苛刻,这是因为:

        同样设置128深度,而首字下降的实际深度要比标准模式深一些(130),所以直接使用full来判断不太好。

同样可以看出两种模式的区别,读信号的给予时间和信号出来的时间。

标准模式:

首字下降: 

        这一点在PG057中有体现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值