Исправлена ​​комбинаторная логика - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть вопрос.мой код

module pulsing(OUT, an1, an2, or1);

input wire an1, an2, or1;
output wire OUT;

wire afa;

and andik(afa,an1,an2);
or orik(OUT,afa,or1);

endmodule

Я получил после синтеза один результат 3-битного LUT, но мне действительно нужны 2 разные LUT.

Как я могу реализовать это без какой-либо последовательной логики (только провода и LUT)?Спасибо!

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете определить LUT2 как для логического элемента И:

LUT2 #(.INIT(4'h1)) U1(.O(O), 
                       .I0(I1),
                       .I1(I2));

И вентиля ИЛИ соответственно как:

LUT2 #(.INIT(4'hE)) U1(.O(O), 
                       .I0(I1),
                       .I1(I2));

Обратите внимание на значения .INIT.Это результаты таблицы истинности этих булевых функций.

I1  I0  O
0   0   B0
0   1   B1  
1   0   B2
1   1   B3

Из этого вы можете реализовать любые 2 булевых функции ввода с одним LUT2.Например, для XOR потребуется .INIT (4'h6).

...