📄 fifo_ctl.v
字号:
module FIFO_ctl(input clk_wr,
input clk_rd,
input rst,
input fifo_wr,
input fifo_rd,
output [7:0] wr_ptr,
output [7:0] rd_ptr,
output empty,
output full
);
parameter FULL = 1'b1,
EMPTY = 1'b1,
ACTIVE = 1'b0;
wire [7:0] gcount_wr;
wire [7:0] gcount_rd;
wire wr_en;
wire rd_en;
assign full = ( (gcount_wr[6:0] == gcount_rd[6:0]) && (gcount_wr[7] != gcount_rd[7]) )
? FULL : ACTIVE;
assign empty = ( gcount_wr == gcount_rd ) ? EMPTY : ACTIVE;
assign wr_en = ( fifo_wr && fifo_rd )? 1'b1 : ( fifo_wr? (full? 1'b1 : 1'b0) : 1'b1 );
assign rd_en = ( fifo_wr && fifo_rd )? 1'b1 : ( fifo_rd? (empty? 1'b1 : 1'b0) : 1'b1 );
gray_gena gray_gena_inst_wr (.clk(clk_wr),
.clr(rst),
.en(wr_en),
.gray_count(gcount_wr)
);
gray_gena gray_gena_inst_rd (.clk(clk_rd),
.clr(rst),
.en(rd_en),
.gray_count(gcount_rd)
);
G2B G2B_wr (.gray(gcount_wr),
.Bin(wr_ptr));
G2B G2B_rd (.gray(gcount_rd),
.Bin(rd_ptr));
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -