Могу ли я использовать логическое значение и операцию между массивом и битом в Verilog - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть входное слово, которое имеет 4 бита и определяется как: вход [3: 0] в;

и другой вход, скажем, разрешающий, который равен 1 биту и определяется как: вход разрешен; и провод определяется как: провод [3: 0] out_int;

и я хочу получить логическое И их действие как:

out_int [3: 0] = в [3: 0] && enable;

Я не могу получить желаемый результат, что я хочу моделировать, если enable hv равен 1 или 0, out_int (все 4 бита) должен быть равен in (все 4 бита), а когда enable - X или Z, все 4 бита out_int должны идти 4'bx.

1 Ответ

0 голосов
/ 02 сентября 2018

Вы используете логический оператор и оператор &&, чей результат равен 1 биту. А для проверки z или x вам нужно использовать оператор === в Verilog или $isunkown() в SystemVerilog.

То, что вы, похоже, хотите, это условный оператор ? :.

//              condition                            true   false
out_int[3:0] = (enable ===1'bx || enable === 1'bz) ? 4'bx : in[3:0];
...