2
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。为什么会这样?

4

1 回答 1

5

您拥有的三个分配语句都是并行应用的,而不是顺序应用。您将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]};
于 2014-10-26T04:16:38.183 回答