Grundläggande digitalteknik



Relevanta dokument
F5 Introduktion till digitalteknik

IE1204 Digital Design

T1-modulen Lektionerna Radioamatörkurs OH6AG OH6AG. Bearbetning och översättning: Thomas Anderssén, OH6NT Heikki Lahtivirta, OH2LH

F5 Introduktion till digitalteknik

Maurice Karnaugh. Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist

Digital Design IE1204

Digitala system EDI610 Elektro- och informationsteknik

Laboration Kombinatoriska kretsar

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar

DIGITALTEKNIK. Laboration D173. Grundläggande digital logik

Definition av kombinatorisk logik Olika sätt att representera kombinatorisk logik Minimering av logiska uttryck

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

IE1205 Digital Design: F4 : Karnaugh-diagrammet, två- och fler-nivå minimering

Tentamen i IE1204/5 Digital Design onsdagen den 5/

LABORATIONSINSTRUKTION

Laboration Kombinatoriska kretsar

Mintermer. SP-form med tre mintermer. William Sandqvist

Det finns en hemsida. Adressen är

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

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

A/D- och D/A- omvandlare

Sekvensnät i VHDL del 2

Digital elektronik CL0090

EDA451 - Digital och Datorteknik 2010/2011. EDA Digital och Datorteknik 2010/2011

Föreläsning 3.1: Datastrukturer, en översikt

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

Digital- och datorteknik

Tentamen i TTIT07 Diskreta Strukturer

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Grundläggande Datorteknik Digital- och datorteknik

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Laboration Sekvenskretsar

Exempeluppgift i Logikstyrning. 1 Inledning. 2 Insignaler och utsignaler

Exempel på tentamensfrågor Digitalteknik

Digital elektronik CL0090

MA 1202 Matematik B Mål som deltagarna skall ha uppnått efter avslutad kurs.

Grunderna i stegkodsprogrammering

VHDL och laborationer i digitalteknik

Laboration i digitalteknik Introduktion till digitalteknik

Programmerbar logik. Kapitel 4

Uppgift 12: Konstruera en elektronisk tärning. Resultatet av ett tärningskast ska visas på en 7- segmentindikator.

Tenta i Digitalteknik

DIGITALTEKNIK I. Laboration DE2. Sekvensnät och sekvenskretsar

DIGITALTEKNIK I. Laboration DE1. Kombinatoriska nät och kretsar

Digital Design IE1204

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Programmeringsteknik med C och Matlab

EDA Digital och Datorteknik 2009/2010

SMD033 Digitalteknik. Digitalteknik F1 bild 1

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Omtentamen IE Digital Design Måndag 14/

IE1204 Digital Design

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

Digital- och datorteknik

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

IE1205 Digital Design: F9: Synkrona tillståndsautomater

5:2 Digitalteknik Boolesk algebra. Inledning OCH-funktionen

EDA Digital och Datorteknik 2010/2011

Tentamen i Digital Design

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

DIGITALA TAL OCH BOOLESK ALGEBRA

Tentamen EDAA05 Datorer i system

Digital Design IE1204

Tentamen i Digitalteknik, EITF65

Logik. Boolesk algebra. Logik. Operationer. Boolesk algebra

TSIU05 Digitalteknik. LAB1 Kombinatorik LAB2 Sekvensnät LAB3 System

Repetition TSIU05 Digitalteknik Di/EL. Michael Josefsson

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Institutionen för systemteknik, ISY, LiTH. Tentamen i. Tid: kl

K3 Om andra ordningens predikatlogik

Digital- och datorteknik

IE1204/IE1205 Digital Design

Digital Design IE1204

Bokens innehåll 1. MEKATRONIK en del av vår vardag 2. Styrning med LOGISKA FUNKTIONER

Lilla lyckohjulet Lina

Introduktion till digitalteknik

En ideal op-förstärkare har oändlig inimedans, noll utimpedans och oändlig förstärkning.

7, Diskreta strukturer

D/A- och A/D-omvandlarmodul MOD687-31

Manual för deltagare kursen Bakgavellyft Så går du kursen Bakgavellyft

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Bedöma elevers förmågor i muntlig uppgift

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

Introduktion till logik

Översikt, kursinnehåll

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

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

Tenta i Digitalteknik

Laboration: Att inhägna ett rektangulärt område

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

Digital Design IE1204

Digitalteknik F9. Automater Minneselement. Digitalteknik F9 bild 1

Digital elektronik CL0090

Digitalt lärande och programmering i klassrummet

Tentamen i IE1204/5 Digital Design Torsdag 29/

Lära känna skrivbordet

Så här fungerar datorer Baserad på T-J Hallbergs minimalmaskin Högskolan i Jönköping/JTH Ragnar Nohre

MATEMATIKENS SPRÅK. Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt,

Följddiagram för händelsestyrda rörelser

Transkript:

Grundläggande digitalteknik Jan Carlsson Inledning I den verkliga världen vet vi att vi kan få vilka värden som helst när vi mäter på något. En varm sommardag visar termometern kanske 6, 7 C. Men när det gäller digitaltekniken så gäller inte detta. Här kan man bara arbeta med vissa distinkta värden som man vanligen benämner och. Dessa är digitalteknikens grundläggande byggstenar. Skulle vi bara ha dessa två tal att spela med skulle vi inte komma så långt. Vi kommer därför att se på hur man kan representera vanliga tal så att de passar för digitaltekniken i ett avsnitt om talrepresentation. Sedan ska vi börja titta lite närmare på den egentliga digitaltekniken och se vad vi kan använda den till. Digitaltekniken brukar indelas i kombinatoriska nät och sekvensnät. Dessa kan sedan realiseras på en mängd olika sätt. Detta kan vara till exempel med hjälp av pneumatik, hydraulik, PLC, vanligen menar man dock, när man talar om digitalteknik, elektroniska realiseringar och det är det enda som vi nu kommer att beröra 3. Det finns dock många sätt att göra digitaltekniska realiseringar med hjälp av elektronik. Kombinatoriska nät är nät som inte har något minne. Det som man lägger in som indata kommer direkt ut på andra sidan. Vad som kommer ut avgörs av något logiskt vilkor. Låt oss ta ett exempel: Det är vanligt att maskiner i verkstadsindustrin har en säkerhetsutrustning som gör att man måste använda båda händerna. Skälet är givetvis att operatören inte ska skadas. Detta kan vi uppfatta som att vi har ett logiskt vilkor som måste vara uppfyllt för att maskinen ska göra sitt jobb. Kallar vi vänstra handen för V, högra handen för H och maskinen för M får vi det logiska sambandet M = V och H. Detta är ett exempel på en logisk funktion. Sekvensnät är digitala nät som, i någon mening, minns sin förhistoria. Utsignalerna är med andra ord beroende av vad som har hänt tidigare. Låt oss ta ett exempel: Vi ska räkna,, 3, 4,,, 3, 4,,... och så vidare. Här kommer Generellt hänvisas till Alciatore[] kap 6 för denna del i kursen. I en sådan här kurs kommer vi, naturligtvis, bara kunna pressentera de mest grundläggande delarna. Den som är intresserad av att lära sig mera hänvisas till någon lämplig lärobok i ämnet, till exempel Hemert[]. 3 Den första fungerande datorn var mekanisk och bygdes av svensken Georg Scheutz, tillsammans med sin son Edvard Scheutz. Vanligen anförs Charles Babbage som den förste som konstruerade en dator, men hans konstruktion blev inte färdig under Babbages livstid.

tvåan alltid efter ettan, trean alltid efter tvåan och så vidare. I industriella sammanhang är det inte ovanligt att man har denna typ av styrsystem. Det är vanligt att man realiserar dessa med hjälp av PLC-styrning. Ett sekvensnät kan, emellertid, vara mycket komplext. Som exempel på detta kan man tänka på styrenheten i en dator. Ett program består av instruktioner, dessa skall hämtas, avkodas, utföras och sedan kan man behöva skriva tillbaka information till minnet. Kallar vi hämta för H, avkoda för A, utföra för U och tillbakaskrivningen för T får vi ett sekvensnät H, A, U, T, H, A, U, T, H,... Detta fortgår, i princip, tills dess att programmet är klart. Realiseringen av ett digitalt nät bör man, principiellt sett, skilja från det digitala nätets logiska konstruktion. Vi kommer här främst att se hur man kan använda sig av olika standardkretsar, men ni bör vara medveterna om att det blir vanligare och vanligare med andra lösningar, till exempel olika former av programmerbar logik. Det finns flera olika halvledarteknologier som används, vi kommer att, kortfattat, behandla TTL och CMOS, främst i samband med laborationen. Talrepresentation Det vanliga talsystemet går från 9, vi använder oss således av tio olika symboler. Detta talsystem kallas därför det decimala talsystemet. 4 Det binära talsystemet använder bara symbolerna och. Sambandet mellan de decimala talen och de binära framgår av nedanstående tabell. Det binära talsystemet är bra för datorer, men det passar inte särskilt bra för människor. Därför buntar man ofta samman fyra binära tal i ett paket om fyra bitar. Då får man det hexadecimala talsystemet. Ibland använder man även ett talsystem som går från till 7, detta kallas för det oktala talsystemet 5. 4 Decem är latin för talet tio. Det är inte självklart att vi har detta system. Babylonerna och Yuki-indianerna i Californien använde det oktala talsystemet. Mayaindianerna använde ett talsystem med basen. 5 För datorer behöver man även kunna representera flyttal, tillexemel 3.78456 3, För att veta hur detta görs hänvisar jag till någon bok om datorarkitektur, till exempel Stallings[3].

Decimalt Binärt Hexadecimalt 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A B C 3 D 4 E 5 F 3 Kombinatoriska nät 3. Grundläggande funktioner Vi har redan sett hur man kan realisera en logisk grundfunktion, nämligen ochfunktionen. Det finns emellertid flera sådana funktioner. Vi ska gå igenom de vanligaste med hjälp av sanningstabeller som kan användas för att definniera dessa funktioner. Det första som man ska göra klart för sig är att står för sann, det vill säga att ett vist vilkor är uppfyllt och att står för falsk, det vill säga att ett vist vilkor inte är uppfyllt. Om A och B står för insignalerna så får C vara deras utsignaler. Vi kan då få följande tabeller: A C Inverterare C = A A B C Och-funktion C = A B A B C Inklusivt Eller-funktion C = A + B 3

A B C Exklusivt Eller-funktion C = A B Här kan vi göra några anmärkningar, notera att vi har sambandet + =. Det är här inte fråga om aritmetik utan om logik! Antingen är något sant eller falskt, det finns inget jättesant. Sen kan vi se att Eller förekommer i två varianter. Detta beror på att det vardagliga språket är mångtydigt, medan de logiska uttrycken måste var entydiga. Antag att jag säger: I morgon regnar det eller går jag på bio. Denna sats kommer att vara uppfyld om det regnar eller om jag går på bio, men man kan ju faktiskt inte utesluta att jag går på bio trots att det regnar. Detta är ett exempel på Inklusivt Eller. Säger jag i stället: I morgon, klockan, kommer jag att vara i Kalmar eller Oskarshamn. Satsen kommer att vara uppfyld om jag är i Kalmar eller Oskarshamn vid den aktuella tidpunkten, däremot kan jag knappast vara på två ställen samtidigt. Detta är ett exempel på Exklusivt Eller. Det är vanligt att man kopplar en inverterare efter Och-kretsar samt Ellerkretsar. Dessa har fått egna namn. A B C NAND-funktion C = A B A B C NOR-funktion C = A + B A B C Inverterad Exklusivt Eller-funktion C = A B 3. Boolesk algebra I Alciatore[] pp 87-88 ges ett antal samband som gäller för Boolesk algebra 6. Till exempel kan man finna att A = A. Jag hänvisar till dessa sidor utan att 6 George Boole, 85-864. 4

återge dem här. Man kan emellertid notera att dessa samband gäller parvis. De Morgans 7 lagar kan till exempel skrivas som: { A + B + C +... = A B C... A B C... = A + B + C +... De Booleska räknereglerna kan användas till att förenkla logiska funktioner så att de inte blir onödigt komplicerade. Vi ska nu ta upp frågan om hur man går tillväga för att bestämma en Boolesk funktion. Det första man ska göra är, naturligtvis, att tänka efter vilket problem som man egentligen skall lösa, så att själva problemställningen är relevant. Därefter bör man försöka ställa upp en sanningstabell som beskriver den logiska funktionen. Man har därvid nytta av att kunna sätta upp funktionens mintermer. Vi kan se hur detta fungerar för det fall med tre variabler. Variabelnummer A B C Minterm A B C A B C A B C 3 A B C 4 A B C 5 A B C 6 A B C 7 A B C Vi kan nu ställa upp en sanningstabell för den funktion som vi önskar realisera. Därefter kan vi erhålla det Booleska uttrycket genom att bilda summan av de mintermer för vilken funktionen antar värdet ett. Exempel Variabelnummer A B C Minterm Funktion f A B C A B C A B C 3 A B C 4 A B C 5 A B C 6 A B C 7 A B C Vi kan direkt konstatera att det är ganska utrymmeskrävande att skriva funkrionen på detta sätt. Ofta använder man sig därför ofta av ett kortare skrivsätt genom helt enkelt skriva summan av de variabelnummer där funktionen antar värdet ett. Funktionen kan då skrivas som: 7 Augustus De Morgan, 86-87. f(a, B, C) = (,, 4, 6) 5

Nu kan vi bilda den Boolska funktionen som summan av mintermerna har värdet ett. Den blir då följande: f(a, B, C) = A B C + A B C + A B C + A B C Nu kan vi få användning för de Booleska räknereglerna för att förenkla det. f(a, B, C) = A B (C + C) + A C(B + B) Eftersom det gäller att C + C = och B + B = får vi: 3.3 Karnaugh-diagram f(a, B, C) = A B + A C Det kan ibland vara besvärligt att förenkla ett uttryck genom algebraiska räkningar. Det kan ofta vara praktiskt att, istället för att räkna, lösa minimeringsuppgiften grafiskt med hjälp av Karnaugh 8 -diagram. När man använder sig av Karnaugh-diagram utnyttjar man räkneregeln X+X = på ett systematiskt sätt genom att göra inringningar i ett diagram. På diagrammets axlar sätter man in de ingående variablerna ordnade på ett sådant sätt att mellan två näraliggande rader eller kollumner är ett. Sedan ringar man in ettorna i Karnaudiagrammet. Man får bara ringa in vertikalt eller horisontellt. Inga diagonaler, med andra ord. Antalet ettor får bara vara en potens av två, det vill säga n =,,, 4, 8,... då n =,,, 3,... Man ska eftersträva att göra inringningarna så stora som möjligt och de får gärna överlappa varandra. Flera inringningar förbinds med ett logiskt eller. Sedan tittar man på inringningen för att se vad som är konstant under inringningen. Variabler som ändrar på sig i en inringning försvinner på grund av räkneregeln X + X =. Exempel Vi kan se hur man kan använda denna teknik genom att se på ett exempel. Vi tittar på funktionen f(a, B) = (, ). Variabelnummer A B f(a, B) 3 A 3 B Vi ser att B vaierar över ingingningen, således försvinner B. A är däremot konstant under inringningen och har värdet. Vi får därför att: 8 Maurice Karnaugh f(a, B) = A 6

Vi återvänder nu till Exempel. Karnaugh-diagrammet för funktionen f(a, B, C) = (,, 4, 6) blir då: A C 5 4 B 3 7 6 Här har vi två stycken inringningar. För den vänstra ser vi att C, medan både A och B är konstanta med värdet noll. Denna inriningen motsvars av A B För den högra inringningen gäller det att A är konstant med värdet ett och att C är konstant med värdet noll. Däremot ser vi att B varierar varför B försvinner. Denna inringning motsvaras av A C. Eftersom inringningarna förbinds met ett logiskt Eller får vi att funktionen blir: f(a, B, C) = A B + A C Ibland är det så att vissa värden i en sanningstabell inte är specificerade. Detta kallar man för ett don t care värde och man markerat det med ett i Karnaughdiagrammet. Detta utnyttjar man genom att själv välja om man skall ringa in det eller låta bli. 4 Sekvensnät Sekvensnät består av ett kombinatoriskt nät som man, på något sätt, har för sett med ett minneselement. I praktiken innebär det för det mesta att man använder sig av en vippa. Vi kan ta en D-vippa som exempel. En D-vippa har en dataingång D, en klocksignalsingång clk, samt q och dess invers q som utgångar. En D-vippa fungerar så att man lägger indata på D-ingången. Värdet på D- ingången kommer att läggas ut på q-utgången, vid nästa klockning. Klocksignalen clk kommer således att fungera som en form av spärrvakt som inte släpper ut något innan det är dags för detta. Sekvensnät som har en gemensam klockning kallas för synkrona sekvensnät. Sekvensnät son inte är synkrona kallas för asynkrona. Ska man generallisera så kan man konstatera att det är betydligt svårare att konstruera asynkrona nät på ett tillförlitligt sätt än vad det är att konstruera synkrona nät. Sekvensnät har vanligen flera ingångar än bara klocksignalen clk. Antag att ett sekvensnät har en insignal x, beror då utsignalen u direkt av insignalen x, det vill säga att u(x) så kallar man sekvensnätet för ett Mealy-nät. Annars är sekvensnätet ett Moore-nät. För ett Mealy-nät kan utsignalen således ändras mellan två klockpulser, vilket kan vara problematiskt. 7

4. Konstruktion av synkrona sekvensnät När man ska konstruera ett synkront sekvensnät bör mna först tänka efter vad nätet ska göra. Detta kan låta självklart, men att verkligen ta reda på hur nätet skall bete sig i alla situationer kan vara nog så besvärligt. Man har då ofta stor nytta av att rita en tillsåndsgraf, som beskriver nätets beteende 9. Ett alternativ är att använda sig av en tillståndstabell. Lämpligen ger man tillstånden namn som är relevanta för nätets funktion i detta tillstånd. Emellertid måste man, då man skall realisera nätet, döpa om tillstånden till ett binärt tal. Detta kallas för tillståndskodning. Därefter sätter man upp en ny tillståndstabell, där man har ersatt tillståndens nämn med dess koder. En sådan tabell kallas för en kodad tillståndstabell. Använder vi andra vippor än D-vippor, till exempel JK-vippor, måste man modifiera den kodade tillståndstabellen efter vippans övergångstabell. Sedan skall man bestämma vilka värden som ska in på vippornas ingångar. För D-vippor gäller det att D = q +. Detta gör man oftast lämpligen med hjälp av Karnaugh-diagram. Man kan, på detta sätt, få fram minimerade uttryck för vippornas ingångar, samt för utsignalsfunktionen. Arbetsgången torde framgå av följande exempel. Exempel 3 Antag att vi vill konstruera en räknare som räknar,, 3,,, 3,,... Vi kan nu sätta upp en tillståndstabell som beskriver detta. S S + 3 3 S står för det nuvarande tillståndet och S + för nästa tillstånd. Nästa steg är att välja en tillståndskod, detta gör vi med hjälp av följande tabell. S q q 3 q och q är sekvensnätets tillståndsvariabler. Därefter ska vi översätta tillståndstabellen med hjälp av tillståndstabellen så att vi får en kodad tillståndstabell. 9 Det kan givetvis vara så att man då tar med onödigt många tillstånd. Det finns metoder att minimera antalet tillstånd för ett sekvensnät, men dessa metoder ingår inte i denna kurs. Nätets komplexitet kommer att bero på vilken kod som man har valt. Vi kommer inte att gå in på några metoder om hur man kan välja tillståndskoder på bästa sätt i denna kurs. 8

q q q + q+ q + och q+ kallas nätets nästa-tillståndsfunktioner. Vi sätter nu upp Karnaugh-diagram för nätets nästa-tillståndsfunktioner. Vi börjar med nästa-tillståndsfunktionen för q. -, 3 På Karnaugh-dagrammets axlar står för q och för q. Då det för en D-vippa gäller att D = q + får vi således att: D = q + q Vi fortsätter med nästa-tillståndsfunktionen för q. - 3 På Karnaugh-dagrammets axlar står för q och för q. Då det för en D-vippa gäller att D = q + får vi således att: D = q Nätets utsignaler kommer att utgöras av tillståndsvariablerna q och q. Nätet är således ett Moore-nät. Exempel 4 Vi ska nu modifiera exempel 3 på så sätt att vi ska göra den styrbar. Vi tänker oss att om en insignal bestämmer om vi ska räkna eller stanna kvar i det tillstånd vi befinner oss i. Om vi väljer att låta fallet x = innebära att vi ligger kvar i det gamla tillståndet och fallet att x = betyda att sekvensnätet går vidare till nästa tillstånd. Vi kan då sätta upp följande tillståndstabell: S x = x = 3 3 3 Vi använder samma tillståndskod som i föregående fall, det vill säga: 9

S q q 3 Då erhåller vi följande kodade tillståndstabell: q q x = x = Vi kan nu sätta upp Karnaugh-diagram för nätets nästa-tillståndsfunktioner. Vi börjar med q +. - - 5 x 3 7 4 6 står för q och står för q. Då det, för en D-vippa, gäller att D = q + får vi följaktligen: D = q + q x + q x = q + q x För q + får vi följande Karnaugh-diagram: x - - 3 5 4 7 6 står för q och står för q. Då det, för en D-vippa, gäller att D = q + får vi följaktligen: D = q x + q x Nätets utsignaler kommer att utgöras av tillståndsvariablerna q och q. Nätets utsignalsfunktion är oberoende av insignalen x, det är således ett Moore-nät.

Referenser [] Alciatore, David G. & Histand, Michael B. Introduction to Mechatronics and Measurement Systems, ed. McGraw-Hill, ISBN -7-955-7 [] Hemert, Lars-Hugo Digitala kretsar, 3 ed. Studentlitteratur, ISBN 9-44-98- [3] Stallings, William Computer Organization & Architecture Designing for Performance, 6 ed. Prentic-Hall, ISBN -3-4937-4