74181

Этот текст может быть частично переведен средствами машинного перевода.

IC 74181-4-битный Alu.

Сигналы описание

Направление Ширина Имя Описание
Ввод [3: 0] a Вход а
Ввод [3: 0] B Вход б
Ввод [3: 0] S Выбранная функция
Вход M Режим: 0 = логика 1 = арифметика
Вход Cn Перенос
Вывод [3: 0] F Результат
вывод X Носить сгенерировать
вывод Y Переносить распространение
вывод Aeqb A == b
вывод CNP4 перенос (CN+4)

Таблица функции

S3 S2 S1 S0 Логическая функция Логическое описание АРИТ ФУНКЦИЯ АРИТ Описание
- - - - ------------------------ ------------------------ ---------------------- ---------------------------------
0 0 0 0 ! (A | b) nor a Передача a
0 0 0 1 ! (A & b) nand a +! B a - b - 1
0 0 1 0 ! A & B не A и B A +! B + CN A - B
0 0 1 1 ! A не a a - 1 + cn a - 1
0 1 0 0 ! B не B a + a Double a
0 1 0 1 a ^ b xor a + a +! B a + a - b - 1
0 1 1 0 ! A | B не a или b a + a +! B + cn a + a - b
0 1 1 1 ! (A ^ b) xnor 2a - 1 + cn Double a минус 1
1 0 0 0 a & b и a + b Добавить
1 0 0 1 ! (A |! B) или не B a + b + 1 Добавить с переносом
1 0 1 0 a Передача a a + 1 Приращение a
1 0 1 1 a | ! B a или нет B a +! B + 1 a - b + 1
1 1 0 0 b Передача b 1 всегда 1 (set)
1 1 0 1 a | B или 0 всегда 0 (чисто)
1 1 1 0 a &! B a, а не b ! B не b
1 1 1 1 ! (A ^ b) xnor ! B + cn не b + переносить

Verilog эквивалентен, без переноса и других важных сигналов:

📋модуль Alu74181 (
Ввод [3: 0] S,
Вход CI, M,
Ввод [3: 0] A, B,
Выходная рег [3: 0] y
);

Рег [3: 0] P, G;

Всегда @(*) начинать

p [0] <= ~ (a [0] | (s [0] & b [0]) | (s [1] & ~ b [0]));
p [1] <= ~ (a [1] | (s [0] & b [1]) | (s [1] & ~ b [1]));
p [2] <= ~ (a [2] | (s [0] & b [2]) | (s [1] & ~ b [2]));
p [3] <= ~ (a [3] | (s [0] & b [3]) | (s [1] & ~ b [3]));

g [0] <= ~ ((a [0] & ~ b [0] & s [2]) | (a [0] & b [0] & s [3]));
g [1] <= ~ ((a [1] & ~ b [1] & s [2]) | (a [1] & b [1] & s [3]));
g [2] <= ~ ((a [2] & ~ b [2] & s [2]) | (a [2] & b [2] & s [3]));
g [3] <= ~ ((a [3] & ~ b [3] & s [2]) | (a [3] & b [3] & s [3]));

y [0] = (p [0] ^ g [0]) ^ ~ (~ ci & ~ m);
y [1] = (p [1] ^ g [1]) ^ ~ ((~ ci & ~ m & g [0]) | (~ m & p [0]));
y [2] = (p [2] ^ g [2]) ^ ~ ((~ ci & ~ m & g [0] & g [1]) | (~ m & p [1]) | (~ m & p [0] & g [1]));
y [3] = (p [3] ^ g [3]) ^ ~ ((~ ci & ~ m & g [0] & g [1] & g [2]) | (~ m & p [2]) | (~ m & p [1] & g [2]) | (~ m & p [0] & g [1] & g [2]));
конец
EndModule // Alu74181

Полная версия, еще не проверяется:

📋модуль Alu74181 (
входной провод [3: 0] A,
входной провод [3: 0] B,
входной проволока [3: 0] S,
Входной проволочный провод M, // режим: 0 = логика, 1 = арифметика
входной проволочный CN, // перенос
выходной провод [3: 0] f, // результат
выходной провод x, // переносить генерировать
Выходная проволока y, // переносить распространение
выходной провод AEQB, // a == b
Выходная проволока CNP4 // CHARTING (CN+4)
);

Провод [3: 0] TU;
Провод [3: 0] ТВ;
Провод [3: 0] TX;

// tu [n] = ~ (a [n] | (b [n] & s [0]) | (~ b [n] & s [1])))
Назначить tu [0] = ~ (a [0] | (b [0] & s [0]) | (~ b [0] & s [1]));
Назначить tu [1] = ~ (a [1] | (b [1] & s [0]) | (~ b [1] & s [1]));
Назначить tu [2] = ~ (a [2] | (b [2] & s [0]) | (~ b [2] & s [1]));
Назначить tu [3] = ~ (a [3] | (b [3] & s [0]) | (~ b [3] & s [1]));

// tv [n] = ~ ((a [n] & ~ b [n] & s [2]) | (a [n] & b [n] & s [3]))))
Назначить TV [0] = ~ ((a [0] & ~ b [0] & s [2]) | (a [0] & b [0] & s [3]));
Назначить телевидение [1] = ~ ((a [1] & ~ b [1] & s [2]) | (a [1] & b [1] & s [3]));
Назначить телевизор [2] = ~ ((a [2] & ~ b [2] & s [2]) | (a [2] & b [2] & s [3]));
Назначить телевидение [3] = ~ ((a [3] & ~ b [3] & s [2]) | (a [3] & b [3] & s [3]));

// tx [n] = tu [n] ^ tv [n]
Назначить tx = tu ^ TV;

// ty = tu0 & TV1 & TV2 & TV3 | TU1 & TV2 & TV3 | TU2 & TV3 | Ту 3
Wire Ty = (TU [0] & TV [1] & TV [2] & TV [3]) |
(TU [1] & TV [2] & TV [3]) |
(TU [2] & TV [3]) |
TU [3];

// f [n] = tx [n] ^ переносить логику
Назначить f [0] = tx [0] ^ ~ (m & cn);
Назначить f [1] = tx [1] ^ ~ ~ ((tu [0] & m) | (TV [0] & m & cn));
Назначить f [2] = tx [2] ^ ~ ((tu [1] & m) |
(TU [0] & TV [1] & M) |
(TV [0] & TV [1] & M & CN));
Назначить f [3] = tx [3] ^ ~ ~ ((tu [2] & m) |
(TU [1] & TV [2] & m) |
(TU [0] & TV [1] & TV [2] & M) |
(TV [0] & TV [1] & TV [2] & M & CN));

// выходы состояния
назначить x = ~ (TV [0] & TV [1] & TV [2] & TV [3]);             // переносить генерировать (g)
назначить y = ~ ty;                                          // переносить распространение (P)
назначить aeqb = f [0] & f [1] & f [2] & f [3];                  // a == b
Назначить cnp4 = ty | (TV [0] & TV [1] & TV [2] & TV [3] & CN);  // перевозка (CN+4)

EndModule

Ссылки