informatyka:podstawy-dzialania-komputera:jednostka_arytmetyczno-logiczna

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
informatyka:podstawy-dzialania-komputera:jednostka_arytmetyczno-logiczna [2024/05/11 18:06] kawcixinformatyka: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, ponieważ liczba minus + liczba plus to takie "odedjmowanie" ( [[informatyka:podstawy-dzialania-komputera:ujemne_liczby_dwojkowe|9 Zapisy Liczby dwójkowej ze znakiem]] jeśli jest równe 1 lub iloczynu logicznego x i y jeśli jest równe 0+**f** - wybiera nam operację dodawania x + y (również odejmowania, ponieważ liczba minus + liczba plus to takie "odedjmowanie" ( [[informatyka:podstawy-dzialania-komputera:ujemne_liczby_dwojkowe|9 Zapisy Liczby dwójkowej ze znakiem]] )jeśli jest równe 1 lub iloczynu logicznego x i y jeśli jest równe 0
  
 +**no** - negate output ( neguje nam wyjście)
  
 +Aby zrozumieć implementację,trzeba napewno wiedzieć co to multiplekser. Będzie nam służył do wybrania jednego z dwóch sygnałów. Bity sterujące np zx będą selectem  w multiplekserze. [[informatyka:podstawy-dzialania-komputera:multiplekser_i_demultiplekser|5 Multiplekser I Demultiplekser]]
  
 +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
 +
 +{{:informatyka:podstawy-dzialania-komputera:zrzut_ekranu_z_2024-05-11_18-23-00.png?400|}}
 +
 +{{ :informatyka:podstawy-dzialania-komputera:nagranie_ekranu_z_2024-05-11_18-26-55.webm |}}
 +
 +Następnie kolejnym multiplekserem wybieramy czy "przetworzona" wcześniej wartość ma zostać zanegowana
 +
 +{{:informatyka:podstawy-dzialania-komputera:zrzut_ekranu_z_2024-05-11_18-31-14.png?400|}}
 +
 +wykonujemy operacje and i dodawanie half adderem ( [[informatyka:podstawy-dzialania-komputera:adder_sumator|8 Adder (Sumator)]]
 +
 +Multiplekserem z pomocą f znowu wybieramy jaka operacja ma pojawić się na wyjściu
 +
 +{{:informatyka:podstawy-dzialania-komputera:zrzut_ekranu_z_2024-05-11_18-34-36.png?400|}}
 +
 +Następnie możliwość zanegowania wyjścia już po wykonaniu wszystkich operacji
 +
 +{{:informatyka:podstawy-dzialania-komputera:zrzut_ekranu_z_2024-05-11_18-37-55.png?400|}}
 +
 +implementacja tego ALU z 16 bitowymi wejściami W HDL
 +
 +https://pl.wikipedia.org/wiki/Hardware_Description_Language
 +
 +<code>
 +
 +CHIP ALU {
 +    WEJŚCIE
 +        x[16], y[16],  // Liczby wejściowe po 16 bitów każda
 +        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, out=nx1);
 +    Mux16(a=x1, b=nx1, sel=nx, out=x2);
 +    Not16(in=y1, out=ny1);
 +    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, b=aPlusB, sel=f, out=out0);
 +
 +    // Negacja wyjścia
 +    Not16(in=out0, out=nout0);
 +    Mux16(a=out0, b=nout0, sel=no, out=out);
 +}
 +
 +
 +
 +
 +</code>
  
  
  • informatyka/podstawy-dzialania-komputera/jednostka_arytmetyczno-logiczna.1715443609.txt
  • Last modified: 2024/05/11 18:06
  • by kawcix