我试图编写代码以检查Verilog中的偶数/奇数奇偶校验。
`timescale 1ns / 1ps
module ParityChecker(
input [7:0] bitt,
output reg ans
);
integer count = 0;
integer i = 0;
initial
begin
count = 0;
for(i=0; i<=7; i=i+1)
begin
if(bitt[i]==1)
count = count + 1;
end
if(count%2==0) //even parity
ans = 1;
else
ans = 0;
end
endmodule
这是测试平台代码:
module ParityChecker_tb;
reg [7:0] bitToSend;
wire answer;
SecondQuestion mygate(.bitt(bitToSend), .ans(answer));
initial
begin
$monitor(bitToSend, answer);
bitToSend = 8'b11111101;
#10
bitToSend = 8'b11111100;
#10
bitToSend = 8'b1111111;
end
endmodule
但是,无论如何,我只能得到一个作为变量答案的输出。逻辑部分似乎存在一些问题。可能是什么?
答案 0 :(得分:1)
因为在module ParityChecker
中您使用initial
来实现您的逻辑,该逻辑仅执行一次。
您可以将其实现为always@
块,例如
always@(bitt)
begin
// All your logic...
// Or even simpler,
ans = ~^bitt;
end
Simplist方式将是
module ParityChecker(
input [7:0] bitt,
output ans
);
assign ans = ~^bitt;
endmodule
答案 1 :(得分:-1)
兄弟,一切都是正确的。但是在测试平台模块中,您编写了 SecondQuestion 而不是 ParityChecker。