1.02k likes | 1.22k Views
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. Lärandemål Efter fullgjord kurs ska studenten kunna Principer för en strukturerad och hierarkisk beskrivning av mindre digitala system.
E N D
Digitalteknik, fortsättningskurs 2012Föreläsning 16Inför tentan Sista föreläsningen Övriga föreläsningstider denna vecka Används till hjälp/stöd
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ändningochbegränsningarhosprogrammerbar 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ät1 Asynkrona sekvensnät2 Synkronisering - Testning Design för test & Simulering Konstruktion av ASIC Sammanfattning
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 • Synkrona sekvensnät • Kunna rita upp en tillståndsgraf • Känna till Mealy, Moore och synkron Mealy • Kunna minimera • Koda snålt, one hot • Kunna ta fram tidsdiagram och från tidsdiagram tillståndsgraf • VHDL kopplingen. För överbetyg • Asynkrona sekvensnät • Kunna rita upp en tillståndsgraf • Känna till Mealy och Moore • Kunna minimera • Koda hasard fritt • Implementera hasard fritt • Kunna ta fram tidsdiagram och från tidsdiagram tillståndsgraf Viktigt:Förstå skillnaden mellan synkrona och asynkrona sekvensnät!
Tentamina: struktur • 1. Småfrågor ca 6-12p • 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) Q K
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
Viktiga metoder ett kunna • Karnaughdiagram 3-5 variabler. • Karnaughdiagram primimplikatorer • Quine-McCluskey • Tillståndskodning • Heuristiska metoder • ’One-hot’ • Minimering • Successiv partitionering • Implekatortabell • Relationsgraf • Asynkrona nät • Primitiv flödestabell • Hasarder • Kapplöpningsfri kod • Dont-care i tillståndsgraf • Asynkront realiserbart • Testvektorer • Okänt tillstånd X
Synkrona – Asynkrona sekvensnät • Rita tillståndsgraf • Tillstånds tabell • Minimera – Implikator tabellRelationsgraf, eller stegvisa partitioneringar • Koda – gärna ”onehot” • Ta fram ekvationerna • Rita tillståndsgraf(kvarhållande tillstånd) • Flödes tabell Primitiv flödestabell! • MinimeraImplikator tabellRelationsgraf,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 intefacit! • 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!
Datum • 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
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 IIKandidatarbete LP III – IV (ansvarig)Examensarbeten.
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) begin 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;
Att behärska på VHDL if LA='1' then -- Shift next_A<=Data; -- 8 - bitar elsifSRA='1'then-- Shift höger next_A<= '0' & A(7downto1) ; elsifSLA='1'then-- Shift vänster next_A<= A(6downto0) & '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 0 0 32 48 48 32 16 16 33 17 17 1 49 49 33 1 3 35 51 3 35 19 51 19 50 2 34 50 34 118 18 12 36 4 52 20 4 20 52 36 21 15 37 53 53 137 21 5 55 23 23 39 139 17 55 7 22 54 22 6 38 6 38 54 60 12 28 44 60 44 12 28 13 45 61 29 29 45 13 61 15 15 31 63 47 63 47 31 62 30 14 62 14 30 46 46 124 8 40 140 156 56 24 18 57 9 25 25 41 57 9 41 27 59 27 43 11 59 11 43 142 158 26 58 126 42 110 10 1 1 x5x4 00 01 11 10 1 1 1 1 1 X3X’2X’0 1 X’5X’2X1X’0 1 1 1 1 X’4X’3X2X0 1 1 1 1
x1 x0 X1 00 01 11 10 00 01 x3 x2 1 1 - 1 1 1 - - 1 1 X2 11 X3 10 X0 Quine-McCluskey Exempel: f (x3,x2,x1,x0) = å m(4,5,6,8,9,10,13)+d(0,7,15)
(4,5,6,7) 01-- v (0,4) 0-00 (0,8) -000 v v 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 v v v v v v v Gruppera termerna efter antal ettor 0 0000 4 0100 8 1000 5 0101 6 0110 9 1001 10 1010 7 0111 13 1101 15 1111 v v
x1 x0 X1 00 01 11 10 00 01 x3 x2 - 1 1 1 1 1 - - 1 1 X2 11 X3 10 X0 (0,4) 0-00 (4,5,6,7) 01-- (0,8) -000 (5,7,13,15) -1-1 (8,9) 100- (9,13) 1-01 (8,19) 10-0
Hitta en minimal täckand funktion EJ0,7 och 15
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.
1D01D’DD’D’ 01234567 A B C D G0 0 0 0 10 0 0 1 10 0 1 0 00 0 1 1 10 1 0 0 00 1 0 1 00 1 1 0 10 1 1 1 11 0 0 0 11 0 0 1 01 0 1 0 01 0 1 1 11 1 0 0 11 1 0 1 01 1 1 0 11 1 1 1 0 1 D01 D'DD’D’ 8:1 MUX välj A,B,C som styr variabler S2 S1 S0 A B C Multiplexrar som generell logik (forts.) • I allmänhet • Exempel: G(A,B,C,D)kan implementerasmed en 8:1 MUX I0 I1 . . . In-1 In F. . . . 0 0 011. . . . 1 0 101 0 In In' 1 Fyra möjliga konfigurationer av Sanningstabellen Kan uttryckas som en funktion av In • n-1 mux styr variabler • en mux data variabler
A B C D Z0 0 0 0 00 0 0 1 00 0 1 0 10 0 1 1 00 1 0 0 00 1 0 1 00 1 1 0 00 1 1 1 01 0 0 0 01 0 0 1 01 0 1 0 11 0 1 1 01 1 0 0 11 1 0 1 11 1 1 0 01 1 1 1 0A B C D Z0 0 0 0 00 0 0 1 00 0 1 0 10 0 1 1 00 1 0 0 00 1 0 1 00 1 1 0 00 1 1 1 01 0 0 0 01 0 0 1 01 0 1 0 11 0 1 1 01 1 0 0 11 1 0 1 11 1 1 0 01 1 1 1 0 Aktivitet • Realisera F = B’CD’ + ABC’ med en 4:1 multiplexer och så få grindar som möjligt: CD’ En grind behövs! 0 CD’ C’
0 när B’C’ A B C D Z0 0 0 0 00 0 0 1 00 0 1 0 10 0 1 1 00 1 0 0 00 1 0 1 00 1 1 0 00 1 1 1 01 0 0 0 01 0 0 1 01 0 1 0 11 0 1 1 01 1 0 0 11 1 0 1 11 1 1 0 01 1 1 1 0 D’ när B’C A när BC’ 0D’A0 0123 F 4:1 MUX 0 när BC S1 S0 B C Aktivitet (forts.) • Realisera F = B’CD’ + ABC’ med en 4:1 multiplexer och så få grindar som möjligt: Z = B’C’(0) + B’C(D’) + BC’(A) + BC(0)
01234567 A'B'C'A'B'CA'BC'A'BCAB'C'AB'CABC'ABC “1” 3:8 DEC S2 S1 S0 A B C 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 demultiplexer genererar alla mintermerna
A B C D A BD BC BC' B C A'B'C'D BCD AD' BCD' W X Y Z PALs och PLAs: design exempel (forts.) • Kode konverterare: programmerbar PLA Minimerade funktioner: W = A + BD + BC X = B C' Y = B + C Z = A'B'C'D + BCD + AD' + B'CD' 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
A BD BC 0 BC' 0 0 0 B C 0 0 A'B'C'D BCD AD' B'CD' A B C D PALs och PLAs: design exempel (forts.) • Kode konverterare: programmerbar PAL 4 produkttermer per OR grind 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
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)
logic foroutputs inputs outputs combinational logic fornext state reg state feedback logic foroutputs inputs inputs outputs combinational logic for next state combinational logic fornext state logic foroutputs reg reg outputs state feedback state feedback Jämförelse mellan Mealy och Moore tillståndsmaskiner (forts.) • Moore • Mealy • Synkron Mealy
0/0 zero zero[0] 1/0 0/0 0 1 one1 0 one1[0] 1/1 0 1 1 two1s [1] Exempel: reducera-1-sträng-med-1 Moore Mealy • Ta bort en etta från varje sträng av 1:or på ingången. CP In Moore Mealy
0/0 zero zero[0] 1/0 0/0 0 1 one1 0 one1[0] 1/1 0 1 1 two1s [1] Exempel: reducera-1-sträng-med-1 Moore Mealy • Ta bort en etta från varje sträng av 1:or på ingången. CP In Moore Mealy
0/0 zero zero[0] 1/0 0/0 0 1 one1 0 one1[0] 1/1 0 1 1 two1s [1] Exempel: reducera-1-sträng-med-1 Moore Mealy • Ta bort en etta från varje sträng av 1:or på ingången. CP In Moore Mealy
zero[0] 0 1 0 one1[0] 0 1 1 two1s [1] VHDL FSM - Reduce 1s example • Moore machine 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;
zero[0] 0 1 0 one1[0] 0 1 inputs combinational logic for next state two1s [1] 1 logic foroutputs reg outputs state feedback Moore VHDL FSM bättre 2-process lösning (forts) -- 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 if; end case; end process next_s; 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_stateend if; end process ASM_P;
0/0 zero 1/0 0/0 one1 1/1 logic foroutputs inputs outputs combinational logic fornext state reg state feedback 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) begin if Clk'event and Clk='1' then if Reset = '1' then state<=zero; else state<=next_state; end if; end if; end process p1; 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'; else next_state<=zero; O<='0'; end if; when others=> next_state<=zero; end case; end process p2; end BEHAVIORAL;
0/0 zero 1/0 0/0 one1 1/1 architecture BEHAVIORAL of Reduce1SynkMealy is type state_type is (zero,one1); --Tillståndsdeklaration signal state:state_type; begin p1:process(Clk,Reset) begin 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'; else state<=zero; O<='0'; end if; 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) begin 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'; else state<=zero; O<='0'; end if; when others=> state<=zero; -- Saknar betydelse end case; end if; end if; end process; end BEHAVIORAL; Synkron Mealy maskin
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 bb S1 ag S2 ag 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 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 b a g b a g b a d Metod för successiv partitionering ( 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 ) S1 är ekvivalent med S2 S3 är ekvivalent med S5 S4 är ekvivalent med S6
S2 S3 S4 S5 S6 S7 S8 S9 S1 S2 S3 S4 S5 S8 S6 S7 Exempel för att belysa realtionsgraf 4,6;2,4 (7,8)
S2 S3 1,3 S4 2,6;2,4 3,5 2,6 2,4 S5 3,8;2,9 2,6 S6 2,6 5,8 2,4 3,8 S7 2,4 5,7 4,6 3,7 1,8;4,9 4,6 2,4 5,7 4,6;2,4 7,9 S8 3,7;2,9 2,7 2,6 5,8 1,7;4,9 4,7 7,8 6,7 S9 S1 S2 S3 S4 S5 S8 S6 S7 Exempel för att belysa realtionsgraf JA! S1 S9 S2 S8 S3 S7 S4 S6 S5
‘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
LUT LUT LUT LUT LUT Dynamisk hasard • Förutsättning minst tre grindnivåer • Kan uppstå i nät som efter insättning av värden på övriga variablerkan 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 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)