Programmering efter tillståndsdiagram

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Elektroniska filter William Sandqvist En verklig signal … Verkliga signaler är svårtolkade. De är ofta störda av brus och brum. Brum.
En genomgång av spelet: Dubbelkrig-Grön
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, fortsättningskurs 2012 Föreläsning 16 Inför tentan
BEANS NÖJD KUND INDEX (e-survey undersökning)
William Sandqvist Booles Algebra Genom att representera logiska uttryck på matematisk form, där sammanfognings-orden OR och AND motsvarade.
William Sandqvist Booles Algebra Genom att representera logiska uttryck på matematisk form, där sammanfognings-orden OR och AND motsvarade.
William Sandqvist Internet består till största delen av kabelanslutna datakommunikationsutrustningar Att bygga ett stabilt globalt täckande.
Boo FF vill tacka er för året som gått och önska alla en God Jul och ett Gott Nytt År! Vinterträningen är igång, planerna var vita i måndags men är nu.
EDA Digital och Datorteknik
Mindfulness – en hjälp på vägen
ERGONOMI Vad är det?.
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
En dator av rep, block och taljor
EDA Digital och Datorteknik
SR-vippa.
PICKit2 programmer-to-go
William Sandqvist Metalldetektorn Alla ”förluster” (även virvel-strömsförluster i metaller) sammanfattas av symbolen r ! Järnföremål påverkar.
Språket för inbyggda system 3
Eller formativt lärande…
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
Positiv Livskraft © Att komma dit du vill
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Max start-guide Liten och väldigt snabbt ihopkastad.
Exder EPC. Exder EPC Välkommen! I det här bildspelet går vi igenom hur man lägger upp nya artiklar samt skickar artikelinformation. Du bläddrar framåt.
Grundläggande programmering
Multiplexern som kombinatorisk krets
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
Styrteknik 7.5 hp distans: SFC Introduktion SFC_A:1
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
William Sandqvist Lab 1 Några slides att repetera inför Lab 1 William Sandqvist
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
Styrteknik 7.5 hp distans: SFC Introduction PLC5A:1 Bilder SFC = Sequential Function Chart Language SFC är ett grafiskt programspråk som används.
En guide för arbeten i SO
Utvecklingsprocessen Webbutveckling. Utvecklingsprocessen Bli inte rädd för alla begrepp och alla verktyg man verkar behöva kunna. Du måste inte använda.
Egenskaper för punktskattning
William Sandqvist Räknare En räknare är en speciell typ av sekvensnät som registrerar antalet inkommande klockpulser. Registreringen sker.
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?
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
Exponentialfunktionen
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 ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
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.
William Sandqvist IS1500 Datorteknik William Sandqvist
William Sandqvist Lab 3 Några slides att repetera inför Lab 3 William Sandqvist
William Sandqvist Lab 2 Några slides att repetera inför Lab 2 William Sandqvist
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
DEMOKRATI Skriv ner dina tankar kring begreppet Demokrati. Vad betyder det för dig? Vad tänker du när du hör ordet? Går det att föreställa sig hur det.
Negativa tal – några exempel
Föreläsning 1 Introduktion till kursen. Algoritmer
William Sandqvist Tillståndsmaskiner  Moore-automat  Mealy-automat William Sandqvist
Kronljusströmställaren 0, 1, 2, 3
Shannon dekomposition
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
Programmera dina klasskamrater
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Sekvenskretsar
Digitalteknik 3p - Kombinatorisk logik
Kombinatoriska byggblock
Kombinatoriska byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatorisk logik
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

Programmering efter tillståndsdiagram En mycket vanlig teknik vid program-mering av inbyggnadsprocessorer är att använda ”tillstånd” och ”tillstånds-diagram”. Idén är lånad från Digitalteknikens ”automater”. Låt oss därför se kort på några av digitalteknikens sekvenskretsar och automater. UML-tillståndsdiagram William Sandqvist william@kth.se

William Sandqvist william@kth.se Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen och i processorns register. SR-låskretsen är i princip datorns minnescell Q=1 Q=0 William Sandqvist william@kth.se

William Sandqvist william@kth.se Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen och i processorns register. D-vippan används för att synkronisera signal-flödet mellan datorns olika delar. William Sandqvist william@kth.se

William Sandqvist william@kth.se Klockad vippa Inom digitaltekniken brukar man skilja på enkla låskretsar ( latch ) och klockade vippor ( flip-flop ). De enkla låskretsarnas begränsning ligger i att man inte kan mata in ett nytt värde till ingången samtidigt som man läser av utgångsvärdet. De elektroniska kretsarnas snabbhet har gjort det nödvändigt att utveckla mer sofistikerade kretsar. Flanktriggad D-vippa. D-ingången är dataingång, C-ingången är klockpulsingång, därav beteckningen CP. Styringången C har ett flanktriggningstecken, en triangel. När C-ingången nås av en positiv flank, det vill säga under den korta tid då C går från "0" till "1”, kopieras D-ingångens värde till utgången Q. Utgångsvärdet är sedan låst tills det inkommer en ny flank på klockpulsingången. William Sandqvist william@kth.se

Ex. Varannan gång med D-vippan William Sandqvist william@kth.se

Varannan gång med Impulsrelä On-Off-On-Off … Impulsrelä Pris: 300:- 7474 (2st D-vippor) Pris: 10:- D-vippan blir billigare … William Sandqvist william@kth.se

William Sandqvist william@kth.se Ex. Digital volymratt Gray-kod … 00 01 11 10 … Med en D-vippa kan man märka om Du vrider upp eller ner volymen? William Sandqvist william@kth.se

Vad kännetecknar ett sekvensnät? Ett sekvensnät kännetecknas av att nätets utsignaler inte bara beror av det just rådande tillståndet hos insignalerna utan även av tidigare tillstånd. Skillnaden mellan ett sekvensnät och ett kombinatoriskt nät är att utgångarna "återkopplas" till nätets ingångssida. Då uppkommer självhållningseffekter i nätet. Detta är förklaringen till att en och samma insignal kan ge upphov till skilda utsignaler vid olika tillfällen. Sekvensnät styr i hissar, trafikljus och i datorernas CPU. William Sandqvist william@kth.se

William Sandqvist william@kth.se Moore-automat En vanlig typ av sekvensnät är Moore-automaten. Nätets ”minnesfunktion” sitter i ett Tillståndsregister uppbyggt av D-vippor. Ett logiknät – Nästa tillståndsavkodaren – förutsäger det kommande tillståndet utifrån det nuvarande tillståndet och insignalerna. När klockpulsen CP kommer hamnar man i det nya tillståndet. William Sandqvist william@kth.se

Tillståndsregistrets D-vippor Tillståndsregistrets D-vippor bromsar upp kapplöpningen mellan signalerna tills värdet är stabilt. (Jämför med tullstationen). ? ! William Sandqvist william@kth.se

William Sandqvist william@kth.se Kaffeautomaten William Sandqvist william@kth.se

Exempel: En kaffeautomat Nästa tillståndsavkodaren ska förutsäga nästa tillstånd – ungefär som oraklet i Delfi förutsäger framtiden! Uppgiften är inte omöjlig, det finns en systematisk metod som steg för steg leder till målet. !coin betyder inverterat vilkor Första steget är att rita ett Tillstånds-diagram. Cirklarna Z0 Z1 och Z2 är tillstånden. Pilarna är möjliga övergångar mellan tillstånden och texten vid pilarna är vilkoret för övergången. Bredvid cirklarna står vad som ska hända i tillstånden. 1 betyder alltid William Sandqvist william@kth.se

Tillståndsdiagrammet, insignaler Kaffeautomaten har två insignaler. coin från myntinkastet som anger att en pollett passerat en fotocell där. full från en givare som ”övervakar" plastmuggen under fyllningen. coin = 1 när myntet passerar. full = 1 när muggen blir full. William Sandqvist william@kth.se

Tillståndsdiagrammet, utsignaler Kaffeautomaten har två utsignaler. drop_cup till en matarenhet för plastmuggar. coffee till en magnetventil för påfyllning av kaffet. Mataren matar fram en mugg var gång drop_cup blir "1", och kaffe fylls på så länge som coffee = 1. William Sandqvist william@kth.se

Tillståndsdiagrammet, övergångar I första tillståndet, Z0, gäller för ut-signalerna att man inte släpper någon kopp (!drop_cup), och inte häller i någon dryck (!coffee) förrän man fått betalning (coin). I andra tillståndet, Z1, släpps plast-muggen (drop_cup). "1" betyder här "alltid uppfyllt” så nästa klockpuls (om 1 sek) lämnar man således Z1 för Z2. Lämplig klockfrekvens 1 Hz I det tredje tillståndet, Z2, återställs mataren för plastmuggar (!drop_cup) och koppen börjar fyllas med dryck (coffee). Detta pågår tills muggen är full (full). Vi hamnar då åter i utgångsläget. William Sandqvist william@kth.se

Kaffeautomaten som Moore-automat Tillståndsdiagrammet har tre tillstånd. Tillståndsregistret måste innehålla minst tre olika kombination-er. Det behövs två D-vippor ( 22 = 4 >3). Beteckningar. D-vippornas utgångar betecknas med ql q0, ingångarna, som bär nästa tillstånds signalen, brukar betecknas ql+ q0+ där plustecknet står för det "kommande" tillståndet. Sekvensnätets utgångar och ingångar betecknas ul u0, il i0. Om vippornas utgångar styr utsignalerna direkt slipper man utgångsavkodaren! William Sandqvist william@kth.se

Kodad tillståndstabell (ql+ q0+) = f ( ql q0 , il i0 ) Kodad tillståndstabell Observera att tabellen är uppställd som ett Karnaughdiagram. Detta kommer att under-lätta framtagandet av grindnäten senare! Z1: full och !coin. En gammal full mugg finns kvar. Släpp inte ner den nya muggen i den gamla! Stanna kvar i Z1 (01). Z1: !full och coin. Gå till Z2 (10). Z1: Enligt det tidigare presenterade tillståndsdiagrammet ska man från Z1 gå direkt till Z2. Är detta så välbetänkt? !full och !coin. Gå till Z2 (10). Z1: full och coin. En gammal full mugg finns kvar. Släpp inte ner den nya muggen i den gamla! Stanna kvar i Z1 (01). Z2: I de två sista kolumnerna har koppen blivit full och vi ska gå till Z0 (00). I de två första kolumnerna stannar man kvar i Z2 (10) och fortsätter att fylla på dryck.   ??: I tillståndsdiagrammet har vi glömt bort ett fjärde tillstånd! Det ska normalt inte kunna inträffa, men sekvensnätet kan naturligtvis utsättas för en störning. Tillståndet innebär att automaten kontinuerligt "fyller" kaffe, varför det måste förhindras. Att gå till Z0 (00) oavsett insignal är mest lönsamt ( för automatägaren ). Z0: full och coin. Tredje kolumnen innebär att betalningen har kommit, men att en gammal full kopp tydligen finns kvar. Om det är osäkert om någon avlägsnar den bör nästa tillstånd bli att stanna kvar i Z0 (00). Så här bygger man upp den kodade tillståndstabellen steg för steg … Z0: !full och !coin. Vi väntar på betalning och det finns inte någon full kopp i automaten. Nästa tillstånd blir att stanna kvar, ql+q0+ = 00. Z0: !full och coin. Den andra kolumnen innebär att betalningen har kommit, nästa tillstånd blir således Z1, ql+q0+ = 01. Z0: full och !coin. Full kopp (gamla) och inget mynt; stanna kvar i Z0 (00). William Sandqvist william@kth.se

Ett mer genomtänkt tillståndsdiagram Detta enkla exempel visar den stora fördelen med en systematisk syntes-metod; man tvingas överväga alla möjligheter för att därmed se till att sekvensnätet gör det bästa av varje situation, även sådana som "egentligen" inte ska kunna hända (men som vi alla vet ändå kommer att hända …). Vi kan nu "rätta till" det ursprungliga tillståndsdiagrammet. William Sandqvist william@kth.se

Från tabell till grindnät Tabellen kan splittras upp i två Karnaughdiagram, ett för ql+ = f ( ql q0 , il i0 ) och ett för q0+ = f ( ql q0 , il i0 ). Hoptagningar i Karnaughdiagrammen ger: William Sandqvist william@kth.se

Färdig kaffeautomat med logik-kretsar William Sandqvist william@kth.se

Med programmerbar logik Programerbar logik. PAL16R4 innehåller fyra D-vippor som har grindnät med programmer-bara AND-grindar. En sådan krets räcker gott och väl till kaffeautomaten … Logikgrindarna programmeras till önskad funktion. William Sandqvist william@kth.se

Programmering av AND-matrisen Logikgrindarna programmeras till önskad funktion. Detta gör man sällan för hand numera … William Sandqvist william@kth.se

Programmeringsspråket VHDL library IEEE; use IEEE.std_logic_1164.all; entity coffee_machine is port ( COIN, FULL : in std_logic ; DROP_CUP, COFFEE : out std_logic ) ; end coffee_machine ; architecture behavior of coffee_machine is type state is ( Z0, Z1, Z2, Z3 ) ; signal present_state, next_state : state ; state_register: process ( CLK ) begin if rising_edge( CLK ) then present_state <= next_state ; end if ; end process ; output_decode: process ( present_state ) begin case present_state is when Z0 => DROP_CUP <= '0' ; COFFEE <= '0' ; when Z1 => DROP_CUP <= '0' ; COFFEE <= '1' ; when Z2 => DROP_CUP <= '1' ; COFFEE <= '0' ; when Z3 => DROP_CUP <= '1' ; COFFEE <= '1' ; end case ; end process ; Entity next_state_decode: process ( present_state, COIN, FULL ) begin case present_state is when Z0 => if (NOT COIN OR NOT FULL) = '1' then next_state <= Z0 ; elsif (COIN AND NOT FULL) = '1' then next_state <= Z1 ; end if ; when Z1 => if FULL = '1' then next_state <= Z1 ; else next_state <= Z2 ; end if ; when Z2 => if FULL = '0' then next_state <= Z2 ; else next_state <= Z0 ; end if ; when Z3 => next_state <= Z3 ; end case ; end process ; end architecture behavior ; Next State Decoder State register Kaffeautomaten direkt från tillståndsdiagram-mets beskrivning. Output decoder William Sandqvist william@kth.se

PIC-processorn. Antingen programkod från tillståndsdiagrammet … vanligen ”switch() case:” satser William Sandqvist william@kth.se

PIC-processorn. Programkod från tillståndsdiagrammet Vanligen använder man ”switch() case:” satser. switch(State) { case Z0: if( coin||full ) State = Z0; if( coin&&!full ) State = Z1; break; case Z1: if( full ) State = Z1; if( !full ) State = Z2; break; case Z2: if( full ) State = Z0; if( !full ) State = Z2; break; case Z3: State = Z0; } William Sandqvist william@kth.se

PIC-processorn. Eller programkod från Moore-automaten char NextState(char state, bit full,bit coin) { char index, x; x=full; /* index = state*4 + full*2 + coin */ index = state*4; index += x*2; index += coin; skip(index); return 0b00; return 0b01; . . . return 0b00; } William Sandqvist william@kth.se

William Sandqvist william@kth.se coffee.c void main(void) { . . . while(1) { full = PORTB.0; /* read sensor ”full” */ coin = PORTB.1; /* read sensor ”coin” */ State = NextState(State, full, coin); PORTB.2 = State.0; /* activate ”drop cup” */ PORTB.3 = State.1; /* activate ”coffee” */ delay10(100); /* 1 sec tick */ } } Det blir i så fall ett mycket kompakt program … William Sandqvist william@kth.se

Laboration med Moore-automater Kör en motor fram/back varannan gång. Tre olika realiseringar.  Bygg automaten med logikkretsar  Programmerbar logik och VHDL  PIC-processor och tillståndsdiagram William Sandqvist william@kth.se

Laboration. - wait - cw - wait - ccw - 1 … Fortsätt själv vid labben … William Sandqvist william@kth.se

William Sandqvist william@kth.se - wait - cw - wait - ccw - Ett facitblad finns för den som glömt digitaltekniken William Sandqvist william@kth.se

William Sandqvist william@kth.se Laboration, grindar Med de direktverkande SR-ingångarna kan man styra sekvensnätet som om det vore ett vanligt kombinatoriskt nät! Bra för att kontrollera om man kopplat rätt! William Sandqvist william@kth.se

William Sandqvist william@kth.se PLD (tex. PAL) Typiskt 8 st logikelement Teknik: AND-OR array William Sandqvist william@kth.se

William Sandqvist william@kth.se CPLD (tex. MAX) Typiskt 64 Macroceller Teknik: AND-OR array (Större MAX har MUX-tree) William Sandqvist william@kth.se

William Sandqvist william@kth.se FPGA (tex. Cyclone II) Typiskt 50000 logikelement Teknik: MUX array William Sandqvist william@kth.se

LAB VHDL-programmering Med ett breakoutboard kan man använda kopplingsdäck till komponenter som egentligen är avsedda för ytmontering på kretskort. Man kan enkelt prova olika kopplingar. På så sätt använder vi samma teknik som i övriga laborationer – trots att vi nu går över till mer komplexa så kallade CPLD-kretsar och programmerar dem med VHDL-språket. William Sandqvist william@kth.se

William Sandqvist william@kth.se MAX-krets Macrocell William Sandqvist william@kth.se

Prova programmerbar logik och VHDL William Sandqvist william@kth.se

William Sandqvist william@kth.se VHDL-koden next_state_decode: -- next state decoding part process(present_state, I, R) begin if I = '1' then case present_state is when 0 => next_state <= 1; when 1 => next_state <= 1; when 3 => next_state <= 2; when 2 => next_state <= 2; end case; else -- I = '0’ case present_state is when 0 => next_state <= 0; when 1 => next_state <= 3; when 3 => next_state <= Ooops; when 2 => next_state <= Ooops; end case; end if ; end process; ? William Sandqvist william@kth.se

Laboration. Prova programmerbar logik och VHDL QuartusII William Sandqvist william@kth.se

Laboration. Prova PIC-processorprogram switch(State) { case Z0: if( button == OFF ) State = Z0; if( button == ON ) State = Z1; break; case Z1: if( button == OFF ) State = Ooops!; if( button == ON ) State = Ooops!; break; case Z2: if( button == OFF ) State = Z2; if( button == ON ) State = Z3; break; case Z3: if( button == OFF ) State = Z0; if( button == ON ) State = Z3; } toggle628.c William Sandqvist william@kth.se

Lycka till med laborationerna! William Sandqvist william@kth.se