module hamming_code #( parameter TOTAL_LENGTH = 15,
parameter PARITY_BITS = 4
)
(
//inputs
input [TOTAL_LENGTH-1:0] codeword,
//outputs
output [TOTAL_LENGTH-1:0] correctedWord
// output reg badData
);
wire b;
assign correctedWord = codeword;
assign b = ~codeword[0];
assign correctedWord[0] = b;
endmodule
我试图反转导线阵列中单根导线的值。但是,每当我这样做时,该位置变为'X'而不是0或1.为什么会出现这种情况?
答案 0 :(得分:5)
您拥有的三个assign语句全部并行应用,而不是按顺序应用。您将correctedWord
的位0分配两次,分配给每个赋值中的相反值。如果您对一条线路有多个分配,则有一个决定输出的分辨率功能。在你的情况下,有两个驱动程序,一个驱动1,一个驱动0,解析为X.
你想做这样的事情:
assign correctedWord[TOTAL_LENGTH-1:1] = codeword[TOTAL_LENGTH-1:1];
assign correctedWord[0] = ~codeword[0];
或者这个:
assign correctedWord = {codeword[TOTAL_LENGTH-1:1], ~codeword[0]};