IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

Relevanta dokument
Sekvensnät. William Sandqvist

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

Digital Design IE1204

Digital Design IE1204

Digital Design IE1204

Digital Design IE1204

D0013E Introduktion till Digitalteknik

Digital Design IE1204

Digital Design IE1204

Digital Design IE1204

Låskretsar och Vippor

IE1205 Digital Design: F9: Synkrona tillståndsautomater

Digital Design IE1204

Digital Design IE1204

Digital Design IE1204

Digitalteknik F9. Automater Minneselement. Digitalteknik F9 bild 1

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tentamen i IE1204/5 Digital Design onsdagen den 5/

DESIGN AV SEKVENTIELL LOGIK

IE1204 Digital Design

IE1204 Digital Design

Digital elektronik CL0090

DIGITALTEKNIK I. Laboration DE2. Sekvensnät och sekvenskretsar

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Sekvensnät vippor, register och bussar

TSEA22 Digitalteknik 2019!

Konstruktionsmetodik för sekvenskretsar

Digital Design IE1204

Digital Design IE1204

Omtentamen IE Digital Design Måndag 14/

Tenta i Digitalteknik

Digital Design IE1204

Tentamen i IE1204/5 Digital Design Torsdag 29/

Tentamen IE Digital Design Måndag 23/

Digitalteknik F12. Några speciella automater: register räknare Synkronisering av insignaler. Digitalteknik F12 bild 1

Tentamen i IE1204/5 Digital Design måndagen den 15/

Digital Design IE1204

Lösningförslag till Exempel på tentamensfrågor Digitalteknik I.

Digital- och datorteknik

Tentamen med lösningar i IE1204/5 Digital Design Måndag 27/

Tentamen IE Digital Design Fredag 15/

Programmerbar logik och VHDL. Föreläsning 4

Repetition delay-element

TSEA22 Digitalteknik 2019!

Omtentamen med lösningar i IE1204/5 Digital Design Fredag 10/

Tenta i Digitalteknik

Tentamen med lösningar IE Digital Design Måndag 23/

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

Digital Design IE1204

Digital Design IE1204

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

IE1205 Digital Design: F13: Asynkrona Sekvensnät (Del 2)

Digital Design IE1204

VHDL 1. Programmerbara kretsar

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Tentamen i IE Digital Design Fredag 21/

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

VHDL och laborationer i digitalteknik

Tenta i Digitalteknik

Tenta i Digitalteknik

Försättsblad till skriftlig tentamen vid Linköpings universitet

IE1204/IE1205 Digital Design

Tentamen med lösningar i IE Digital Design Fredag 15/

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Konstruktionsmetodik för sekvenskretsar. Föreläsning 7 Digitalteknik Mattias Krysander Institutionen för systemteknik

Tentamen med lösningar i IE1204/5 Digital Design Torsdag 29/

Digital Design IE1204

D2 och E3. EDA321 Digitalteknik-syntes. Fredag den 13 januari 2012, fm i M-salarna

TSIU05 Digitalteknik. LAB1 Kombinatorik LAB2 Sekvensnät LAB3 System

Tenta i Digitalteknik

Omtentamen med lösningar IE Digital Design Måndag 14/

Tentamen i Digital Design

F5 Introduktion till digitalteknik

Tenta i Digitalteknik

IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2

Exempel på tentamensfrågor Digitalteknik

Sekvensnät i VHDL del 2

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Styrteknik distans: Minneselement, register, räknare, AD-omv D4:1

Laboration i digitalteknik Introduktion till digitalteknik

Konstruktionsmetodik för sekvenskretsar. Föreläsning 7 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

Digital elektronik CL0090

Laboration D151. Kombinatoriska kretsar, HCMOS. Namn: Datum: Epostadr: Kurs:

Konstruktion av digitala system - VHDL

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

Hjälpmedel: Appendix A. VHDL-syntax. (bifogas detta prov) Appendix B.2. IEEE-package (bifogas detta prov)

IE1204/5 Digital Design typtenta

Tentamen i Digitalteknik 5p

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

KALKYLATOR LABORATION4. Laborationens syfte

std_logic & std_logic_vector

Tentamen med lösningar i IE Digital Design Fredag 21/

SEKVENSKRETSAR. Innehåll

Tentamen IE Digital Design Fredag 13/

Repetition TSIU05 Digitalteknik Di/EL. Michael Josefsson

Sekvensnät Som Du kommer ihåg

Angående buffer. clk clear >=1 =9?

IE1205 Digital Design. F2 : Logiska Grindar och Kretsar, Boolesk Algebra. Fredrik Jonsson KTH/ICT/ES

Transkript:

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

IE1205 Digital Design F1 F3 F2 F4 Ö1 Booles algebra, Grindar MOS-teknologi, minimering F5 F6 Ö2 Aritmetik Ö3 KK1 LAB1 Kombinatoriska kretsar F7 F8 Ö4 F9 Ö5 Multiplexor KK2 LAB2 Låskretsar, vippor, FSM F10 F11 Ö6 FSM, VHDL introduktion F12 Ö7 F13 Asynkron FSM Ö8 F14 tentamen Minnen Föreläsningar och övningar bygger på varandra! Ta alltid igen det Du missat! Läs på i förväg delta i undervisningen arbeta igenom materialet efteråt!

Detta har hänt Decimala, hexadecimala, oktala och binära talsystemen AND OR NOT EXOR EXNOR Sanningstabell, mintermer Maxtermer PS-form Booles algebra SP-form demorgans lag Bubbelgrindar Fullständig logik NAND NOR CMOS grindar, standardkretsar Minimering med Karnaugh-diagram 2, 3, 4, 5, 6 variabler Registeraritmetik tvåkomplementrepresentation av binära tal Additionskretsar Multiplikationskrets Divisionskrets Multiplexorer och Shannon dekomposition Dekoder/Demultiplexor Enkoder Prioritetsenkoder Kodomvandlare VHDL introduktion

Sekvensnät Om en och samma insignal kan ge upphov till olika utsignal, är logiknätet ett sekvensnät. Det måste då ha ett inre minne som gör att utsignalen påverkas av både nuvarande och föregående insignaler!

Sekvensmaskiner Alla system i naturen har (ofta) ett dynamiskt beteende och förändrar sig ständigt, ibland med återkommande mönster... Att bygga digitala system förutsätter att vi kan beskriva dynamiska beteenden, dvs att beräkna, behandla och skapa sekvenser... 5

Hur får vi hårdvara att minnas? 1 0 0 1 Två återkopplade inverterare har stabila tillstånd

Hur får vi hårdvara att minnas? Hur kan vi sätta värdet? S A B NAND grind A B 0 0 1 0 1 1 1 0 1 1 1 0 Om A ingången är 0 blir utgången 1 Om A ingången är 1 blir B ingången inverterad, värdet behålls Byt ut ena inverteraren mot en NAND grind

Hur får vi hårdvara att minnas? S R Byt ut båda inverterarna för att kunna sätta och återställa (Set and Reset)

SR-Latchen (NAND-grindar) SR-latchen har aktiv låga SET och RESET ingånger SET och RESET ska inte vara aktiva samtidigt! Förbjudet läge S S R 0 0 1 1 R Kort återkoppling (~1T) 0 1 1 0 1 0 0 1 1 1 M M Characteristic table 9

SR-latchen (NOR-grindar) SR-latchen kan även implementeras med NOR-grindar Skillnaden mot förra implementeringen är att SET och RESET är aktiv höga R S (a) Circuit S R a b 0 0 0 1 1 0 1 1 0/1 1/0 0 1 1 0 0 0 (b) Truth table Varför är vissa tillstånd börbjudna? a b (no change) 10 Förbjudet tillstånd

Simulering av SR-latchen (BV Figur 7.5 - sida 384) Ibland kan vippor låsa sig (pga meta-stabilitet mer om det i F12): latch: SR_latch port map (S=>S,R=>R, =>, =>_inv); S R A M S<=not(S) after 10 ns; R<=not(R) after 20 ns; Om SR-latchen är uppbyggd av NOR-grindar så oscillerar kretsen efter 40 ns med denna insignal-kombination (om fördröjningen är exakt lika i båda NOR-grindar). B M B inte inversen av A Metastabilitet 11

Exempel: Stoppknapp i buss S Stannar R - Om någon av stoppknapparna trycks in skall STANNAR skylten tändas. Skylten skall vara tänd även när knappen släpps. Vi behöver en krets med minne - När chauffören stannar vid hållplats kan han släcka skylten.

Rep: DeMorgan S Stannar R - Om alla knapparna inte är intryckta skall STANNAR skylten inte tändas. Skylten skall vara tänd även när knappen släpps. Vi behöver en krets med minne - När chauffören stannar vid hållplats kan han släcka skylten.

Hur minns hårdvara? För att minnas någonting, så måste vi på något sätt hålla kvar informationen. Ett sätt är att lagra information i form av en laddning på en kapacitans (DRAM). 1 + + - - 0 Det finns andra möjligheter

Hur får vi hårdvara att minnas? Select D 0 - M 1 D D D 1 0 Select Om vi återkopplar och kopplar utgången f till en av ingångarna så kommer Muxen att få ett nytt värde när den andra ingången selekteras (Select=1), och behålla detta värde när återkopplingen selekteras (Select=0) 15

D-Latch D C s En D-latch är en återkopplad MUX. När C = 0 låses värdet. ( Latch = låsklyka ). D C D-Latch 1D C1 D C C follow 0 1 / latch D D M latch D follow

Gated SR-Latch Stoppknapparna kan stängas av om det blir stökigt på bussen S Clk R Förbjudet läge Clk S R 1 0 0 M M 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 - - M M 17

( Gated SR-Latch ) Med två extra grindar och en klocksignal Clk kan man styra när låskretsen ska få påverkas av insignalerna S och R. När Clk = 0 finns ingen påverkan, då kan ju till och med S = R = 1 tillåtas. S Clk R Förbjudet tillstånd Clk S R 1 0 0 M M 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 - - M M

D-latch En ändå bättre lösning på problemet med det förbjudna tillståndet är D-latchen. Med en inverterare säkerställer man att S och R helt enkelt alltid har olika värden! Låskretsens utgång följer D-ingången när Clk = 1 för att låsa värdet när Clk = 0. Denna låskrets har samma funktion som den återkopplade MUXkretsen. Skillnaden ligger i att denna krets har snabbare återkoppling. Dessutom får vi också tillgång till en inverterad utsignal. D Clk S D R D Clk follow / latch! D Clk 1D C1 Clk D 1 0 0 1 1 1 1 0 0 - M M!

Två olika D-latchar D 1D D 1D Clk C1 Clk C1 Lång återkoppling (~4T) Kort återkoppling (~1T) D Clk MUX D Clk

Setup- & Hold-time D måste vara stabil inom detta område för att garantera funktionen D t hold t setup Clk t clk-to- 21

Hur skapar vi en sekvens? En sekvens får vi om vi tar ett värde och sedan bestämmer nästa värde utifrån nuvarande värde. Ex: 0,1,0,1, nästa värde = NOT (nuvarande värde) Om vi återkopplar nuvarande värde, behandlar det (inverterar) och därigenom skapar nästa värde samt kommer ihåg det tills nästa värde skall beräknas 22

Sekvensmaskiner (forts.) Latch D D Clk Problem!!! Om CLK är 1 för länge så snurrar värdena bara runt med en period av T latch +T incr 23

Går ej med enkel låskrets 1 Clk follow / Clk D 1D C1 latch D D När Clk = 1 följer utsignalen insignalen därför byter utgången 1/0 så fort som möjligt! Kretsen blir en oscillator! Clk När sedan Clk = 0 behåller utsignalen sitt värde 1/0 allt efter vad den senast stod på. ( = Slumpgenerator? )

Instabila kretsar Exempel ringoscillator

Klockade vippor Master-Slave vippan Master Slave Problemet är att den enkla låskretsen är öppen för förändring ända fram tills den ska låsa sitt värde. Lösningen är den klockade vippan som består av flera låskretsar. En låskrets tar emot nya data (Master) medan en annan har kvar det gamla datat (Slave).

D-vippan (eng. Flip-flop) D Clk Master D Slave Clk D 0 0 1 1 1 0 D Inverterar-ring på clk anger negativ flank. 1 - M M 0 - M M - M M D-vippa Lösning: Koppla två D-latchar efter varandra! D 27

Tidsdiagram Master-Slave Master Slave D D m D s Clock Clk Clk Clock D m = s 28

Flank-triggad D-vippa Flank-triggad: Låser värdet då klockan ändras i viss riktning (tex 0 till 1) Clk D Clock D 29

Vippor med Clear och Preset ingång Det är viktigt för konstruktionen av en sekvenskrets att man kan sätta vippor i ett förbestämt läge Preset: Sätt vippan till 1 Clear: Sätt vippan till 0 30

Reset-knappen De flesta digitala system behöver kunna startas i ett känt tillstånd. Det kan innebära att en del vippor ska vara 1 medan andra ska vara 0. En resetfunktion kan därför behöva anslutas till antingen Preset eller Clear på de ingående vipporna. Preset och Clear är asynkrona ingångar vipporna ändrar sig omedelbart oavsett klockpuls.

Asynkron Reset En asynkron reset (clear) betyder att vippan ändra tillståndet till 0 omedelbart när reset är aktiv 32

Synkron Reset En synkron reset orsaker att vippan går till läge 0 vid nästa klockflank Synkron reset implementeras med extra logik 33

Asynkron/Synkron Reset Asynkron reset Clear Clk Synkron reset Clear Clk

Andra vanliga typer av vippor JK-vippa (av Jack Kilby - Nobelpriset 2000) J K T-vippa (T=Toggle) Clk J K 0 0 M M 0 1 0 1 1 0 1 0 1 1 Toggle Toggle T Clk T 0 M M 1 Toggle Toggle 35

Varannan gång (vippa)? + Clk D D Nu fungerar varannan gång precis som tänkt! Till sekvensnät använder man i allmänhet flanktriggade vippor som minneselement!

Konstruktion av T-vippan mha D-vippan Man kan konstruera nya vippor baserad på en existerande typ

Timing Analysis Det är möjligt att kunna bestämma den maximala frekvensen i en sekvensiell krets genom att ha information om Grindfördröjningar t logic Setup-tid t su för vippan Hold-tid t h för vippan Clock-to-utgång t c tiden 38

Setup- & Hold-time D måste vara stabil inom detta område för att garantera funktionen D t hold t setup Clk t clk-to- 39

Vad är den maximala frekvensen? Grindfördröjningar t logic = t NOT = 1.1 ns Setup-tid t su = 0.6 ns Hold-tid t h = 0.4 ns Clock-to-utgång t c = 1.0 ns T = t su + t c + t logic = 2.7 ns F = 1/T = 370 MHz 40

Shiftregister En shiftregister innehåller flera vippor För varje klockcykel skiftar man in ett värde från vänster till höger Många konstruktioner använder shiftregister och värden 4,, 1 som ingångsvärden till andra komponenter

Vanliga typer av Shift-register Parallel-In/Parallel-Out (PIPO) Parallel-In/Serial-Out (PISO) Serial-In/Parallel-Out (SIPO) Serial-In/Serial-Out (SISO) Användningsområden Köer, tex First-In/First-Out (FIFO) Mönsterigenkänning (eng. Pattern recognizers)

Exempel shift-register Clk Data Problem: I ett experiment skulle ett flertal kontrollsignaler konfigureras. (Enable, frekvens, ström etc.) Endast ett fåtal ben fanns tillgängliga i kretsen Lösning: Ett skiftregister möjliggör seriell konfigurering med enbart två ben

Snabbfråga Vilken typ av vippa skall vi använda för att konstruera ett skift-register? Din??? Clk T D D T - vippa D - latch D vippa (flank triggad) Alt: 1 Alt: 2 Alt: 3

Räknare En räknare är en speciell typ av sekvensnät som registrerar antalet inkommande klockpulser. Registreringen sker efter någon kod, oftast binärkod. Efter ett visst antal pulser tar räknarens tillstånd slut och den börjar om från början igen. Man talar om räknarens modul ( dvs. hur många tillstånd räknecykeln innehåller ). Räknaren behöver inte ha någon insignal utom klockpulserna ( som då kan ses som insignalen ). Ett sådant sekvensnät kallas för autonomt.

Binärkodens räkneegenskaper Det finns två olika "regler" för att konstruera binärkoden ur mindre signifikanta bitar. Ex. med binärkoden 0... 15.

Toggla varannan gång varannan, varannan varannan, varannan varannan varannan Räknaren är uppbygd av T-vippor, de har alla T=1 och "togglar" därför vid varje klockpuls. Den första vippan 0 "togglar" för varje klockpuls. Vippan därefter 1 klockas av den första vippan. Den kommer därför bara att "toggla" för varannan klockpuls. Den tredje vippan 2 kommer "toggla" för varannan varannan klockpuls. Enligt binärtabellen kommer räknaren därför att räkna i binärkod. ( 2 1 0 : 000 001 010 011 100 101 110 111 000... ).

Asynkron räknare Man kan realisera räknare mha vippor Nedanstående exempel visa en asynkron räknare Några klockingångar är kopplade till -utgångarna från föregående vippa 48

Asynkron räknare 49

En räknarkrets 16,384 khz 16,384 khz 74HC4040 16384 12 2 4 Hz Hur man får 1 sekund får Du räkna ut själv 4 Hz

Synkron räknare I en synkron räknare är vippornas klockingångar kopplade till samma klocksignal 51

Toggla om alla före dig är 1 En snabbare räknare kan man få om man tar fram Carry parallellt (jfr. med adderaren). Vill man utöka räknaren sker det med en vippa och en AND-grind per steg. Klockpulserna går direkt till alla vippor och därför slår de om samtidigt. Vilka vippor som ska slå om eller ej styrs med T-ingångarna. Den första vippan har T=1 och den slår om för varje klockpuls. En viss vippa ska slå om när alla vippor som är före den står på "1". Det villkoret får man från AND-grindarna i den sk. Carrykedjan och det är dessa som styr T-ingångarna.

Synkron räknare 1010 10 3 2 1 0 2 10 0 1 0 1 53

Asynkron eller Synkron räknare Asynkron räknare Synkron räknare Utgångssignalerna fördröjs mer och mer för varje räknarsteg Utgångssignalerna har samma fördröjning William Sandqvist william@kth.se

Vad är den maximala frekvensen? Den kritiska vägen bestämmer den maximala frekvensen! Här är den längsta kombinatoriska vägen från 0 via två AND-grindar till ingången av vippan som beräknar 3 t logic motsvarar alltså fördröjningen av två NANDgrindar 55

VHDL för vippor och låskretsar Programmerbar logik har inbyggda vippor.

VHDL för vippor och låskretsar Programmerbar logik har inbyggda vippor. Hur skriver man VHDL-kod som talar om för kompilatorn att man vill använda dom?

En D-latch i VHDL ENTITY D_Latch IS PORT(en : IN std_logic; d : IN std_logic; q : OUT std_logic); END ENTITY D_Latch; d Latch D q ARCHITECTURE RTL OF D_Latch IS BEGIN PROCESS(en, d) BEGIN IF en = '1' THEN q <= d; END IF; END PROCESS; END ARCHITECTURE RTL; en Enable D 0 - M 1 D D

Latch som process PROCESS(en, d) BEGIN IF en = '1' THEN q <= d; END IF; END PROCESS; Latchar anses generellt vara dåliga ur syntes-synpunkt eftersom de inte alltid är testbara (pga. asynkrona återkopplingar). Därför undviker man latchar. (Programmerbar logik har inbyggda vippor med asynkron Preset och Clear som man kan använda).

Vippa som process PROCESS(clk) BEGIN IF rising_edge(clk) THEN q <= d; END IF; END PROCESS; d clk Endast en flank är tillåten per process q I stället för funktionen rising_edge(clk) kan man skriva clk event and clk=1 Kompilatorn kommer att förstå att detta är en vippa och använder någon av de inbyggda vipporna för att implementera processen.

Med asynkron RESET Clear oberoende av clk PROCESS(clk, clear_n) BEGIN IF clear_n = 0 THEN q <= 0 ; ELSE IF rising_edge(clk) THEN q <= d; END IF; END PROCESS; d clk clear_n q

Med synkron RESET clear_n d PROCESS(clk) BEGIN IF rising_edge(clk) THEN IF clear_n = 0 THEN q <= 0 ; ELSE q <= d; END IF; END PROCESS; clk q

Räknare och andra sekvenskretsar Vad gör den här räknaren? bcd: PROCESS(clk) BEGIN IF rising_edge(clk) THEN IF (count = 9) THEN count <= 0; ELSE count <= count+1; END IF; END IF; END PROCESS;

Summering vippor Basic latch (SR) Gated latch Gated SR latch Gated D latch Flip-Flop Edge triggered flip-flop Master slave flip-flop Med och utan reset Andra vippor JK vippa T vippa