Stavový diagram a návrh obvodov
Stavový diagram a návrh obvodov [1] Stavy sekvenčných obvodov sú definované dvoma druhmi veličín: • vstupnými údajmi • pamäťovými prvkami Správanie sa obvodu môžeme popísať (okrem tabuľkovej formy) aj tzv. stavovým diagramom, ktorý znázorňuje podmienky, za ktorých obvod prechádza z jedného stavu do iného. Stavom obvodu rozumieme hodnoty jeho pamäťových prvkov v danom okamihu. Pri práci so stavovým diagramom rozlišujeme dva časové okamžiky a im prislúchajúce stavy obvodu: • východzí stav a • stav po komutácii (stav po vykonaní jedného kroku) Označujeme ich indexmi napr. n a n+1.
Stavový diagram a návrh obvodov [2] Pre D-klopný obvod sú takýmito veličinami vstupná hodnota D a stav priameho výstupu obvodu Q . Dn Qn Qn+1 Tabuľkovo: 0
0
0
0
1
0
nulovanie
1
0
1
nastavenie
1
1
1
D
D=0 alebo zjednodušene:
Q=0
Q=1
D=1
0
1 D
Stavový diagram a návrh obvodov [3] Podobne pre RS klopný obvod (asynchrónny): R
S
Qn
Qn+1
0
1
0
0
0
1
1
0
nulovanie
1
0
0
1
nastavenie
1
0
1
1
1
1
0
0
1
1
1
1
0
0
X
X
zakázaný stav
RS S
0
1 RS
R
Stavový diagram a návrh obvodov [4] Skúsme navrhnúť synchrónny klopný obvod s novými vlastnosťami: • pamäťový režim • nulovanie • nastavenie • preklopenie potrebujeme dva vstupy (J, K), ktorými sa dá vybrať jeden zo štyroch režimov. Tabuľkovo: J 0 0 0 0 1 1 1 1
K 0 0 1 1 0 0 1 1
Qn 0 1 0 1 0 1 0 1
Qn+1 0 1 0 0 1 1 1 0
režim pamäťový režim nulovanie nastavenie preklopenie
činnosť
nulovanie nastavenie nastavenie nulovanie
Stavový diagram a návrh obvodov [5] Z tabuľky vyčítame, že skutočné nulovanie (t.j. prechod Q: 10) nastaJ 0 0 0 0 1 1 1 1
K 0 0 1 1 0 0 1 1
Qn 0 1 0 1 0 1 0 1
Qn+1 0 1 0 0 1 1 1 0
režim pamäťový režim nulovanie nastavenie preklopenie
činnosť
nulovanie nastavenie nastavenie nulovanie
ne vo dvoch prípadoch (J=0, K=1, Qn=1) a (J=1, K=1, Qn=1), čomu zodpovedá zápis v tvare mintermov: 𝐽𝐽.̅ 𝐾𝐾. 𝑄𝑄𝑛𝑛 + 𝐽𝐽. 𝐾𝐾. 𝑄𝑄𝑛𝑛 = (𝐽𝐽 ̅ + 𝐽𝐽). 𝐾𝐾. 𝑄𝑄𝑛𝑛 = 𝐾𝐾. 𝑄𝑄𝑛𝑛
Pre skutočné nastavenie – t.j. prechod Q: 01 platia podmienky (J=1, K=0, Qn=0) a (J=1, K=1, Qn=0), čo vedie k podmienke prechodu: � . 𝑄𝑄�𝑛𝑛 + 𝐽𝐽. 𝐾𝐾. 𝑄𝑄�𝑛𝑛 = 𝐽𝐽. (𝐾𝐾 � + 𝐾𝐾). 𝑄𝑄�𝑛𝑛 = 𝐽𝐽. 𝑄𝑄�𝑛𝑛 𝐽𝐽. 𝐾𝐾
Stavový diagram a návrh obvodov [6] V stavovej reprezentácii výsledok potom vyzerá nasledovne:
K Q=0
Q=1 J
K tomu, aby sa obvod vynuloval, musí byť pred príchodom hodinového (synchronizačného) impulzu nastavený (Qn=1) a vstup K musí byť v stave 1 (na stave vstupu J teraz nezávisí). Nastavenie obvodu sa uskutoční vtedy, keď bol obvod vynulovaný (Qn=0) a J=1 (teraz nezávisí na stave vstupu K).
Stavový diagram a návrh obvodov [7] � 𝒏𝒏 vieme realizovať pomocou NAND Podmienky prechodov 𝑲𝑲. 𝑸𝑸𝒏𝒏 a 𝑱𝑱. 𝑸𝑸 hradiel: & 𝑱𝑱 ����� � 𝑱𝑱. 𝑸𝑸 Pohľadom na funkčnú tabuľku tejto dvojice hra� 𝑸𝑸 diel vidíme predovšetkým, že v žiadnom riadku ����� � nie sú ich výstupy zároveň nulové. Výstup 𝑱𝑱. 𝑸𝑸 & 𝑲𝑲 ������ 𝑲𝑲. 𝑸𝑸 je nulový pre tie prechody, u ktorých dochádza 𝑸𝑸 k nastaveniu obvodu Q: 01 ����� � ������ J K Q � 𝑸𝑸 𝑲𝑲. 𝑸𝑸 𝑱𝑱. 𝑸𝑸 𝑲𝑲. 𝑸𝑸 je nulový vtedy, a výstup ������ 0 0 0 1 1 1 keď sa obvod nuluje Q: 10 . 0 0 1 0 1 1 0 1 0 1 1 1 To nás privádza k uzáveru, že 0 1 1 0 1 0 ����� � a ������ 1 0 0 1 0 1 signálmi 𝑱𝑱. 𝑸𝑸 𝑲𝑲. 𝑸𝑸 možno priamo 1 0 1 0 1 1 ovládať základný RS–klopný obvod. 1 1 0 1 0 1 1
1
1
0
1
0
Stavový diagram a návrh obvodov [8] Zapojenie potom vyzerá nasledovne: Obvodu pridáme synchronizačný vstup CLK a prekreslíme cesty signálov spätných väzieb od výstupov.
&
𝑱𝑱 � 𝑸𝑸
𝑸𝑸
𝑱𝑱
� 𝑸𝑸
𝑪𝑪𝑪𝑪𝑪𝑪 𝑲𝑲
Q
� 𝑸𝑸
������ 𝑲𝑲. 𝑸𝑸 &
&
Q
&
𝑸𝑸
&
&
&
𝑲𝑲
Výsledné zapojenie bude:
����� � 𝑱𝑱. 𝑸𝑸
& � 𝑸𝑸
Stavový diagram a návrh obvodov [9] Zjednodušená funkčná tabuľka JK-klopného obvodu má tvar: J
K
Qn+1
režim
0
0
Qn
pamäťový režim
0
1
0
nulovanie
1
0
1
nastavenie
1
1
Qn
preklopenie
Kvôli kontrole urobme ešte test funkčnosti navrhnutého JK-KO.
Stavový diagram a návrh obvodov [10] Ako pomôcku vrátime označenie vstupov RS-KO: J
K CLK Qn Qn
S
R Qn+1
x
x
0
x
x
1
1
Qn
pamäťový režim
0
0
1
x
x
1
1
Qn
pamäťový režim
0
1
1
0
1
1
1
Qn
ostáva 0
0
1
1
1
0
1
0
0
skutočné nulovanie
1
0
1
0
1
0
1
1
skutočné nastavenie
1
0
1
1
0
1
1
Qn
ostáva 1
1
1
1
0
1
0
1
1
skutočné nastavenie
1
1
1
1
0
1
0
0
skutočné nulovanie
𝑱𝑱
� 𝑸𝑸
𝑪𝑪𝑪𝑪𝑪𝑪 𝑲𝑲
&
&
𝑸𝑸
𝑺𝑺
&
Q &
𝑹𝑹
Napriek tomu, že tabuľka signalizuje korektnú funkčnosť navrhnutého obvodu, bližšia analýza časových priebehov odhalí chybu aj v tomto zapojení.
� 𝑸𝑸
Stavový diagram a návrh obvodov [11] Ak si v režime preklápania (J=K=1) nakreslíme časový diagram signálov: 𝑪𝑪𝑪𝑪𝑪𝑪 𝑱𝑱
𝑲𝑲 𝑸𝑸
∆t
vidíme, že ak hodinový vstup CLK je v aktívnom stave (CLK=1) dlhšie � (∆t), nové (invertované) hodnonež sa zmenia stavy výstupov Q a 𝑸𝑸 ty výstupných signálov privodia opätovné preklopenie obvodu. Snaha zabrániť tomuto javu vznikol JK-klopný obvod typu "master slave ". Tvoria ho v princípe dva klopné obvody, ktoré majú hodinové vstupy oddelené invertorom. Naviac - spätná väzba je vedená z � druhého obvodu (slave) na vstupy prvého (master). výstupov Q a 𝑸𝑸
Stavový diagram a návrh obvodov [12] Principiálna schéma JK – klopného obvodu master – slave: 𝑱𝑱
� 𝑸𝑸
𝑪𝑪𝑪𝑪𝑪𝑪 𝑲𝑲
&
&
𝑸𝑸
&
&
&
Qm
����� 𝑸𝑸 𝒎𝒎
&
Q
������ 𝑪𝑪𝑪𝑪𝑪𝑪 &
& � 𝑸𝑸
Výstupný klopný obvod je jednoduchý RST-KO a v dobe, keď je hodinový signál v neaktívnom stave (CLK=0) je práve tento obvod otvore� kopíruje stav výstupov časti master Q a Q ný a na výstupy Q a 𝑸𝑸 m m Samotný master je v pamäťovom režime a nevie zmeniť svoj výstup.
Stavový diagram a návrh obvodov [13] Vo chvíli, keď prejde hodinový signál do aktívneho stavu CLK=1, � sa od tohto zavrie sa výstupná časť slave a stav výstupov Q a 𝑸𝑸 okamžiku nedá zmeniť. Vstupná časť master funguje na počiatku ako JK-klopný obvod – ale iba dovtedy, kým sa nezačnú meniť výstupné hodnoty. Zmeny výstupov master-a sa teraz neprenášajú na vstup a nemôžu ho ovplyvniť. Konkrétne je to dôležité v režime preklápania, kedy pri trvajúcom aktívnom hodinovom signále CLK=1 nedochádza k opakovanému preklápaniu výstupu. � 𝑸𝑸 & & Skutočný výstup obvodu preberie 𝑱𝑱 & & Q výstupný stav časti master až pri ������ 𝑪𝑪𝑪𝑪𝑪𝑪 𝑪𝑪𝑪𝑪𝑪𝑪 závernej hrane hodinového sig& & ����� 𝑸𝑸 & & 𝑲𝑲 nálu. m
𝒎𝒎
𝑸𝑸
Q
� 𝑸𝑸
Stavový diagram a návrh obvodov [14] Návrh čítačov na báze JK-klopného obvodu. Počet použitých KO (n) určuje kapacitu čítača – (0 až 2n-1). Pomocou dvoch JK-KO (označme ich ako A a B) vieme zostrojiť čítač v rozsahu 0 až 3. Jeho stavový diagram zrejme vyzerá takto: Čítač nepoužíva žiaden vstupný signál QBQA=00 QBQA=11 (samozrejme okrem synchronizačného -hodinového vstupu CLK). Znamená to, QBQA=01 QBQA=10 -že jedinými premennými v obvode sú -stavové veličiny QA a QB (hodnoty priamych výstupov použitých klopných obvodov). Úlohou návrhu čítača je nájsť zapojenie vstupov J a K oboch použitých klopných obvodov (JA, KA, JB, KB) také, aby sa každým hodinovým impulzom obvod posunul podľa stavového diagramu o jednu pozíciu ďalej v šípkami naznačenom smere.
Stavový diagram a návrh obvodov [15] Kvôli zjednodušeniu nákresov budeme používať neštandardnú značku JK-klopného obvodu, ktorá bude obsahovať iba bezprostredne využívané vstupy a výstupy: JK J Základná funkčná tabuľka JK-KO je CLK Q veľmi prostá: K J
K
Qn+1
režim
0
0
Qn
pamäťový režim
0
1
0
nulovanie
1
0
1
nastavenie
1
1
Qn
preklopenie
V každom riadku tejto tabuľky sú však ukryté dva riadky tabuľky, ktorá rešpektuje skutočne vykonané alebo nevykonané prechody stavu klopného obvodu. Takže našu tabuľku rozšírime na tvar:
Stavový diagram a návrh obvodov [16] Rozšírená tabuľka prechodov JK- klopného obvodu: J
K
Qn
Qn+1
prechod
0
0
0
0
0→0
0
0
1
1
1→1
0
1
0
0
0→0
0
1
1
0
1→0
1
0
0
1
0→1
1
0
1
1
1→1
1
1
0
1
0→1
1
1
1
0
1→0
režim pamäťový nulovanie nastavenie preklápanie
Tabuľka nám priamo slúži k nakresleniu stavového grafu JK – klopného obvodu aj s vyznačenými podmienkami na vstupoch J a K, ktoré vedú k tomu-ktorému prechodu:
Stavový diagram a návrh obvodov [17] Podmienky pre jednotlivé prechody: 0 → 0 (prvý a tretí riadok) � + 𝐽𝐽.̅ 𝐾𝐾 = 𝐽𝐽 ̅ 𝐽𝐽.̅ 𝐾𝐾
0 → 1 (piaty a siedmy riadok) � + 𝐽𝐽. 𝐾𝐾 = 𝐽𝐽 𝐽𝐽. 𝐾𝐾
1 → 1 (druhý a šiesty riadok) � + 𝐽𝐽. 𝐾𝐾 � = 𝐾𝐾 � 𝐽𝐽.̅ 𝐾𝐾
1 → 0 (štvrtý a ôsmy riadok)
J
K
Qn
Qn+1
prechod
0
0
0
0
0→0
0
0
1
1
1→1
0
1
0
0
0→0
0
1
1
0
1→0
1
0
0
1
0→1
1
0
1
1
1→1
1
1
0
1
0→1
1
1
1
0
1→0
režim
pamäťový nulovanie nastavenie preklápanie
z rozpisu prechodov vidíme, že ak je obvod 𝐽𝐽.̅ 𝐾𝐾 + 𝐽𝐽. 𝐾𝐾 = 𝐾𝐾 v stave Q=O o ďalšom kroku, ktorý sa vykoná rozhoduje iba vstup J, pre obvod v stave Q=1 je takto rozhodujúci vstup K. V oboch prípadoch druhý (neaktívny) vstup môže nadobúdať ľubovoľnú hodnotu – čo v tabuľke označíme symbolom "x".
Stavový diagram a návrh obvodov [18] Úplný stavový diagram a podmienky prechodov:
K
J Q=0
K Q=1
prechod
J K
0→0
0 x
0→1
1 x
1→1
x 0
1→0
x 1
J Teraz sme pripravení vrátiť sa k zadaniu úlohy – návrhu dvojbitového binárneho čítača zostaveného z dvoch JK-KO (A, B) ktorého stavový graf je: QBQA=00
QBQA=11
QBQA=01
QBQA=10
Stavový diagram a návrh obvodov [19] Stavový graf vieme rovnocenne vyjadriť aj v tabuľkovej podobe: krok n
𝑄𝑄𝑛𝑛𝐵𝐵 0
𝑄𝑄𝑛𝑛𝐴𝐴 0
1 1
0
prechod
J K
0→0
0 x
0→1
1 x
1→1
x 0
1→0
x 1
1
krok n+1 𝐴𝐴 𝐵𝐵 𝑄𝑄𝑛𝑛+1 𝑄𝑄𝑛𝑛+1 0 1
vstupy prechod B
prechod A
JB
KB
JA
KA
0→0
0→1
0
x
1
x
1
0
0→1
1→0
1
x
x
1
0
1
1
1→1
0→1
x
0
1
x
1
0
0
1→0
1→0
x
1
x
1
Tabuľka definuje štyri logické funkcie (pre vstupy JB, KB, JA, KA) pre ktoré úlohu vstupných premenných hrajú stavy obvodov 𝑄𝑄𝑛𝑛𝐵𝐵 a 𝑄𝑄𝑛𝑛𝐴𝐴 pred komutáciou: JB = f(𝑄𝑄𝑛𝑛𝐵𝐵 , 𝑄𝑄𝑛𝑛𝐴𝐴 ) a podobne pre ostatné vstupy.
Stavový diagram a návrh obvodov [20] Riešiť ich budeme pomocou Karnaughových máp (pre dve premenné 𝑄𝑄𝑛𝑛𝐴𝐴 a 𝑄𝑄𝑛𝑛𝐵𝐵 ): pre vstup KB pre vstup JA pre vstup KA pre vstup JB QB \ QA
0 1
QB \ QA
0 1
QB \ QA
0 1
QB \ QA
0 1
0
1
0
x x
0
1 x
0
x 1
1
x x
1
1
1
1 x
1
x 1
Stavy označené ako "x" sú tie, od ktorých určitý prechod JK-KO nezávisí a môžeme ich podľa potreby nahradiť nulou alebo jednotkou. V Karnaughovej mape spájame jedničkové bunky do čo najväčších blokov. Pre vstupy klopného obvodu "B" sa dajú spojiť bunky v stĺpci pre QA=1, čo znamená, že na hodnote druhej premennej QB nezáleží a vstup JB = QA a aj KB = QA a treba ich pripojiť priamo na výstup QA. Pre obvod "A" je situácia ešte jednoduchšia, pretože všetky bunky môžeme považovať za jednotkové a vstupy JA = KA = 1. Znamená to, že ich treba pripojiť na logickú hodnotu "1".
Stavový diagram a návrh obvodov [21] Takže zapojenie dvojbitového binárneho čítača bude: log 1
CLK
J A CLK K
QA
J B CLK K
QB
Výsledok návrhu nie je prekvapivý. Najnižší bit čítača (obvod A) sa musí preklápať každým hodinovým impulzom (čo je pre JK-KO práve režim J=K=1). Bit v ráde 21 (obvod B) sa preklápa každým druhým hodinovým impulzom – vtedy, keď QA=1. Keď je QA=0, je obvod B v pamäťovom režime (JB=KB=0).
Stavový diagram a návrh obvodov [22] Návrh 4-bitového čítača. Stavový diagram (poradie obvodov: QDQCQBQA): 0000 0001
1111
1110
1101
0010 0011
0100
1100 1011
1010 0101
0110
Odtiaľ vytvoríme tabuľku prechodov:
0111
1001
1000
Stavový diagram a návrh obvodov [23] Tabuľka prechodov: 𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
𝑸𝑸𝑪𝑪𝒏𝒏 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
𝑸𝑸𝑨𝑨𝒏𝒏 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
𝑸𝑸𝑪𝑪𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
𝑸𝑸𝑨𝑨𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→1 1→1 1→1 1→1 1→0
prechody
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x x x x x x x
KD x x x x x x x x 0 0 0 0 0 0 0 1
JC 0 0 0 1 x x x x 0 0 0 1 x x x x
KC x x x x 0 0 0 1 x x x x 0 0 0 1
JB 0 1 x x 0 1 x x 0 1 x x 0 1 x x
KB x x 0 1 x x 0 1 x x 0 1 x x 0 1
JA 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [24] Z tabuľky priamo formujeme Karnaughove mapy pre všetky vstupy J a K: Vstup JD:
QDQC/QBQA
00
01
11
𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
10
00
01
1
𝑸𝑸𝑪𝑪𝒏𝒏 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
𝑸𝑸𝑨𝑨𝒏𝒏 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
𝑸𝑸𝑪𝑪𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Vstup KD:
𝑸𝑸𝑨𝑨𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→1 1→1 1→1 1→1 1→0
prechody
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x x x x x x x
KD x x x x x x x x 0 0 0 0 0 0 0 1
JC 0 0 0 1 x x x x 0 0 0 1 x x x x
QDQC/QBQA
00
01
11
10
00
x
x
x
x
01
x
x
x
x
11
x
x
x
x
11
10
x
x
x
x
10
JD = QC.QB.QA
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
KD = QC.QB.QA
1
KC x x x x 0 0 0 1 x x x x 0 0 0 1
JB 0 1 x x 0 1 x x 0 1 x x 0 1 x x
KB x x 0 1 x x 0 1 x x 0 1 x x 0 1
JA 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [25] A ďalej pre obvod C:
Vstup JC:
QDQC/QBQA
00
01
00
𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
11
10
1
𝑸𝑸𝑪𝑪𝒏𝒏 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
𝑸𝑸𝑨𝑨𝒏𝒏 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
𝑸𝑸𝑪𝑪𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Vstup KC:
𝑸𝑸𝑨𝑨𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→1 1→1 1→1 1→1 1→0
prechody
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
0 0 0 1 x x x x 0 0 0 1 x x x x
01
11
10
00
x
x
x
x
x
x
x
01
1
11
x
x
x
x
11
1
JC = QB.QA
x x x x x x x x 0 0 0 0 0 0 0 1
JC
00
x
1
0 0 0 0 0 0 0 1 x x x x x x x x
KD
QDQC/QBQA
01 10
JD
10
KC = QB.QA
x
x
x
x
KC x x x x 0 0 0 1 x x x x 0 0 0 1
JB 0 1 x x 0 1 x x 0 1 x x 0 1 x x
KB x x 0 1 x x 0 1 x x 0 1 x x 0 1
JA 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [26] pre obvod B:
Vstup JB:
QDQC/QBQA
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
01
11
10
00
1
x
x
01
1
x
11
1
10
1
JB = QA
00
𝑸𝑸𝑫𝑫 𝒏𝒏
𝑸𝑸𝑪𝑪𝒏𝒏 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
𝑸𝑸𝑨𝑨𝒏𝒏 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
𝑸𝑸𝑪𝑪𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
𝑸𝑸𝑨𝑨𝒏𝒏+𝟏𝟏
Vstup KB:
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→1 1→1 1→1 1→1 1→0
prechody
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x x x x x x x
QDQC/QBQA
00
01
11
00
x
x
1
x
01
x
x
1
x
x
11
x
x
1
x
x
10
x
x
1
KB= QA
KD x x x x x x x x 0 0 0 0 0 0 0 1
JC 0 0 0 1 x x x x 0 0 0 1 x x x x
KC x x x x 0 0 0 1 x x x x 0 0 0 1
10
JB 0 1 x x 0 1 x x 0 1 x x 0 1 x x
KB x x 0 1 x x 0 1 x x 0 1 x x 0 1
JA 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [27] pre obvod A:
Vstup JA:
𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
QDQC/QBQA
00
01
11
10
00
1
x
1
x
01
1
x
1
11
1
x
10
1
x
JA = 1
𝑸𝑸𝑪𝑪𝒏𝒏 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
𝑸𝑸𝑨𝑨𝒏𝒏 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
𝑸𝑸𝑪𝑪𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Vstup KA:
𝑸𝑸𝑨𝑨𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→1 1→1 1→1 1→1 1→0
prechody
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x x x x x x x
KD x x x x x x x x 0 0 0 0 0 0 0 1
JC 0 0 0 1 x x x x 0 0 0 1 x x x x
QDQC/QBQA
00
01
11
10
00
x
1
x
1
x
01
x
1
x
1
1
x
11
x
1
x
1
1
x
10
x
1
x
1
KA= 1
KC x x x x 0 0 0 1 x x x x 0 0 0 1
JB 0 1 x x 0 1 x x 0 1 x x 0 1 x x
KB x x 0 1 x x 0 1 x x 0 1 x x 0 1
JA 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [28] Získané výsledky dovoľujú nakresliť schému 4-bitového binárneho čítača na báze JK-KO:
JA = 1 JB = QA JC = QB.QA JD = QC.QB.QA
KA= 1 KB= QA KC = QB.QA KD = QC.QB.QA
log 1
CLK
J A CLK K
QA
J B CLK K
QB
&
J C CLK K &
QA.QB
QC
J D CLK K QA.QB.QC
QD
Stavový diagram a návrh obvodov [29] A nakoniec ešte návrh desiatkového čítača: 0000
1001
1000
0010
0011
0100
0001 𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1
𝑸𝑸𝑪𝑪 𝒏𝒏 0 0 0 0 1 1 1 1 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 0
𝑸𝑸𝑪𝑪 𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→0
prechody
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→0
0111
0110 A
0101
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x
KD x x x x x x x x 0 1
JC 0 0 0 1 x x x x 0 0
KC x x x x 0 0 0 1 x x
JB 0 1 x x 0 1 x x 0 0
KB x x 0 1 x x 0 1 x x
JA 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1
Aj keď zmeny v tabuľke prechodov nie sú veľké, pri aplikácii Karnaughových máp rozdiely zistíme. Predovšetkým tabuľky nebudú úplné, pretože niektoré stavy (kombinácie výstupov) neexistujú.
Stavový diagram a návrh obvodov [30] Znova formulujeme Karnaughove mapy pre všetky vstupy J a K: Vstup JD:
QDQC/QBQA
00
01
11
𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1
10
00
01
1
𝑸𝑸𝑪𝑪 𝒏𝒏 0 0 0 0 1 1 1 1 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 0
𝑸𝑸𝑪𝑪 𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 0
1 0 1 0 1 0 1 0 1 0
Vstup KD:
prechody
D
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→0
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x
KD x x x x x x x x 0 1
JC 0 0 0 1 x x x x 0 0
KC x x x x 0 0 0 1 x x
QDQC/QBQA
00
01
11
10
00
x
x
x
x
01
x
x
x
x
#
#
#
#
1
#
#
11
#
#
#
#
11
10
x
x
#
#
10
JD = QC.QB.QA
𝑸𝑸𝑨𝑨 𝒏𝒏+𝟏𝟏
KD = QA
Symbolom "#" je označený neexistujúci stav, ktorý samozrejme možno pri optimalizácii využiť ako stav s hodnotou "1".
JB 0 1 x x 0 1 x x 0 0
KB x x 0 1 x x 0 1 x x
JA 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [31] Pre obvod C: 𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1
Vstup JC:
QDQC/QBQA
00
01
00
11
10
1
𝑸𝑸𝑪𝑪 𝒏𝒏 0 0 0 0 1 1 1 1 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 0
𝑸𝑸𝑪𝑪 𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0
D
prechody
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→0
Vstup KC:
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x
KD x x x x x x x x 0 1
JC 0 0 0 1 x x x x 0 0
KC x x x x 0 0 0 1 x x
QDQC/QBQA
00
01
11
10
00
x
x
x
x
01
x
x
x
x
01
11
#
#
#
#
11
#
#
#
#
#
#
10
x
x
#
#
10
JC = QB.QA
KC = QB.QA
1
JB 0 1 x x 0 1 x x 0 0
KB x x 0 1 x x 0 1 x x
JA 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [32] pre obvod B: 𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1
Vstup JB:
QDQC/QBQA
01
11
10
00
1
x
x
01
1
x
#
11 10
JB = QD.QA
00
#
𝑸𝑸𝑪𝑪 𝒏𝒏 0 0 0 0 1 1 1 1 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 0
𝑸𝑸𝑪𝑪 𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0
Vstup KB:
D
prechody
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→0
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x
KD x x x x x x x x 0 1
JC 0 0 0 1 x x x x 0 0
KC x x x x 0 0 0 1 x x
QDQC/QBQA
00
01
11
00
x
x
1
x
01
x
x
1
#
#
11
#
#
#
#
#
#
10
x
x
#
#
KB= QA
10
JB 0 1 x x 0 1 x x 0 0
KB x x 0 1 x x 0 1 x x
JA 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [33] pre obvod A: 𝑸𝑸𝑫𝑫 𝒏𝒏 0 0 0 0 0 0 0 0 1 1
Vstup JA:
QDQC/QBQA
00
01
11
10
00
1
x
1
x
01
1
x
1
11
#
#
10
1
x
JA = 1
𝑸𝑸𝑪𝑪 𝒏𝒏 0 0 0 0 1 1 1 1 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏 0 0 1 1 0 0 1 1 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏 0 1 0 1 0 1 0 1 0 1
𝑸𝑸𝑫𝑫 𝒏𝒏+𝟏𝟏
0 0 0 0 0 0 0 1 1 0
𝑸𝑸𝑪𝑪 𝒏𝒏+𝟏𝟏
0 0 0 1 1 1 1 0 0 0
𝑸𝑸𝑩𝑩 𝒏𝒏+𝟏𝟏
0 1 1 0 0 1 1 0 0 0
𝑸𝑸𝑨𝑨 𝒏𝒏+𝟏𝟏
1 0 1 0 1 0 1 0 1 0
Vstup KA:
D
prechody
0→0 0→0 0→0 0→0 0→0 0→0 0→0 0→1 1→1 1→0
C
0→0 0→0 0→0 0→1 1→1 1→1 1→1 1→0 0→0 0→0
B
0→0 0→1 1→1 1→0 0→0 0→1 1→1 1→0 0→0 0→0
A
0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0 0→1 1→0
JD 0 0 0 0 0 0 0 1 x x
KD x x x x x x x x 0 1
JC 0 0 0 1 x x x x 0 0
KC x x x x 0 0 0 1 x x
QDQC/QBQA
00
01
11
10
00
x
1
x
1
x
01
x
1
x
1
#
#
11
#
#
#
#
#
#
10
x
1
#
#
KA= 1
JB 0 1 x x 0 1 x x 0 0
KB x x 0 1 x x 0 1 x x
JA 1 x 1 x 1 x 1 x 1 x
KA x 1 x 1 x 1 x 1 x 1
Stavový diagram a návrh obvodov [34] 4-bitového binárneho čítača s modulom 10:
JA = 1 JB = QD.QA JC = QB.QA JD = QC.QB.QA
KA= 1 KB= QA KC = QB.QA KD = QA log 1
CLK
J A CLK K
QA
& QA.QD J B CLK K
QB
&
J C CLK K &
QA.QB
QC
J D CLK K QA.QB.QC
QD