Это не тот способ, которым вы используете код HDL, если только это не школьное задание.
Я скопировал это из работы Пьера. Вриенс сделал вам таблицу:
enable p a1 a0 y0 y1 y2 y3
0 0 0 0 1 0 0 0
0 0 0 1 0 1 0 0
0 0 1 0 0 0 1 0
0 0 1 1 0 0 0 1
0 1 0 0 0 1 1 1
0 1 0 1 1 0 1 1
0 1 1 0 1 1 0 1
0 1 1 1 1 1 1 0
1 x x x x z z z <<< Probably a typo here
Нижняя строка немного особенная, поэтому я использую if
для этого. Сброс, который мы можем поставить в случае:
always @( * )
begin
if (enable)
{y0, y1, y2, y3} = 4'hz; // **
else
case ( {p, a1, a0 } )
3'b000 : {y0, y1, y2, y3} = 4'b1000;
3'b001 : {y0, y1, y2, y3} = 4'b0100;
3'b010 : {y0, y1, y2, y3} = 4'b0010;
3'b011 : {y0, y1, y2, y3} = 4'b0001;
3'b100 : {y0, y1, y2, y3} = 4'b0111;
3'b101 : {y0, y1, y2, y3} = 4'b1011;
3'b110 : {y0, y1, y2, y3} = 4'b1101;
3'b111 : {y0, y1, y2, y3} = 4'b1110;
endcase
end // always
Обратите внимание, что это максимально копирует оригинальную таблицу, что уменьшает вероятность ошибок. Редактор с редактированием столбцов очень помогает!
** Я предполагаю, что вы хотите, чтобы все выходные данные были 'z'. В вашей таблице у вас есть xzzz.