📄 async_cmp.v
字号:
// 异步比较器
module async_cmp (aempty_n, afull_n, wptr, rptr, wrst_n);
parameter ADDR_WIDTH = 4;
parameter N = ADDR_WIDTH-1;
output aempty_n, afull_n;
input [N:0] wptr, rptr;
input wrst_n;
reg direction;
wire high = 1'b1;
wire dirset_n = ~( (wptr[N]^rptr[N-1]) & ~(wptr[N-1]^rptr[N]));
wire dirclr_n = ~((~(wptr[N]^rptr[N-1])&(wptr[N-1]^rptr[N]))|~wrst_n);
always @(posedge high or negedge dirset_n or negedge dirclr_n)
if (!dirclr_n) direction <= 1'b0;
else if (!dirset_n) direction <= 1'b1;
else direction <= high;
assign aempty_n = ~((wptr == rptr) && !direction); // "接近空"标志
assign afull_n = ~((wptr == rptr) && direction); // "接近满"标志
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -