目录
1.wptr_full.sv
主要实现写满判断,写地址和写指针的输出
2. rptr_empty.sv
主要实现读空判断,读地址和读指针的输出
3. sync_r2w.sv
主要实现读指针的二级同步
4. sync_w2r.sv
主要实现写指针的二级同步
5. fifomem.sv
主要实现mem的rdata的输出
6. fifo1.sv
RTL的上层环境,对以上五个组件的组合
module fifo1 #(parameter DSIZE = 8, parameter ASIZE = 4)
(input [DSIZE-1:0] wdata,
input winc,wclk,wrst_n,
input rinc,rclk,rrst_n,
output[DSIZE-1:0] rdata,
output wfull,
output rempty
);
wire [ASIZE-1:0] waddr,raddr;
wire [ASIZE:0] wptr,rptr,wq2_rptr,rq2_wptr;
sync_r2w sync_r2w (.rptr(rptr),
.wclk(wclk),
.wrst_n(wrst_n),
.wq2_rptr(wq2_rptr)
);
sync_w2r sync_w2r (.wptr(wptr),
.rclk(rclk),
.rrst_n(rrst_n),
.rq2_wptr(rq2_wptr)
);
rptr_empty #(ASIZE) rptr_empty(.rclk(rclk),
.rrst_n(rrst_n),
.rinc(rinc),
.rq2_wptr(rq2_wptr),
.raddr(raddr),
.rempty(rempty),
.rptr(rptr)
);
wptr_full #(ASIZE) wptr_full(.wq2_rptr(wq2_rptr),
.wclk(wclk),
.wrst_n(wrst_n),
.winc(winc),
.wfull(wfull),
.waddr(waddr),
.wptr(wptr)
);
fifomem #(DSIZE,ASIZE) fifomem (.wdata(wdata),
.waddr(waddr),
.raddr(raddr),
.wclken(winc),
.wfull(wfull),
.wclk(wclk),
.rdata(rdata)
);
endmodule