Digitalteknik, fortsättningskurs 2012 Föreläsning 16 Inför tentan

Slides:



Advertisements
Liknande presentationer
AKTIESPARARNA ÖSTERSUND Presentation
Advertisements

EDA 480 – Maskinorienterad Programmering
Gymnasiearbetet p..
Andragradsfunktioner & Andragradsekvationer
William Sandqvist Simulera med ModelSim ModelSim kan användas till att simulera VHDL-kod, för att avgöra om den är "rätt" tänkt. Man kan.
Digitalteknik 7.5 hp distans: VHDL del 1 V:1.1
Självständigt arbete 15 högskolepoäng på Statistik III
Vecka 47 Måndag Onsdag Vecka 48 Måndag Torsdag Fredag Vecka 49 Måndag Onsdag Torsdag Vecka 51 Onsdag 19 dec Här och nu! tenta.
1 Optimala rundvirkeslager m.h.t. stokastiska leveransvariationer -Lager B Introduktion Peter Lohmander
En guide i praktisk loggboksanvändning
Eva Pärt Enander och Malin Wester
Konstruktionsmetoder, Konstruktionsmetoder Introduktion Bengt Magnhagen & Anders Arvidsson.
P-uppgiften: regler, planering och specifikation
EDA Digital och Datorteknik
1DT066 (5c) Distribuerade Informationssystem
Termin 1-4Enligt studiegång Termin 5-6Listning. Kurser som skall läsas under termin 5 eller 6 Omvårdnad, examensarbete 15 Hp Profil (teori och VFU) 15.
IT och kommunikationsvetenskap Teresa Cerratto Pargman, DSV
Att programmera i språket Java
1 Vilket stöd kan lärosätena få i införandet av Ladok3? »NUAK »Lars Cronfalk »Ladok3 / Införandestöd.
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
Möte beträffande kvalitetsgranskning
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
EDA Digital och Datorteknik
TÄNK PÅ ETT HELTAL MELLAN 1-50
Kommunal fastighetsförvaltning disposition – föreläsning tisdag 10 nov – Organisation, bakgrund, utveckling, förvaltarrollen – 09.50Rast.
Lärandemål Program Dialogerna 1& Presentation av dialog Lunch dialog dialog.
INFÖR NATIONELLA PROVET. UPPGIFT 1 Förenkla så långt som möjligt Ständigt återkommande uppgift!
Vad ska ingå i uppgiften?
Gymnasiearbete 100p Introduktion.
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
Styrteknik: Grundläggande logiska funktioner D2:1
Programmering efter tillståndsdiagram
Högskoleverkets kvalitetskonferens i Umeå 2007
Styrteknik 7.5 hp distans: SFC Introduktion SFC_A:1
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
Antagning förstahandssökanden 53 antagna efter 2:a antagningen – Tekniskt basår Efterantagning under augusti 76 inskrivna –2 avhopp.
1 L U N D S U N I V E R S I T E T Forskningsplattform Förnyelse av tjänstebaserade, komplexa system Gunilla Jönson Fredrik Nilsson Lunds Tekniska Högskola.
Institutionen för datavetenskap vid Helsingfors universitet PB 68 Gustaf Hällströms gata 2b Helsingfors universitet
Ingenjörsmetodik IT & ME 2008
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
Projekt i Projektledningskursen och Introduktion till Projektbaserad produktutveckling (“IPP-kursen”
Digitalteknik 7.5 hp distans: Realisering av logik med PLD och VHDL1.4.1 En kretsrealisering med VHDL består av fyra huvudmoment Specifikation Beskrivning.
Vad kännetecknar ett sekvensnät?
Välkommen! Förskoleklass hösten 2013.
DIGITAL DESIGN INLEDNING Allmänt och kursens hemsidor Analogt och digitalt Booleska variabler Binära tal Positiv och negativ logik (Aktiv hög och låg logik)
William Sandqvist 11.1 ”Glitchar” Om signaler passerar olika många grindsteg på vägen mot utgången kan kortvariga oönskade avvikelser från.
Kognitiv sjukdom i klinisk vardag Onsdag B63/3Torsdag B63/3Fredag B63/ INFO och allmänt (O) Vaskulär kognitiv störning
Kartminne En serie bilder som ger övning av ”rutinen” Tänk på: –Vart är jag på väg? –Varifrån är kontrollen lättast att ta? –Vilken är sista säkra? –Förenkla.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Mål Matematiska modeller Biologi/Kemi Datorer muntlig presentation
Digitalteknik 7.5 hp distans: VHDL del 2 V2:1 Tillståndsmaskin, Moore-typ Kopior från VHDL för konstruktion, Studentlitteratur.
William Sandqvist Tillståndsmaskiner  Moore-automat  Mealy-automat William Sandqvist
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Shannon dekomposition
Lunds Tekniska Högskola | Industriell ekonomi Industriell ekonomi TEKNIKPROFILER.
Föreläsning 16: Tentan, att förbereda sig…
Digitalteknik 3p - Sekvenskretsar
Digitalteknik 3p - Kombinatorisk logik
Kombinatoriska byggblock
Kombinatoriska byggblock
Digitalteknik 3p - Kombinatorisk logik
Introduktion till ASIC
Introduktion till konstruktion av digitala elektroniksystem
Konstruktion av kombinatorisk och sekventiell logik
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatorisk logik
Digitalteknik 3p - Kombinatorisk logik
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

Digitalteknik, fortsättningskurs 2012 Föreläsning 16 Inför tentan Sista föreläsningen Övriga föreläsningstider denna vecka Används till hjälp/stöd Jag har 12 slide (+90) Så…. Frågor! Blir ingen PDF utan läggs upp som presentation!

Lärandemål Efter fullgjord kurs ska studenten kunna Principer för en strukturerad och hierarkisk beskrivning av mindre digitala system. Beskriva en mindre digital konstruktion i VHDL, utföra simulering och syntes med moderna verktyg samt utföra enklare tester mot målteknologin. Funktion, användning och begränsningar hos programmerbar logik. Känna till grunderna för konstruktion för testning, och principerna bakom testning. Förstå kopplingen VHDL syntes maskinvara.  

Färdighet och förmåga Förenkla en funktion av upp till 5 variabler med Karnaughdiagram. Förenkla en funktion av upp till 5 variabler med Quine-McCluskey. Realisering av kombinatoriska nät med grindar och med hjälp av VHDL. Kunna identifiera statiska och dynamiska hasarder samt eliminera dessa. Kunna använda målteknologierna FPGA och CPLD på ett effektivt sätt. Behärska binär aritmetik såsom ”Carry look ahead”, multiplikation och BCD. Förstå och kunna använda sekvensnät av Mealy, Moore och synkron Mealy typ. Koda ett sekvensnät med en för målteknologin optimal kodning samt minimera antalet tillstånd. Kunna koda sekvensnät av Mealy, Moore och synkron Mealy typ i VHDL och förstå dess tidsegenskaper. Kunna skapa enklare testbänkar för sina VHDL konstruktioner. Känna till och kunna implementera enklare asynkrona sekvensnät. Kunna identifiera cykler och kapplöpningar i asynkrona sekvensnät och kunna eliminera dessa. Minimera ett asynkront sekvensnätet, ge det en kapplöpningsfri kodning.

Bred kurs - föreläsningar Introduktion VHDL Kombinatorik Teknologier VHDL (Labb 2) Minneselement Räknare & aretmetik Sekvensnät VHDL – 2 process metoden Tillståndsminimering Asynkrona sekvensnät 1 Asynkrona sekvensnät 2 Synkronisering - Testning Design för test & Simulering Konstruktion av ASIC Sammanfattning Kursen – omfångsrik! Huvuddelarna! (ca 30/50p)

Laborationer VHDL , intro + kombinatoriska nät. VHDL, konstruktion och syntes. Synkrona sekvensnät (VHDL + test bänkar) Hasarder och asynkrona sekvensnät. (I VHDL) Kursen – omfångsrik! Huvuddelarna! (ca 30/50p) VHDL Synkrona sekvensnät Asynkrona sekvensnät

Måste behärska För överbetyg Synkrona sekvensnät Koda snålt, one hot Kunna rita upp en tillståndsgraf Kunna ta fram tidsdiagram och från tidsdiagram tillståndsgraf Känna till Mealy, Moore och synkron Mealy VHDL kopplingen. Kunna minimera För överbetyg Asynkrona sekvensnät Implementera hasard fritt Kunna rita upp en tillståndsgraf Kunna ta fram tidsdiagram och från tidsdiagram tillståndsgraf Känna till Mealy och Moore Kunna minimera Koda hasard fritt Viktigt: Förstå skillnaden mellan synkrona och asynkrona sekvensnät!

Tentamina: struktur 1. Småfrågor ca 6-12p 2. Minimering mm, ca 6-10p Teknologi val Synkroniseringsfel Små VHDL uppgifter ASIC, FPGA, CPLD 2. Minimering mm, ca 6-10p Primimplekanter, Quine-McCluskey/Karnaughdiagram Testvektorer Mux:ar Hasader 3. VHDL ca 8-12p Läsa, förstå, ändra. ( OBS räcker inte med allmän förståelse för programmering) K Q Ungefärligt upplägg! Småfrågor: Täcka det som inte kommer med i de andra frågorna. Korta svar 1-2 meningar (korta) Minimering/konstruktion VHDL – ej ren kodning, läsa förstå ändra Synkrona sekvensnät. ProblemAnalyskonstruktionminimeringsyntes

Tentamina: struktur 4. Synkrona sekvensnät (konstruktion, kodning) 6-10p Tillståndskodning, minimering, syntes ‘One-hot’ tillstånds tilldelning Mealy, Moore och Synkron Mealy Implementera grindar/VHDL 5. Minimering sekvensnät mm (4-8p) asynkront sekvensnät analys av Hassarder Simulering ASIC – transistorer mm 6. Konstruktion av asynkront sekvensnät, 6-12p timing Poäng på tenta 50p godkänt 20p, 4:a 30p och 5:a 40p Minimering Beroende på föregående och efterföljande uppgift Asynkrona sekvensnät Konstruktion/analys EV – strycker jag en uppgift (För att arbetsbördan ska bli lagom)

Viktiga metoder ett kunna Asynkrona nät Primitiv flödestabell Hasarder Kapplöpningsfri kod Dont-care i tillståndsgraf Asynkront realiserbart Karnaughdiagram 3-5 variabler. Karnaughdiagram primimplikatorer Quine-McCluskey Tillståndskodning Heuristiska metoder ’One-hot’ Minimering Successiv partitionering Implekatortabell Relationsgraf Testvektorer Okänt tillstånd X

Synkrona – Asynkrona sekvensnät Rita tillståndsgraf Tillstånds tabell Minimera – Implikator tabell Relationsgraf, eller stegvisa partitioneringar Koda – gärna ”onehot” Ta fram ekvationerna Rita tillståndsgraf (kvarhållande tillstånd) Flödes tabell  Primitiv flödestabell! Minimera Implikator tabell Relationsgraf, Krav!, komplex relationsgraf! Koda binärt (ej ”onehot”) lägg ut i boolesk hyperkub Ta fram ekvationerna + konsensustermer

Att göra Lös uppgifter!!!! (Övning, lab, tentor) När ni inte kan använd presentation/bok Går fortfarande inte facit! Stäm av att ni behärskar alla metoderna Viktigaste att ha med sig från kursen: VHDL Synkronisering Timing Tentan testar färdigheter, det räcker inte att kunna måste även ha visst tempo! Så öva! Om materialet!

Datum Granskning 17/4 (E4128, 11.45-12.30) Tisdag 6/3 fm M 4 timmar 29/8 – em M 1x/1 - 2013 Granskning 17/4 (E4128, 11.45-12.30) Granskning 19/4 (E4128, 11.45-12.00) Laborationerna och övningsuppgifterna kommer att vara en viktig inspirationskälla för tentan Laborationerna, inlämnings- och övningsuppgifter kommer att vara en viktig inspirationskälla för tentan

Tack för mig! Onsdag 13.15 – 14 Frågestund HC4 Fredag 13.15-15 Frågestund HA4 Inlämning 3 senast torsdag. (Inlämning  Godkänd). Inlämning 4 helt struken. Hoppas att jag får återse er! Digital konstruktion EDA234 LP II Kandidatarbete LP III – IV (ansvarig) Examensarbeten.

Sammanfattning F1

EX 2007-01-13 Upg 3 entity Upg3 is port ( Clk,X,Reset : in std_logic; U : out std_logic); end Upg3; architecture BEHAVIORAL of Upg3 is type state_type is (S0,S1,S2); signal state, next_state : state_type; begin p1:process(Clk, Reset) if Reset='1‘ then state <= S0; elsif Clk'event and Clk='1' then state <= next_state; end if; end process p1; end case; p2:process(X, state) begin U<='0'; next_state <= S0; case state is when S0 => if X='1' then next_state <= S1; end if; when S1 => next_state <= S2; U<='1'; when S2 => if X='1' then next_state <= S2; end if; end process p2; end BEHAVIORAL; Läsa Förstå, Ändra

Att behärska på VHDL Processer (Komb – minne) if LA='1' then -- Shift next_A<=Data; -- 8 - bitar elsif SRA='1' then -- Shift höger next_A<= '0' & A(7 downto 1) ; elsif SLA='1' then -- Shift vänster next_A<= A(6 downto 0) & '0' ; end if; -- Shift Processer (Komb – minne) Kombinatoriska Vippor if Reset='1'then state <= S0; elsif Clk'event and Clk='1' then Tillståndsmaskiner case state is when S0 => Next_y <= S9 Register Shift register Räknare use IEEE.std_logic_unsigned.all; -- Viktig … if LB='1' then -- Counter next_B<=(OTHERS =>'0'); elsif EB='1' then next_B<=B+1; end if; -- Counter

Konstruktion av digitala system Beskriv algoritmisk vad du ska göra Dela upp i dataväg och styrenhet Implementera i VHDL Varför? För att få bra struktur. För att få en effektiv implementering Skilj på kod för syntes till maskinvara och programkod! Försök att samla aritmetiken och undvik jämförelser (dyrt).

x5x4 00 01 11 10 1 3 12 4 15 17 6 13 14 18 9 11 110 16 19 118 20 21 23 22 28 29 31 30 124 25 27 126 48 49 51 50 52 53 55 54 60 61 63 62 156 57 59 158 32 33 35 34 36 137 139 38 44 45 47 46 140 41 43 142 x5x4 00 01 10 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 1 1 1 1 1 1 X3X’2X’0 16 17 19 18 20 21 23 22 28 29 31 30 24 25 27 26 1 X’5X’2X1X’0 1 1 1 48 49 51 50 52 53 55 54 60 61 63 62 56 57 59 58 1 1 32 33 35 34 36 37 39 38 44 45 47 46 40 41 43 42 X’4X’3X2X0 1 1 1 1

Quine-McCluskey - 1 X3 x3 x2 00 01 11 10 X2 X1 X0 x1 x0 Exempel: f (x3,x2,x1,x0) = å m(4,5,6,8,9,10,13)+d(0,7,15) - 1 X3 x3 x2 00 01 11 10 X2 X1 X0 x1 x0 Kanoddiagram bryter ihop efter 6 variabler. Quine-McCluskey är en systematisk metod att ta fram alla primimplikatorer.

Gruppera termerna efter antal ettor (0,4) 0-00 v v (4,5,6,7) 01-- v 0 0000 4 0100 8 1000 5 0101 6 0110 9 1001 10 1010 7 0111 13 1101 15 1111 (0,8) -000 v (4,5) 010- v (4,6) 01-0 (8,9) 100- (8,10) 10-0 (5,7) 01-1 (5,13) -101 (6,7) 011- (9,13) 1-01 (7,15) -111 (13,15) 11-1 v v (5,7,13,15) -1-1 v v v

- 1 X3 x3 x2 00 01 11 10 X2 X1 X0 x1 x0 (0,4) 0-00 (4,5,6,7) 01-- (0,8) -000 (5,7,13,15) -1-1 (8,9) 100- Får ni en uppgift att ta fram all primimplekanter så måste ni vara välgigt nogranna. Quine-McCluskey kan vara ett bra alternativ (9,13) 1-01 (8,19) 10-0

Hitta en minimal täckand funktion EJ 0,7 och 15 4 5 6 8 9 10 13 0,4 (0-00) X 0,8 (-000) 8,9 (100-) 8,10 (10-0) 9,13 (1-01) 4,5,6,7 (01--) 5,7,13,15 (-1-1) OBS OBS OBS Don’t care finns inte med!!!!!

Essentiella primimplikanter 4 5 6 8 9 10 13 0,4 (0-00) X 0,8 (-000) 8,9 (100-) 8,10 (10-0) 9,13 (1-01) 4,5,6,7 (01--) 5,7,13,15 (-1-1)

Sammanfattning Quine-McCluskey Ordna samtliga mintermer och ”don’t care” i en tabell efter antalet ”ettor”. Jämför varje minterm med de mintermer som har en ”etta” mer. De som stämmer (skiljer sig i endast en position) bockas av och den förenklade termen skrivs upp. Upprepa 2 & 3 för de nya kolumner som bildas tills det inte går mer. De termer som nu inte är markerade är funktionens primimplekanter.

Multiplexrar som generell logik (forts.) I0 I1 . . . In-1 In F . . . . 0 0 0 1 1 . . . . 1 0 1 0 1 0 In In' 1 I allmänhet Exempel: G(A,B,C,D) kan implementeras med en 8:1 MUX Fyra möjliga konfigurationer av Sanningstabellen Kan uttryckas som en funktion av In n-1 mux styr variabler en mux data variabler välj A,B,C som styr variabler C A B 0 1 2 3 4 5 6 7 1 D 0 1 D’ D D’ D’ S2 8:1 MUX S1 S0 A B C D G 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 D 0 1 D' D D’ D’ F5

Aktivitet En grind behövs! Realisera F = B’CD’ + ABC’ med en 4:1 multiplexer och så få grindar som möjligt: A B C D Z 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 CD’ En grind behövs! F5 CD’ C’

Aktivitet (forts.) Realisera F = B’CD’ + ABC’ med en 4:1 multiplexer och så få grindar som möjligt: A B C D Z 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 när B’C’ D’ när B’C B C S1 S0 F 0 1 2 3 4:1 MUX 0 D’ A 0 A när BC’ 0 när BC F5 Z = B’C’(0) + B’C(D’) + BC’(A) + BC(0)

Demultiplexers som generell logik En n:2n avkodare kan implementera en godtycklig funktion av n variabler med variablerna som styrsignaler “enable” ansluten till 1 och rätt mintermer summerade för att skapa funktionen A'B'C' A'B'C A'BC' A'BC AB'C' AB'C ABC' ABC C A B 0 1 2 3 4 5 6 7 S2 3:8 DEC S1 S0 “1” demultiplexer genererar alla mintermerna F5

PALs och PLAs: design exempel (forts.) Kode konverterare: programmerbar PLA A B C D Minimerade funktioner: W = A + BD + BC X = B C' Y = B + C Z = A'B'C'D + BCD + AD' + B'CD' A BD BC BC' B C A'B'C'D BCD AD' BCD' W X Y Z Ingen bra kandidat för PLA Implementering eftersom inga termer är delade mellan utgångarna Men mycket mer kompakt implementering jämfört med lösa AND och OR gates F5

PALs och PLAs: design exempel (forts.) A B C D A BD BC BC' B C A'B'C'D BCD AD' B'CD' Kode konverterare: programmerbar PAL 4 produkttermer per OR grind F5 W X Y Z

Sammanfattning teknologier Random logic Enstaka grindar eller nät Konvertering till NAND-NAND och NOR-NOR nät Bygger komplexa block av grinar Reducera grindantalet, fan-ins, potentiellt snabbt Fler nivåer svårare att konstruera Regular logic multiplexers/decoders ROMs PLAs/PALs FPGA fördela/nackdelar för varje F5

Jämförelse mellan Mealy och Moore tillståndsmaskiner Mealy maskiner får oftast färre tillstånd olika utsignaler på transaktionerna (n2) i stället för tillstånden (n) Reagerar under samma klockcykel förändringar i insignalerna påverkar direkt utgångarna (efter grindfördröjningen) - ett stort problem om två maskiner är sammankopplade, då kan asynkron återkoppling uppstå Moore maskiner är säkrare att använda Utsignalerna ändras vid klockflanken (alltid en cykel senare) mer logik kan behövas för att avkoda ett tillstånd till utsignaler – mer grindfördröjning efter klockflanken. (Mealy maskiner reagerar snabbare på insignalerna) F7

Jämförelse mellan Mealy och Moore tillståndsmaskiner (forts.) Synkron Mealy state feedback inputs outputs reg combinational logic for next state logic for outputs inputs outputs state feedback reg combinational logic for next state logic for outputs F7 inputs outputs state feedback reg combinational logic for next state logic for outputs

Exempel: reducera-1-sträng-med-1 Ta bort en etta från varje sträng av 1:or på ingången. Moore Mealy 1 zero [0] one1 [0] two1s [1] 1/0 0/0 1/1 zero one1 CP In Moore Mealy

Exempel: reducera-1-sträng-med-1 Ta bort en etta från varje sträng av 1:or på ingången. Moore Mealy 1 zero [0] one1 [0] two1s [1] 1/0 0/0 1/1 zero one1 CP In Moore Mealy

Exempel: reducera-1-sträng-med-1 Ta bort en etta från varje sträng av 1:or på ingången. Moore Mealy 1 zero [0] one1 [0] two1s [1] 1/0 0/0 1/1 zero one1 CP In Moore Mealy

VHDL FSM - Reduce 1s example Moore machine 1 zero [0] one1 [0] two1s [1] entity Reduce1Moor is port ( Clk : in std_logic; I : in std_logic; Reset : in std_logic; O : out std_logic); end Reduce1Moor; architecture BEHAVIORAL of Reduce1Moor is type state_type is (zero,one1,two1s); --Tillståndsdeklaration signal state:state_type; begin ---- end BEHAVIORAL; å – Aj Aj Aj Repedetion från förra föreläsningen

Moore VHDL FSM bättre 2-process lösning (forts) ASM_P: process(Clk,Reset) -- Synkron process begin if Reset = '1' then -- Asynkron reset state<=zero; -- Reset tillstånd elsif Clk'event and Clk='1' then state<=next_state end if; end process ASM_P; -- Kombinatorisk process next_s:process(state,I) begin next_state <=zero case state is when zero=> O<='0'; if I='1' then next_state <=one1; end if; when one1=> O<='0'; if I='1' then next_state <=two1s; end if; when two1s=> O<='1'; if I=‘1' then next_state <=two1s; end case; end process next_s; 1 zero [0] one1 [0] two1s [1] Ger bra kod. Ger bra syntes resultat. Mer om tvåprocess lösningen senare i kursen. EV mer animerig på denna! state feedback inputs outputs reg combinational logic for next state logic for outputs

Mealy VHDL FSM architecture BEHAVIORAL of Reduce1Mealy is type state_type is (zero,one1); --Tillståndsdeklaration signal state:state_type; signal next_state:state_type; begin p1:process(Clk, Reset, next_state) if Clk'event and Clk='1' then if Reset = '1' then state<=zero; else state<=next_state; end if; end if; end process p1; 1/0 0/0 1/1 zero one1 p2:process(state,I) begin case state is when zero=> if I='1' then next_state<=one1; O<='0'; else next_state<=zero; O<='0'; end if; when one1=> if I='1' then next_state<=one1; O<='1'; when others=> next_state<=zero; end case; end process p2; end BEHAVIORAL; inputs outputs state feedback reg combinational logic for next state logic for outputs På 2 processer Går att lägga utsignalerna i peralell VHDL (Personligen tycker jag att tillståndsgraferna är lättare att läsa!)

Synkron Mealy maskin p1:process(Clk,Reset) architecture BEHAVIORAL of Reduce1SynkMealy is type state_type is (zero,one1); --Tillståndsdeklaration signal state:state_type; begin p1:process(Clk,Reset) if Clk'event and Clk='1' then -- Synkron Reset if Reset = '1' then state<=zero; -- Reset tillstånd else case state is when zero=> if I='1' then state<=one1; O<='0'; else state<=zero; O<='0'; end if; when one1=> if I='1' then state<=one1; O<='1'; when others=> state<=zero; -- Saknar betydelse end case; end if; end if; end process; end BEHAVIORAL; architecture BEHAVIORAL of Reduce1SynkMealy is type state_type is (zero,one1); --Tillståndsdeklaration signal state:state_type; begin p1:process(Clk,Reset) if Clk'event and Clk='1' then -- Synkron Reset if Reset = '1' then state<=zero; -- Reset tillstånd else case state is when zero=> if I='1' then state<=one1; O<='0'; else state<=zero; O<='0'; end if; when one1=> if I='1' then state<=one1; O<='1'; when others=> state<=zero; -- Saknar betydelse end case; end if; end if; end process; end BEHAVIORAL; 1/0 0/0 1/1 zero one1 1 Process ger synkron Mealy

Metod för successiv partitionering Till- Till stånd part. S0 aa S1 ab S2 ab S3 aa S4 aa S5 aa S6 aa Till- Till stånd part. S0 gg S1 bd S2 bd S3 aa S4 aa S5 aa S6 aa Till- Till stånd part. S0 bb S1 ag S2 ag S3 aa S4 aa S5 aa S6 aa In Nuvarande Nästa tillstånd Output Sekvens tillstånd X=0 X=1 X=0 X=1 Reset S0 S1 S2 0 0 0 S1 S3 S4 0 0 1 S2 S5 S6 0 0 00 S3 S0 S0 0 0 01 S4 S0 S0 1 0 10 S5 S0 S0 0 0 11 S6 S0 S0 1 0 ( S0 S1 S2 S3 S4 S5 S6 ) ( S0 S1 S2 S3 S5 ) ( S4 S6 ) ( S0 S3 S5 ) ( S1 S2 ) ( S4 S6 ) ( S0 ) ( S3 S5 ) ( S1 S2 ) ( S4 S6 ) a b S1 är ekvivalent med S2 S3 är ekvivalent med S5 S4 är ekvivalent med S6 a b g a b g d

Exempel för att belysa realtionsgraf 4,6;2,4 (7,8)

Exempel för att belysa realtionsgraf 4,6;2,4 7,9 7,8 6,7 4,6 3,7 2,4 3,8 3,7;2,9 2,7 3,8;2,9 2,6 5,7 5,8 1,7;4,9 4,7 1,8;4,9 1,3 2,6;2,4 3,5 Exempel för att belysa realtionsgraf JA! S1 S3 S5 S8 S9 S7 S6 S4 S2

Resultat

‘One-hot’ tillstånds tilldelning Enkelt enkelt att koda Enkelt att fel söka Små logiska funktioner varje tillståndsfunktion behöver bara en tillstånds bit från förgående tillstånd Bra för programmerbarlogik (FPGA) många vippor finns tillgängliga få variabler i ekvationerna Opraktiskt för stora tillståndsmaskiner för många tillstånds vippor Delar man ner en stor tillståndsmaskin i flera små kan del maskinerna vara ’one-hot’ kodade Det finns många variationer på ’one-hot’ temat ’one-hot’ + alla-0

Tillgängliga metoder för tillståndstilldelning För snål kodning (nära minimalt antal tillståndsbitar) bäst av 10 slumpmesiga tyck vara tillräckligt bra (i medeltal lika bra som heuristiska metoder) Heuristiska metoder är långt ifrån optimala används i specialdesignade ASIC (eller om man måste knö i en FPGA/CPLD) ’One-hot’ kodning enkelt för små tillståndsmaskiner Genererar enkla ekvationer och det är lätt att uppskatta komplexiteten Vanligt i FPGAer Utsignal baserad kodning ’ad hoc’ – inga verktyg vanligaste angreppssättet för konstruktörer (när dom kodar utan datorstöd) ger oftast kompakta lösningar för de flesta tillståndsmaskinerna

Statisk 1-hasard i S-O-P nät f (1,x2,1) = x2 + x2’

Statisk 0-hasard f(0,x2,0) = x2’x2 Uppträder i P-O-S nät

Dynamisk hasard Förutsättning minst tre grindnivåer Kan uppstå i nät som efter insättning av värden på övriga variabler kan reduceras till: xi + xi’ xi, xi’+ xi’xi, xi(xi’+ xi) eller xi’(xi’+ xi) a b c d e f g h I j LUT f f(a,b,c,d,e,f,g,h,i,j)

Sammanfattning hasarder Undersök om det finns någon tilldelning av alla utom en insignal xi sådan att uttrycket blir: (efter insättning med värden på övriga variabler) Om xi + xi’ statisk 1-hasard xi xi’ statisk 0-hasard Obs strukturen på nätet måsta vara en 1-1 avbildning av det ursprungliga. Vilket innebär att; inga algebraiska transformeringar som innebär att någon variabel eller uttryck försvinner får användas. (de Morgan går dock bra)

Metodik för timing Regler gör anslutning av komponenter till klocksignaler garanterar att systemet fungerar om man följer dom strikt Olika angreppssätt beroende på vilka byggblock som används som minne Fokuserar på system med flanktriggade vippor finns i programmerbara logiska kretsar många ASIC- implementeringar fokuserar på nivåkänsliga vippor Basregler för korrekt timing: (1) korrekta insignaler, med avseende på tid, finns tillgängliga för vipporna (2) inga vippor byter tillstånd mer än en gång per klockningshändelse

Metodik för timing (forts.) Definition av termer Klocka: periodisk händelse, åstadkommer förändring av minnes- elementens tillstånd kan vara stigande eller fallande flank eller hög/låg nivå setup time: minimal tid före klockhändelsen som insignalerna måste vara stabila (Tsu) hold time: minimal tid efter klockhändelsen som insignalerna måste vara stabila (Th) input clock Tsu Th data D Q D Q clock Det finns ett ’tidsfönster’ omkring klockhändelsen när insignalerna måste vara stabila för att minneselementen ska få rätt värde stabila förändring data clock

Typiska timing specifikationer Positivt flanktriggad D vippa setup och hold tider minimum klock vidd propagations fördröjningen (låg till hög, hög till låg, max och typ) D Clk Q T su 1.8 ns h 0.5 w 3.3 pd 3.6 ns 1.1 ns Alla mätningar görs från klockhändelsen (stigande flank på klockan)

Hur det kan se ut på ett oscilloskop när synkroniseringsfel uppträder Uppstår när vippans ingång ändras nära klockans flank vippan hamnar i ett metastabilt tillstånd – varken logisk 0 eller 1 – den kan stanna i detta tillstånd obegränsat länge detta är inte troligt i praktiken med det finns en liten sonorlikhet för det logisk 1 logisk 0 llogisk 0 logisk 1 liten, men inte noll sonorlikhet att vippan fastnar mellan sina tillstånd Hur det kan se ut på ett oscilloskop när synkroniseringsfel uppträder

Att hantera synkroniseringsfel Sandorlikheten för fel funktion kan aldrig reduceras till 0, men den kan minskas radikalt (1) använd långsammare system klocka detta ger minneselementet mer tid för att nå ett stabilt tillstånd; synkroniseringsproblem är ett stort problem för snabba system (2) använd snabbast möjliga logikteknologi för synkroniseringen (3) kaskadkoppla två sykroniseringselement synkroniserar två gånger (båda måste falera) asynkron insignal Q synkron insignal D Q D Clk Synkroniseringssystem

Hantera asynkrona insignaler Aldrig aldrig aldrig tillåt asynkrona insignaler att vara kopplade till mer än en vippa synkronisera så snart som möjligt och behandla därefter signalen som synkron D Q Q0 Clock Q1 Asynkton Insignal Synkroniserare D Q Q0 Clock Q1 Asynkron Insignal Klockat Synkront System

Hantera asynkrona insignaler (forts.) Vad kan bli fel? insignalen ändras för nära klockflanken (villkoret för setup tid ej uppfyllt) In Q0 Q1 CLK In är asynkron och kopplad till D0 och D1 en vippa fångar signalen, en gör det inte kan hamna i ett inkonsistent tillstånd!

Tillståndstabell / flödesgraf x1+x4 x1+x2 Insignal/ nästa tillstånd x2+x3 Q2 Q2 Q2 Nuvarande tillstånd Q1 Q1 Q1 X1 X2 X3 X4 x4 Q1 Q1 Q2 Q2 Q1 x2 x3 Q2 Q2 Q2 Q3 Q1 x2 Q3 Q4 Q2 Q3 Q3 x3 Q4 Q4 Q3 Q3 Q3 Q4 Q4 Q1 Q3 Q4 x1 x1+x4 Ett tillstånd är stabilt om f (Xi,Qj)=Qj För att ett nät ska vara asynkront realiserbart krävs att för varje icke stabilt tillstånd ska det finnas en sekvens av tillstånd som avslutas med ett stabilt tillstånd. x3+x4

Tillståndsgraf: 9.17 Släpp igenom CP när W hög: 01(0) A CW(Z) - 0 (0) 1- (1) C 01(0) B 11(-) 10(0) 00(0) D 11(0) 01(0) 0-(-) Uppfyller spec – JA Optimal – Nej  Optimera

Kapplöpningsfri tillståndskodning Exempel modulo-4 räknare en insignal x och räknaren räknar varje omslag hos x u1u2 = 00,01 10,11, 00 x 0 1 Q1 Q1(00) Q2(0-) Q2 Q3(-) Q2(01) Q3 Q3(10) Q4(1-) Q4 Q1(-) Q4(11) d(l) x 0 1 00 00(00) 01(0-) 01 10(-) 01(01) 10 10(10) 11(1-) 11 00(-) 11(11) d(l) Ex på tillståndskodning: Q1=00, Q2=01, Q3=10, Q4=11

Ger följande tillståndsgraf Vi placerar in tillståndsgrafen i en Boolesk hyperkub för att finna eventuella kapplöpningar. Ny kodning : Q1=00, Q2=01, Q3=11, Q4=10 00 11 0(-) 01 10 q1 q2 00 11 0(-) 01 10 q1 q2 1(1-) 1(0-) 1(01) 1(11) 0(10) 0(00)

Primitiv flödestabell: Endast ett stabilt tillstånd per rad: I det allmänna fallet när man minimerar en ofullständigt specificerad tillståndsgraf. Samma procedur som innan. Välj en täckande partitionering. Se till att den är sluten! Steget med slutenhet har vi ej gått igenom. Men om man arbetar med en primitiv flödestabell så behöver man inte bevisa slutenhet. Primitiv flödestabell: Endast ett stabilt tillstånd per rad: Insignal restrektionen ger ’don't cares’.

Exempel 9.7 B C D E F G H A B C D E F G Present Next state Output w 2 1 00 01 z A H B F C D E G – 11 10 Utsignalerna: A,B,F,G,H (0) och C,D,E(1) B C D E F G H A B C D E F G A-F D-H C-E D-H C-E D-H A-F B-G Figur 9.28 (s607) Relationsgraf på tavlan C-E D-H

Exempel 9.7 B C D E F G H A B C D E F G {B,F,G} {A,H} {D,E} {C} A Utsignalerna: A,B,F,G,H (0) och C,D,E(1) B C D E F G H A B C D E F G A-F D-H C-E D-H C-E {B,F,G} {A,H} {D,E} {C} D-H A-F B-G Figur 9.28 (s607) (Relationsgraf på tavlan) C-E D-H

2a 2b 3a 3b 4a 4b 1 2a 2b 3a 3b 4a

Okänt logiskt tillstånd X De logiska tillstånd som en nod kan anta är {0,1,X} (även Z och U/D kan förekomma) VHDL (U,X,0,1,Z,W,L,H,-)

Trevärdig logik (simulering) Är ingen Boolesk algebra, ex X⋅X = X ≠ 0 och X+X = X ≠ 1 AND 0 0 0 0 1 0 1 1 1 0 X 0 1 X X OR 0 0 0 0 1 1 1 1 1 0 X X 1 X 1 NOT 0 1 1 0 X X

Nivå simulering (Levelized simulation) Kapa alla återkopplingar Ge varje grind en topologisk nivå Primära ingångar nivå 0 Nivå (y) = 0 om primär insignal max {Nivå(yFI)} + 1 annars

Händelsestyrd simulering (Event-driven simulation) Används vid VHDL simulering grindnivå simulering funktionell simulering När insignalerna till en nod ändras evalveras den noden normalt berörs 10-15% av konstruktionen En händelse inträffar vi den given tidpunkt (simulerad) hanteras via en händelselista när en händelse evalveras skapas nya händelser  listan

Enhetsfördröjnings modellen Händelselistan delas i två tidsluckor Lucka A – händelser som har genererats tidigare Lucka B – här stoppas nygenererad händelser in Algoritm: evalvera händelserna i lucka A uppdatera lucka B när inga fler händelser finns i lucka A byt plats på lucka A och B, börja sedan om Det spelar ingen roll i vilken ordning som händelserna evalveras Dock måste man sätta en begränsning på hur många varv hjulet får snurra. (utifall nät som EJ är asynkront realiserbara) . A B

Simulering i VHDL Händelsestyrd simulering både enhetsfördröjning och grind fördröjnings modellen Kompilering och sammansättning (elaboration)

Icke syntetiserbar VHDL Eftersom VHDL ursprungligen inte var avsedd för syntes så finns det många icke syntetiserbara konstruktioner som: after wait for File generiska parametrar Flyttal fungerar men är ett mycket dåligt val … Initieringsvärden på variabler och signaler Exakt timing, när sotleken ej är definerad vid syntesen

Vippor, latchar eller bara logik? Förutsätt att syntesverktygen är korkade! Finns inget reserverat ord som tallar om huruvida en konstruktion är asynkron eller inte Ett vanligt fel är skapandet av extra (onödiga) latchar och vippor I processer behåller en signal ett värde till dess att den tilldelas ett nytt. Så: Om en if eller case sats inte täcker alla utfall med tilldelningar så skapas extra latchar och vippor Finns wait med eller if, case med namn’event så skapas vippor

Sammanfattning av regler för RTL syntes ’sensitivity’ listan Förgreningar Kombinatorisk alla insignaler (signaler i högerledet täck alla logik vid tilldelningar och de som används i (eller default) IF och CASE satser latchar alla insignaler okomplett vippor Klockan och asynkron set/reset okomplett (if Clk'event and Clk='1' then) Tilldela aldrig en variabel eller signal i mer än en process

Bättre metoder I verkligheten använder man en delmängd av alla möjliga invektorer. Denna delmängd kan bestämmas på några olika sätt. Slumpmässigt valda testvektorer Baserat på logisk funktion Baserat på nätets struktur Minnestestning Baserat på felmodeller Realistiskt använder man sig därför inte av uttömmande testning, utan av ett “testset” som består av en delmängd av alla möjliga invektorer. Dessa vektorer kallas testvektorer. Som tur är visar det sig nämligen att man oftast hittar större delen av alla fel i en krets med en relativt liten mängd testvektorer. Dessa vektorer kan bestämmas på ett flertal olika sätt, genom slumpning av vektorer, genom att analysera nätet matematiskt, genom att titta på dess struktur, eller genom att göra intelligenta gissningar om var felen hamnar och hur de ser ut.

Single Stuck-at Faults (SSF) Detta är den vanligaste felmodellen, och är närmast industristandard. Ett fel representeras av att den felaktiga noden låses till värdet 0 eller 1, oberoende av övriga signaler i nätet. Kortsiutning till jord eller matningsspänning. Vissa typer av avbrott Vissa typer av kortsiutningsfel Enbart ett fel antas uppträda åt gången! Låsningsfel, eller stuck-at-fel, är den absolut vanligaste felmodellen och är i princip industristandard vad gäller utvärdering av test samt testbarhet. Modellering av fel går till på så sätt att man låter samtliga fel representeras av att de felaktiga noderna får ett konstant värde noll eller ett. Exempel på fel som går mycket bra att modellera är givetvis mkortslutningar till spänningsmatning, men även vissa typer av avbrott som till exempel på ingångar till transistorer. Kortslutningsfel kan även de modelleras mha stuck-at-modellen, om man ser till att uppfylla de villkor som krävs för att felet skall aktiveras, dvs att de två kortsiutna grindarna har olika utsignaler. För att förenkla antar man att enbart ett fel uppträder i en felaktig krets. Detta är ett mycket vanligt antagande i alla feltoleranssammanhang, och innebär en väsentlig förenkling jämfört med om man hade tillåtit så kallade “multipelfel.” Det har dessutom visats att man hittar en väldigt stor del av alla dubbelfel med hjälp av enkelfelstest.

Nätorienterad testgenerering Utnyttjar “path sensitization” En ny boolesk algebra krävs: Låt D samt D’ representera felvärden orsakade av SA-fel. Då utgör <O,1,D,D’, ‘,+,‘> en korrekt boolesk algebra, där t ex D•D’ =0, D+D’=1, D’·1 = D ³ 1 & y z x w K SA 0 k G1 G2 G3 G4 t b f Path sensitization innebär att man genomför ett antal sensitizations på en väg från felet till utgången så att felet kan propageras. För att hålla ordning på felvärdet hittar man på en flervärd boolesk algebra som har två extra värden, D och D’. Dessa värden genereras av ett aktiverat fel. 23

Varför får man inte 100% coverage? Algoritmen i ATPG kan vara dålig. Redundans i en krets ger otestbara SA-fel. Oavsiktlig redundans kan fås genom otillräcklig minimering av funktioner Avsiktlig redundans fås genom hasardeliminering eller i feltoleranta kretsar Vi definierar ett nät som redundant om det innehåller otestbara SA-fel. 29

Generering av test för sekvensnät Vanligas: översätt sekvensnätet till ett iterativt kombinatorisk nät. Sedan: Initiera till ett känt tillstånd Q(0) Använd metoderna för kombinatoriska nät för att generera vektorer för cell 0 Invektorn från testgenereringen får användas under r klockcykler. Om felet inte upptäcks efter r cykler, öka r med 1 P7.1 (Svårt att välja r vanligen 2-3)

Ad hoc metoder för ökad testbarhet Välkända tekniker baserat på erfarenhet för att öka styrbarhet och observerbarhet Lägg till testpunkter. Genom att lägga till extra ledare tilll/från kretsens utsida kan man öka dess observerbarhet och kontrollerbarhet Initiering – reset Få kretsen till ett välkänt tillstånd Oscillatorer och klockor Koppla bort den ordinarie under test Partitionera stora kretsar/system Det är mycket lättare att generera test, samt testa små kretsar än att testa stora. Genom att partitionera rätt kan man dessutom i vissa fall testa delar av kretsen parallellt, vilket ökar hastigheten. P7.2.1, V11.1

“ad hoc’ ‘-metoder (forts) Redundant logik UNDVIK! Inga TMR Globala återkopplingar Bryt återkopplingen med logik Asynkrona sekvensnät UNDVIK KW32

Skannings kedjor Scan-kedjor är den vanligaste DFT-metoden. Samtliga minneselement i kretsen kedjas ihop till ett shiftregister så att man lätt kan klocka in/ut data i kretsen. Kostar ca 30% jämfört med vanliga vippor Skiljer mellan full och partiell skanningstekniker P7.2.2, V11.2, DL11.6.1

Boundary-Scan (IEEE 1149.1) Den vanligaste metoden för skannings kedjor Ger möjlighet till testning Av alla kretsar (fullständig) Av kretskortet (PCB) Produktions test (enkel/billig utrustning) Fälttest (hos kund)

Inbyggd självtest Är en teknik för att låta kretsen testa sig själv I produktion – ingen testutrustning behövs I fält – lätt att testa funktionen Testningen sker när systemet inte är i drift Kan ej utföras under normal drift Fördelar Enklare eller inget testsystem Enklare testplanering Test vid normal frekvens Kretsbibliotek finns Många testvektorer ,enkelt Nackdelar Stöd saknas i CAD/EDA- verktyg Prestanda i konstruktionen Extra komponenter behövs Mer kisel yta Fler ställen där det kan bli fel V11.3, DL11.7, P7.2.3, BM 106

BILBO (Built-in logik block observer) Den inbyggda självtestaren kostrar mycket logik och framför allt vippor. En bättre metod är att utnyttja befintliga vippor som i skannings kedjorna. V11.3.2, LD 11.7.1

3. Effekt Framtiden • Nu: max ~100 – 150 W per chip • Teknologigenombrott krävs för ändring • Begränsningar: • Spänningsmatning (1 V betyder 100 A) • Kylning (25 W / cm2) • Reglering av spänning och frekvens Framtiden • Gräns för transistorstorlek • ~10 nm? • Konstruktion med större block • Grindar, RTL-block, kärnor, … • “Dark silicon” • Vi kan bygga mer än vi kan använda 1. Fler transistorer • Nu: miljarder transistorer på ett chip • Fler och fler får plats (x2 per processgeneration) • Replikerade block (minnen, kärnor) • Återanvänt konstruktionsarbete • Nätverk på chip (NoC) för kommunikation • Redundans 2. Klockfrekvens • Nu: enstaka GHz • Inga större ändringar förväntas • Snabbare transistorer, lika slöa ledningar • Synkronisering svårare • Globally Asynchronous, Locally Synchronous

Flera utgångar Ex 4.3 x 00 01 11 10 1 2 3 4 (c) Optimal realization of and together x x x x 1 2 1 2 x x x x 3 4 00 01 11 10 3 4 00 01 11 10 00 00 01 1 1 1 01 1 1 1 11 1 1 1 11 1 1 1 10 1 10 1 (a) Optimal realization of f (b) Optimal realization of f 3 4

(d) Combined circuit for and x 1 2 3 4 00 01 11 10 f 3 4 x 1 2 (d) Combined circuit for and x 1 2 3 4 00 01 11 10

Flernivårealisering av kombinatoriska nät Steg 1: Teknologioberoende, Sök gemensamma delfunktioner. (algebraisk process) Steg 2: Teknologi anpassning. x1x2 + x1x2 = x1x2 + x1x2 Exempel 4.6 f = x1x2x3 + x1x2x3 + x1x2x4 + x1x2x4 g = x1x2 + x1x2 f = (x1x2 + x1x2)x3 + (x1x2 + x1x2)x4 1 x 2 3 4 f g h f = gx3 + gx4

FPGA CPLD Fördelar Fördelar Konstant fördröjning Snabba Kan programmeras på plats Enkla billiga utvecklings-verktyg Billiga Nackdelar ”Små” Få register Fördelar Stora - i samma storleksordning som ASIC Kan programmeras på plats Kort utvecklingstid Nackdelar Varierande fördröjning Pinnplacering och konstruktion har stor betydelse för prestanda. Flyktigt konfigurationsminne (Xilinx)

Transistorer - CMOS NAND gate. NOT gate. V T V V T on off 1 f x T DD x 2 on off 1 f x T 2 NOT gate.

NOR gate

Ex på uppgift Vilken funktion realiseras? F= x1’ + x2’x3’

Algorithm for two-level simplification (example) 94 Algorithm for two-level simplification (example) X 1 0 1 1 1 D A 0 X X 0 B C 2 primes around A'BC'D' X 1 0 1 1 1 D A 0 X X 0 B C 2 primes around ABC'D X 1 0 1 1 1 D A 0 X X 0 B C X 1 0 1 1 1 D A 0 X X 0 B C 3 primes around AB'C'D' X 1 0 1 1 1 D A 0 X X 0 B C X 1 0 1 1 1 D A 0 X X 0 B C 2 essential primes minimum cover (3 primes) X 1 0 1 1 1 D A 0 X X 0 B C

95 f (x3,x2,x1,x0) = å m(41,52,62,81,92,102,133)+d(00,73,154) - 1 X3 x3 x2 00 01 11 10 X2 X1 X0 x1 x0 (0,4) 0-00 (0,8) -000 (4,5,6,7) 01-- (5,7,13,15) -1-1 (9,13) 1-01 (8,9) 100- (8,10) 10-0 Får ni en uppgift att ta fram all primimplekanter så måste ni vara välgigt nogranna. Quine-McCluskey kan vara ett bra alternativ

Algoritm för tillståndsminimering Mål – identifiera och kombinera tillstånd som har samma beteende Ekvivalenta tillstånd: samma utsignaler för alla kombinationer av insignaler och tillståndsövergångar hamnar vi i samma eller ekvivalenta tillstånd Algoritm 1. placera alla tillstånd i en partitionering (P0) 2. skapa P1 baserat på tillståndens utsignalbetende 3. dela upp Pn-1 i fler partitioneringar beroende på nästa tillståndstransaktionen 4. upprepa (3) till dess inga fler partitioneringar uppträder tillstånd i samma ekvivalensklass (partitionering) är ekvivalenta Algoritmen lämpar sig väl för datorimplementering **polynomial time procedure

Tillståndstabell – Minimering med direkt inspektion Nästa tillstånd (N5cD10c =) Utsignal State 00 01 10 11 Z S1 S3 S2 - S4 S5 S6 S7 1 S8 S9 Nästa tillstånd (N5cD10c =) Utsignal State 00 01 10 11 Z S1 S3 S2 - S4 S5 S6 S7 1 S8 S9 9 tillstånd kan vi spara några? P0= ( S1,S2,S3,S4,S5,S6,S7,S8,S9) P1= ( S1,S2,S3,S6)(S4,S5,S7,S8,S9)

Tillståndstabell – Minimering med direkt inspektion (forts) Nästa tillstånd State 00 01 10 11 S1 S3 S2 - S4 S5 S6 S7 S8 S9 P0= ( S1,S2,S3,S4,S5,S6,S7,S8,S9) P1= ( S1,S2,S3,S6)(S4,S5,S7,S8,S9) P2= ( S1)(S2,S3,S6)(S4,S5,S7,S8,S9) P3= ( S1)(S2,S6)(S3)(S4,S5,S7,S8,S9) P4= ( S1)(S2,S6)(S3)(S4,S7,S8)(S5,S9) Nästa tillstånd State 00 01 10 11 S1 S3 S2 - S4 S5 S6 S8 S9 S7 S2’ 9 tillstånd kan vi spara några? S4’ S5’

Sammanfattning: metod asynkrona sekvensnät Syntes Present Next state Output State DN = 00 01 z A B D C 1 E F (b) Initial flow table – 11 10 Primitiv flödestabell A ¤ B C 1 D E F N (a)Initial statediagram Rita tillståndsgraf Ta fram flödestabell och minimera Ta fram primitiv flödestabell Implikator tabell Relationsgraf Minimal flödestabell – Asynkront realiserbar ? Genomför tillståndstilldelning Boolesk kub Stuva om, ändra vägar, lägg till tillstånd (ta bort kapplöpning) . B-E C-F B C D E F A-D A B C D E F 1 2 3 4 5 6 7 Phu!

Sammanfattning: metod asynkrona sekvensnät Syntes 00 01 11 10 d 1 y 2 DN 3 = (a) Map for Y Present Next state DN 00 01 10 11 Output y 3 2 1 Y z A 000 B 010 C 111 D 011 F 001 G 101 100 110 – Ta fram exciteringstabell (undersök tabellen för essentiella hasarder) Asynkront realiserbar ? Ta fram uttrycken för nästa tillstånd Karnaughdiagram Konsensustermer (ta bort all kapplöpning) Konstruera kretsen (inför fördröjningar för att bli av med essentiella hasarder) Phu!

Sammanfattning: metod asynkrona sekvensnät Syntes Rita tillståndsgraf Ta fram flödestabell och minimera Ta fram primitiv flödestabell Implikator tabell Relationsgraf Minimal flödestabell – Asynkront realiserbar ? Genomför tillståndstilldelning Boolesk kub Stuva om, ändra vägar, lägg till tillstånd (ta bort kapplöpning) Ta fram exciteringstabell (undersök tabellen för essentiella hasarder) Asynkront realiserbar ? Ta fram uttrycken för nästa tillstånd Karnaughdiagram Konsensustermer (ta bort all kapplöpning) Konstruera kretsen (inför fördröjningar för att bli av med essentiella hasarder) Phu!

1 2 3 4 5 6 7