Språket för inbyggda system 3

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

Statistikmodulen Omicron Syntax Data AB Framåt.
Att utveckla barns förståelse med hjälp av återberättande
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Problemsnack eller bygga lösningar.
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.
Styrteknik 7.5 hp distans: SFC med GX IEC PLC5B:1
Digitalteknik, fortsättningskurs 2012 Föreläsning 16 Inför tentan
Utbildning i hantering av Behovstrapporna
Ellära Fysik 1 / A Översiktlig beskrivning av en del av innehållet i Ellära – Fysik A För djupare studier hänvisar jag till kurslitteratur som finns.
William Sandqvist Booles Algebra Genom att representera logiska uttryck på matematisk form, där sammanfognings-orden OR och AND motsvarade.
Att bygga en fungerande webbplats
Hur bör samhället organiseras
Formellt, skarpt och snyggt
William Sandqvist Booles Algebra Genom att representera logiska uttryck på matematisk form, där sammanfognings-orden OR och AND motsvarade.
Funktioner och programorganisation
Föreläsning 2 21 jan 2008.
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
EDA Digital och Datorteknik
Grundläggande programmering
Eller formativt lärande…
Föreläsning 2 Datalogi för E1 2D1343
Modellering med UML
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
Programmering B PHP Lektion 2
If you want to build a ship, don´t herd people together to collect wood and don´t assign them tasks and work, but rather teach them to long for the endless.
Programmering B PHP Lektion 3
Lektion 4: Hur förändras språket och varför?
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Max start-guide Liten och väldigt snabbt ihopkastad.
Styrteknik: Programmering med MELSEC IL PLC2A:1
William Sandqvist C:s minnesmodell.
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.
Hur man beställer produkter och blir lojal kund..
Multiplexern som kombinatorisk krets
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
Programmering efter tillståndsdiagram
Styrteknik 7.5 hp distans: SFC Introduktion SFC_A:1
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
En mycket vanlig frågeställning gäller om två storheter har ett samband eller inte, många gånger är det helt klart: y x För en mätserie som denna är det.
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.
ELEKTRONIKINGENJÖR ARBETSMETODER & VERKTYG. ?PROBLEM? Litet större Som störtas bort Händernågot annat ska då hända I omgivningensignalera.
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.
Styrteknik 7.5 hp distans: SFC med GX IEC SFC_B:1
Vad kännetecknar ett sekvensnät?
Mentala modeller Vad syftar vi på mer specifikt? 6 idéer kring mentala modeller Fruktbara ansatser för framtiden Att läsa: Kapitel 6 i kursboken.
Din rapport ? Beskriv din applikation.
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 */
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
Formella metoder i MDI Behovet Vad menas med formell? Verktyg Exempel Att läsa: Kapitel 14 i kursboken.
William Sandqvist Tillståndsmaskiner  Moore-automat  Mealy-automat William Sandqvist
Kronljusströmställaren 0, 1, 2, 3
Shannon dekomposition
Växjö 14 april -04Språk & logik: Finita automater1 DAB760: Språk och logik 14/4:Finita automater Leif Grönqvist Växjö Universitet.
Vad är en KATA? katatogrow.com.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
Utbildning i hantering av Behovstrapporna
Programmera dina klasskamrater
Digitalteknik 3p - Sekvenskretsar
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

Språket för inbyggda system 3

Rapport om program för ett inbyggt system Man dokumenterar:  Systemets uppbyggnad  Programmets omfattning  Programmets uppbyggnad  Hur programmet/funktionen testats Tekniska rapporter innehåller ”figurer” och text i samverkan. Figurerna är ofta olika typer av diagram. William Sandqvist william@kth.se

William Sandqvist william@kth.se En sida med Diagram för – grundskoleelever. Graphic Organizers Det kan vara enklare att förklara något med hjälp av ett diagram än utan. http://www.enchantedlearning.com/graphicorganizers/ William Sandqvist william@kth.se

Sammanställningsbild En inbyggnadsprocessor används inbyggd i en produkt. Det går nog knappast att beskriva processorns dator-program utan att man först åtminstone översiktligt förklarat produkten! En sammanställningsbild definierar vad de olika delarna kallas för – man använder sedan exakt de namnen konsekvent genom hela rapporten när man behöver hänvisa till produkten. William Sandqvist william@kth.se

William Sandqvist william@kth.se Blockdiagram Ett blockdiagram är ett diagram över ett system där de principiella delarna, eller funktionerna, representeras av block sammanbundna med pilar som visar blockens relationer. Det krävs inga avancerade hjälpmedel för att rita ett blockdiagram. Blockdiagrammet gäller produktens delar. Andra diagramtyper används för att beskriva programmets struktur. William Sandqvist william@kth.se

Illustrerat blockdiagram Vänder man sig till läsare utanför gruppen av tekniker händer det ofta att blocken är färglagda och illustrerade … William Sandqvist william@kth.se

Bra diagramegenskaper Ett bra diagram ska vara litet, enkelt, klart, innehålla få abstrakta symboler, och följa formella regler. Ett bra diagram är till god hjälp när man ska förklara systemet för andra. William Sandqvist william@kth.se

Exempel på ett diagram som bryter mot alla reglerna! Bra diagram-egenskaper William Sandqvist william@kth.se

Diagrammet blir bara till hjälp om Du anstränger dig … William Sandqvist william@kth.se

Diagramtyper för programkod Det finns många diagramtyper för att täcka olika aspekter av ett datorprogram. William Sandqvist william@kth.se

Diagramtyper för programkod Tre vanliga diagramtyper:  Flödesdiagram – hur processorn exekverar  Strukturdiagram – programmets struktur  Tillståndsdiagram – för tillståndsmaskiner Pilarna visar hur flera diagramtyper samverkar och behövs för att ge en helhetsbild.

William Sandqvist william@kth.se UML är för omfattande för denna kurs … UML Unified Modeling Language (UML) är ett objektorienterat generellt språk för modellering av alla typer av system. UML – innehåller en mängd olika diagramtyper. Språket används främst inom programvarukonstruktion men är även användbart inom andra områden som exempelvis modellering av affärsprocesser med mera. Genom att skapa en modell av systemet som skall konstrueras blir det enklare att förstå och bygga det. William Sandqvist william@kth.se

William Sandqvist william@kth.se Vi använder … Strukturdiagram – programmets struktur Tillståndsdiagram – för tillståndsmaskiner Flödesdiagram – hur processorn exekverar William Sandqvist william@kth.se

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 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! William Sandqvist william@kth.se

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

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

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

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 Ex. 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 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

Minimerade funktioner 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

Kaffeautomat med standard-kretsar? 7404, 7411, 7421, 7432 William Sandqvist william@kth.se

Programmerbar logik 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

Processor, C-kod från tillståndsdiagram vanligen ”switch() case:” satser William Sandqvist william@kth.se

Processor, C-kod från tillståndsdiagram 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; } #define Z0 0 #define Z1 1 #define Z2 2 #define Z3 3 William Sandqvist william@kth.se

Eller från tillståndstabell index = state*4 + full*2 + coin; int NextState[16]={0,1,0,0,2,2,1,1,2,2,0,0,0,0,0,0}; William Sandqvist william@kth.se

C-kod från tillståndstabell void main(void) { int NextState[16]={0,1,0,0,2,2,1,1,2,2,0,0,0,0,0,0}; . . . /* initiation */ while(1) { full = GetFull(); /* sensor input */ coin = GetCoin(); /* sensor input */ index = state*4 + full*2 + coin; state = NextState[index]; DropCup( state ); /* actuator output */ FillCoffee( state ); /* actuator output */ delay(1000); /* 1 sec -> 1 Hz clock */ } } Programmet blir mycket enkelt! William Sandqvist william@kth.se

William Sandqvist william@kth.se Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */ William Sandqvist william@kth.se

William Sandqvist william@kth.se Först en lysdiod … while(1) { /* Blink1: 1s ON - 1s OFF */ switch(State1) { case 0: Blink1 = ON; Time1++; if( Time1 == 10 ) { State1 = 1; Time1 = 0; } break; case 1: Blink1 = OFF; Time1++; if( Time1 == 10 ) { State1 = 0; Time1 = 0; } } delay(100); /* 0,1 sek delay */ } William Sandqvist william@kth.se

Sedan en annan lysdiod … while(1) { /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */ switch(State2) { case 0: Blink2 = ON; Time2++; if( Time2 == 2 ) { State2 = 1; Time2 = 0; } break; case 1: Blink2 = OFF; Time2++; if( Time2 == 2 ) { State2 = 2; Time2 = 0; } break; case 2: Blink2 = ON; Time2++; if( Time2 == 10 ) { State2 = 3; Time2 = 0; } break; case 3: Blink2 = OFF; Time2++; if( Time2 == 10 ) { State2 = 0; Time2 = 0; } } delay(100); /* 0,1 sek delay */ } William Sandqvist william@kth.se

William Sandqvist william@kth.se Varför inte båda? while(1) { /* Blink1: 1s ON - 1s OFF */ switch(State1) { case 0: ... ; break; case 1: ... ; } /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */ switch(State2) { case 0: ... ; break; case 1: ... ; break; case 2: ... ; break; case 3: ... ; } delay(100); /* 0,1 sek delay */ } William Sandqvist william@kth.se

William Sandqvist william@kth.se En makalös manick? Lysdiod1, Lysdiod2, Kaffeautomat, Motor … Fyra Moore-automater på en och samma gång! Exemplet är från PIC-kursen IL131V Programmet är bara på 300 kodrader. ( Frågan är vad man ska ha det till ? ) Årets Julklapp? William Sandqvist william@kth.se

William Sandqvist william@kth.se State machines State machines/Tillståndsmaskiner/Moore-automater är således mycket användbara hjälpmedel för att programmera ”parallella” processer för små microcontrollers. Tips! Observera att de flesta kompilatorer lägger ut effektivare kod för switch() – case än för if() – else if() – else så använd alltid switch-satsen! Många komersiella programvaror bygger på State machines … William Sandqvist william@kth.se

Grafiska programspråk, LabView do { Blink != Blink; delay(1000); /* 1 sek delay */ } while(!Stop ); Bakom varje grafiskt element döljer sig en statemaskin … William Sandqvist william@kth.se

William Sandqvist william@kth.se Realiser Realizer, ett grafiskt programmeringsverktyg för små processorer, tex. PIC. En statemachine ritad med Realizer. PIC-kod genereras sedan direkt. William Sandqvist william@kth.se

William Sandqvist william@kth.se Dokumentation State Machine State=NextState(State,In) Action(State) Det brukar bli tydligare om man kompletterar strukturdiagrammet med ett tillsåndsdiagram, än om man försöker beskriva tillståndsövergångarna direkt i strukturdiagrammet. William Sandqvist william@kth.se

William Sandqvist william@kth.se Flödesdiagram Flödesdiagram använder man när det är viktigt att visa precis hur processorn exekverar koden. Till exempel när man analyserar assemblerkoden för att kunna se till att olika vägar genom programmet tar samma tid. Verktyg för att rita flödesschemor finns i Word och Powerpoint. Normalt använder man strukturdiagram för beskriva programstrukturer. William Sandqvist william@kth.se

William Sandqvist william@kth.se Strukturdiagram Se ID120V: jsp.ppt JSP-editor som Java applet! William Sandqvist william@kth.se

William Sandqvist william@kth.se Interrupt? Interruptrutinen kan få ett fristående strukturdiagram. William Sandqvist william@kth.se

William Sandqvist william@kth.se Programkod Programkod skrivs med ett typsnitt som har fast bredd (”skrivmaskinstil”). Vanliga typsnitt har annars variabel bredd: ”i” är ju smalare än ”W”. Courier New, är ett sådant ”fast” typsnitt. Har Du använt 80 tecken per rad i texteditorn ska Size väljas till 8 punkter för att raderna ska få plats på A4. Om raderna bryts blir koden svårläst. Tab-tecken kan behöva bytas ut mot mellanslag. William Sandqvist william@kth.se

William Sandqvist william@kth.se ASCII-grafik Viktig information kan bakas in i programkoden som ASCII-grafik. Den finns då tillgänglig för alla oavsett system. William Sandqvist william@kth.se

How to succeed in electronic prototyping? William Sandqvist william@kth.se

Suppose you should knit a Norvegian ”Lusekofte” ? How to avoid the mess? William Sandqvist william@kth.se

You will need a knitting pattern chart! Organise your work step by step … And then proceed in a exact and careful way … It could be done! William Sandqvist william@kth.se

Suppose you need to build and test an electronic circuit? How to avoid the mess? (no guru at hand) The Analog ”Guru” – Jim Williams at lab … William Sandqvist william@kth.se

Here are some useful, and simple tools? PAD Pencil Aided Design ASCII-grafics With ASCII-grafics inside your code, you will have hardware information in reach all the time while you are coding ... William Sandqvist william@kth.se

The ultimate tool is the electronic CAD program! Schematic view Board view William Sandqvist william@kth.se 61

Schematic and Board views Every electronic component has a schematic representation, and a representation of it’s board ”footprint”. These two views are connected to each other. If you highligt a signal in the schematic, the corresponding pin in the board view vill be highlighted to. William Sandqvist william@kth.se

William Sandqvist william@kth.se Board view The CAD is the main tool to help you check and organise the wirering of your circuit! You don’t have to fabricate a real circuit board in order to benefit from the information about pin-numbers, component footprints, and component alignment, that you can find from the board view! Your CAD program is the place to collect all information about your circuit and your components! There will often be missunderstandings about orientation: up, down, left, right, pin-numbers - but everything can be described in your CAD in an exact manner! William Sandqvist william@kth.se

William Sandqvist william@kth.se Functional prototype Prototyping means building an actual circuit of your design, to verify that it works, and to provide a physical platform for debugging it, if it does not. The prototype should always be built and tested in steps, there is no debugging harder than fixing a symptom that has more than one cause. It's always easier to find the faults one at a time! William Sandqvist william@kth.se

Try out the function on a breadboard A breadboard is used to make up temporary circuits for testing or to try out an idea. No soldering is required so it is easy to change connections and replace components Practice with the: Virtual Breadboard programware! William Sandqvist william@kth.se

Components not spaced with the 0.1” ”standard” ? Electronics of today consists of complicated printed circuit boards with surface mounted components and lots of other components not spaced with the 0.1” standard. Then, how could a non-expert do anything at all? William Sandqvist william@kth.se

William Sandqvist william@kth.se Breakoutboards! For prototyping there exists ”breakoutboards” to faciliate the connection of all kind of special components to the 0.1” pin space ”standard”. William Sandqvist william@kth.se

Then you can move the function to a stripboard Mount and solder components on the stripboard. It’s prefabricated with the 0.1” (2,54 mm) pin space ”standard”. Connections are made with jumper wirers. Use a track- cutter to brake the lines wherever needed. http://www.zen22142.zen.co.uk/Prac/vero_circ/vero.htm http://www.printedcircuitsboards.com/software/88/veroboard-stripboard-software.html William Sandqvist william@kth.se

William Sandqvist william@kth.se The ”breadboard PCB” There are PCB:s with the exact layout of a breadboard! First try out the circuit on the breadboard, then when it’s a stable layout, solder the components in the same way to the PCB! William Sandqvist william@kth.se

William Sandqvist william@kth.se Mockup Mockups are non-functional PCBs used for physical sizing. A mockup will just have a few parts on it to test where connectors should be placed, or to show the outline of the hugest components. The components could be soldered on a bare laminate with no tracks. William Sandqvist william@kth.se

William Sandqvist william@kth.se Virtual Mockup There are programs that can convert from a CAD-file to a 3D image! This could be used to show the size, look, and component placements of your circuit, long before the real product exists. http://www.matwei.de/doku.php?id=en:eagle3d:eagle3d William Sandqvist william@kth.se

William Sandqvist william@kth.se PCB prototyping PCB prototypes are made by a small “in house” milling machine, a “circuit board plotter”. The PCB prototype could verify the function, and the PCB layout, before ordering a factory made PCB. Our LKPF facility William Sandqvist william@kth.se

William Sandqvist william@kth.se Factory made PCB Order over internet! Your CAD can produce all the files needed … If you by two cards the cost will be 1300:- ( = the same …) William Sandqvist william@kth.se