Logické obvody (X36LOB)

Semestrální práce



Vypracoval: Marek Handl
Studijní skupina: 226
Kontakt: mean.marine@seznam.cz
Datum: prosinec 2005



Obsah:
  1. Zadání
  2. Minimalizace vnitřních stavů
  3. Binární kódování
    1. Zakódování vnitřních stavů
    2. Karnaughovy mapy
    3. Výrazy pro budící proměnné klopných obvodů
    4. Schéma
    5. Maximální frekvence
    6. Výstup simulace
    7. Výstup implementace
  4. Kódování Grayovym kódem
    1. Zakódování vnitřních stavů
    2. Karnaughovy mapy
    3. Výrazy pro budící proměnné klopných obvodů
    4. Schéma
    5. Maximální frekvence
    6. Výstup simulace
    7. Výstup implementace
  5. Závěr


1. Zadání
  1. Pomocí synchronního sekvenčního obvodu realizujte konečný automat se dvěma vstupy a, b a jedním výstupem z, zadaný následující tabulkou přechodů a tabulkou výstupů. Minimalizujte počet vnitřních stavů a použijte vhodné zakódování vnitřních stavů. Výsledné schéma implementujte v Xilinx ISE a nahrajte do přípravku XCRP. Vstupy ovládejte přepínači, výstup a všechny vnitřní proměnné vyveďte na LED diody. Pro hodinový signál a signál reset (použijte klopné obvody s asynchronním nulováním) použijte tlačítka. Správnost návrhu ověřte na přípravku podle tabulky přechodů a výstupů.
  2.   
        \ba| tabulka přechodů           tabulka výstupů
       Qi\ | 00   01   10               00   01   10
      --------------------             --------------
         Q0| Q13  Q2   Q2                1    0    1   
         Q1| Q11  Q4   Q5                1    1    0   
         Q2| Q11  Q13  Q13               0    1    1   
         Q3| Q0   Q0   Q11               0    1    1   
         Q4| Q0   Q10  Q11               0    1    1   
         Q5| Q3   Q9   Q9                0    1    0   
         Q6| Q3   Q1   Q12               0    1    0   
         Q7| Q6   Q1   Q1                0    1    1   
         Q8| Q4   Q13  Q9                0    1    0   
         Q9| Q11  Q3   Q5                1    1    0   
        Q10| Q13  Q7   Q7                1    0    1   
        Q11| Q4   Q9   Q12               0    1    0   
        Q12| Q4   Q8   Q11               0    1    1   
        Q13| Q6   Q4   Q8                1    1    0   
    
      Použijte klopné obvody typu T(FTC) .
    
        

    1. Použijte buď NAND nebo NOR hradla.
    2. Vnější vstupy máte k dispozici pouze v přímé formě.
    3. Zpoždění obvodů pro hradla i pro klopné obvody naleznete v přednáškách.

  3. Stanovte maximální možnou hodinovou frekvenci za předpokladů: Vstupní stavy obvodu se mění pouze v intervalu < T , T + 3 ns >, kde T jsou okamžiky příchodu záporné hrany hodinových pulzů. Správný výstupní stav musí trvat po dobu nejméně 3 ns.


2. Minimalizace počtu stavů:

Minimalizaci provedu pomocí implikační tabulky. Z důvodu přehlednosti vynechávám písmeno Q.
V prvním kroku zakřížkuji všechny dvojice stavů, které nemohou být totožné, protože se liší výstupem. U dvojic stavů, které jsou z hlediska výstupu totožné nechám zatím políčko prázdné.

0X
1XX
2XXX
3XX X
4XX X
5XXXXXX
6XXXXX X
7XX XXX
8XXXXX XX
9X XXXXXXXX
10 XXXXXXXXXX
11XXXXX X XX X
12XX XX XXX X X
13X XXXXXXX X X X X
012345678910111213

Do prázdných políček doplňuji podmínky, kdy by se odpovídající stavy rovnaly, pokud je podmínka na první pohled nesplnitelná vpisuji X.

0X
1XX
2XXX
3XXXX
4XXX0=10X
5XXXXXX
6XXXXXXX
7XX6=11
1=13
XXXXX
8XXXXX3=4
9=13
XXX
9X3=4XXXXXXXX
102=7XXXXXXXXXX
11XXXXXX3=4
1=9
XXXX X
12XXXXXXXXXXX X X
13X6=11
5=8
XXXXXXX6=11
3=4
5=8
X X X X
012345678910111213

Všechny podmínky jsou splnitelné, takže dostáváme rovnosti stavů:

Zminimalizovaná tabulka přechodů a výstupů:
        \ba| tabulka přechodů           tabulka výstupů
       Qi\ | 00   01   10               00   01   10
      --------------------             --------------
         Q0| Q1   Q2   Q2                1    0    1   
         Q1| Q6   Q3   Q5                1    1    0   
         Q2| Q6   Q1   Q1                0    1    1   
         Q3| Q0   Q0   Q6                0    1    1   
         Q5| Q3   Q1   Q1                0    1    0   
         Q6| Q3   Q1   Q12               0    1    0   
        Q12| Q3   Q5   Q6                0    1    1   
    
Pro zakódování vnitřních stavů zkusím binární kódování a grayův kód. Provedu všechny potřebné výpočty a porovnám výsledky. Metodu Dollota and McCluskeyho nepoužiji, protože je určena pro klopné obvody typu D.


3. Binární kódování

a) Zakodovaná tabulka přechodů a výstupů:
              |  00    01    10    |  00  01  10
          cde |  cde   cde   cde   |  y   y   y
      --------------------------------------------
      Q0  000 |  001   010   010   |  1   0   1
      Q1  001 |  101   011   100   |  1   1   0
      Q2  010 |  101   001   001   |  0   1   1
      Q3  011 |  000   000   101   |  0   1   1
      Q5  100 |  011   001   001   |  0   1   0
      Q6  101 |  011   001   110   |  0   1   0
      Q12 110 |  011   100   101   |  0   1   1
    

b) Karnaughovy mapy s vyznačenými "tlustými znaky" pro vstupy klopných obvodů a mapa pro výstupní proměnnou:
c: d: e: y:
    d     d     d     d
    e     e     e     e
0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 0
  0 0 X 0   1 1 X 1   1 1 X 1   0 0 X 0
    0 1 X 1     0 1 X 0     1 0 X 1     0 0 X 1
  0 1 1 0   1 0 0 0   0 0 1 1   1 0 1 1
    X X X X     X X X X     X X X X     X X X X
      X X X X       X X X X       X X X X       X X X X
b   0 0 X 1 b   0 0 X 0 b   1 1 X 0 b   1 1 X 1
  c 0 0 0 0   c 1 1 0 0   c 0 1 0 1   c 0 1 1 1
a a a a

c) Výrazy pro budící proměnné klopných obvodů (typ T) a vnější výstup v MNDF:

d) Schéma zapojení:

Rozhodl jsem se pro použití hradel NAND.
Schéma zapojení pro binární kódování
Zdrojový soubor se schématem: schema_bin.sch

e) Výpočet maximální frekvence:

Zpoždění v ns:
NestabilniVstup 3
StabilniVystup 3
ClockToQ 3
Setup 1
NAND2 1.4
NAND4 2.2
NAND6 3
NAND7 3.4

Hledám kritickou cestu:
  1. Ze vstupu na vstup klopného obvodu
    NestabilniVstup + NAND2 + NAND4 + NAND7 + Setup = 3 + 1.4 + 2.2 + 3.4 + 1 = 11 ns
  2. Z výstupu klopného obvodu na výstup
    ClockToQ + NAND2 + NAND4 + NAND6 + StabilniVystup = 3 + 1.4 + 2.2 + 3 + 3 = 12.6 ns
  3. Ze vstupu na výstup
    NestabilniVstup + NAND2 + NAND4 + NAND6 + StabilniVystup = 3 + 1.4 + 2.2 + 3 + 3 = 12.6 ns
  4. Z výstupu klopného obvodu na vstup klopného obvodu
    ClockToQ + NAND2 + NAND4 + NAND7 + Setup = 3 + 1.4 + 2.2 + 3.4 + 1 = 11 ns
Kritická cesta tedy zabere 12,6 ns, z čehož dostáváme maximální možnou frekvenci cca. 79 MHz.


f) Časový diagram získaný ze simulace:

Výstup simulace pro binární kódování

Abych prošel všechny stavy (podle původní nezminimalizované tabulky přechodů) zvolil jsem takovýto průchod.
(Qi =ba=> Qj značí toto: Qi je výchozí stav, poté přijdou na vstup hodnoty a, b a automat přejde do stavu Qj.)

Q0 =00=> Q13 =00=> Q6 =00=> Q3 =00=> Q0 =01=> Q2 =00=> Q11 =00=> Q4 =01=> Q10 =10=> Q7 =01=> Q1 =10=> Q5 =01=> Q9 =00=> Q11 =10=> Q12 =01=> Q8

Což se díky rovnosti některých stavů dá přepsat takto:
Q0 =00=> Q1 =00=> Q6 =00=> Q3 =00=> Q0 =01=> Q2 =00=> Q6 =00=> Q3 =01=> Q0 =10=> Q2 =01=> Q1 =10=> Q5 =01=> Q1 =00=> Q6 =10=> Q12 =01=> Q5


g) Výstup implementace:

Hodnota maximální frekvence je 192,308 MHz, využívá se 7% makrobuněk, 10% Ptermů, 5% registrů, 25% pinů a 4% vstupů funkčních bloků.
Kompletní zpráva o implementaci pro binární kódování je zde.



4. Grayův kód

a) Zakodovaná tabulka přechodů a výstupů:
              |  00    01    10    |  00  01  10
          cde |  cde   cde   cde   |  y   y   y
      --------------------------------------------
      Q0  000 |  001   011   011   |  1   0   1
      Q1  001 |  111   010   110   |  1   1   0
      Q2  011 |  111   001   001   |  0   1   1
      Q3  010 |  000   000   111   |  0   1   1
      Q5  110 |  010   001   001   |  0   1   0
      Q6  111 |  010   001   101   |  0   1   0
      Q12 101 |  010   110   111   |  0   1   1
    

b) Karnaughovy mapy s vyznačenými "tlustými znaky":
c: d: e: y:
    d     d     d     d
    e     e     e     e
0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 0
  X 0 0 0   X 1 1 1   X 0 0 0   X 0 0 0
    X 1 1 0     X 1 0 0     X 1 1 1     X 1 0 0
  0 1 0 1   1 1 0 1   1 0 1 1   1 0 1 1
    X X X X     X X X X     X X X X     X X X X
      X X X X       X X X X       X X X X       X X X X
b   X 1 0 0 b   X 1 0 0 b   X 0 1 1 b   X 1 1 1
  c 0 0 0 0   c 1 1 0 0   c 1 0 1 0   c 0 1 1 1
a a a a

c) Výrazy pro budící proměnné klopných obvodů (typ T) a vnější výstup v MNDF:

d) Schéma zapojení:

Opět používám hradla NAND.
Schéma zapojení pro grayův kód
Zdrojový soubor se schématem: schema_gray.sch

e) Výpočet maximální frekvence:

Počítám se stejnými hodnotami zpoždění jako u binárního kódování.
Hledám kritickou cestu:
  1. Ze vstupu na vstup klopného obvodu
    NestabilniVstup + NAND2 + NAND4 + NAND6 + Setup = 3 + 1.4 + 2.2 + 3 + 1 = 10.6 ns
  2. Z výstupu klopného obvodu na výstup
    ClockToQ + NAND2 + NAND4 + NAND6 + StabilniVystup = 3 + 1.4 + 2.2 + 3 + 3 = 12.6 ns
  3. Ze vstupu na výstup
    NestabilniVstup + NAND2 + NAND4 + NAND6 + StabilniVystup = 3 + 1.4 + 2.2 + 3 + 3 = 12.6 ns
  4. Z výstupu klopného obvodu na vstup klopného obvodu
    ClockToQ + NAND2 + NAND4 + NAND6 + Setup = 3 + 1.4 + 2.2 + 3 + 1 = 10.6 ns
Kritická cesta tedy opět trvá 12,6 ns, což znamená maximální frekvenci cca. 79 MHz.


f) Časový diagram získaný ze simulace:

Výstup simulace pro grayův kód

Průchod jsem zvolil stejný jako v případě binárního kódování, tedy:
Q0 =00=> Q13 =00=> Q6 =00=> Q3 =00=> Q0 =01=> Q2 =00=> Q11 =00=> Q4 =01=> Q10 =10=> Q7 =01=> Q1 =10=> Q5 =01=> Q9 =00=> Q11 =10=> Q12 =01=> Q8

Respektive:
Q0 =00=> Q1 =00=> Q6 =00=> Q3 =00=> Q0 =01=> Q2 =00=> Q6 =00=> Q3 =01=> Q0 =10=> Q2 =01=> Q1 =10=> Q5 =01=> Q1 =00=> Q6 =10=> Q12 =01=> Q5


g) Výstup implementace:

Hodnota maximální frekvence je 192,308 MHz, využívá se 7% makrobuněk, 10% Ptermů, 5% registrů, 25% pinů a 4% vstupů funkčních bloků.
Kompletní zpráva o implementaci pro grayův kód je zde.



5. Závěr

Z výpočtů a z provedených implementací vyplývá, že obě alternativy - binární kódování a grayův kód - jsou srovnatelné jak z hlediska použití součástek, tak z hlediska časového.