74181

Fragmenty tego tematu mogły zostać przetłumaczone maszynowo.

IC 74181 to 4-bitowy ALU.

Sygnały Opis

Kierunek Szerokość Nazwa Opis
Wejście [3: 0] a Wejście a
Wejście [3: 0] B Wejście b
Wejście [3: 0] s Wybrana funkcja
Wejście M Tryb: 0 = logika 1 = arytmetyka
Wejście Cn Przeniesienie
Wyjście [3: 0] F Wynik
Wyjście X Nosić generowanie
Wyjście Y Nosić propagację
Wyjście Aeqb A == B.
Wyjście . CNP4 przeniesienie (CN+4)

Tabela funkcji

S3 S2 S1 S0 Funkcja logiczna Logika Opis Arith Funkcja Arith Opis
- - - - -------------------- -------------------- ------------------ ---------------------
0 0 0 0 ! (A | b) ani a przenieś a
0 0 0 1 ! (A & b) nand a +! B a - b - 1
0 0 1 0 ! A & b not a i b a +! B + cn a - b
0 0 1 1 ! A nie a a - 1 + cn a - 1
0 1 0 0 ! B nie 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 nie a lub b a + a +! B + cn a + a - b
0 1 1 1 ! (A ^ B) XNOR 2A - 1 + cn podwójnie minus 1
1 0 0 0 a & b i a + b Dodaj
1 0 0 1 ! (A |! B) lub z nie b a + b + 1 Dodaj z noszeniem
1 0 1 0 a przenieś a a + 1 Przyrost a
1 0 1 1 a | ! B a lub nie b a +! B + 1 a - b + 1
1 1 0 0 B Przenieś B 1 Zawsze 1 (ustaw)
1 1 0 1 a | B lub 0 zawsze 0 (jasne)
1 1 1 0 a &! B a, a nie b ! B nie b
1 1 1 1 ! (A ^ B) XNOR ! B + CN NOT B + NAROR

Werilog równoważny, bez noszenia i inne ważne sygnały:

📋moduł ALU74181 (
wejście [3: 0] s,
wejście ci, m,
wejście [3: 0] a, b,
Reg wyjściowy [3: 0] y
);

Reg [3: 0] P, g;

Zawsze @(*) Zacznij

p [0] <= ~ (a [0] | (s [0] i b [0]) | (s [1] i ~ b [0]));
P [1] <= ~ (a [1] | (s [0] i b [1]) | (s [1] i ~ b [1]));
P [2] <= ~ (A [2] | (S [0] i B [2]) | (S [1] i ~ B [2]));
P [3] <= ~ (A [3] | (S [0] i B [3]) | (S [1] i ~ B [3]));

g [0] <= ~ ((a [0] i ~ b [0] & s [2]) | (a [0] i b [0] i s [3]));
g [1] <= ~ ((a [1] i ~ b [1] i s [2]) | (a [1] i b [1] i s [3]));
g [2] <= ~ ((a [2] i ~ b [2] i s [2]) | (a [2] i b [2] i s [3]));
g [3] <= ~ (A [3] i ~ B [3] i s [2]) | (A [3] i B [3] i 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] i g [1]) | (~ m & p [1]) | (~ m & p [0] i g [1]));
y [3] = (p [3] ^ g [3]) ^ ~ ((~ ci & ~ m & g [0] & g [1] i g [2]) | (~ m & p [2]) | (~ m & p [1] i g [2]) | (~ m & p [0] i g [1] i g [2]));
koniec
Endmodule // ALU74181

Ukończ Verilog, jeszcze nie sprawdzony:

📋moduł ALU74181 (
przewód wejściowy [3: 0] a,
przewód wejściowy [3: 0] b,
przewód wejściowy [3: 0] s,
Drut wejściowy M, // Tryb: 0 = logika, 1 = arytmetyka
przewód wejściowy CN, // przeniesienie
drut wyjściowy [3: 0] f, // wynik
Wygeneruj przewód wyjściowy x, //
drut wyjściowy y, // przenoś propagację
Drut wyjściowy aeqb, // a == b
Drut wyjściowy CNP4 // Przenoszenie (CN+4)
);

drut [3: 0] tu;
Wire [3: 0] TV;
drut [3: 0] TX;

// tu [n] = ~ (a [n] | (b [n] i s [0]) | (~ b [n] i s [1])))
Przypisz Tu [0] = ~ (A [0] | (B [0] & S [0]) | (~ B [0] & s [1]));
Przypisz Tu [1] = ~ (A [1] | (B [1] i S [0]) | (~ B [1] i S [1]));
Przypisz Tu [2] = ~ (A [2] | (B [2] i S [0]) | (~ B [2] i S [1]));
Przypisz Tu [3] = ~ (A [3] | (B [3] i S [0]) | (~ B [3] i S [1]));

// tv [n] = ~ ((a [n] i ~ b [n] i s [2]) | (a [n] i b [n] i s [3])))
Przypisz TV [0] = ~ ((A [0] i ~ B [0] & s [2]) | (A [0] i B [0] i S [3]));
Przypisz TV [1] = ~ ((A [1] i ~ B [1] i s [2]) | (A [1] i B [1] i S [3]));
Przypisz TV [2] = ~ ((A [2] i ~ B [2] i S [2]) | (A [2] i B [2] i S [3]));
Przypisz TV [3] = ~ (A [3] i ~ B [3] i S [2]) | (A [3] i B [3] i S [3]));

// tx [n] = tu [n] ^ tv [n]
przypisz tx = tu ^ tv;

// Ty = TU0 & TV1 & TV2 i TV3 | TU1 i TV2 i TV3 | TU2 i TV3 | Tu3
Wire ty = (tu [0] i telewizja [1] i telewizja [2] i telewizja [3]) |
(TU [1] i TV [2] i TV [3]) |
(TU [2] i TV [3]) |
TU [3];

// f [n] = tx [n] ^ noś logikę
Przypisz f [0] = tx [0] ^ ~ (m & cn);
Przypisz f [1] = tx [1] ^ ~ ((tu [0] i m) | (TV [0] i m & cn));
Przypisz f [2] = tx [2] ^ ~ ((tu [1] i m) |
(TU [0] i TV [1] i m) |
(TV [0] i TV [1] i M & CN));
Przypisz f [3] = tx [3] ^ ~ ((tu [2] i m) |
(TU [1] i TV [2] i m) |
(TU [0] i TV [1] i TV [2] i m) |
(TV [0] i TV [1] i TV [2] i M & CN));

// Wyjścia stanu
Przypisz x = ~ (telewizję [0] i telewizja [1] i telewizja [2] i telewizja [3]);             // noszenie wygenerowania (g)
przypisać y = ~ ty;                                          // noś propagację (p)
przypisz aeqb = f [0] i f [1] i f [2] i f [3];                  // a == b
Przypisz CNP4 = Ty | (TV [0] i TV [1] i TV [2] i TV [3] i CN);  // przeniesienie (CN+4)

Endmodule

Bibliografia / Odniesienia