Аппаратные реализации модулярных сумматоров и умножителей на базе минимизированной таблицы истинности
В данной статье приведен метод реализации модулярных сумматоров и умножителей на базе таблиц истинности, минимизированных с помощью Espresso.
Описание
Модулярные сумматоры и умножители в силу своей малой размерности могут быть реализованы как произвольная логическая функция и описана в виде таблицы истинности. Если размерность модуля
равна
бит, то таблица истинности будет иметь
входных столбцов и
строк. Для выходов будет соответственно
столбцов. Так как в модулярных устройствах размерность модуля небольшая, то и размерность таблицы истинности обычно приемлемых размеров. Получив таблицу истинности её можно минимизировать и записать для каждого выхода выражение как ДНФ.
Пример Verilog файла
- Пример для умножителя по модулю 5.
module mul_modulo_5 (A, B, X);
input [2:0] A;
input [2:0] B;
output[2:0] X;
assign X[0] = (A[0]&B[0]&~B[1]) | (~A[0]&A[1]&B[0]&B[1]) | (A[0]&~A[1]&B[0]) | (A[0]&A[1]&~B[0]&B[1]) | (A[2]&B[2]) | (A[2]&~B[0]&B[1]) | (~A[0]&A[1]&B[2]);
assign X[1] = (A[0]&~A[1]&B[1]) | (A[1]&B[0]&~B[1]) | (A[1]&B[2]) | (A[2]&B[1]);
assign X[2] = (A[0]&~A[1]&B[2]) | (~A[0]&A[1]&~B[0]&B[1]) | (A[0]&A[1]&B[0]&B[1]) | (A[2]&B[0]&~B[1]);
endmodule
Ссылки на файлы
Модулярные сумматоры и умножители были синтезированы для всех модулей от 2 до 255 включительно. Скачать Verilog файлы можно ниже: