De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Inhoudstafel Inleiding De basis van digitaal ontwerp

Verwante presentaties


Presentatie over: "Inhoudstafel Inleiding De basis van digitaal ontwerp"— Transcript van de presentatie:

1 Inhoudstafel Inleiding De basis van digitaal ontwerp
Vak - hoofdstuk Inhoudstafel Inleiding De basis van digitaal ontwerp Combinatorische schakelingen Sequentiële schakelingen: ook een functie van de voorgeschiedenis Niet-programmeerbare processoren Programmeerbare processoren Hardware-beschrijvingstalen

2 Sequentiële schakeling
Vak - hoofdstuk Sequentiële schakeling uitgangen zijn een functie van de ingangen en de toestand (m.a.w. ook functie van de vorige ingangen) Geheugenfunctie Geheugencomponent, bijv. capaciteit Ladingverlies  dynamische logica Positieve terugkoppeling: flip-flop geheugen combinatorische schakeling Uit In

3 Sequentiële schakeling
Vak - hoofdstuk Sequentiële schakeling Asynchrone schakeling: uitgangen & toestand veranderen wanneer een ingang verandert Synchrone schakeling: uitgangen & toestand veranderen alleen wanneer de klokingang verandert Klokkarakteristieken: Klokperiode = tijd tussen 2 opeenvolgende 10 klokovergangen Klokfrequentie = 1/klokperiode ‘Duty cycle’ = (tijd klok is 1)/klokperiode Stijgende flank (‘rising edge’) = 01 klokovergang Dalende flank (‘falling edge’) = 10 klokovergang

4 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

5 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL De flip-flop als bouwblok SR-latch Geklokte latch Gevoeligheid Types flip-flop Tijdsgedrag Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

6 Set-Reset-latch Set Q’ Q Reset Ongedefinieerd S R Q(next) Q 1 NA S R Q
Vak - hoofdstuk Set-Reset-latch Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL S R Q(next) Q 1 NA Set Q’ Q Reset S R Q Q’ Ongedefinieerd

7 Vak - hoofdstuk ‘Critical race’ Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL uiteindelijke waarde afhankelijk van de implementatie en de poortvertragingen  ongedefinieerde waarde Oscillatie wanneer vertraging van poorten identiek Anders bepaalt de snelste poort de uiteindelijke waarde Een Booleaans signaal kan dus reeds 5 waarden aannemen: 0 : het logisch niveau “0” 1 : het logisch niveau “1” Z : hoog-impedant (zwevend) X : don’t care U : ongedefinieerd

8 SR-latch met NAND-poorten
Vak - hoofdstuk SR-latch met NAND-poorten Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL S* R* Q(next) 1 Q NA Set Q Reset Q’ S* R* Q Q’ Set en Reset zijn actief-lage signalen

9 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL De flip-flop als bouwblok SR-latch Geklokte latch Gevoeligheid Types flip-flop Tijdsgedrag Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

10 Geklokte SR-latch C = 1 : volg ingangen C = 0 : behoud uitgang Set Q’
Vak - hoofdstuk Geklokte SR-latch Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Set Q’ C (klok) Q Reset C S R Q(next) X Q 1 NA C = 1 : volg ingangen C = 0 : behoud uitgang

11 Geklokte D-latch Vertragingen
Vak - hoofdstuk Geklokte D-latch D Q’ Q C Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL klok C D Q(next) X Q 1 C = 0 : behoud uitgang C = 1 : volg ingang Vertragingen DQ als C = 1 : tHL = 1 + 2,4 + 1,4 = 4,8 tLH = 2,4 + 1,4 + 1,4 = 5,2 DQ’ als C = 1 : tHL = 2,4 + 1,4 = 3,8 CQ als D = 1 : tLH = 2,4 + 1,4 + 1,4 = 5,2 als D = 0 : tHL = 2,4 + 1,4 = 3,8 5.2/3.8 D C Q Q’

12 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL De flip-flop als bouwblok SR-latch Geklokte latch Gevoeligheid Level-sensitive latch Master-slave flip-flop Edge-triggered flip-flop Types flip-flop Tijdsgedrag Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

13 Vak - hoofdstuk Gevoeligheid Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Alle voorgaande geklokte latches zijn gevoelig aan het niveau van de klok: Klok = 1 : transparant Klok = 0 : onthoud de laatste waarde Transparant zijn kan problemen geven als meerdere latches mekaar opvolgen (bijv. schuifregisters) het ingangssignaal kan door meerdere latches doorrimpelen in 1 klokperiode daardoor is het ook moeilijk om aan de set-up/houdtijd te voldoen Oplossing: flankgevoelig werken Master-slave flip-flop Edge-triggered flip-flop

14 Voorbeeld doorrimpelen
Vak - hoofdstuk Voorbeeld doorrimpelen X Y Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL D C Q1 D C Q2 D C Q3 Clk Clk X Q1 Q2 Q3

15 Master-slave flip-flop
Vak - hoofdstuk Master-slave flip-flop Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL X Master Slave Master Slave Q1 Y D Qm1 D Qs1 D Qm2 D Qs2 C C C C Clk Master : transparant als Clk = 0 Slave : transparant als Clk = 1 Clk X Qm1 Q1 Qm2 Y

16 Edge-triggered flip-flop
Vak - hoofdstuk Edge-triggered flip-flop A Set Latch Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Output Latch Set Q Clk Reset Q’ B D Reset Latch Clk D B A R S Q

17 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL De flip-flop als bouwblok SR-latch Geklokte latch Gevoeligheid Types flip-flop SR-FF JK-FF D-FF T-FF Asynchrone set & reset Tijdsgedrag Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

18 SR-flip-flop Symbool Karakteristieke tabel
Vak - hoofdstuk SR-flip-flop Symbool Karakteristieke tabel (voor ontwerp van flip-flop) Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL S Q S R Clk Q Q’ Dalende S R Q(next) Q 1 NA Clk R Q’ Stijgende flanktriggering Excitatietabel (voor ontwerp met flip-flop) Positieve S R Clk Q Q’ niveautriggering S R Clk Q Q’ Negatieve Q Q(next) S R X 1

19 JK-flip-flop Symbool Karakteristieke tabel
Vak - hoofdstuk JK-flip-flop Symbool Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Karakteristieke tabel J Q J K Q(next) Q 1 Q’ Clk K Q’ Realiseerbaar met SR-flip-flop: S = JQ’ R = KQ Excitatietabel Q Q(next) J K X 1 Schakelingen voor de aansturing van JK-flip-flops zijn goedkoper dan die voor SR-flip-flops: meer don’t cares

20 D-flip-flop Symbool Karakteristieke tabel Excitatietabel
Vak - hoofdstuk D-flip-flop Symbool Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Karakteristieke tabel D Q D Q(next) 1 Clk Q’ Excitatietabel Q Q(next) D 1 Ontwerpen met D-flip-flops is eenvoudig

21 Karakteristieke tabel
Vak - hoofdstuk T-flip-flop Symbool Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Karakteristieke tabel T Q T Q(next) Q 1 Q’ Clk Q’ Excitatietabel D Clk Q Q’ T Q Q(next) T 1

22 Asynchrone set & reset asynchrone reactie gewenst
Vak - hoofdstuk Asynchrone set & reset PRS* (Preset) Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL asynchrone reactie gewenst A Set Q Clk Reset Q’ B D zorg dat de eerste laag in dezelfde toestand is als de tweede CLR* (Clear) PRS Asynchrone set & reset zijn nuttig om de flip-flop in ’t begin in een gekende toestand te brengen D Q Clk Q’ CLR

23 Waarom actief-lage signalen?
Vak - hoofdstuk Waarom actief-lage signalen? Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Karakteristieken van asynchrone ingangs-signalen, zoals ‘reset’ of `InterruptReq’: Het signaal hangt af van een onbekend of groot aantal aansturende signalen Het resulterende signaal is actief als minstens 1 aansturend signaal actief is Mogelijke implementaties: Grote OR-poort: niet flexibel Probleem als # ingangen onbekend Veel lange verbindingen (1/aansturing) Wired-or  vereist actief-lage signalen

24 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL De flip-flop als bouwblok SR-latch Geklokte latch Gevoeligheid Types flip-flop Tijdsgedrag Set-up/houdtijd Metastabiliteit Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

25 Vak - hoofdstuk Set-up/houdtijd Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Set-up-tijd = tijd voor actieve klokflank waarin ingangen niet mogen veranderen Bijv. geklokte D-latch tset-up = tPHL(inverter) Houdtijd = tijd na actieve klokflank waarin ingangen niet mogen veranderen D Q’ Q C S R D C S D’ R Q Ongedefinieerd

26 Metastabiliteit Bi-stabiel element:
Vak - hoofdstuk Metastabiliteit Flip-flop SR latch Geklokte latch Gevoeligheid Types Tijdsgedrag Synchroon Asynchroon Basisblokken RTL Bi-stabiel element: 2 stabiele toestanden 1 metastabiele toestand Element kan in metastabiele toestand gebracht worden door marginale triggering : schending minimum pulsbreedte schending set-up/houdtijd pnog in meta(t) = exp(−t/) waarbij  afhangt van de hoeveelheid ruis de steilheid van de curve Geen probleem als signaal niet (meer) metastabiel bij gebruik! Vuit1 Vin1 Vin2 Vuit2 Vuit1 Vin1 = Vin2 = Vuit2 stabiel metastabiel bal & heuvel analogie

27 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine (Eindige Toestanden Machine) Het ontwerp in detail Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

28 Voorbeeld ontwerp met FSM (1)
Vak - hoofdstuk Voorbeeld ontwerp met FSM (1) Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Ontwerp een modulo 4 teller “Count”, die telt als de ingang “CE” (Count Enable) 1 is. Vertaal de specificatie naar een toestandsdiagramma van een FSM: CE=0 CE=0 Count=0 Count=1 CE=1 Voor elke ingangscombinatie moet een overgang gegeven worden in elke toestand CE=1 Count=2 CE=1 Count=3 CE=1 CE=0 CE=0

29 Interpretatie toestandsdiagramma
Vak - hoofdstuk Interpretatie toestandsdiagramma CE=0 CE=0 Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Count=0 CE=1 Count=1 CE=1 CE=1 Count=3 Count=2 CE=0 CE=0 CE=1 We bevinden ons in toestand “Count=0” en CE is 0: we wachten aan de tip van de pijl CE wordt 1: spring naar tip andere pijl, zonder tellen! Stijgende klokflank (synchrone FSM!): ga naar toestand “Count=1” (met CE=1) CE wordt 0: spring naar tip andere pijl Stijgende klokflank: blijf in “Count=1” (met CE=0)

30 Toestandstabel alternatieve voorstelling diagramma CE=0 CE=0 S0 CE=1
Vak - hoofdstuk Toestandstabel Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL alternatieve voorstelling diagramma CE=0 CE=0 S0 CE=1 S1 CE=1 CE=1 S3 S2 CE=0 CE=0 CE=1 Huidige toestand Volgende toestand CE = 0 CE = 1 S0 S1 S2 S3

31 Voorbeeld ontwerp met FSM (2-4)
Vak - hoofdstuk Voorbeeld ontwerp met FSM (2-4) Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Minimaliseer het aantal toestanden. Dit is reeds het minimale aantal. Codeer de toestanden. 2 FF’s Q1 en Q0 nodig voor 4 toestanden: Kies het type flip-flop. Hier het D-type (eenvoud ontwerp). Toestand Q1 Q0 Count=0 Count=1 1 Count=2 Count=3 Opmerking: Uitgang FF’s direct bruikbaar als “Count”

32 Voorbeeld ontwerp met FSM (5)
Vak - hoofdstuk Voorbeeld ontwerp met FSM (5) Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Realisatie van de combinatorische logica Bepaal de excitatiefuncties: Huidige toestand Volgende toestand Q1nQ0n Q1Q0 CE = 0 CE = 1 00 01 10 11 1 CE D1=Q1n Q0 Q1 1 CE D0=Q0n Q0 Q1 Excitatietabel D-FF Q Q(next) D 1  aan te leggen D is identiek aan Qn

33 Voorbeeld ontwerp met FSM (5)
Vak - hoofdstuk Voorbeeld ontwerp met FSM (5) Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Implementatie 1 CE Q1n=D1 Q0 Q1 1 CE Q0n=D0 Q0 Q1 CE Q1 Q0 Q1n D1 Q1 Q0n D0 Q0

34 Voorbeeld ontwerp met FSM (6)
Vak - hoofdstuk Voorbeeld ontwerp met FSM (6) Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Analyse tijdsgedrag D1 Q1 D0 Q0 CE Q1n D1 Q1 Q0n D0 Q0 Clk CE Q1 Q0

35 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Moore-type: toestandgebaseerd Mealy-type: inputgebaseerd Het ontwerp in detail Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

36 Toestandgebaseerde FSM
Vak - hoofdstuk Toestandgebaseerde FSM Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL de uitgangen zijn enkel functie van de huidige toestand, niet van de ingangen uitgang is gespecificeerd voor elke toestand waarde wordt genoteerd in de cirkel die de toestand voorstelt Bijv. modulo 4 teller met uitgang “Y”, die 1 is als de teller 3 is Count=0 Y=0 CE=0 CE=1 Count=2 Y=0 Count=3 Y=1 Count=1 Y=0

37 Vak - hoofdstuk Toestandstabel Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL CE=0 CE=0 Q1Q0=00 Y=0 CE=1 Q1Q0=01 Y=0 We veronderstellen dezelfde codering van de toestanden als in het vorig voorbeeld CE=1 CE=1 Q1Q0=11 Y=1 Q1Q0=10 Y=0 CE=0 CE=0 CE=1 Huidige toestand Volgende toestand Q1nQ0n Uitgang Q1Q0 CE = 0 CE = 1 Y 00 01 10 11 1 Y hangt enkel af van de huidige toestand

38 Toestandgebaseerde FSM: realisatie
Vak - hoofdstuk Toestandgebaseerde FSM: realisatie Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Huidige toestand Volgende toestand Q1nQ0n Uitgang Q1Q0 CE = 0 CE = 1 Y 00 01 10 11 1 Excitatietabel D-FF 1 CE Q1n=D1 Q0 Q1 1 CE Q0n=D0 Q0 Q1 Q Q(next) D 1 1 Y Q1 Q0

39 Toestandgebaseerde FSM: realisatie
Vak - hoofdstuk Toestandgebaseerde FSM: realisatie Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Q0 Q0 Q1n=D1 Q1 Q0n=D0 Q1 Q0 Y 1 1 1 1 CE 1 1 CE 1 1 Q1 1 D1 Q1 CE Q0 D0 Q1n Q0n Y

40 Toestandgebaseerde FSM: tijdsgedrag
Vak - hoofdstuk Toestandgebaseerde FSM: tijdsgedrag Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL D1 Q1 D0 Q0 CE Q1n Y D1 Q1 Q0n D0 Q0 Gevaar voor ‘glitch’! Clk CE Q1 Q0 Y

41 Vormt een ‘glitch’ een probleem?
Vak - hoofdstuk Vormt een ‘glitch’ een probleem? Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Als de uitgang met een glitch verbonden is aan een kloksignaal: Schadelijk: ongewenste actieve klokflank Moeilijk te ontdekken: glitch kan verdwijnen bij het aanleggen van de meetprobe (hogere capaciteit  grotere vertraging) Anders (in synchrone schakelingen): Enkel schadelijk als binnen set-up/houdtijd Verbruikt nodeloos vermogen

42 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Moore-type: toestandgebaseerd Mealy-type: inputgebaseerd Het ontwerp in detail Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

43 Vak - hoofdstuk Inputgebaseerde FSM Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL uitgangen zijn functie van de huidige toestand en van de ingangen uitgang is gespecificeerd voor elke toestand en elke combinatie van ingangen waarde wordt genoteerd naast de overgang Bijv. modulo 4 teller met uitgang “Y”, die 1 is als de teller 3 is en de ingang “CE” 1 is CE=0/Y=0 Count=1 Count=2 CE=1/Y=0 Count=3 CE=1/Y=1 Count=0 CE=0/Y=0 CE=1/Y=0

44 Vak - hoofdstuk Toestandstabel Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL CE=0/Y=0 CE=0/Y=0 Q1Q0=00 CE=1/Y=0 Q1Q0=01 We veronderstellen dezelfde codering van de toestanden als in de vorige voorbeelden CE=1/Y=1 CE=1/Y=0 Q1Q0=11 Q1Q0=10 CE=0/Y=0 CE=0/Y=0 CE=1/Y=0 Huidige toestand Volgende toestand/uitgangen Q1nQ0n/Y Q1Q0 CE=0 CE=1 00 00/0 01/0 01 10/0 10 11/0 11 00/1 Y hangt af van de huidige toestand en van de ingangen

45 Inputgebaseerde FSM: realisatie
Vak - hoofdstuk Inputgebaseerde FSM: realisatie Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Huidige toestand Volgende toestand/uitgangen Q1nQ0n/Y Q1Q0 CE=0 CE=1 00 00/0 01/0 01 10/0 10 11/0 11 00/1 Excitatietabel D-FF 1 CE Q1n=D1 Q0 Q1 1 CE Q0n=D0 Q0 Q1 Q Q(next) D 1 1 CE Y Q0 Q1

46 Inputgebaseerde FSM: realisatie
Vak - hoofdstuk Inputgebaseerde FSM: realisatie Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Q0 Q0 Q0 Q1n=D1 Q1 Q0n=D0 Q1 Y Q1 1 1 1 1 CE 1 1 CE 1 1 CE 1 D1 Q1 CE Q0 D0 Q1n Q0n Y

47 Inputgebaseerde FSM: tijdsgedrag
Vak - hoofdstuk Inputgebaseerde FSM: tijdsgedrag D1 Q1 D0 Q0 Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL CE Q1n Y D1 Q1 Q0n D0 Q0 Gevaar voor ‘glitch’! Clk CE Q1 Q0 Y

48 Toestandgebaseerd model
Vak - hoofdstuk Toestandgebaseerd model Volgende toestand S* Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Huidige toestand S Ingangen I Klok S*=F(S,I) Next State Logic D Q O=H(S) Output Logic Clk Uitgangen O D Q Clk D Q Clk

49 Inputgebaseerd model Huidige toestand S Ingangen I S*=F(S,I)
Vak - hoofdstuk Inputgebaseerd model Flip-flop Synchroon FSM Moore-type Mealy-type Ontwerp Asynchroon Basisblokken RTL Huidige toestand S Ingangen I S*=F(S,I) Next State Logic D Q O=H(S,I) Output Logic Clk Uitgangen O D Q Clk D Q Clk

50 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Het ontwerp in detail Toestandsdiagramma: constructie FSM Minimalisering aantal toestanden Codering toestanden Keuze van het type flip-flop Realisatie van de combinatorische logica Analyse tijdsgedrag Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

51 Vak - hoofdstuk Constructie FSM Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL construeer de FSM vertrekkend van de beschrijving in een natuurlijke taal (onduidelijk & onvolledig) Bijv. modulo-3 op/neer-teller C(ount enable) : tel als C = 1 D(irection) : tel op/neer als D = 0/1 uitgang Y : enable voor cascadering Y = 1 als bij optellen (C = 1 and D = 0) tellerwaarde = 2 bij neertellen (C = 1 and D = 1) tellerwaarde = 0

52 Constructie FSM Is dit ontwerp toestand- of input-gebaseerd?
Vak - hoofdstuk Constructie FSM Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Is dit ontwerp toestand- of input-gebaseerd? Het voorbeeld is inputgebaseerd omdat de uitgang Y afhangt van de toestand (tellerwaarde) en de ingangen “C” & “D” Teken het toestandsdiagramma: vertrek van de initiële toestand voor elke nieuwe toestand, teken voor elke combinatie van ingangen de overgang naar de volgende toestand uitgangswaarden moeten toegekend worden aan elke toestand als toestandgebaseerd aan elke overgang als inputgebaseerd

53 FSM modulo-3 teller u1 u2 u0 d0 d2 d1 CD=10 Y=1 CD=0X Y=0 CD=0X Y=0
Vak - hoofdstuk FSM modulo-3 teller CD=10 Y=1 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL CD=0X Y=0 CD=0X Y=0 CD=0X Y=0 u1 CD=10 Y=0 u2 CD=10 Y=0 u0 CD=10 Y=0 CD=10 Y=0 CD=10 Y=1 d0 CD=11 Y=0 d2 CD=11 Y=1 d1 CD=11 Y=0 CD=11 Y=1 CD=0X Y=0 CD=11 Y=0 CD=0X Y=0 CD=11 Y=0 CD=0X Y=0

54 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Het ontwerp in detail Toestandsdiagramma Minimalisering: minimaal # FF’s Codering toestanden Keuze van het type flip-flop Realisatie van de combinatorische logica Analyse tijdsgedrag Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

55 Vak - hoofdstuk Equivalente FSM’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL twee FSM’s zijn equivalent als ze dezelfde uitgangssequentie produceren voor eenzelfde ingangssequentie Twee toestanden kunnen door één toestand vervangen worden als beide toestanden dezelfde uitgangen produceren voor dezelfde ingangen beide toestanden naar equivalent volgende toestanden gaan voor dezelfde ingangen Dus toestanden sj and sk zijn equivalent (sj  sk) als en slechts als iI: h(sj,i) = h(sk,i) : beide toestanden produceren dezelfde uitgang voor elke combinatie van ingangen iI: f(sj,i)  f(sk,i) : de volgende toestanden zijn equivalent voor elke combinatie van ingangen

56 a) Maak de toestandstabel
Vak - hoofdstuk a) Maak de toestandstabel Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 u0 u0/0 u1/0 d2/1 u1 u2/0 d0/0 u2 u0/1 d1/0 d0 d1 d2 d2/0

57 b) Construeer de implicatietabel
Vak - hoofdstuk b) Construeer de implicatietabel Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De implicatietabel bevat 1 vierkant per combinatie van 2 toestanden Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 u0 u0/0 u1/0 d2/1 u1 u2/0 d0/0 u2 u0/1 d1/0 d0 d1 d2 d2/0 u1 u2 d0 d1 d2 u0 u1 u2 d0 d1

58 c) Verwijder combinaties in tegenspraak met vereiste 1
Vak - hoofdstuk c) Verwijder combinaties in tegenspraak met vereiste 1 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Verwijder alle combinaties die verschillende uitgangen hebben voor dezelfde ingangen Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 u0 u0/0 u1/0 d2/1 u1 u2/0 d0/0 u2 u0/1 d1/0 d0 d1 d2 d2/0 u1 u2 d0 d1 d2 u0 u1 u2 d0 d1

59 d) Verwijder combinaties in tegenspraak met vereiste 2
Vak - hoofdstuk d) Verwijder combinaties in tegenspraak met vereiste 2 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Duid voor de overblijvende vierkanten aan welke toestanden equivalent moeten zijn om de huidige toestanden equivalent te maken Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 u0 u0/0 u1/0 d2/1 u1 u2/0 d0/0 u2 u0/1 d1/0 d0 d1 d2 d2/0 u1 u2 OK Minimum aantal toestanden: 3 {u0,d0} = s0 {u1,d1} = s1 {u2,d2} = s2 d0 OK d1 OK d2 u0 u1 u2 d0 d1

60 e) Vernieuw de toestandstabel
Vak - hoofdstuk e) Vernieuw de toestandstabel Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Minimum aantal toestanden: 3 {u0,d0} = s0 {u1,d1} = s1 {u2,d2} = s2 Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 u0 u0/0 u1/0 d2/1 u1 u2/0 d0/0 u2 u0/1 d1/0 d0 d1 d2 d2/0 Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 s0 s0/0 s1/0 s2/1 s1 s2/0 s2 s0/1

61 Het nieuwe toestandsdiagramma
Vak - hoofdstuk Het nieuwe toestandsdiagramma Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgangen toestand CD = 0X CD = 10 CD = 11 s0 s0/0 s1/0 s2/1 s1 s2/0 s2 s0/1 CD=10 Y=1 CD=0X Y=0 CD=0X Y=0 CD=0X Y=0 CD=10 Y=0 CD=10 Y=0 s0 s1 s2 CD=11 Y=0 CD=11 Y=0 CD=11 Y=1 Dit hadden we van in het begin kunnen tekenen, maar beter 1 toestand te veel dan 1 te weinig !

62 Volgende toestand / Uitgangen
Vak - hoofdstuk Een tweede voorbeeld Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Het volgend (denkbeeldig) voorbeeld toont beter het gebruik van de implicatietabel aan: Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1

63 b) Construeer de implicatietabel
Vak - hoofdstuk b) Construeer de implicatietabel Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1 s1 s2 s3 s4 s5 s0 s1 s2 s3 s4

64 c) Verwijder combinaties in tegenspraak met vereiste 1
Vak - hoofdstuk c) Verwijder combinaties in tegenspraak met vereiste 1 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Verwijder alle combinaties die verschillende uitgangen hebben voor dezelfde ingangen Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1 s1 s2 s3 s4 s5 s0 s1 s2 s3 s4

65 d) Verwijder combinaties in tegenspraak met vereiste 2
Vak - hoofdstuk d) Verwijder combinaties in tegenspraak met vereiste 2 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Duid voor de overblijvende vierkanten aan welke toestanden equivalent moeten zijn om de huidige toestanden equivalent te maken Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1 s1 1-4 1-3 s2 OK s3 0-2 0-2 1-4 s4 4-5 2-4 4-5 2-4 0-2 1-2 s5 s0 s1 s2 s3 s4

66 d) Verwijder combinaties in tegenspraak met vereiste 2
Vak - hoofdstuk d) Verwijder combinaties in tegenspraak met vereiste 2 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Verwijder de overblijvende vierkanten die afhangen van toestandscombinaties die niet equivalent zijn Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1 s1 1-4 1-3 1-4: ? 1-3:OK s2 OK s3 0-2 0-2: ? 0-2: ? 1-4: ? 0-2 1-4 s4 4-5 2-4 4-5 2-4 0-2 1-2 s5 s0 s1 s2 s3 s4

67 d) Verwijder combinaties in tegenspraak met vereiste 2
Vak - hoofdstuk d) Verwijder combinaties in tegenspraak met vereiste 2 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Itereer met verwijderen tot er geen verandering meer optreedt Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1 s1 1-4: ? 1-3:OK s2 OK Minimum aantal toestanden: 3 {s0,s2} = u0 {s1,s3,s4} = u1 {s5} = u2 s3 0-2: ? 0-2: ? 1-4: ? s4 4-5 2-4 4-5 2-4 0-2 1-2 s5 s0 s1 s2 s3 s4

68 e) Vernieuw de toestandstabel
Vak - hoofdstuk e) Vernieuw de toestandstabel Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 s0 s4/1 s2/0 s1/1 s1 s5/1 s2 s0/0 s3/1 s3 s4 s5 s2/1 Minimum aantal toestanden: 3 {s0,s2} = u0 {s1,s3,s4} = u1 {s5} = u2 Huidige Volgende toestand / Uitgangen toestand AB=00 AB=01 AB=10 u0 u1/1 u0/0 u1 u2/1 u2 u0/1

69 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Het ontwerp in detail Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Keuze van het type flip-flop Realisatie van de combinatorische logica Analyse tijdsgedrag Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

70 Toestandscodering n toestanden vragen minstens log2n flip-flops
Vak - hoofdstuk Toestandscodering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL n toestanden vragen minstens log2n flip-flops Er zijn n! mogelijke coderingen (n keuzes voor de eerste toestand, n−1 voor de tweede, …) Nr. s0 s1 s2 s3 1 00 01 10 11 13 2 14 3 15 4 16 5 17 6 18 7 19 8 20 9 21 22 23 12 24

71 Toestandscodering Wat is de impact van de keuze?
Vak - hoofdstuk Toestandscodering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Wat is de impact van de keuze? Elke keuze leidt tot een verschillende combinatorische schakeling, telkens met een andere kostprijs en vertraging Meest gekozen toestandscoderingen: Straightforward (voor de hand liggend) Minimum-bit-change One-hot (één-actief) Verdere verfijningen mogelijk Prioritized-adjacency strategy (cfr. boek)

72 Straightforward-codering
Vak - hoofdstuk Straightforward-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL gebruik de binaire voorstelling van het nummer van de toestand als code (s0  000, s5  101, …) Meestal gebruikt als toestandsnummer een fysische betekenis heeft (bijv. een teller) Meerdere FF’s veranderen bij elke overgang meerdere bits veranderen zelden tegelijkertijd elke bitverandering verbruikt vermogen elke bitverandering heeft wat logica nodig Dit leidt tot gevaar voor glitches hoger vermogenverbruik hogere kostprijs

73 Straightforward-codering
Vak - hoofdstuk Straightforward-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgang toestand CD = 0X CD = 10 CD = 11 s0 s0/0 s1/0 s2/1 s1 s2/0 s2 s0/1 Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1

74 Minimum-bit-change-codering
Vak - hoofdstuk Minimum-bit-change-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL maak het totaal aantal bitveranderingen voor alle toestandsveranderingen samen minimaal Meestal gebruikt als kostprijs en vermogen minimaal moeten zijn (CMOS) Gray-code teller 00 01 10 11 1 2 Straightforward Minimum-bit-change

75 Minimum-bit-change-codering
Vak - hoofdstuk Minimum-bit-change-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 s0 s0/0 s1/0 s2/1 s1 s2/0 s2 s0/1 s0 s1 Alle overgangen zijn even waarschijnlijk. 1 bit verschil bij een overgang is telkens slechts mogelijk voor vier van de zes overgangen. s2 Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 10/0 11/1 10 11/0 11 00/1 Mogelijke codering: s0=00 s1=10 s2=11

76 Vak - hoofdstuk One-hot-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL voorzie één flip-flop per toestand (ongecodeerd) Q van 1 FF = 1, Q van de andere FF’s = 0 Kostprijs FF’s = O(n) i.p.v. O(log n)  enkel bruikbaar voor klein aantal toestanden (bijv. controller) Zeer eenvoudige ontwerp  snel ontwerp Eenvoudige combinatorische schakelingen aan de ingangen van de flip-flops Goedkoop combinatorisch deel, duur FF-deel FPGA heeft in ½ CLB een kleine combinatorische schakeling en 1 FF  one-hot-codering is ideaal for FPGA (behalve tellers: teveel toestanden)

77 One-hot-codering s0=001 s1=010 s2=100 Huidige
Vak - hoofdstuk One-hot-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 s0 s0/0 s1/0 s2/1 s1 s2/0 s2 s0/1 s0=001 s1=010 s2=100 Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 001 001/0 010/0 100/1 010 100/0 100 001/1

78 Implementatie One-hot-codering
Vak - hoofdstuk Implementatie One-hot-codering Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL One-hot met D-flip-flop: Elke overgang die in een toestand toekomt vereist een AND-poort One-hot met SR-flip-flop: Elke overgang die van een andere toestand toekomt vereist een AND-poort op de S-ingang Elke overgang die naar een andere toestand vertrekt vereist een AND-poort op de R-ingang

79 One-hot-codering met D-FF
Vak - hoofdstuk One-hot-codering met D-FF CD=0X Y=0 CD=0X Y=0 CD=0X Y=0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL CD=10 Y=1 CD=10 Y=0 CD=10 Y=0 s0 s1 s2 CD=11 Y=1 CD=11 Y=0 CD=11 Y=0 Q2 D Q1 D Q0 D P C Y C D

80 One-hot-codering met SR-FF
Vak - hoofdstuk One-hot-codering met SR-FF CD=0X Y=0 CD=0X Y=0 CD=0X Y=0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL CD=10 Y=1 CD=10 Y=0 CD=10 Y=0 s0 s1 s2 CD=11 Y=1 CD=11 Y=0 CD=11 Y=0 P Q0 Q1 C Q2 C S R S R S R Y C D

81 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Het ontwerp in detail Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Keuze van het type flip-flop Realisatie van de combinatorische logica Analyse tijdsgedrag Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

82 Vergelijking types flip-flop
Vak - hoofdstuk Vergelijking types flip-flop Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL JK SR D T Kost FF duurst goedkoop Eenvoud ontwerp −− ++ + # don’t care Typische toepassing Verschillend signaal sets en resets FF Tijdelijk waarde onthouden Tellers & frequentie-delers # don’t care bepalen kost en snelheid van de combinatorische logica (minder  duurder/trager)

83 Keuze type flip-flop Geen algemene regel!
Vak - hoofdstuk Keuze type flip-flop Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Geen algemene regel! Voor de goedkoopste schakeling moeten alle varianten uitgeprobeerd worden Als een korte ontwerptijd belangrijk is, zijn D-flip-flops de beste keuze FPGA’s bevatten enkel D-flip-flops

84 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Het ontwerp in detail Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Keuze van het type flip-flop Realisatie van de combinatorische logica Analyse tijdsgedrag Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

85 Realisatie met JK-FF’s
Vak - hoofdstuk Realisatie met JK-FF’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaal de excitatiefuncties voor FF 1 Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1 00 01/0 01 10/0 10 00/1 00 00/0 00 10/1 01 00/0 10 01/0 01 01/0 10 10/0 Q0 Q0 Excitatietabel JK-FF J1 Q1 K1 Q1 Q Q(next) J K X 1 X X 1 X 1 X X X D D 1 X C C 1 X

86 Realisatie met JK-FF’s
Vak - hoofdstuk Realisatie met JK-FF’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaal de excitatiefuncties voor FF 0 X Y Q0 Q1 1 C D Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1 00 10/1 01 00/0 10 01/0 10/1 00/1 00 01/0 01 10/0 10 00/1 00 00/0 01 01/0 10 10/0 Q0 Q0 Excitatietabel JK-FF J0 Q1 K0 Q1 Q Q(next) J K X 1 X X 1 X 1 D D X 1 C C

87 Realisatie met JK-FF’s
Vak - hoofdstuk Realisatie met JK-FF’s Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL J1 Q1 K1 Q1 X X X X X X X X X X D D 1 X X X X X 1 C C 1 X X X X X 1 C Q1 Q0 J K J K C D

88 Realisatie met JK-FF’s
Vak - hoofdstuk Realisatie met JK-FF’s Q0 Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL J0 Q1 K0 Q1 Y Q1 X X X X X X X X X X X X D D D X X 1 X 1 X X 1 X C C C 1 X X X 1 X X X 1 23 C C Q1 Q0 Kostprijs: 26 (als 2-lagen realisatie van NAND’s en Q’ gebruikt) Y J K J K C D

89 Realisatie met SR-FF’s
Vak - hoofdstuk Realisatie met SR-FF’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaal de excitatiefuncties voor FF 1 Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1 S1 Q0 Q1 C D R1 X 1 Excitatietabel SR-FF Q Q(next) S R X 1

90 Realisatie met SR-FF’s
Vak - hoofdstuk Realisatie met SR-FF’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaal de excitatiefuncties voor FF 0 Q0 Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1 Y Q1 X X D 1 X C X 1 Q0 Q0 S0 Q1 R0 Q1 Excitatietabel SR-FF X X X X X Q Q(next) S R X 1 X X X X X D D X 1 X 1 X C C 1 X 1 X X

91 Realisatie met SR-FF’s
Vak - hoofdstuk Realisatie met SR-FF’s Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL S1 Q1 R1 Q1 X X X X X X X X X X D D 1 X X X 1 C C 1 X X X 1 Q1 C Q0 C S R S R C D

92 Realisatie met SR-FF’s
Vak - hoofdstuk Realisatie met SR-FF’s Q0 Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL S0 Q1 R0 Q1 Y Q1 X X X X X X X X X X X X D D D X 1 X 1 X 1 X C C C 1 X 1 X X X 1 Kostprijs: 28 (dubbel gebruik NAND4) Q1 C Q0 C Y S R S R C D

93 Volgende toestand / Uitgang
Vak - hoofdstuk Realisatie met D-FF’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaal de excitatiefuncties X Y Q0 Q1 1 C D Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1 X 1 Q1n=D1 Q0 Q1 C D 1 X Q0n=D0 Q0 Q1 C D Excitatietabel D-FF Q Q(next) D 1

94 Kostprijs: 31 (dubbel gebruik NAND4)
Vak - hoofdstuk Realisatie met D-FF’s Q0 Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Q1n=D1 Q1 Q0n=D0 Q1 Y Q1 X 1 1 X X X 1 1 X X D D D 1 X X 1 1 X C C C 1 X 1 X X 1 Q1 Clr Q0 Clr Kostprijs: 31 (dubbel gebruik NAND4) D D Y 1,5 CLB C D

95 Volgende toestand / Uitgang
Vak - hoofdstuk Realisatie met T-FF’s Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaal de excitatiefuncties X Y Q0 Q1 1 C D Huidige Volgende toestand / Uitgang toestand CD=0X CD=10 CD=11 00 00/0 01/0 10/1 01 10/0 10 00/1 X T1 Q0 Q1 1 C D X T0 Q0 Q1 1 C D Excitatietabel T-FF Q Q(next) T 1

96 Realisatie met T-FF’s Kostprijs: 32 Q0 Q0 Q0 T1 Q1 T0 Q1 Y Q1 X X X X
Vak - hoofdstuk Realisatie met T-FF’s Q0 Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL T1 Q1 T0 Q1 Y Q1 X X X X X X D D D 1 X 1 1 X 1 1 X C C C 1 X 1 1 1 X X 1 Q1 Clr Q0 Clr Kostprijs: 32 T T Y C D

97 Realisatie met T-FF’s Kostprijs: 28 Q0 Q0 Q0 T1 Q1 T0 Q1 Y Q1 X X X X
Vak - hoofdstuk Realisatie met T-FF’s Q0 Q0 Q0 Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL T1 Q1 T0 Q1 Y Q1 X X X X X X D D D 1 X 1 1 X 1 1 X C C C 1 X 1 1 1 X X 1 Q1 Clr Q0 Clr Kostprijs: 28 T T Y C D

98 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Finite State Machine Het ontwerp in detail Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Keuze van het type flip-flop Realisatie van de combinatorische logica Analyse tijdsgedrag Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

99 Analyse tijdsgedrag Bepaling maximale klokfrequentie
Vak - hoofdstuk Analyse tijdsgedrag Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Bepaling maximale klokfrequentie 1/(vertraging van kritisch pad) Kritisch pad is het pad met de langste combinatorische vertraging tussen twee klokflanken Vertraging = klokQ0’ + NAND4 + NAND3 + set-up D = 5,2 + 2,2 + 1,8 + 1 = 10,2 stel vertraging van 1 = 1 ns  fmax = 98 MHz Q1 D Q0 C Clr Y

100 Analyse tijdsgedrag Controle ‘clock skew’ Detectie van glitches
Vak - hoofdstuk Analyse tijdsgedrag Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Controle ‘clock skew’ verschil in de tijdsogenblikken waarop een klokflank op verschillende plaatsen in de schakeling waargenomen worden Verschillende vertragingstijd van combinatorische logica op klokpad klokbuffers (wegens grote fan-out klok) ‘gated’ klok Verschillende stijg/daaltijden t.g.v. verschillende capacitieve belasting Verschillende looptijd kloksignaal over een verbinding draad = transmissielijn bij hoge frequenties doorlooptijd schakelmatrices FPGA Detectie van glitches Metastabiliteitsproblemen klok klok Q CE

101 Wanneer metastabiliteitsproblemen?
Vak - hoofdstuk Wanneer metastabiliteitsproblemen? Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Slecht ontworpen synchrone schakeling Lagere klokfrequentie of snellere logica Asynchrone ingangen Synchronisatie Enkel onafhankelijke signalen! Apart synchronisatiesignaal (bijv. bus-enable) Sync1 D Q Sync2 Synchroon sequentieel circuit Externe signalen Async1 Async2 Sync1 Sync2 Async2 Async1 metastabiliteit

102 Hoe kans op metastabiliteit bij synchronisatie verminderen?
Vak - hoofdstuk Hoe kans op metastabiliteit bij synchronisatie verminderen? Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Wacht lang genoeg tot FF uit metastabiele toestand: tmeta ≤ tr (metastability resolution time) Async Clk D C Q comb. synchrone schakeling tr = tklok − tcomb − tset-up pmeta(tr) kan verkleind worden maar wordt nooit 0 ! Verbeteringen: Gebruik traagst mogelijke klok Gebruik snelle FF’s (kleine  & kleine tset-up) Hoger vermogenverbruik!

103 Hoe kans op metastabiliteit bij synchronisatie verminderen?
Vak - hoofdstuk Hoe kans op metastabiliteit bij synchronisatie verminderen? Flip-flop Synchroon FSM Ontwerp Diagramma Minimaliseer Codering Keuze FF Realisatie Tijdsgedrag Asynchroon Basisblokken RTL Synchronisatie door n FF’s na mekaar tr = (n − 1) × (tklok − tset-up) + (tklok − tcomb − tset-up) Om pmeta(tr) klein genoeg te maken volstaat n = 2 of 3 Synchronisatie door 2 FF’s na mekaar op een frequentie = klokfrequentie/n tr = n × tklok − tset-up + (tklok − tcomb − tset-up) Als externe signalen niet veel veranderen t.o.v. klok Als geen onmiddellijke reactie op verandering vereist Async Clk D C Q1 comb. Qn Async Clk/n D C Q1 comb. Q2 Clk

104 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau

105 Asynchrone sequentiële schakelingen
Vak - hoofdstuk Asynchrone sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL uitgangen & toestand kunnen veranderen zodra een ingang verandert Beperking tot fundamentele modus (“Fundamental mode restriction”) geen twee (of meer) ingangen mogen tegelijkertijd veranderen een ingangsverandering mag slechts optreden als alle effecten van de vorige verandering uitgestorven zijn Toepassing: kleine asynchrone schakelingen Bijv. koppeling twee synchrone eilanden met verschillende klokken of klokken met een ongekende skew

106 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Realisatie Analyse tijdsgedrag Basisbouwblokken op RTL-niveau

107 Toestanden bij asynchrone schakelingen
Vak - hoofdstuk Toestanden bij asynchrone schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Toestand = elke mogelijke combinatie van ingangen en uitgangen Voorbeeld: ontwerp een schakeling met een uitgang Q en twee ingangen I en E. E = 1 & stijgende flank van I  Q wordt 1 Q blijft 1 tot E 0 wordt E = 0  Q = 0 Q I E Toestand a 1 b c d onmogelijk e f 001  111 of b  f 1X1  0X0 of e  a f  c 1X0 onmogelijk

108 Toestandsdiagramma Q wisselt als Q = 0 & 01  11 Q = 1 & X1  X0 e/1
Vak - hoofdstuk Toestandsdiagramma 11 e/1 01 f/1 11 Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Q I E Toestand a 1 b c d onmogelijk e f a 1 b 10 1 c 00 01 11 1 d IE 01 1 e a/0 00 b/0 01 1 f 00 10 00 01 Q wisselt als Q = 0 & 01  11 Q = 1 & X1  X0 11 c/0 10 d/0 11 10

109 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Toestandsdiagramma Minimalisering aantal toestanden (transitietabel) Codering toestanden Realisatie Analyse tijdsgedrag Basisbouwblokken op RTL-niveau

110 Toestandstabel S IE Q 00 01 11 10 a b c d e 1 f a b X c e/1 f/1 a b f
Vak - hoofdstuk Toestandstabel S IE Q 00 01 11 10 a b c d e 1 f 01 11 00 Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL 11 01 10 a b X c e/1 f/1 a b f X 01 00 11 a X d c X b d c a e f X 00 01 10 X e f c a/0 b/0 Stabiele toestand Fundamentele modus 10 11 00 11 10 01 Q I E Toestand a 1 b c d onmogelijk e f c/0 d/0

111 Minimalisering toestanden
Vak - hoofdstuk Minimalisering toestanden Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Smelt compatibele toestanden samen toestanden met dezelfde volgende toestanden & uitgangen of don’t cares Meer restrictief dan equivalente toestanden Dezelfde volgende toestanden i.p.v. equivalente volgende toestanden Nodig wegens don’t care volgende toestanden Niet associatief (equivalentie wel!): compatibel(a,b) en compatibel(b,c) betekent niet dat compatibel(a,c)

112 Minimalisering toestandstabel
Vak - hoofdstuk Minimalisering toestandstabel Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL S IE Q 00 01 11 10 a b X c f d e 1 Compatibele toestanden: a & b; a & c; a & d; c & d; e & f Opmerking: compatibel: b & a; a & c niet compatibel: b & c S IE Q 00 01 11 10 f c X d e 1

113 Minimalisering toestandstabel
Vak - hoofdstuk Minimalisering toestandstabel Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL S IE Q 00 01 11 10 f c X d e 1 S IE Q 00 01 11 10 f e X 1 S IE Q 00 01 11 10 1 Transitietabel = geminimaliseerde toestandstabel

114 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Realisatie Analyse tijdsgedrag Basisbouwblokken op RTL-niveau

115 Codering toestanden Op dezelfde manier als bij synchrone schakelingen
Vak - hoofdstuk Codering toestanden Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Op dezelfde manier als bij synchrone schakelingen S IE Q 00 01 11 10 1  : 00  : 01  : 11 bijv. S IE Q 00 01 11 10 1

116 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Realisatie Analyse tijdsgedrag Basisbouwblokken op RTL-niveau

117 Realisatie I E S1 S0 Q S IE Q 00 01 11 10 1 X 1 E S0n S0 S1 I S1n Q
Vak - hoofdstuk Realisatie Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL I E S1 S0 Q S IE Q 00 01 11 10 1 X 1 E S0n S0 S1 I S1n Q

118 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Toestandsdiagramma Minimalisering aantal toestanden Codering toestanden Realisatie Analyse tijdsgedrag: races & hazards Basisbouwblokken op RTL-niveau

119 Vak - hoofdstuk Races Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Race : Het feit dat 2 of meer toestandsvariabelen moeten veranderen als 1 ingangsbit verandert Critical race : Race die tot een verkeerde toestand leidt Cycle : Race die tot een oscillatie tussen twee toestanden leidt Het optreden van een race en het soort race hangt af van de vertragings-karakteristieken van de poorten

120 Vak - hoofdstuk Voorbeelden race S IE Q 00 01 11 10 1 Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Verwacht gedrag: 00  01  11 als a = 0 voor b = 1 terug Cycle: 00  01  11  01  11  … als b’ = 0 terug voor a’ = 1 Critical race: 00  01 als puls b’ ≈ 0 I a b S0 S1 S0 S1 Q a b I E I a’ b’ S0’ S1 S0’ S1 Q a’ b’ I E

121 Eliminatie van ‘critical races’
Vak - hoofdstuk Eliminatie van ‘critical races’ Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL kies een toestandscodering die nooit 2 of meer toestandsvariabelen moet wijzigen t.g.v. 1 ingangsverandering 00 01 11 S IE Q 00 01 11 10 1 Er bestaat geen codering die hieraan voldoet!

122 Eliminatie van ‘critical races’
Vak - hoofdstuk Eliminatie van ‘critical races’ Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Doe een zo goed mogelijke toestandscodering Identificeer de overblijvende problemen Leid deze overgangen om via bijkomende toestanden zodat niet langer 2 of meer toestandsvariabelen wijzigen S IE Q 00 01 11 10 1 10 11 01 1 00 X 11 00 Don’t care omdat beide nieuwe overgangen een verandering van Q vereisen. Deze verandering mag dus al dan niet in de overgangstoestand gebeuren.

123 Implementatie I E S1 S0 Q S IE Q 00 01 11 10 1 X 1 X E S0n S0 S1 I S1n
Vak - hoofdstuk Implementatie I E S1 S0 Q Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL S IE Q 00 01 11 10 1 X 1 X E S0n S0 S1 I S1n Q

124 Wat is de initiële toestand?
Vak - hoofdstuk Wat is de initiële toestand? Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Bij het opzetten van de spanning kan de schakeling in een willekeurige toestand opstarten, bijv. S = 10 & IE = 01 Wat er dan gebeurt hangt af van de toestanden die de don’t cares vervangen na implementatie; eventueel is dit zelf een nieuwe stabiele toestand Daarom is het verstandig om de don’t cares te vervangen door een evolutie naar een stabiele toestand met dezelfde ingangen S IE Q 00 01 11 10 1 X Race, maar niet kritisch 00 01

125 Vak - hoofdstuk Vermijden hazards Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Bij asynchrone schakelingen moeten hazards op de toestandsvariabelen vermeden worden omdat ze tot een verkeerde toestand kunnen leiden Dit geldt zowel voor statische als dynamische hazards Bij synchrone schakelingen geldt dit niet omdat glitches daar moeten uitgestorven zijn voor de volgende klokflank De vorige implementatie was reeds hazard-vrij

126 Problemen t.g.v. ‘skew’ op ingangen
Vak - hoofdstuk Problemen t.g.v. ‘skew’ op ingangen Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL Veronderstel een extra vertraging van I op slechts één plaats in de schakeling (bijv. door gebruik van een lange lijn) S IE Q 00 01 11 10 1 Start met S=01 & IE=11 I wordt 0: S zou 00 moeten worden Q Dan wordt de vertraagde versie van I nul I E S1 S0 Toestand verandert niet meer en eindigt in S=11 Verwachte toestandsveranderingen: 01  00 Echte toestandsveranderingen: 01  00  10  11

127 Vak - hoofdstuk Essentiële hazard Flip-flop Synchroon Asynchroon Diagramma Minimalisering Codering Realisatie Tijdsgedrag Basisblokken RTL één enkele ingangsverandering brengt de schakeling in een verkeerde toestand Hoe detecteren? Andere eindtoestand als een ingang 1 keer of 3 keer verandert Hoe vermijden? Toestandsvariabelen mogen enkel veranderen als alle ingangsveranderingen aan de poorten gekomen zijn  zorgvuldig ontwerp op elektrisch niveau, bijv. door extra vertragingen in te voeren S IE Q 00 01 11 10 1

128 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Geheugen LIFO FIFO

129 Register Symbool: Meestal asynchrone clear Soms asynchrone preset I3
Vak - hoofdstuk Register Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO I3 I2 I1 I0 Preset Clear D Q D Q D Q D Q Clk Q3 Q2 Q1 Q0 Symbool: I3 I2 I1 I0 Preset Clear Meestal asynchrone clear Soms asynchrone preset Register Q3 Q2 Q1 Q0

130 Laadbaar register met ‘gated’ klok
Vak - hoofdstuk Laadbaar register met ‘gated’ klok I3 I2 I1 I0 Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO D Q D Q D Q D Q CE Clk Q3 Q2 Q1 Q0 I3 I2 I1 I0 Klokt enkel als CE=1 FF’s schakelen enkel als nieuwe waarde geladen wordt  geen nodeloos vermogenverbruik CE mag enkel veranderen als Clk=0 Afgeleide (‘gated’) klokken zijn gevoelig aan klok-skew CE Register Q3 Q2 Q1 Q0

131 Mogelijke schending set-up/houdtijd voor 2e register
Vak - hoofdstuk Klok-skew probleem Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO niet alle klokken van alle registers veranderen tegelijkertijd A I D0 Q0 D1 Q1 Q Clk afgeleide Clk CE Clk I A CE Mogelijke schending set-up/houdtijd voor 2e register afgeleide Clk Q

132 Laadbaar register (geen ‘gated’ klok)
Vak - hoofdstuk Laadbaar register (geen ‘gated’ klok) I3 I2 I1 I0 Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO 1 1 1 1 S S S S LD D Q D Q D Q D Q Clk Q3 Q2 Q1 Q0 Laad enkel als LD=1 Geen klok-skew problemen daar alle FF dezelfde klok gebruiken Hogere kostprijs: MUX’s nodig Hoger vermogenverbruik: FF’s laden een nieuwe waarde in op elke klokflank I3 I2 I1 I0 LD Register Q3 Q2 Q1 Q0

133 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Geheugen LIFO FIFO

134 Serial-In/Parallel-Out schuifregister
Vak - hoofdstuk Serial-In/Parallel-Out schuifregister IL Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO 1 1 1 1 S S S S SE D Q D Q D Q D Q Clk Q3 Q2 Q1 Q0 IL Shift Register Toepassing: Ontvangstregister (Rx) seriële poort Vertragingslijn FIR/IIR filters SE Q3 Q2 Q1 Q0

135 Parallel-In/Serial-Out schuifregister
Vak - hoofdstuk Parallel-In/Serial-Out schuifregister IL I3 I2 I1 I0 Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO 1 1 1 1 Sh/ Ld* S S S S D Q D Q D Q D Q CE Clk Q0 I3 I2 I1 I0 IL Shift Register Toepassing: Zendregister (Tx) seriële poort CE Sh/Ld* Q0

136 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Synchrone teller Asynchrone teller Geheugen LIFO FIFO

137 Synchroon (naar boven) tellen
Vak - hoofdstuk Synchroon (naar boven) tellen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO alle FF’s gebruiken hetzelfde kloksignaal E HA D Q D Q D Q Clr* Clk Carry-Out Q2 Q1 Q0 glitch! Clk Clr* E Q0 Q1 Q2

138 Synchrone bidirectionele teller
Vak - hoofdstuk Synchrone bidirectionele teller Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO D=1 : naar beneden tellen D=0 : naar boven tellen Halve adder/subtractor D E HAS HAS HAS Co D Q D Q D Q Clr* Clk Carry-Out Q2 Q1 Q0

139 Halve adder/subtractor
Vak - hoofdstuk Halve adder/subtractor Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Bit i telt (wisselt) als ci = 1  Di = Qi XOR ci Bit i+1 telt als ci+1 = 1 Dir=0 : als bit i 10 ci+1 = ci AND Qi Dir=1 : als bit i 01 ci+1 = ci AND Qi’ Dir HAS ci+1 ci Qi Di ci Dir Qi Di ci+1 1 Dir=0 00 01 10 11 Dir=1 00 11 10 01 1 1 1

140 Halve adder/subtractor
Vak - hoofdstuk Halve adder/subtractor ci Dir Qi Di ci+1 1 Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Qi Qi Di Dir ci+1 Dir 1 1 ci 1 1 ci 1 1 ci Dir Qi Di ci+1

141 Parallel-laadbare bidirectionele teller
Vak - hoofdstuk Parallel-laadbare bidirectionele teller Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO I2 I1 I0 D E HAS HAS HAS Co 1 1 1 LD D Q D Q D Q Clr* Clk Carry-Out Q2 Q1 Q0

142 BCD-teller 0 0 0 0 I3 I2 I1 I0 Up-counter E LD Q3 Q2 Q1 Q0
Vak - hoofdstuk BCD-teller Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO I3 I2 I1 I0 Up-counter E LD Q3 Q2 Q1 Q0 Vergelijkt met een constante: Als Q = 9 (binair ‘1001’) wordt 0 geladen op de volgende klokflank

143 Bidirectionele BCD-teller
Vak - hoofdstuk Bidirectionele BCD-teller Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Mux 1 0 0 D I3 I2 I1 I0 Up/down- counter E LD Q3 Q2 Q1 Q0

144 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Synchrone teller Asynchrone teller Geheugen LIFO FIFO

145 Asynchrone teller E T Q T Q T Q T Q Q’ Q’ Q’ Q’ Clr* Clk Q3 Q2 Q1 Q0
Vak - hoofdstuk Asynchrone teller Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO E T Q T Q T Q T Q Q’ Q’ Q’ Q’ Clr* Clk Q3 Q2 Q1 Q0 Clk Q0 Q1 Q2 Q3

146 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Geheugen: registerbank & RAM LIFO FIFO

147 Register File Cell geklokte geheugencel voor 1 bit Realisatie
Vak - hoofdstuk Register File Cell Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO geklokte geheugencel voor 1 bit WE=1 : schrijf een bit in de cel (op klok!) Hooguit 1 WE actief tegelijkertijd RE=1 : lees een bit uit de cel (niet geklokt!) # RE = # leespoorten van registerbank Realisatie WEB WEA 00 01 10 11 DinA D Q DoutA DinB DoutB Clk REA REB

148 4×3 registerbank met 2 schrijf- en 2 leespoorten
Vak - hoofdstuk 4×3 registerbank met 2 schrijf- en 2 leespoorten Ia2 Ib2 Ia1 Ib1 Ia0 Ib0 Schrijf-adres-decoder Lees-adres-decoder Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO 1 2 3 1 2 3 RFC RFC RFC 2 / 2 / WAa RAc WEa REc RFC RFC RFC 1 2 3 1 2 3 RFC RFC RFC 2 / 2 / WAb RAd WEb RFC RFC RFC REd Oc2 Od2 Oc1 Od1 Oc0 Od0 ‘dual port register file’ = 1 schrijf- en 1 leespoort

149 Random Access Memory niet-sequentiële geheugentoegang mogelijk
Vak - hoofdstuk Random Access Memory Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO niet-sequentiële geheugentoegang mogelijk wijzigbaar geheugen, meestal vluchtig ( ROM) Vergelijkbaar met registerbank maar 1 poort (gecombineerd lees/schrijf) lezen: RE = CS • R/W* Toegangstijd : adres  Duit schrijven: klok = CS • (R/W*)’  asynchroon! groter geheugen compactere RFC Statische RAM : 4 à 6 tors Dynamische RAM : 1 tor trager  niet voor kleine tijdelijke tussenresultaten

150 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Geheugen LIFO (stapelgeheugen) FIFO

151 LIFO of stapelgeheugen (‘stack’)
Vak - hoofdstuk LIFO of stapelgeheugen (‘stack’) Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO 45 12 10 23 leeg Reset Push 45 Push 12 Push 23 Pop  23 Push 10 Top 45 12 45 Top−1 Top−2 Top−3 Top−4 Top−5 Top−6 Top−7

152 Implementatie LIFO met diepte 8
Vak - hoofdstuk Implementatie LIFO met diepte 8 Enable Push/pop* Bewerking 1 Pop Push Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Met een bidirectioneel schuifregister Reset L/R* Enable IL IR O0 O7 L/R*=1 : naar links schuiven L/R*=0 : naar rechts schuiven en teller voor aanduiding ‘empty/full’ Teller Empty Full 0000 1 0001 0010 0011 0100 0101 0110 0111 1000

153 Implementatie LIFO met diepte 8
Vak - hoofdstuk Implementatie LIFO met diepte 8 In0 Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Reset IL IR L/R* Enable O7 O0 Out0 Ink Reset IL IR L/R* Enable O7 O0 Outk Reset Up/down* Q3..0 Enable Reset* Empty Push/pop* Full Enable

154 Alternatief (grote stapelgeheugens)
Vak - hoofdstuk Alternatief (grote stapelgeheugens) Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Niet opschuiven! 0 = leeg 0 = vol Als ‘Push’ verhogen beide tellers 45 leeg 3 3 2 1 2 1 1 23 Schrijfadres Leesadres 2 12 17 3 52 Als ‘Pop’ verlagen beide tellers Reset Push 45 Push 23 Push 12 Pop  12 Push 17 Push 52

155 Alternatieve implementatie LIFO
Vak - hoofdstuk Alternatieve implementatie LIFO 10 / Full/ empty Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Reset Up/down counter Schrijfadres 10  2-to-1 MUX U/D* 1 E Set Up/down counter Leesadres U/D* E S Reset* Push/ Pop* Enable 1K  8 RAM A 8 / Data in/out D CS R/W* Als RAM niet geklokt is, controleer het tijdsgedrag van het (geklokte) adres t.o.v. CS en R/W* zodat niet 2 × gelezen/geschreven wordt!

156 Ontwerp sequentiële schakelingen
Vak - hoofdstuk Ontwerp sequentiële schakelingen Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO De flip-flop als bouwblok Ontwerp van synchrone sequentiële schakelingen Ontwerp van asynchrone sequentiële schakelingen Basisbouwblokken op RTL-niveau Register Schuifregister Teller Geheugen LIFO FIFO

157 FIFO Reset Schrijf 45 Schrijf 23 Schrijf 12 Lees  45 Schrijf 57 23 45
Vak - hoofdstuk FIFO Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Reset Schrijf 45 Schrijf 23 Schrijf 12 Lees  45 Schrijf 57 23 45 12 23 57 12 23 45 leeg Top Top−1 45 Top−2 Top−3 Top−4 Top−5 Top−6 Top−7

158 Implementatie FIFO met diepte 8
Vak - hoofdstuk Implementatie FIFO met diepte 8 In0 Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Reset IL Enable O7 O0 7 MUX Out0 Ink S2..0 Reset IL Enable O7 O0 7 MUX Outk S2..0 Set Leesadres Up/down* Enable Q3..0 Reset* Empty Read/ write* Enable Full

159 Alternatief (grote FIFO’s)
Vak - hoofdstuk Alternatief (grote FIFO’s) Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Niet opschuiven! Wrap-around Schrijfadres Verhogen schrijfadres bij schrijven 16 45 leeg 3 2 1 1 23 1 Leesadres 2 12 Verhogen leesadres bij lezen 3 57 Leesadres = Schrijfadres  leeg of vol Reset Schrijf 45 Schrijf 23 Schrijf 12 Lees  45 Schrijf 57 Schrijf 16

160 Onderscheid tussen leeg en vol
Vak - hoofdstuk Onderscheid tussen leeg en vol Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO Hoe deze implementatie wijzigen om een onderscheid te maken tussen “leeg” en “vol”? Gebruik (n+1)-bit tellers voor lees- en schrijfadres bij een diepte van 2n gebruik enkel n-LSB als adressen voor RAM als n-LSB van lees- en schrijfadres gelijk en MSB gelijk: “leeg” MSB verschillend: “vol” Een analoge oplossing bestaat voor LIFO

161 Alternatieve implementatie FIFO
Vak - hoofdstuk Alternatieve implementatie FIFO Flip-flop Synchroon Asynchroon Basisblokken RTL Register Schuifregister Teller Geheugen LIFO FIFO MSB Full =? 10-LSB Empty R 11-bit up-counter Schrijfadres 10  2-to-1 MUX E R 11-bit up-counter Leesadres E 1 S Reset* 10 / Read/ Write* Enable A 1K  8 RAM 8 / Data in/out CS D R/W*


Download ppt "Inhoudstafel Inleiding De basis van digitaal ontwerp"

Verwante presentaties


Ads door Google