FPGA FIFO测试

一、同步FIFO写满后继续写会怎样?

module top(
    input clk,
    input rst_n
    );
    
    reg [7:0] data;
    reg [3:0] state;
    reg wr_en;
    reg rd_en;
    always @(posedge clk or negedge rst_n)
    begin
        if(!rst_n) begin
            state <= 4'd0;
            data <= 8'd0;
            wr_en <= 1'd0;
            rd_en <= 1'd0;
        end        
        else begin
            case(state)
                4'd0: begin
                    if(data == 8'd40) begin
                        state <= state + 4'd1;
                        wr_en <= 1'd0;
                    end
                    else begin
                        data <= data + 8'd1;
                        wr_en <= 1'd1;
                    end
                end
                4'd1: begin
                    rd_en <= 1'd1;
                end
            endcase
        end
    end
    
    wire [7:0] fifo_dout;
    wire full;
    wire empty;
    fifo fifo_inst(
        .clk(clk),
        .srst(!rst_n),
        .din(data),
        .wr_en(wr_en),
        .rd_en(rd_en),
        .dout(fifo_dout),
        .full(full),
        .empty(empty)
    );
    
    ila_0 ila_0_inst(
        .clk(clk),
        .probe0(wr_en),
        .probe1(rd_en),
        .probe2(data),
        .probe3(full),
        .probe4(empty),
        .probe5(fifo_dout)
    );

在这里插入图片描述
写满后full拉高,继续写对FIFO没有产生影响,FIFO深度为32,写入FIFO的值为1-40,读出FIFO的值为1-32,当FIFO为空的时候继续读,数据仍为32保持不变。

二、同步FIFO,写8位数据读4位数据

在这里插入图片描述
写入 01、02、03、04、05
读出来 0、1、0、2、0、3、0、4、0、5

三、同步FIFO,写16位数据读4位数据

在这里插入图片描述
写入 0123、1234、2345、3456、4567
读出来 0、1、2、3、1、2、3、4、2、3…

四、同步FIFO,写4位数据读8位数据

在这里插入图片描述
写入 1、2、3、4、5、6、7、8.。。。
读出来 12、34、56、78.。。。

五、同步FIFO,写4位数据读16位数据

在这里插入图片描述
写入 1、2、3、4、5、6、7、8.。。。
读出来 1234、5678.。。。

六、异步FIFO

FIFO深度16
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值