2016-03-31 2 views
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 всегда имеет правильное значение, и я попытался сделать еще один провод Ptest, который заменил р на последней строке. Ptest имел правильное значение, поэтому я попытался добавить:

assign p = ptest; 

Однако выход модуля еще X. Даже пытался назначая р = 1'b1; и это не изменилось. Надеюсь, это не что-то очевидное, спасибо за вашу помощь.

+0

Похоже, что есть еще один драйвер на 'p', либо из другого модуля, либо как' reg' в тестовом стенде. Выходы подмодулей должны быть подключены к типам проводов и не иметь других драйверов. – Greg

+0

Это может быть так. В модуле, вызывающем parity8, я не был уверен, что лучший способ инициализировать мой флаг-вектор до 0 (очень новый для verilog), поэтому я сделал: assign flags = 32'b0; Причина, по которой я думал, что это не проблема, заключается в том, что существуют другие модули, которые выполняют аналогичные задачи для вычисления флага и приводят другой бит. Они отлично работают. Во всяком случае, я вывешу водителя на этот бит и дам вам знать, работает ли он. Спасибо – Xionraseri

+0

Можете ли вы также добавить в него код testbench? –

ответ

0

Как указал Грег, проблема заключалась в том, что p двигался немного в бит-векторе, которому были назначены все 0. Я отклонил это, потому что у меня есть несколько модулей, управляющих битами на этом же битовом векторе. Я полагаю, что проблема возникает только в том случае, если значение присваивания и значение, созданное модулем, не совпадают.

Смежные вопросы