异步FIFO

本文介绍了FIFO的两种类型:同步FIFO和异步FIFO,重点讲解了异步FIFO,其中读写时钟可能具有不同的频率或相位。还提供了异步FIFO的Verilog代码示例及相应的testbench。
摘要由CSDN通过智能技术生成

一 FIFO分类

1 同步FIFO:读写时钟频率相位都相同
2 异步FIFO:读写时钟频率或相位不同

二 异步FIFO

代码如下

module asynfifo #(parameter data_width=8, depth=16, addr_width=4) (
    input wclk,
    input wresetn,
    input [data_width-1 : 0] data_in,
    input wr,
    input rd,
    input rclk,
    input rresetn,
    output reg [data_width-1 : 0] data_out,
    output  empty,
    output  full
    );
    reg [data_width-1:0] mem [depth-1 : 0];
    reg [addr_width:0] wp, rp;
    reg [addr_width:0]  wp_gray1, rp_gray1, wp_gray2, rp_gray2;
    wire [addr_width:0] wp_gray0, rp_gray0;
   
    //写操作
    always@(posedge wclk)
        if(!wresetn)
            wp <= 0; //指针为0 就表示之前数据不算了
            else if(!full&&wr)
                begin mem[wp[3:0]] <= data_in; wp<= wp+1; end
                
     //读操作       
    always@(posedge rclk)
        if(!rresetn)
            begin data_out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值