0
結果をチェックしてフラグを設定する単純な8ビットパリティチェックモジュールがあります。値が割り当てられても、Verilogモジュールの出力はXです。
このモジュールの出力は常に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は常に正しい値を持っている、と私は最後の行にPを交換し、別のワイヤPTESTを、作ってみました。 PTESTは、正しい値を有していたので、私は、追加しようとした:
assign p = ptest;
をさらにモジュールの出力は、依然としてXであっても、P = 1'b1のを割り当てる試みました。それは変わらなかった。うまくいけば、これは何か明白ではありません、あなたの助けをありがとう。
他のモジュールの 'p'に別のドライバがあり、テストベンチの' reg'として定義されているように聞こえます。サブモジュールの出力はワイヤタイプに接続し、他のドライバは使用しないでください。 – Greg
それかもしれません。パリティ8を呼び出すモジュールでは、フラグベクトルを0(非常に新しいverilog)に初期化する最良の方法がわからなかったので、私はしました: assign flags = 32'b0; これは問題ではないと思った理由は、フラグを計算して別のビットを駆動するために同様のタスクを実行する他のモジュールがあることです。彼らはうまく動作します。とにかく、私はそのビットにドライバを取り出して、それが動作するかどうか知ってもらうよ。ありがとう – Xionraseri
テストベンチのコードを追加することはできますか? –