KOMBINAČNÉ LOGICKÉ OBVODY


Kódy

Kód je jednoznačné priradenie určitej kombinácie bitov danému znaku. Prehľad niektorých kódov je v tabuľke.

Hexadecimálny (šestnásťkový) kód

    Základom hexadecimálneho kódu je číslo 16. Na zápis hexadecimálneho kódu sa používajú číslice 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 a písmená A, B, C, D, E a F. Spôsob zápisu hexadecimálneho kódu je uvedený v tabuľke.

Grayov kód

    Je to špeciálny kód. Jeho charakteristickým znakom je, že dva susedné znaky sa líšia len v jednom bite. Spôsob zápisu Grayovho kódu je uvedený v tabuľke.

Binárny (dvojkový) kód

    Základom dvojkového kódu je číslo 2. Na zápis binárneho kódu sa používajú číslice 0,1. Spôsob zápisu binárneho kódu je uvedený v tabuľke.

Dvojkový komplement

    Vzniká negáciou príslušného binárneho čísla a pripočítaním jednotky. Spôsob zápisu dvojkového komplementu je uvedený v tabuľke.

Kód + 3

    Vzniká pripočítaním binárnej trojky (11B) k príslušnému binárnemu číslu. Spôsob zápisu kódu + 3 je uvedený v tabuľke.

Kód BDC (binary coded decimal - binárne kódovaná desiatková číslica)

    Kód BCD sa zapisuje v binárnej sústave, pričom na každú dekadickú číslicu pripadajú štyri bity. Spôsob zápisu kódu BCD je uvedený v tabuľke.

Aikenov kód

    Aikenov kód e pre čísla od 0 po 9, pričom čísla 0 - 4 vyjadríme tak ako v binárnom kóde a čísla 5 - 9 sa vyjadria, že dané číslo doplníme na 9 a túto hodnotu negujeme. Spôsob zápisu Aikenovho kódu je uvedený v tabuľke.

Johnsonov kód

    Tento kód je 5 bitový. Vytvoríme ho tak, že postupne napĺňame bity jednotkami a potom nulami. Spôsob zápisu Johnsonovho kódu je uvedený v tabuľke.

Kód sedemsegmentového displaya

    Tento kód je sedem bitový. Môže byť kladný, alebo záporný, podľa toho s akou logikou pracuje. Ku každému segmentu displaya prislúcha jeden bit (a...g). Ak pracuje so zápornou logikou, sú v nule (logický stav) všetky tie bity, ktoré práve svietia. Ostatné (tie, ktoré nesvietia) sú v nule. V kladnej logike je to opačne. Spôsob zápisu kódu sedemsegmentového displaya (v zápornej logike) je uvedený v tabuľke.

Kód 1 z 10

    Tento kód je desaťbitový. Práve eden bit z desiatich musí byť v jednotke. Pozíciu určuje poradové číslo. Spôsob zápisu kódu 1 z 10 je uvedený v tabuľke.

DEC HEX GRAY BIN 2 KOMPL. +3 BCD AIKEN JOHNSON 7SEGM. 2 z 5 1 z 10
    DCBA DCBA BIN + 1 DCBA DCBA DCBA EDCBA abcdefg 43210 9876543210
0 0 0000 0000 .00000 0011 0000 0000 00000 0000001 00011 0000000001
1 1 0001 0001 11111 0100 0001 0001 00001 1001111 00101 0000000010
2 2 0011 0010 11110 0101 0010 0010 00011 0010010 00110 0000000100
3 3 0010 0011 11101 0110 0011 0011 00111 0000110 01001 0000001000
4 4 0110 0100 11100 0111 0100 0100 01111 1001100 01010 0000010000
5 5 0111 0101 11011 1000 0101 1011 11111 0100100 01100 0000100000
6 6 0101 0110 11010 1001 .0110 1100 11110 0100000 10001 0001000000
7 7 0100 0111 11001 1010 0111 1101 11100 0001111 10010 0010000000
8 8 1100 1000 11000 1011 1000 1110 11000 0000000 10100 0100000000
9 9 1101 1001 10111 1100 1001 1111 10000 0000100 11000 1000000000
10 A 1111 1010 10110         0001000    
11 B 1110 1011 10101         1100000    
12 C 1010 1100 10100         0110001    
13 D 1011 1101 10011         1000010    
14 E 1001 1110 10010         0110000    
15 F 1000 1111 10001         0111000    


Prevody číselných sústav

Príklady HORE  

Prevod desiatkového čísla do binárnej číselnej sústavy D -> B

    Číslo z desiatkovej číselnej sústavy prevádzame do binárnej pomocou celočíselného delenia. Desiatkové číslo delíme dvojkou. Celočíselný výsledok zapíšeme a pod delenca odpíšeme zvyšok (0 alebo 1). Výsledok ďalej delíme dvojkou. Opäť zapíšeme ďalší celočíselný výsledok a zvyšok. Takto pokračujeme, kým nedostaneme výsledok 0. Nakoniec zapíšeme všetky získané zvyšky v opačnom poradí a tak získame binárnu hodnotu dekadického čísla.

Úloha: Preveďte dekadické číslo 215 do binárnej číselnej sústavy

    215 : 2 =    107 : 2 = 53 : 2 = 26 : 2 =13 : 2 = 6 : 2 = 3 : 2 = 1 : 2 = 0
        1                 1             1           0           1         0          1          1 

    215 D = 11010111B

Prevod binárneho čísla do dekadickej číselnej sústavy B -> D

    V binárnej číselnej sústave každá číslica predstavuje jeden bit. Pričom posledný je nultý, predposledný prvý... Ku každému bitu pripadá hodnota 2n, pričom n predstavuje poradie bitu (ak je nultý n = 0). Keď chceme previesť binárne číslo do desiatkovej číselnej sústavy, vynásobíme každý bit s prislúchajúcou hodnotou 2n a jednotlivé súčiny sčítame.

    Úloha: Preveďte binárne číslo 11010111 do dekadickej číselnej sústavy

    1.20+1.21-+.22+0.23+1.24+0.25+1.26+1.27 = 1 + 2 + 4 +16 + 64 + 128 = 215

    11010111B = 215D

Prevod binárneho čísla do hexadecimálnej (šestnásťkovej) číselnej sústavy B -> H

    V šestnásťkovej sústave jedna číslica predstavuje štyri bity. Preto jednotlivé číslice rozpíšeme v binárnom kóde.

Úloha: Preveďte hexadecimálne číslo 3C7F do binárnej číselnej sústavy H -> B.

    3         C         7       F
0011  1100  0111  1111

3C7FH = 11110001111111B

Prevod dekadického čísla do kódu BCD D->BCD

    BCD (binary coded decimal) znamená binárne kódované desiatkové číslo. Pre každú číslicu dekadickej číselnej sústavy pripadajú štyri bity, do ktorých sa zapisuje binárna hodnota dane číslice.

Úloha: Preveďte dekadické čísla 546 a 930 do binárnej BCD kódu D -> BCD.

546D = 0101 0100 0110BCD
930D = 1001 0011 0000BCD

Prevod BCD do dekadickej číselnej sústavy BCD->D

    BCD prevádzame do dekadickej číselnej sústavy tak, že všetky štvorice bitov vyjadríme v dekadickej číselnej sústave a tak dostaneme desiatkovú hodnotu.

Úloha: Preveďte dané BCD kódy dekadickej číselnej sústavy BCD -> D.

0011 1000 0111BCD = 387D
0001 0010 0100BCD = 124D

Binárna aritmetika

Príklady HORE  

Binárne sčítanie

    Sčítanie v binárnej aritmetike prevádzame tak, že čísla sčítame po bitoch a ak vznikol medzi susednými bitmi prenos, ten pripočítame do vyššieho rádu.

Úloha: Binárne sčítajte dané čísla.

12 + 10 = 22 

  1100
+1010
10110 = 16+0+4+2+0=22D

23+15

  10111
+  1111
100110 = 32+4+2=38D

Binárne odčítanie

    Pri binárnom odčítaní nahradíme číslo, ktoré odčítavame dvojkovým doplnkom (negujeme číslo po bitoch a pripočítame 1), ktorý však pripočítame. Pri odčítaní musíme jednotlivé čísla doplniť na rovnaký počet bitov spredu nulami. Pri výsledku zanedbávame prvú jednotku.

Úloha: Binárne odčítajte dané čísla.

25-5=20

 11001
-00101 -> spravíme dvojkový doplnok      00101
                                negueme po bitoch -> 11010
                                         pripočítame 1 ->+00001
    tento dvojkový doplníme do príkladu -> 11011 
  
  11001
+11011
110100 = 16+4=20D

73-26=47

 1001001
-0011010 -> 0011010
                      1100101
                    +0000001
                      1100110 -dvojkový doplnok

  1001001
+1100110
10101111 = 32+8+4+2+1=47D

Binárne násobenie

    Binárne násobenie nahradíme posunom a sčítaním. Je to vlastne normálne násobenie ako pri dekadickej sústave. Násobíme postupne. Najskôr poslednou číslicou. Touto číslicou vynásobíme súčiniteľ a výsledok zapíšeme tak, aby jeho posledná číslica bola zapísaná pod číslicou, ktorou sme násobili. Ďalej pokračujeme v násobení sprava doľava. Pre zjednodušenie, ak je číslica, ktorou násobíme súčiniteľ jednotky, odpíšeme súčiniteľ. Ak je to nula, zapíšeme nulu. Jednotlivé čiastkové výsledky zapisujeme pod seba (sprava nám od druhého riadku v každom ďalšom pribúda jedna medzera). Tieto čiastkové výsledky nakoniec binárne sčítame. Odporúča sa sčítavať tieto čísla po dvojiciach, aby sme tak predišli možným chybám.

Úloha: Binárne násobte dané čísla.

5.5=25

    101
 .  101
    101
  000
101    
11001 = 25D

26.7= 182

      11010
.          111
       11010
     11010
   11010    
10110110 = 182D

Binárne celočíselné delenie

    Binárne delenie nahradíme posunom a binárnym odčítaním. Postup pri delení je podobný ako pri delení v dekadickej sústave. Pri delení si najskôr všímame prvé čísla delenca a celého deliteľa. Hľadáme totiž, v akom čísle sa deliteľ nachádza raz. Dobrým zvykom je doplniť delenca zľava nulami tak, aby sa počet jeho bitov rovnal s počtom bitov s ktorými sme museli rátať v prvom kroku. Je to dobré hlavne z hľadiska dvojkového doplnku, ktorý z daného deliteľa (doplneného nulam) bude potrebné vytvoriť. Ako vidíme v príklade, číslo 11B sa raz nachádza až v čísle 101B, preto sme ho doplnili na 011B. Keď sme našli číslo v ktorom sa raz nachádza deliteľ, od tohto čísla binárne deliteľa odčítame (pripočítame k nemu dvojkový doplnok = 101B). Nezabudneme zapísať prvú číslicu výsledku. Po binárnom odčítaní pokračujeme v počítaní. Posúvame sa o jeden bit delenca vpravo. Tento bit sprava pripíšeme k výsledku odčítania. Zistíme, či sa v tomto čísle nachádza raz deliteľ. Ak áno, pokračujeme ako v predchádzajúcom. Ak nie, do výsledku zapíšeme 0 ako ďalšiu číslicu a k výsledku odčítania pripíšeme ďalší bit sprava a pokračujeme v počítaní. Takýmto spôsobom počítame, kým sme neprešli všetkými bitmi delenca a výsledok binárneho odčítania nie je menší ako deliteľ. Ak výsledok odčítanie je väčší ako 0, dostali sme zvyšok po celočíselnom delení.

Úloha: Binárne deľte dané čísla.

21:3= 7

    10101:011= 111 = 7         011 -> dvojkový doplnok = 101
  +101
  1010
       100
     +101
     1001
            11
          +101
          1000

BCD aritmetika

Príklady HORE 

BCD sčítanie

    BCD sčítanie vykonávame podobne ako binárne sčítanie. Ak po sčítaní niektorý rád nadobudne hodnotu väčšiu ako 9, vykonáme šesťkovú korekciu v danom ráde. Šesťkovú korekciu tiež aplikueme, ak nastal prenos po prvom sčítaní.

Šesťková korekcia -     využíva sa pri BCD aritmetike. Je to vlastne pripočítanie čísla 6 (110B) k danému
                                            rádu ak je číslo väčšie ako 9(1001B).

Úloha: sčítate dané BCD čísla.

  375 +148 = 523
 
   0111 1000 0101
 +0001 0100 1000
   0100 1011 1101 <- ak je číslo väčšie ako 9, pripočítam k nemu 6. 
  +         0110 0110 <- nastal tu prenos bitov do vyššieho rádu
    0101 0010 0011 = 523

2785 + 494 = 3279

  0010 0111 1000 0101
+          0100 1001 0100
  0010 1100 0001 1001 <- došlo k prenosu a číslo v jednom ráde je väčšie ako 9
            0110 0110            <- šesťková korekcia
  0011 0010 0111 1001 = 3279


BCD odčítanie

    BCD odčítanie nahradíme pripočítaním deviatkového doplnku . Ak je to potrebné, urobíme šesťkovú korekciu.

Deviatkový doplnok - získame ho tak, že namiesto každého rádu zapíšeme číslo, ktoré chýba k deviatke. 
                                        K takto získanému číslu pripočítame jednotku. Tak vlastne dostaneme záporné 
                                        BCD číslo. Po sčítaní doplnku a odčítanca dostaneme tak ako pri binárnom 
                                        odčítaní na začiatku čísla jednotku. Tú však zanedbávame.

Úloha: Odčítajte dané BCD čísla.

136-36=100 

  0001 0011 0110
- 0000 0011 0110 -> vytvoríme deviatkový doplnok 1001 0110 0011 + 1 = 1001 0110 0100
                                     tento doplnok pripočítame k prvému odčítancovi

   0001 0011 0110
+ 1001 0110 0100
   1010 1001 1010
+ 0110           0110
 10000 1010 0000
             0110          
   0001 0000 0000 = 100D

256 -78 = 178

   0010 0101 0110
-  0000 0111 1000 ->1001 0010 0001 + 1 = 1001 0010 0010 - deviatkový doplnok

   0010 0101 0110
+ 1001 0010 0010
   1011 0111 1000
+ 0110                    
1 0001 0111 1000 = 178 D

Kóder

HORE


    Je to kombinačný logický obvod, na ktorého vstup sa privádza číselná informácia 1 z n a na výstupe sa objaví požadovaný kód.



Prioritný kóder

HORE


    Je to špeciálny kóder, ktorý môže mať súčasne viac aktívnych vstupov. Na výstupe dostaneme kód toho vstupu, ktorý má vyššiu prioritu. Najvyššiu prioritu má 0 a najnižšiu 9.



Dekóder

Príklady HORE  

    Je to kombinačný logický obvod, ktorý prevádza vstupné kódy na číselnú informáciu 1 z n.



Prevodník kódu

HORE


   Je to kombinačný logický obvod, ktorý prevádza vstupné kódy na určitý výstupný kód. Napríklad BCD kód na kód sedemsegmentového displaya.



Multiplexor

Príklady HORE  

   Je to kombinačný logický obvod, ktorý slúži ako elektronický prepínač. V prípade "n" adresných vstupoch má "2n" údajových vstupov a 1 výstup. Na údajový výstup sa prenesú údaje z toho vstupu, ktorého adresu určuje kombinácia adresných vstupov.  Multiplexory i demultiplexory sa využívajú ako generátory časových impulzov, na prevod paralelných údajov na sériové a na výber obvodov pomocou adresy na adresných vstupoch.



Demultiplexor

Príklady HORE  


    Je to kombinačný logický obvod, ktorý slúži ako elektronický prepínač. V prípade "n" adresných vstupov má "2n" údajových vstupov a 1 údajový vstup G. Informácia privedená na údajový vstup sa dostane na ten výstup, ktorého adresu určuje kombinácia adresných vstupov. Ostatné výstupy budú mať hodnotu "log 1". Využitie demultiplexorov je rovnaké ako využitie multiplexorov.



Číslicové komparátory

HORE


   Je to kombinačný logický obvod, ktorý slúži na porovnávanie dvoch n- bitových čísel. Ak je zhoda čísiel na vstupe, na výstupe je jednotka (log. stav). Ak je na výstupe nula (log. stav), znamená to, že na vstupe je nezhoda.  Ako komparátor sa dá použiť napríklad EXNOR. Keď sa pozrieme na jeho pravdivostnú tabuľku zistíme, že ak je na vstupoch zhoda, na výstupe je logický stav 1 a opačne, ak je na vstupoch nezhoda, na výstupe je logický stav 0. Presne opačne pracuje EXOR. Pomocou týchto logických členov môžeme zostrojiť viacbitové komparátory. Pričom ak použijeme obvody EXNOR, tak ich výstupy napojíme na vstupy logického členu AND (navzájom vynásobí výstupy predchádzajúcich obvodov) a ak použijem obvody EXOR, ich výstupy pripojíme na vstupy logického obvodu NOR (navzájom sčíta výstupy z predchádzajúceho obvodu a ich výsledok negue). Týmito zapojeniami dosiahneme, aby sme mali na výstupe jednotku len vtedy. Keď sa zhodujú logické stavy na všetkých vstupoch.



Aritmetické obvody

HORE


    Sú to kombinačné logické obvody, s ktorými môžeme robiť aritmetické operácie.
Aritmetické sčítanie:     1B + 1B = 10B
Pri takomto sčítaní môže nastať prenos bitov z nižšieho rádu:


Sčítačka

HORE


    Sú to kombinačné logické obvody, ktoré vykonávajú aritmetické sčítanie v binárnom kóde. 
Rozdelenie: 

1. EXOR
2. Polosčítačka - sčíta aritmeticky dva bity, vygeneruje prenos do vyššieho rádu 
    a nepracuje s prenosom z predchádzajúceho rádu
3. Úplná sčítačka - sčíta aritmeticky dva bity, pripočíta prenos z nižšieho rádu 
    a vygeneruje prenos do vyššieho rádu
4. Sumačný blok

EXOR

HORE


    Je to najjednoduchšia sčítačka. Sčíta aritmeticky dva bity, negeneruje prenos do vyššieho rádu a nepracuje ani s prenosom z predchádzajúceho rádu.

iB AY
0000
1011
2101
311  0


Polosčítačka

HORE


    Je to obvod, ktorý sčíta aritmeticky dva bity, vygeneruje prenos do vyššieho rádu, ale nepracuje s prenosom z predchádzajúceho rádu.

A - vstup 
B - vstup 
S - súčet
C - carry (prenos)
iB ACS
00000
10101
21001
311  10
S

 A 

B 0011
21 30
C

 A 

B 0010
20 31


S = A B +A B=
    = A B
C = AB



Úplná sčítačka

HORE


    Je to obvod, ktorý sčíta aritmeticky dva bity, pripočíta prenos z nižšieho rádu a vygeneruje prenos do vyššieho rádu.

 


CI - carry out - prenos z nižšieho rádu
A - vstup 
B - vstup 
S - súčet
CO - carry out - prenos do vyššieho rádu

iB ACISCO
000000
100110
201010
301  101
410  010
510  101
611  001
711  111
S           A    CI
0021 3011
41 60 71 50

C0

          A    CI
0020 3110
40 61 71 51

S   = A B CI + A B CI  + A B CI +A B CI  = A (B CI + B CI) + A (B CI + B CI) = A (B CI) + A (B CI) =
                                     ______
      = A (B CI) + A (B CI) = A B CI
CO = A B + CI A + CI B = A B + CI (A + B) = A B + CI (A B + A B + A B) = 
                                                                                                                              
      = A B + CI A B + CI (A B + A B) = A B + CI(A B) = A B CI (A B)



Sumačný blok

HORE


    Jeho úlohou je aritmeticky sčítať viacbitové čísla. Dá sa nahradiť viacerými sčítačkami. Pomocou sumačného bloku sa dá vykonať aritmetické sčítanie, odčítanie, násobenie i delenie.



Detekcia chýb - parita

HORE


0 1 1 0 1 0 1 0 0
1 0 1 1 1 1 1 0 0
1 0 1 1 1 1 1 1 1
0 1 1 0 1 0 1 1
1 1 1 0 1 0 1 0 01
1 0 1 1 1 1 1 0 0=0
1 0 1 1 1 1 1 1 1=1
1=0 1=1 1=1 0=0 1=1 0=0 1=1 1=1

    Najskôr detekujeme paritu v riadkoch a stĺpcoch (prvá tabuľka). Zrátame počet logických jednotiek a zisťujeme, či je tento počet párny alebo nie. Čísla v poslednom stĺpci a riadku záležia od parity, ktorú používame. Ak používame kladnú paritu, dopĺňame v tomto bite číslo, ktoré chýba do párneho počtu parity (Keď máme v prvom riadku päťkrát logickú jednotku, v poslednom stĺpci dopĺňame na párny počet logických jednotiek, bude tam teda logická jednotka. V druhom riadku máme šesť logických jednotiek. Je to párny počet logických jednotiek. Z toho dôvodu je v poslednom stĺpci logická nula.). V zápornej parite dopĺňame na nepárny počet logických jednotiek. V druhej tabuľke už detekujeme chyby. Najskôr zdetekueme paritu ako v prvom prípade. Potom porovnáme hodnoty z posledného stĺpca a riadku. Keď sa porovnávané čísla nezhodujú, znamená to, že je v danom riadku a stĺpci chyba. Keď je známy chybný riadok aj stĺpec zistíme i konkrétny chybný bit.Nevýhoda takejto detekcie je v tom, že spoľahlivo funguje len pri jednom chybnom bite.

Generátor parity

HORE


    Generátor parity zostavíme pomocou logických členov exor (dá sa zostaviť aj z členov exnor).

Generátor párnej parity

  D C B A P N
0 0 0 0 0 0 1
1 0 0 0 1 1 0
2 0 0 1 0 1 0
3 0 0 1 0 11
4 0 1 0 0 1 0
5 0 1 0 1 0 1
6 0 1 1 0 0 1
7 0 1 1 1 1 0
8 1 0 0 0 1 0
9 1 0 0 1 0 1
10 1 0 1 0 0 1
11 1 0 1 1 1 0
12 1 1 0 0 0 1
13 1 1 0 1 1 0
14 1 1 1 0 1 0
15 1 1 1 1 0 1
P          B    A
00 2130 11
81 100111 90
C 120141 150 131
41 60 71 50

P = A B C D + A B C D + A B C D + A B C D + A B C D + A B C D + A B C D + A B C D =
   = A B (C D + C D) + A B (C D + C D) + A B (C D + C D) + A B (C D + C D) = 
   = (C D + C D) (A B + A B) + (C D + C D) (A B + A B) = 
                                                                    
   = (C D) (A B) + (C D) (A B) = A B C D


    Pomocou pravdivostnej tabuľky určíme vlastnosti daného obvodu. V tomto prípade sa má na výstupe P objaviť číslo, ktoré chýba do párneho počtu signálov (logických jednotiek) na vstupe. Na výstupe N sa má naopak objaviť číslo, ktoré chýba do nepárneho počtu signálov na vstupe (bol to vlastne generátor nepárnej parity). Z pravdivoatnej tabuľky sme zostrojili Karnaughovu mapu a po jej minimalizovaní sme získali logický vzorec generátora párnej parity.


Riadený generátor parity

    Podobne sme navrhli aj riadený generátor parity. Ak na vstup R neprivedieme signál, pracuje ako generátor párnej parity. Ak na vstup R privedieme signál (logickú jednotku), bude tento obvod pracovať ako generátor nepárnej parity.





                                TEST