9789144115603

Page 1

GRUNDLร GGANDE DATORTEKNIK Arbetsbok fรถr DigiFlisp

Roger Johansson


Kopieringsförbud Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares och studenters begränsade rätt att kopiera för undervisningsändamål enligt Bonus Copyright Access kopieringsavtal är förbjuden. För information om avtalet hänvisas till utbildningsanordnarens huvudman eller Bonus Copyright Access. Vid utgivning av detta verk som e-bok, är e-boken kopieringsskyddad. Den som bryter mot lagen om upphovsrätt kan åtalas av allmän åklagare och dömas till böter eller fängelse i upp till två år samt bli skyldig att erlägga ersättning till upphovsman eller rättsinnehavare. Studentlitteratur har både digital och traditionell bok-utgivning. Studentlitteraturs trycksaker är miljöanpassade, både när det gäller papper och tryckprocess.

Art.nr 35761 ISBN 978-91-44-11560-3 Upplaga 2:1 © Författaren och Studentlitteratur 2013, 2016 www.studentlitteratur.se Studentlitteratur AB, Lund

Omslagslayout: Francisco Ortega Omslagsbild: Shutterstock/Lukas Radavicius Printed by Dimograf, Poland 2016


Grundläggande Datorteknik, arbetsbok för DigiFlisp

Innehåll: Del 1 Grunder inom digitaltekniken, transistorn som switch, switchnät. 1 Transistorn som strömställare........................................................... 4 2 Grindar ............................................................................................. 6 3 Kopplingsboxen.............................................................................. 10 4 Konstruktion av digital vinkelgivare .............................................. 22 5 Kombinatorik för addition och subtraktion .................................... 26 6 Väljare, fördelare och binäravkodare ............................................. 33 Del 2 Datorns byggstenar, kombinatorik och sekvensnät 7 ALU, aritmetik- och logik- enheten ............................................... 39 8 Minneselement ............................................................................... 46 9 Transmissionsgrinden ..................................................................... 50 Del 3 Dataväg, minne och styrenheten instruktionsexekvering och von Neumanndatorn 10 Registeröverföring ........................................................................ 51 11 Dataväg med ALU........................................................................ 56 12 Dataväg med flaggregister och minne .......................................... 64 13 Räknare och tillståndsmaskiner .................................................... 83 14 Den automatiska styrenheten ........................................................ 94 Del 4 In- utmatning, maskin- och assemblerprogrammering 15 Maskinprogrammering ............................................................... 138 16 Assemblerprogrammering .......................................................... 149

Appendix Appendix A, RTN, notation för registeröverföringar Appendix B, ALU för FLISP Appendix C, Styrsignalsekvenser Appendix D, Karta över operationskoder Appendix E, Assemblerdirektiv Appendix F, Adressrummet i FLISP Appendix G, Undantagshantering i FLISP


Arbetsbok för DigiFlisp

3 Kopplingsboxen I detta kapitel ges en introduktion till kopplingsboxen, och efter att ha arbetat igenom kapitlet kommer du att självständigt kunna koppla och analysera grindnät med varierande komplexitet. Välj Switchbox|New switchbox. Kopplingsboxen består av en arbetsyta som inledningsvis är tom. Menyraden längst upp leder dig med tillgängliga val. Välj exempelvis Add för att placera ut en ny komponent på arbetsytan, välj någon av kopplingsboxens komponenter och placera därefter ut denna på arbetsytan.

3.1 Inledande demonstration Uppgift 3.1

Satser från boolesk algebra

Du ska börja med att verifiera de viktiga kommutativa lagarna inom boolesk algebra med hjälp av kopplingsboxen, se punkt 1 i figuren i marginalen.

1. Kommutativa lagar x•y=y•x x+y=y+x

Det första sambandet säger att:

2. Distributiva lagar x•(y+z)= x•y+x•z x+(y•z)=(x+y)•(x+z)

x•y = y•x dvs. att: x

x AND y = y AND

Det krävs alltså nu två ANDgrindar, en för varje led. Välj Add | Gates | 2-input AND

Flytta nu ut markören i kopplingsboxens arbetsyta; du ska se komponentens siluett. Placera komponenten på arbetsytan genom att klicka på vänster knapp.

3. x+0 = x•1 = 4. x+x=1 x•x=0 5. x+1 = x•0 = 6. x+x = x•x =

x x 1 0 x x

7. Associativa lagar x+(y+z)= x+y +z x•(y•z)=(x•y)•z 8. De Morgans lagar (x+y)=(x•y) (x•y)=(x+y) 9. (x)=x Multiplikationstecknet (•) utelämnas oftast där det inte kan missförstås och vi skriver exempelvis enklare: xy i stället för x•y

10

© FÖRFATTAREN OCH STUDENTLITTERATUR


Arbetsbok för DigiFlisp Komponenten ritas nu om och får dessutom små indikatorer som visar signalnivåer (0 eller 1) på ingångar och utgång. Varje ingång har ett litet ”fönster” där du kan skriva in såväl konstanta värden, 0 eller 1, som något godtyckligt variabelnamn. För nya komponenter är detta värde alltid 0. Komponentens utgång har ett namn som bestäms av kopplingsboxen, i detta fall ”u0”. Du kan använda denna utsignal om du vill koppla utgången till en annan komponents ingång. Genom att sätta marjören på komponenten och högerklicka kan du sedan flytta eller ta bort den. Du kan också lägga till en ny komponent genom att högerklicka någonstans på arbetsytan. Placera ut ytterligare en AND-grind. Du kan skapa oberoende variabler med hjälp av strömställare (switch). Placera ut två strömställare.

Definiera nu två variabelnamn x och y genom att ange dessa i strömställarnas kontrollfönster (se marginalen). Variabelnamn som du har deklarerat på detta sätt kan nu användas som insignaler till komponenter i kopplingsboxen. Ge nu insignaler till de båda AND-grindarna genom att placera markören i det fönster som hör till ingången och skriva in namnet på den variabel som ska kopplas till ingången.

Notera att den första grinden realiserar x AND y, medan den andra grinden realiserar y AND x. Det är nu dags att simulera kopplingen. Välj Analyze (se marginalen). Nu händer flera saker: Fönster som tidigare kunde redigeras, blir grå och kan inte längre ändras. Du kan inte heller placera ut nya komponenter i detta läge.

© FÖRFATTAREN OCH STUDENTLITTERATUR

11


Arbetsbok för DigiFlisp Menyvalet Analyze inaktiveras, i stället aktiveras Design. Du gör detta val för att återgå till det läge där du kan redigera din koppling. Du kan nu ändra de oberoende variablernas värden genom att klicka på strömbrytarena. För att verifiera den första kommutativa lagen (xy=yx) måste du undersöka de båda utsignalerna u0 och u1 för varje insignalskombination. Gör detta och fyll i följande tabell. x y

u0

u1

0 0 0 1 1 0 1 1

Den andra satsen av de kommutativa lagarna säger att x+y = y+x, vilket innebär att två OR-grindar ska användas. Du ska nu också genom att koppla samman två verifiera sambandet x =x inverterare. Uppgift 3.2 För att ändra eller bygga vidare på din koppling klickar du på Design. Du får då tillbaka de vita ändringsbara fälten. Placera ut två OR-grindar på följande sätt:

Om du har kvar dina AND-grindar och strömställare kommer ORgrindarnas utgångar här att tilldelats signalnamnen u4 och u5 av kopplingsboxen.

uX, namn på utgångssignaler som tilldelas av kopplingsboxen i den ordning komponenter sätts ut. De kallas också beroende variabler. Oberoende variabler är de (godtyckliga) variabelnamn du själv inför med hjälp av strömställare.

För varje kombination av insignaler, fyll i utsignalerna u4 och u5 i följande tabell: x y u4 u5 0 0 0 1 1 0 1 1 Verifiera nu sambandet x =x genom att koppla samman två inverterare enligt följande figur. Dvs. du kopplar samman utgången från den första inverteraren med ingången till den andra genom att skriva utsignalens namn i den andra inverterarens insignalfönster. Komplettera avslutningsvis följande tabell: x

x

x

0 1

12

© FÖRFATTAREN OCH STUDENTLITTERATUR


Arbetsbok för DigiFlisp

3.2 En översikt av kopplingsboxen Med kopplingsboxen kan du simulera enkla uppkopplingar av digitala nät. Du har 26 olika komponenter att välja mellan (se några exempel på symboler i marginalen). Du kan också använda upp till 16 oberoende invariabler i form av strömställare. Kopplingsboxen har två olika lägen, för redigering eller simulering. Redigering – Här kan du placera ut komponenter på arbetsytan. En komponent kan ha en eller flera insignaler som måste definieras, insignalerna ska vara någon av: 

Konstanten 1

Konstanten 0

uX (eller qX)

någon oberoende variabel, som du själv definierar genom att placera ut en strömställare och skriva in variabelns symboliska namn i ett inmatningsfönster. Namnet får bestå av högst 4 ASCII-tecken som får vara A–Z och/eller 0–9. Första tecknet i variabelnamnet måste vara en bokstav.

utsignalen från någon komponent (X) i nätet

I redigeringsläget har alla inmatningsfönster vit bakgrund och innehållet kan ändras. Ändring av komponenters insignaler reflekteras dock först då kopplingsboxen försätts i simuleringsläge. Redigeringsläget tillåter också att du   

Sparar kopplingen (Save drawing to file) Laddar en tidigare sparad koppling (Load drawing from file) Rensar arbetsytan (Clear drawing)

Simulering – Då du är färdig med nätet, dvs. har placerat ut dina komponenter, redigerat insignalerna till varje komponent och dessutom definierat de oberoende variablerna du använder, väljer du du på Analyze. Kopplingen kontrolleras då och alla utsignaler bestäms. Du kan nu ändra oberoende variablers värden, genom att klicka på strömställare, och studera hur nätets tillstånd påverkas av dessa. Du kan inte ändra innehållet i ett inmatningsfönster (dessa är grå). I simuleringsläget kan du inte heller lägga till eller ta bort komponenter, du måste återgå till redigeringsläget för att göra detta. Vill du flytta eller ta bort en komponent, högerklickar du med markören över komponenten. Detta gäller både redigerings- och simuleringsläge. Klocksignal – Några komponenter har en klockingång C. I simuleringsläge kan du generera en (gemensam) klocksignal för dessa komponenter genom att klicka på Clock. Klocksignalen har ingen inverkan på komponenter utan klockingång.

© FÖRFATTAREN OCH STUDENTLITTERATUR

13


Arbetsbok för DigiFlisp

3.3 Fler räknelagar I detta avsnitt använder du kopplingsboxen för att studera och också verifiera ytterligare några grundläggande samband i den booleska algebran. Uppgift 3.3 Börja med den första distributiva lagen dvs. sambandet x(y+z) = xy+xz Koppla först upp vänstra ledet (funktionen u1) och det högra ledet (funktionen u4) enligt följande, tänk på att numreringen av utsignalerna beror på i vilken ordning du placerat ut dina grindar.

Satser från boolesk algebra … 2. Distributiva lagar x(y+z) = xy + xz x+(yz)=(x+y)(x+z)

x(y+z)

xy+xz x(y+z) = xy+xz

x y z

u1

u4

0 0 0 0 0 1 0 1 0

Fyll nu i funktionstabellen till vänster och kontrollera att u1=u4 för alla möjliga x,y och z.

0 1 1 1 0 0 1 0 1 1 1 0

x+(y·z) = (x+y)·(x+z)

1 1 1

x y z

VL

HL

0 0 0 0 0 1 Fortsätt nu med att koppla upp den andra distributiva lagen:

0 1 0

x+(yz) = (x+y)(x+z).

1 0 0

Fyll i funktionstabellen till höger och kontrollera att vänstra och högra ledet överensstämmer för alla möjliga x,y och z.

1 0 1

14

0 1 1

1 1 0 1 1 1

© FÖRFATTAREN OCH STUDENTLITTERATUR


Arbetsbok för DigiFlisp Uppgift 3.4 Koppla upp lagarna 3–6. Du kan sätta en ingång till konstant 0 eller 1 genom att ange detta i stället för variabelnamnet, se som exempel figuren i marginalen. Fyll i följande funktionstabeller. Kontrollera att vänstra och högra leden överensstämmer. 3

4

x+0 = x

x

VL

x×1 = x

HL

x

VL

HL

x+x = 1

x

VL

x×x = 0

HL

x

…..

3. x+0 x•1 4. x+x x•x 5. x+1 x•0 6. x+x x•x

= = = = = = = =

x x 1 0 1 0 x x

7. Associativa lagar x+(y+z) = (x+y)+z x(yz) = (xy)z 8. De Morgans lagar x+y = x y xy = x+y 9.

x =x

HL

0

0

0

1

0

0

1

1

1

1

1

0

5 Satser från boolesk algebra

VL

6

x+1 = 1

x

VL

x×0 = 0

HL

x

0

1

1

1

VL

x+x = x

VL

x×x = x

HL

x

HL

x

0

0

0

0

1

0

1

1

VL

HL

Uppgift 3.5 Verifiera de associativa lagarna. Fyll i funktionstabellerna: x+(y+z) = (x+y)+z

x

y

z

0

0

0

VL

HL

x(yz) = (xy)z

x

y

z

0

0

0

0

0

1

0

0

1

0

1

0

0

1

0

0

1

1

0

1

1

1

0

0

1

0

0

1

0

1

1

0

1

1

1

0

1

1

0

1

1

1

1

1

1

VL HL

Uppgift 3.6 Verifiera De Morgans lagar Fyll i funktionstabellerna: xy = x+y

x+y = x y

x

y

0

x

y

0

0

0

0

1

0

1

1

0

1

0

1

1

1

1

© FÖRFATTAREN OCH STUDENTLITTERATUR

VL

HL

VL

HL

15


Arbetsbok för DigiFlisp Uppgift 3.7 Du har tillgång till en 2-ingångars NAND-grind, men behöver en INVERTERARE. Visa hur x då ska kopplas till grinden.

f = x’ x f 1 0 1

0

Uppgift 3.8 De Morgans lag kan generaliseras till att gälla godtyckligt antal variabler. Det gäller exempelvis att: x+y+z = xyz och att: x+y+z = x y z Verifiera sambanden genom att koppla upp de vänstra och högra leden i kopplingsboxen. Fyll i följande funktionstabeller. x

y

z

0

0

0

0

0

1

0

1

0

0

1

1

1

0

0

1

0

1

1

1

0

1

1

1

x

y

z

0

0

0

0

0

1

0

1

0

0

1

1

1

0

0

1

0

1

1

1

0

1

1

1

16

x+y+z

xyz

x+y+z

x y z

© FÖRFATTAREN OCH STUDENTLITTERATUR


Arbetsbok för DigiFlisp

3.4 Konstruktion med NAND- och NOR-grindar x y z w

Uppgift 3.9

f

0 0 0 0

En krets med fyra binära insignaler x, y, z, w och en utsignal f ska konstrueras. Insignalerna utgör siffror i det binära talet (xyzw)2. Utsignalen f=1 om (xyzw)2  6 och f=0 om (xyzw)2  6.

0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0

1. Fyll i funktionsdiagram och sedan karnaughdiagrammet för funktionen f (i marginalen) och tag fram ett minimalt Booleskt uttryck för f på disjunktiv form.

0 1 0 1 0 1 1 0 0 1 1 1

f =

1 0 0 0 1 0 0 1

2. Rita motsvarande AND-/OR-nät

1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

f

zw 00

01

11

10

00

xy

01

3. Konvertera till ett NAND/NAND-nät.

11 10

Koppla upp NAND/NAND-kretsen med kopplingsboxen och verifiera utsignalerna enligt funktionstabellen.

© FÖRFATTAREN OCH STUDENTLITTERATUR

17


Arbetsbok för DigiFlisp Uppgift 3.10

x y z w

En krets med fyra binära insignaler x, y, z, w och en binär utsignal f ska konstrueras. Insignalerna utgör siffror i det binära talet (xyzw)2. Utsignalen f = 1 om (xyzw)2  9 och f = 0 om (xyzw)2  9.

0 0 0 0

1. Fyll i funktionsdiagram och Karnaughdiagrammet för funktionen f. Tag sedan fram ett minimalt booleskt uttryck för f på konjunktiv form.

0 1 0 1

f

0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0

f=

1 0 0 1 1 0 1 0

2. Rita motsvarande OR/AND-nät

1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

f

zw 00

3. Konvertera det till ett NOR/NOR-nät

01

11

00

xy

01 11 10

Koppla upp NOR/NOR-kretsen med kopplingsboxen och verifiera utsignalerna enligt funktionstabellen.

18

© FÖRFATTAREN OCH STUDENTLITTERATUR

10


Arbetsbok för DigiFlisp

3.5 Användning av EXKLUSIVT-ELLER- grindar I detta avsnitt ska vi ge en del exempel på användning av EXKLUSIVT-ELLER- (XOR) funktionen. Vi påminner om definitionen av funktionen: x⨁y = xy + xy och dess invers: x⨁y = xy+x y Uppgift 3.11 Villkorlig inverterare En XOR-grind kan användas för att villkorligt invertera en insignal x. Analysera följande kopplingar med XOR-grindar med hjälp av boolesk algebra (använd definitionen ovan).

u0= u1=

Modulo 2- aritmetik När två binära siffror adderas bildas summasiffran med hjälp av XOR-operationen (vi återkommer till detta i ett senare kapitel). Summasiffran är summan utan minnessiffra och kallas för modulo 2summan. Man kan beräkna modulo 2-summan av fler än två binära siffror. Funktionerna u1,u2 och u3 nedan visar hur XOR-operationer används för att bilda modulo 2-summan vid addition av 2, 3 respektive 4 st. en-bitars tal. u1 = x+y (mod 2)

= xy

u2 = x+y+z (mod 2)

= (xy)z

= xyz

u3 = x+y+z+w (mod 2) = ((xy)z)w = xyzw = (xy)(zw)

© FÖRFATTAREN OCH STUDENTLITTERATUR

19


Art.nr 35761

studentlitteratur.se


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.