我已经在 verilog 中实现了有效/就绪的握手信号。我只是想知道我的方法是对还是错。我很高兴知道任何改进。一个简单的计数器用作 fifo 的输入。因此,当 fifo 的使用字为 8 时声明的 fifo 几乎已满(16 个中使用了 8 个 fifo 堆栈),ready 为零。
这是代码。
module fifohandshake(
input CLK,
input RST,
input [31:0] INPUT,
output [31:0] OUTDATA,
output [3:0] usedword,
output Writereq,
input RDReq,
output Almost_full,
output EMPty,
output FUlL,
output VALID,
output READY
);
reg valid;
reg ready;
reg WRReq;
assign VALID=valid;
assign READY=ready;
assign Writereq=WRReq;
fifoip u0(
.clock(CLK),
.data(INPUT),
.rdreq(RDReq),
.sclr(RST),
.wrreq(WRReq),
.almost_full(Almost_full),
.empty(EMPty),
.full(FUlL),
.q(OUTDATA),
.usedw(usedword)
);
always @(posedge CLK)
begin
if(INPUT)
begin
valid<=1;
end
else
begin
valid<=0;
end
end
always @(posedge CLK)
begin
if(Almost_full)
begin
ready<=0;
end
else
begin
ready<=1;
end
end
always @(posedge CLK)
begin
if(ready)
begin
WRReq<=1;
end
else
begin
WRReq<=0;
end
end
endmodule
我是否以正确的方式完成了它,或者我需要纠正什么?这是波形结果。 在此处输入图像描述