Fay*_*tll 1 verilog system-verilog invert
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
Run Code Online (Sandbox Code Playgroud)
我试图在一排电线中反转单线的值.但是,每当我这样做时,该位置变为'X'而不是0或1.为什么会出现这种情况?
您拥有的三个assign语句全部并行应用,而不是按顺序应用.您将correctedWord
两次的位0分配给每个赋值中的相反值.如果您对一条线路有多个分配,则有一个决定输出的分辨率功能.在你的情况下,有两个驱动程序,一个驱动1,一个驱动0,解析为X.
你想做这样的事情:
assign correctedWord[TOTAL_LENGTH-1:1] = codeword[TOTAL_LENGTH-1:1];
assign correctedWord[0] = ~codeword[0];
Run Code Online (Sandbox Code Playgroud)
或这个:
assign correctedWord = {codeword[TOTAL_LENGTH-1:1], ~codeword[0]};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2486 次 |
最近记录: |