Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| informatyka:podstawy-dzialania-komputera:jednostka_arytmetyczno-logiczna [2024/05/11 18:06] – kawcix | informatyka:podstawy-dzialania-komputera:jednostka_arytmetyczno-logiczna [2024/05/11 23:21] (current) – kawcix | ||
|---|---|---|---|
| Line 40: | Line 40: | ||
| **ny** - negate y ( neguje nam y) | **ny** - negate y ( neguje nam y) | ||
| - | f - wybiera nam operację dodawania x + y (również odejmowania, | + | **f** - wybiera nam operację dodawania x + y (również odejmowania, |
| + | **no** - negate output ( neguje nam wyjście) | ||
| + | Aby zrozumieć implementację, | ||
| + | najpierw wybór możliwośći wyzerowania wejść | ||
| + | input false zawsze ma wartość 0 bo to pomiędzy nią, a jednym inputem wybieramy. Jeśli input to 0 i wyzerujemy go - to dalej zero | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Następnie kolejnym multiplekserem wybieramy czy " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | wykonujemy operacje and i dodawanie half adderem ( [[informatyka: | ||
| + | |||
| + | Multiplekserem z pomocą f znowu wybieramy jaka operacja ma pojawić się na wyjściu | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Następnie możliwość zanegowania wyjścia już po wykonaniu wszystkich operacji | ||
| + | |||
| + | {{: | ||
| + | |||
| + | implementacja tego ALU z 16 bitowymi wejściami W HDL | ||
| + | |||
| + | https:// | ||
| + | |||
| + | < | ||
| + | |||
| + | CHIP ALU { | ||
| + | WEJŚCIE | ||
| + | x[16], y[16], | ||
| + | zx, // Czy wyzerować wejście x? | ||
| + | nx, // Czy zanegować wejście x? | ||
| + | zy, // Czy wyzerować wejście y? | ||
| + | ny, // Czy zanegować wejście y? | ||
| + | f, // Czy wykonać dodawanie (1) czy operację AND (0)? | ||
| + | no; // Czy zanegować wyjście? | ||
| + | |||
| + | WYJŚCIE | ||
| + | out[16], // Wynik operacji, 16 bitów | ||
| + | |||
| + | |||
| + | CZĘŚCI: | ||
| + | // Zerowanie wejścia | ||
| + | Mux16(a=x, b=false, sel=zx, out=x1); | ||
| + | Mux16(a=y, b=false, sel=zy, out=y1); | ||
| + | |||
| + | // Negacja wejścia | ||
| + | Not16(in=x1, | ||
| + | Mux16(a=x1, b=nx1, sel=nx, out=x2); | ||
| + | Not16(in=y1, | ||
| + | Mux16(a=y1, b=ny1, sel=ny, out=y2); | ||
| + | |||
| + | // Wykonywanie funkcji | ||
| + | And16(a=x2, b=y2, out=aAndB); | ||
| + | Add16(a=x2, b=y2, out=aPlusB); | ||
| + | Mux16(a=aAndB, | ||
| + | |||
| + | // Negacja wyjścia | ||
| + | Not16(in=out0, | ||
| + | Mux16(a=out0, | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | </ | ||