Inhoudstafel Inleiding De basis van digitaal ontwerp

Slides:



Advertisements
Verwante presentaties
Snelheid van digitale IC’s
Advertisements

Vincent Poté Nelis Vandermeiren Simen Akkermans Kevin De Neef
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur EIT OGO-1.2 addendum (1): Het ontwerpen van processoren.
Hoe werkt een rekenmachine?
Serieel naar parallel omzetting
CODEERELEMENTEN DECODERS BCD naar 7-SEGMENT
PROS2 Les 2 Programmeren en Software Engineering 2.
Parallel naar serieel omzetting
Inhoudstafel Inleiding De basis van digitaal ontwerp
Inhoudstafel Inleiding De basis van digitaal ontwerp
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 4(2): Digitale.
JK-flipflop en tellerschakelingen
Een manier om problemen aan te pakken
Digitale Elektronica en Processoren
Practica Computerlinguistiek Tekst en uitleg:
Basisgeheugenschakelingen
Logische schakelingen
bewerkingen in programmeeromgevingen
ADuC8xx MICROCONVERTER
VHDL Taal beschrijvingen
Week 2: Microarchitectuur niveau ALU en datapad
Computerarchitectuur
automatiseringselektronica
Datastructuren Analyse van Algoritmen en O
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.

Inleiding vacuumbuizen + R,C transistoren IC’s of chips
Cursus VHDL Aansturing van een stappenmotor Peter Slaets KHLim.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Digitale foto Megapixel à 3 bytes = 12 Megabyte.
Hoe een computer gegevensverwerkende processen realiseert
∙ ∙ f(x) = axn is een machtsfunctie O n even n oneven y y y y a > 0
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Hoofdstuk 6 Het voorspellen van prestaties Deel 2: Vermogenvoorspellingen op architectuurniveau Prof. dr. ir. Dirk Stroobandt Academiejaar
Inhoud Synthese van sequentiële netwerken
Communicatietheorie Partim Datacommunicatie
Oplossen van een doolhof
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen &  vorige toestand uitgang.
Complexe schakelingen
Sequentiële schakelingen
FLIP FLOP D-latch.
Digitale signalen.
Sparen, Kapitaalaccumulatie, en Productie - De Lange Termijn
SPLD : Simple Programmable Logic Devices Dirk Smets KHLim - dep. IWT Digitale Elektronica Programmeerbare Logica DIA 1 DIA 1 Logische functie n Elke logische.
Dirk Smets KHLim - dep. IWT Digitale Elektronica Programmeerbare Logica FPGA : Field Programmable Gate Array DIA 1 DIA 1 Verdere FPGA-producten Discontinued!
Talstelsels, rekenen en rekenschakelingen
Finite State Machines.
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
Signaalverwerking Verwerkers. IR-buitenlamp. IJkgrafiek sensor.
Inhoud (3) Digitale Technologie Logische Schakelingen Interconnectie
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Digitale logica niveau klokken en geheugens.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Digitale logica niveau: “systeem-architectuur” cpu-chips.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
H4 Differentiëren.
Informatica: Binair rekenen.
Boundary Scan Conventionele testmethoden PCB/IC.
CMOS Technologie.
MET DANK AAN COLLEGA’S IN DEN LANDE ! vee 2012
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 5(2): Microarchitectuur.
Stromen bij digitale signalen
Inhoud Analyse van sequentiële netwerken Sequentiële bouwblokken
Bits & bytes.
Inhoud Analyse van sequentiële netwerken Sequentiële bouwblokken
Les 3: Digitale Logica.
Programmeren met Reeksen
Gevorderde EV3 PROGRAMMEER LES
Transcript van de presentatie:

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

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

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

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

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

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

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

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

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

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

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’

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 !

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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)

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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!

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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!

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 0 0 0 0 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

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

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

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

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

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

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

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

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

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

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

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

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

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!

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

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

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

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

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

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*