Я делаю декодер для FPGA. Код Verilog компилируется, но переключатели ничего не делают. Я четырежды проверил назначение контактов, и они верны, поэтому я предполагаю, что в моем коде есть некоторые логические проблемы.
Таблица истинности такова:
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
Это мой код:
module decoder2x4(
input enable,
input p,
input [1:0] a,
output [3:0] y
);
assign y[0] = (( ~p & ~a[1] & ~a[0]) | (~a[1] & a[0]) |(a[1] & ~a[0]) | ( p & a[1] & a[0]) ) & ~enable;
assign y[1] = (( ~p & ~a[1] & a[0]) | ( p & ~a[1] & ~a[0]) |( p & a[1] & ~a[0])| ( p & a[1] & a[0])) & ~enable;
assign y[2] = (( ~p & a[1] & ~a[0]) | ( p & ~a[1] & ~a[0]) |( p & ~a[1] & a[0])| ( p & a[1] & a[0])) & ~enable;
assign y[3] = (( ~p & a[1] & a[0]) | ( p & ~a[1] & ~a[0]) |( p & ~a[1] & a[0])| ( p & a[1] & ~a[0])) & ~enable;
endmodule