即使分配了值,Verilog模块输出也是X.

时间:2016-03-31 00:49:10

标签: verilog

我有一个简单的8位奇偶校验模块来检查结果和设置标志。

这个模块的输出总是X,我不能为我的生活找出原因。这是代码:

module parity8 (p, low8);

   output p;
   input [7:0] low8;

   wire [3:0] pchka;
   wire [1:0] pchkb;
   wire parity_bar;

   xor2$ xora0 (pchka[0], low8[0], low8[1]),
         xora1 (pchka[1], low8[2], low8[3]),
         xora2 (pchka[2], low8[4], low8[5]),
         xora3 (pchka[3], low8[6], low8[7]),

         xorb0 (pchkb[0], pchka[0], pchka[1]),
         xorb1 (pchkb[1], pchka[2], pchka[3]), 

         xorp (parity_bar, pchkb[0], pchkb[1]);

   inv1$ pinv (p, parity_bar);

endmodule

parity_bar总是有正确的值,我尝试制作另一个导线ptest,它取代了最后一行的p。 Ptest有正确的值,所以我尝试添加:

assign p = ptest;

然而模块的输出仍然是X.甚至尝试分配p = 1'b1;并没有改变。希望这不是显而易见的,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

正如格雷格指出的那样,问题是p在一个已被分配全0的位向量中驱动了一点。我已经驳回了这一点,因为我有几个模块在同一位向量上驱动位。我想如果分配值和模块产生的值不相同,则只会出现问题。