De PLC geïntegreerd in de PC.

advertisement
VRIJ TECHNISCH INSTITUUT
Burg.Geyskensstraat
11
3580
BERINGEN
De PLC geïntegreerd in de PC.
Vak: Toegepaste informatica
Auteur: Ludwig Theunis
VRIJ TECHNISCH INSTITUUT
Versie: vrijdag 2 november 2007
2
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1 De Microprocessor
Zowel PLC’s, PC en NC’s hebben een microprocessor. Dit is het hart van deze systemen.
De meeste elektronisch toestellen zijn tegenwoordig uitgerust met een microprocessor,
denk maar aan je GSM, MP3-speler, I-pod etc.
Elk microprocessor-systeem werkt volgens dezelfde principes. De actuele processoren
verwerken nog steeds digitale gegevens. Al de gegevens die een microprocessor verwerkt
zijn dus digitaal, ook geluid, beeld etc. Digitaal komt van het Latijns woord digitus, dat
vinger betekende, en omdat men vroeger met de vingers rekende.
Een computer/microprocessor verwerkt dus digitale informatie, hij rekent natuurlijk niet met
vingers maar met transistoren. Deze transistoren kan je vergelijken met schakelaars, een
schakelaar is open - vinger verborgen - of een schakelaar is gesloten - vinger zichtbaar.
Met vijf vingers tel je maar tot vijf. Door gebruik te maken van alle combinaties kan je met
vijf vingers van 0 tot 31 tellen, is 32 mogelijkheden.
Een processor in zijn behuizing.
De huidige processoren bevatten meer dan één miljard transistoren.
Om de werking van processoren te kunnen begrijpen moeten we weten hoe processoren
rekenen. Processoren maken hiervoor gebruik van het binaire talstelsel. In het volgende
deel zal het binaire talstelsel verklaard worden.
Toegepaste informatica
3
VRIJ TECHNISCH INSTITUUT
1.1 Talstelsels, beginselen.
Omdat in dit deel verschillende talstelsels gebruikt worden schrijven we de index van het
talstelsel bij het getal.
1102, een getal in het binaire talstelsel,
11010, een getal in het decimale talstelsel,
1108, een getal in het octale talstelsel,
11016, een getal in het hexadecimale talstelsel,
is 610 in het decimale talstelsel.
is 11010 in het decimale talstelsel.
is 7210 in het decimale talstelsel.
is 27210 in het decimale talstelsel.
Afhankelijk van het talstelsel heeft een getal dus een heel verschillend gewicht.
1.1.1
Het binaire talstelsel.
Het decimale talstelsel is een tientallig talstelsel. We gebruiken dit dagelijkse.
Een decimaal getal bestaat uit eenheden, tientallen, honderdtallen enz. Elk van deze digits
kan 10 waardes aannemen: namelijk van 0-9.
Het binaire talstelsel is een tweetallig talstelsel. Één digit kan slechts 2 mogelijke waardes
aannemen; 0 of 1. Een digit in het binaire talstelsel wordt kortweg bit genoemd.
Willen we de waarde 2, binair voorstellen dan kunnen we dit niet met één bit voorstellen.
Met één bit kunnen we maximaal 1 voorstellen. Tel je er één bij op dan gaan we naar de
volgende bit. Net zoals we naar de volgende digit gaan als we in het decimale talstelsel
van 9 naar 10 gaan. Het decimale getal 2, stellen we in het binaire talstelsel dus voor als
10. Drie wordt dan 11, vier is 100 en zo verder.
Elke bit in een binair getal heeft net zoals een digit van een decimaal getal een gewicht.
De eerste digit van een decimaal getal zijn de eenheden, dan de 10tallen, de 100tallen, de
1000tallen etc…Het gewicht van de digit kan je bepalen met zijn positie te beginnen van
rechts met positie 1. Het gewicht van een digit wordt dan 10 (n-1), waarbij n staat voor de
positie van de digit.
Passen we hetzelfde toe op het binaire talstelsel dan wordt het gewicht van een bit gelijk
aan 2(n-1), waarbij n staat voor de positie van de bit.
De eerste, meest rechtse bit, (n=1) van een binair getal heeft als gewicht: 2(1-1)=20=1, deze
bit is de minst beduidende bit of bit 0
De tweede bit, (n=2) is 2(2-1)=21=2 is bit 1. De derde bit (bit 2), (n=3) wordt 2(3-1)=22=4. De
vierde bit (bit 3), (n=4) wordt dan 2(4-1)=23=8, enz.
Achtereenvolgens krijgen we voor de eerste 16 bits volgende gewichten. 1, 2, 4, 8, 16, 32,
64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 en 32768. Het binaire getal
1111111111111111 heeft dus als decimale waarde 65535. Dit getal bekomen we door het
gewicht van al de bits op te tellen.
Voorbeeld: het getal 1100012 komt overeen met 4910: bit5 + bit4 + bit0 = 32+16+1 = 49.
De bits in binair getallen worden gegroepeerd.
Een groep van 8 bits noemt men een BYTE.
Een groep van 16 bits of 2 BYTES noemt men een WOORD
Een groep van 32 bits, 4 BYTES, 2 WOORDEN noemt men een DUBBELWOORD
4
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.1.1.1 Van binair naar decimaal.
Als we de decimale waarde van een binair getal willen berekenen, kunnen we gebruik
maken van de formule om het bit gewicht te berekenen.
Voor elke 1 in het binaire getal vullen we het gewicht in van de overeenkomstige bit. Deze
getallen tellen we op en we hebben de decimale waarde van het binaire getal.
Een voorbeeld:
De decimale waarde van het binaire getal: ‘10011101 2’ bepalen we volgende manier.
(opgelet altijd rechts beginnen in het getal).
De eerste bit, 100111012, bit 0 is 1 maal het gewicht voor de eerste bit 20 => 1x1=1.
De tweede bit, 100111012, bit 1 is 0 maal het gewicht van de tweede bit, 21 => 0x2=0.
De derde bit, 100111012, bit 2 is 1 maal het gewicht van de derde bit is 22 => 1x4=4
Dit doe je voor elke bit en je maakt het totaal.
Volledig uitgeschreven wordt dit:
27.1+26.0+25.0+24.1+23.1+22.1+21.0+20.1=
128+0+0+16+0+8+4+0+1=15710
Oefeningen
Bereken de decimaal waarde van volgende binaire getallen:
11001102 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
10110102 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
Toegepaste informatica
5
VRIJ TECHNISCH INSTITUUT
1.1.1.2 Van decimaal naar binair.
Om de binaire waarde van een decimaal getal te berekenen, kunnen we gebruik maken
van de rest methode. Deze methode bestaat er in om het getal te delen door 2 en dan de
rest te noteren. Het resultaat van de deling wordt opnieuw door 2 gedeeld, opnieuw wordt
de rest genomen. Dit wordt herhaald tot er 0 overblijft. Het binaire getal bekomen we door
de resten in de juiste volgorde neer te schrijven.
Een voorbeeld ter illustratie, opnieuw willen we de binaire waarde van 21310 berekenen.
213
/2= 106
rest 1 => bit 0
106
/2= 53
rest 0 => bit 1
53
/2= 26
rest 1 => bit 2
26
/2= 13
rest 0 => bit 3
13
/2= 6
rest 1 => bit 4
6
/2= 3
rest 0 => bit 5
3
/2= 1
rest 1 => bit 6
1
/2= 0
rest 1 => bit 7
21310 = 110101012
Oefeningen
Bereken de binaire waarde van volgende getallen doe de controle door het getal met de
twee methodes te berekenen:
19310 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
12310 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
6
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.1.2 Het hexadecimale talstelsel.
Het binaire talstelsel is een moeilijk talstelsel om te verwerken, . De omzetting naar het
decimale talstelsel is ook niet eenvoudig. Daarom is het 16-tallig talstelsel in het leven
geroepen. Grote getallen kunnen veel compacter weergegeven worden. Het converteren
van binair naar hexadecimaal en omgekeerd is ook vrij eenvoudig. Immers 16 is een
macht van 2, nl 24.
Elke ‘digit’ van het hexadecimale talstelsel kan dus 16 waardes aannemen nl. van: 0-15.
Om verwarring in de getallen te voorkomen worden de waardes 10, 11, 12, 13, 14 en 15
respectievelijk. A, B, C, D, E, en F. genoemd.
De 24 bit RGB kleur definitie in een computer is een goed voorbeeld waar de
hexadecimale weergave duidelijker is dan de decimale of de binaire. Magenta
bijvoorbeeld, is hexadecimaal FF00FF16, decimaal is dit 1671193510 en binair wordt de 24
bit RGB kleur 1111111100000000111111112 genoteerd.
Elke digit in een hexadecimaal getal heeft een gewicht dit gewicht wordt bepaald door de
positie in het getal. De eerste digit zijn de eenheden. De tweede digit zijn de zestien-tallen,
de derde digit zijn de 256-tallen de vierde digit de 4096-tallen, enz. Net zoals bij het binaire
en het decimale talstelsel kan je dit in formule vorm schrijven.
Het cijfer gewicht kan je bepalen met zijn positie te beginnen van rechts met positie 1.
Het gewicht voor een digit wordt dan 16(n-1), waarbij n staat voor de positie van de bit.
Een voorbeeld het hexadecimale getal 132416 heeft als decimale waarde 490010. Je kan dit
berekenen op dezelfde manier als je dit bij een decimaal of binair getal berekend.
1.16(4-1)+3.16(3-1)+2.16(2-1)+4.16(1-1)=1.4096+3.256+2.16+4.1=4900
1.1.2.1 Van hexadecimaal naar decimaal.
De omrekening van hexadecimaal naar decimaal kan je gebruikmakende van volgende
formule.
Van het hexadecimale getal wordt de som genomen van elke digit vermenigvuldigd met
het gewicht dat bekomen wordt door (n-1)e macht van 16, waarbij n de positie is van de
digit.
Een voorbeeld:
De decimale waarde van het hexadecimale: ‘36E’ bepalen we volgende manier.
De eerste digit, 36E, heeft als waarde 14(E)x16(n-1)=14x160=14.
De tweede digit, 36E, heeft als waarde 6x16(n-1)=6x161=96.
De derde digit, 36E, heeft als waarde 3x16(n-1)=3x162=768.
Dit doe je voor elke cijfer van het hexadecimale getal en je telt alles samen, het resultaat
geeft je de decimale waarde van het hexadecimale getal.
Volledig uitgeschreven wordt dit:
162.3+161.6+160.E= 256.3+16.6+1.14=878
Toegepaste informatica
7
VRIJ TECHNISCH INSTITUUT
Oefeningen
Bereken de decimale waarde van volgende hexadecimale getallen:
A1B16 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
11F16 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
8
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.1.2.2 Van decimaal naar hexadecimaal.
Om een decimaal getal naar hexadecimaal om te rekenen maken we gebruik van de rest
methode. Deze methode bestaat er in om het getal te delen door 16 en dan de rest te
noteren. Het resultaat van de deling wordt opnieuw door 16 gedeeld, opnieuw wordt de
rest genomen. Dit wordt herhaald tot er 0 overblijft. Door de resten in de juiste volgorde te
nemen bekomen we ons hexadecimaal getal.
Een voorbeeld ter illustratie.
Hoe wordt het getal 1089210 hexadecimaal geschreven.
10892 /16 = 680
rest 12
digit 0 is C
680
/16 = 42
rest 8
digit 1 is 8
42
/16 = 2
rest 10
digit 2 is A
2
/16 = 0
rest 2
digit 3 is 2
Het hexadecimale getal wordt dan 2A8C16
Oefening
Bereken de hexadecimale waarde van het volgende decimale getallen:
200710 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
411110 =
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
Toegepaste informatica
9
VRIJ TECHNISCH INSTITUUT
1.1.2.3 Van hexadecimaal naar binair
Een hexadecimaal getal naar binair omreken of omgekeerd is heel eenvoudig.
Eén digit van een hexadecimaal getal komt exact overeen met 4 bits van een binair getal.
Hier gebruik van makend, wordt de omrekening zeer eenvoudig.
Elke digit van het hexadecimale getal heeft een waarde tussen 0 en 15 dit komt overeen
met een binaire waarde van 0000 tot 1111. We converteren elke digit op die manier en
hebben de decimale waarde. De grootte van het hexadecimale getal is maakt het de
omrekening niet ingewikkelder.
Een voorbeeld.
Het hexadecimale getal 1C2B3A16 wordt.
1
C
12
2
B
11
3
A
10
0001 1100 0010 1011 0011 1010
1C2B3A16 = 0001 1100 0010 1011 0011 10102.
Als je spaties tussen de groepjes van 4 bit schrijft, zie je heel het verband beter.
Oefeningen
Bereken de binaire waarde van volgende hexadecimale getallen:
999916 =
..............................................................................................................................
..............................................................................................................................
1D2A16 =
..............................................................................................................................
..............................................................................................................................
3F7EB16 =
..............................................................................................................................
..............................................................................................................................
10
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.1.2.4 Van binair naar hexadecimaal
Om een Binair getal naar Hexadecimaal getal om te rekenen groeperen we de bits per 4.
Vervolgens doen we voor elk groepje van 4 bits een omrekening naar hexadecimaal waar
bij de het binaire getal tussen 0000 en 1111 overeenkomt met een hexadecimale waar van
0 tot F.
We beginnen met groeperen vanaf de minst beduidende bit, bit 0.
Een voorbeeld:
Het binaire getal 101101110011010110100111112
groeperen per 4
wordt:
0010 1101 1100 1101 0110 1001 1111
2
13
12
13
D
C
D
15
6
9
F
10 1101 1100 1101 0110 1001 11112 = 2CBC69F16.
Oefeningen
Bereken de hexadecimale waarde van volgende binaire getallen:
1111011011101111011010010012 =
..............................................................................................................................
..............................................................................................................................
1100010111011011011011112 =
..............................................................................................................................
..............................................................................................................................
10010110011110011100002 =
..............................................................................................................................
..............................................................................................................................
Toegepaste informatica
11
VRIJ TECHNISCH INSTITUUT
1.1.3 Oefeningen op conversie:
1.1.3.1 Bereken de decimale waarde.
101010112=….........................................................................................................
110100012=….........................................................................................................
FF16=…...................................................................................................................
..............................................................................................................................
3416=…...................................................................................................................
..............................................................................................................................
1000000002=….......................................................................................................
10016=….................................................................................................................
..............................................................................................................................
1.1.3.2 Bereken de binaire waarde.
(C0F3)16=………………………………………………………………….…………….
(ABBA)16=……………………………………………………………………………….
(1023)10=….............................................................................................................
..............................................................................................................................
(200)10=…...............................................................................................................
..............................................................................................................................
1.1.3.3 Bereken de hexadecimale waarde.
(2047)10=….............................................................................................................
..............................................................................................................................
(201)10=…...............................................................................................................
..............................................................................................................................
(11011010100110111)2=……………………………………………………………….
(10100110011110001)2=……………………………………………………………….
12
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.2 Rekenen met binaire getallen.
1.2.1 Wiskundige bewerkingen
1.2.1.1 Binair optellen.
0+0 =
0
0
0+1 =
1
0
1+0 =
1
0
1+1 =
0
1
Overdrachtsbit (carrybit)
Sombit
Voorbeeld van een som.
111
10101
+
11
11000
Oefeningen
Bereken volgende sommaties:
10111
+
1101
..............
101
+
1011
..............
Toegepaste informatica
13
VRIJ TECHNISCH INSTITUUT
1.2.1.2 Het two's complement.
Omdat negatieve getallen niet bestaan in het binaire talstelsel worden de negatieve
getallen voorgesteld door het two's complement. En in plaats van het verschil te maken
van twee getallen, zal men het negatieve getal, het two's complement, bij het eerste getal
optellen.
Het voordeel van de two's complement is dat men aan de MSB bit (Meest Significante bit)
kan zien of een getal positief of negatief is. Om te weten welke de MSB bit is moet men
weten welk de bit breedte is die men in één keer verwerkt. De bit breedte is afhankelijk
van de architectuur van de processor en het geheugen. De meest voorkomende bit
breedtes zijn 8, 16 of 32 bit. Tegenwoordig worden er ook al 64bit processoren gebruikt.
Het two's complement van een binair getal wordt bekomen door dit getal te
inverteren en er dan 12 bij op te tellen.
Een voorbeeld: Hoe wordt het getal -1010 binair voorgesteld in een 8bit architectuur?
We schrijven het getal eerst en vooral binair (we vergeten het minteken even):
1010 = 000010102
(We vullen het getal links aan met nullen omdat we weten dat het getal 8 bit breed is.)
Vervolgens inverteren we dit binaire getal. Het inverse bekomt men door 0 te wijzigen in 1
en 1 te wijzigen in 0.
000010102 => 111101012
We teller 12 bij op:
111101012
+ 000000012
111101102
Het two's complement van 1010 is dus 111101102 (bij een 8-bit getal)
We kunnen de proef maken door de binaire waarde van 1010 en -1010, de two's
complement op te tellen.
111111
+
000010102 1010
111101102 -1010
1000000002
valt buiten de 8 bit, het resultaat is dus 000000002 is 010 klopt dus.
Oefeningen
Bereken het two's complement van volgende binaire getallen: (8 bit breed)
1010112 = …............................................................................................................
...............................................................................................................................
12 = ….....................................................................................................................
...............................................................................................................................
111111112= .............................................................................................................
...............................................................................................................................
14
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.2.2 Logische bewerkingen
Logische bewerkingen op het binaire talstelsel komt veelvuldig voor bij het programmeren
van allerhande toepassing. Dit gaat van het programmeren van een PLC, domotica, tot
zelfs bepaalde formules in een rekenblad.
Logische bewerkingen zijn enkel mogelijk op elementen of variabelen van het type bool.
Bool duidt op één bit in het binaire talstelsel. Een variabele van het type bool heeft dus
maar twee toestanden: 1 en 0. Andere benamingen van de twee toestanden van een
variabele van het type bool zijn: true en false, waar en onwaar(NIETWAAR), H en L.
In eerste instantie gebruiken we de toestand 1 en 0 in de oefeningen. Verder in de cursus,
als we de PLC gaan programmeren, zullen we gebruik maken van TRUE en FALSE. Deze
worden in de meeste programmeertalen gebruikt.
1.2.2.1 De NIET-functie.
Het resultaat van de NIET of NOT functie is 1 als het element 0 is, en 0 als het element 1
is. We verkiezen de internationale schrijfwijze 'NOT' boven de Nederlandstalige 'NIET'.
De korte schrijfwijze wordt genoteerd met een streep boven het element. Bijvoorbeeld A.
NOT 0
=1
NOT 1
=0
Het is ook mogelijk om de NOT functie van een byte te berekenen. Het resultaat bekomt
men door de NOT functie te nemen op elke bit afzonderlijk.
Vb NOT 100111102 = 011000012
Oefeningen
NOT 101010102=.........................
NOT 111000102=.........................
Toegepaste informatica
15
VRIJ TECHNISCH INSTITUUT
1.2.2.2 De EN-functie
Het resultaat van de EN of AND functie is 1 als beide elementen 1 zijn. We verkiezen de
internationale schrijfwijze 'AND' boven de Nederlandstalige 'EN'.
De korte schrijfwijze van 'AND' is '.'.
Als we een element A en een element B hebben beide van het type BOOL, hebben we 4
mogelijke combinaties. In de tabel zijn al de mogelijke combinaties genoteerd. Elke rij is
een mogelijke combinatie van A en B. Het resultaat van de AND functie bij deze
combinatie zie je in de derde kolom. Een dergelijk tabel noemen we een waarheidstabel.
A
B
C
A.B.C
A
B
A AND B
of A.B
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
0
1
1
0
1
0
0
1
0
0
0
1
1
1
1
0
1
0
1
1
0
0
1
1
1
1
Met een derde element of variabele heeft men 8
mogelijkheden. (23)
Het is ook mogelijk om de AND functie van 2 bytes te berekenen. Het resultaat bekomt
men door de AND functie te nemen op elke bit afzonderlijk.
Vb 101112 AND 100111102 = 101102
duidelijker is:
10111
AND 10011110
10110
Oefeningen
Bereken de volgende AND functies:
10111
AND 1001101
...............................
1010101
AND
11011
.............................
16
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.2.2.3 De OF-functie.
Het resultaat van de OF of OR functie is 1 als één van beide elementen 1 is. We verkiezen
de internationale schrijfwijze 'OR' boven de Nederlandstalige 'OF'.
De korte schrijfwijze van 'OR' is '+'.
A
B
C
A+B+C
A
B
A OR B
of A+B
0
0
0
0
0
0
1
1
0
0
0
0
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0
1
1
1
1
1
0
1
1
1
1
0
1
1
1
1
1
Met een derde element of variabele heeft men 8
mogelijkheden. (23)
Het is ook mogelijk om de OR functie van 2 bytes te berekenen. Het resultaat bekomt men
door de OR functie te nemen op elke bit afzonderlijk.
Vb 100112 OR 100110102 = 100110112
duidelijker is:
10011
OR
10011010
10011011
Oefeningen
Bereken de volgende OR functies:
10111
OR
1001101
...............................
1010101
OR
11011
.............................
Toegepaste informatica
17
VRIJ TECHNISCH INSTITUUT
1.2.2.4 EXOF-functie.
Exclusieve Of functie.
Het resultaat van de EXOF of XOR functie is 1 als de elementen verschillend zijn van
elkaar. We verkiezen de internationale schrijfwijze 'XOR' boven de Nederlandstalige
'EXOF'.
A
B
C
A XOR B XOR C
A
B
A XOR B
0
0
0
0
0
0
0
0
0
1
1
0
1
1
0
1
0
1
1
0
1
0
1
1
0
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
1
Met een derde element of variabele heeft men 8
mogelijkheden. (23)
Het is ook mogelijk om de XOR functie van 2 bytes te berekenen. Het resultaat bekomt
men door de XOR functie te nemen op elke bit afzonderlijk.
Vb 100112 OR 100110102 = 100110112
duidelijker is:
10011
XOR 10011010
10001001
Oefeningen
Bereken de volgende XOR functies:
10111
XOR 1001101
...............................
1010101
XOR
11011
.............................
18
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.2.3 Oefeningen
Bereken het 2nd complement van volgende 8-bit getallen:
(-6)10 =……..………………………………………………………………………………………
(-1)10 =…..…………………………………………………………………………………………
(-15)10 =..……………………………………………………………………………………………
(-200)10=.……………………………………………………………………………………………
(-83)10 =..……………………………………………………………………………………………
Voer volgende berekeningen binair uit.
Ook in deze oefening werken we met de 8e bit als tekenbit.
1112
+
10002
710
+1210
………………
11112
+
1000012
-1510
+3310
+………………
10100112
8310
……………..
110112
-2710
+………………
100102
11112
………………
Toegepaste informatica
……………..
………………
………………
+
+………………
………………
………………
+
……………..
………………
-1810
-1510
……………..
+………………
………………
19
VRIJ TECHNISCH INSTITUUT
Voer volgende logische bewerkingen uit.
10111000
10111000
AND 10011010
XOR 10011010
…………..
…………..
10111101
10111101
AND 00011010
XOR 00011010
…………..
…………..
10111000
NOT 00011010
10011010
…………..
OR
…………..
NOT 10111101
00111101
OR
…………..
10011010
…………..
20
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.3 De microprocessor: werking
Het volgende deel gaat over de principiële werking van een microprocessor. We nemen
een fictieve, zeer eenvoudige 8 bit processor als voorbeeld.
Een 8bit processor kan allerhande logische en rekenkundige bewerkingen uitvoeren op, in
dit geval, 8bit binaire getallen. Naast de logische en rekenkundige bewerking zijn er nog
tal van ander functies. Zoals het schuiven van bits, het vergelijken van waardes enz.
Deze processor heeft één Arithmetic Logic Unit, of rekenkundige eenheid, kortweg ALU.
Hedendaagse processors hebben meerdere ALU’s, en hebben een veel uitgebreidere
instructieset. Zij verwerken geen 8 bits maar 16, 32 of zelfs 64 bit binairegetallen. Tevens
verwerken de ALU’s dan meerdere instructies simultaan. En gebeurt de verwerking aan
hogere snelheden.
Kortom onze voorbeeld processor is maar een fractie van de hedendaagse processoren.
1.3.1 Principiële werking.
Een microprocessor kan dus een hele reeks instructies verwerken. Deze instructies zijn
afhankelijk van Processor type en van fabrikant. De verzameling van deze instructies
noemt instructieset. Zo een instructieset is niet meer dan een binaire code waarmee de
instructiedecoder weet welke data, waar naar toe moet en welke bewerking de ALU er
moet op uitvoeren.
Simplistisch gesteld is de instructie set niet meer dan een toewijzing van bepaalde
bewerkingen aan een bepaalde binaire code. Voor de mens is die binaire code of machine
code vertaalt in een leesbare programmeertaal woorden i.p.v. binaire getallen. Deze
programmeertaal noemt men ook assembler of Assembly Language. Het instructieset is
“ingebakken” in de CPU.
Eigenlijk doet de microprocessor drie basis dingen.
•
Hij gebruikt de Arithmetic Logic Unit om verschillende wiskundige operaties uit te
voeren. Optellen, aftellen, delen, vermenigvuldigen, enz…
Moderne processors kunnen deze bewerkingen op grote komma getallen uitvoeren.
•
Hij kan data verplaatsen, schuiven,.. van het ene adres naar een ander adres.
(Van het geheugen naar IO, etc..)
•
Hij kan beslissingen nemen en sprongen maken in het programma.
Toegepaste informatica
21
VRIJ TECHNISCH INSTITUUT
1.3.2 Schematische voorstelling van een microprocessor.
Onderstaande figuur toont een zeer eenvoudige microprocessor architectuur.
Centrale Verwerkings Eenheid (CPU)
DATA
DATA
CONTROL
REGISTER C
Clock
TEST REGISTER
Reset
CONTROL
ALU
CONTROL
DATA
Instructie
decoder
REGISTER A
DATA
DATA
CONTROL
DATA
DATA
CONTROL
CONTROL
DATA
Data bus
CONTROL
ADRESS
REGISTER
INSTRUCTIE
REGISTER
DATA
DATA
Adres bus
DATA
DATA
CONTROL
PROGRAM
COUNTER
CONTROL
REGISTER B
CONTROL
Controle bus
● Een adresbus (8, 16, 32, 64 bit breed) die een bepaalde geheugenplaats, een
logische bouwsteen, een I/O apparaat selecteert.
22
•
Een databus (8, 16, 32, 64 bit breed) die de eigenlijk data van de geadresseerde
(dus de geselecteerde) bouwsteen bevat. Deze data kan ofwel gelezen ofwel
geschreven worden.
•
Een controlbus deze bus controleert de geadresseerde bouwsteen, hij vertelt de
bouwsteen bijvoorbeeld of de data gelezen dan wel geschreven moet worden.
•
Een kloksignaal dit bepaalt het ritme waarmee de instructies worden uitgevoerd.
Een instructie is verschillende klokcycli lang. De lengte is afhankelijk van de
instructie.
•
Een resetsignaal om de processor in een begin toestand te brengen.
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
•
Het A, B en C register, zijn eenvoudige “geheugens” gemaakt met flipflop’s. Deze
registers bewaren de data van de databus voor verwerking in de ALU
•
Het adresregister is op dezelfde manier opgebouwd als de andere registers. Hierin
wordt het adres opgeslagen dat via het programma wordt opgeroepen.
•
Het instructieregister: in dit register wordt de instructie opgeslagen die uit het
programma geheugen wordt gehaald.
•
De programcounter, (het programmaregister), heeft als extra functie dat hij 1
bijtellen kan. De programmacounter wijst naar de plaats in het geheugen waar het
programma staat. Meer specifiek naar de programmalijn waar hij mee bezig is.
•
Het testregister is een speciaal “geheugen” dat het resultaat van een vergelijking of
deze kan de carry bit onthouden.
•
De ALU is een blok die verschillende logische en wiskundige bewerkingen kan
uitvoeren. De simpelste uitvoering zou bijvoorbeeld een opteller kunnen zijn.
•
Het instructieregister is samen met de instructiedecoder verantwoordelijk voor de
controle over al de andere bouwstenen van de processor. Elke instructie wordt
vertaald in een aantal controle signalen waardoor de verschillende bouwstenen
worden aangesproken om iets te doen.
•
Zo zijn er verschillende controle signalen die we in de controlebus terug vinden.
o Het READ signaal: vertelt de geadresseerde om de data te lezen.
o Het WRITE signaal: vertelt de geadresseerde om data op de bus te
schrijven.
o Een controle signaal naar het A-register om de momentele waarde op de
databus op te slaan.
o Ook voor het B en C register, het adresregister, de programcounter en het
instructieregister is er een dergelijk controle signaal.
o Een controle signaal naar de programcounter om één te verhogen
o Een controle signaal naar de programcounter om te resetten.
o Signalen naar de ALU waarmee de verschillende functies worden
aangesproken. (Optellen, aftellen, etc…)
o Een controle signaal om de waarde in het testregister te bewaren.
Toegepaste informatica
23
VRIJ TECHNISCH INSTITUUT
1.3.3 Assembler.
Al de instructies in de instructiedecoder, eigenlijke een binaire code, worden voor de
programmeur als assembler-code vertaalt, deze assembler-code is beter leesbaar.
Een microprocessor beschikt dus over een bepaald instructie-set vast ingebakken in de
instructiedecoder van de microprocessor.
Een eenvoudige assembler instructieset van een eenvoudige processor zou er als volgt
kunnen uitzien.
● LOADA mem: Laad register A met de waarde van adres “mem”.
● LOADB mem
24
: Laad register B met de waarde van adres “mem”.
•
CONB con
•
SAVEB mem : Bewaar de waarde van register B op adres “mem”.
•
SAVEC mem: Bewaar de waarde van register C op adres “mem”.
•
ADD
: Tel de waarde van register A bij die van B en bewaar het resultaat
in register C
•
SUB
: Verminder de waarde van register A met deze van B en bewaar het
resultaat in register C.
•
MUL
: Vermenigvuldig de waarde van A met deze van B en bewaar het
resultaat in register C.
•
CMP
: Vergelijk de waarde van register A met deze van register B en
bewaar het resultaat in het test register.
•
JUMP addr : spring naar een bepaald adres. (het programma). De
programcounter wordt aangepast.
•
JEQ addr
•
JNEQ addr : Spring …, als niet gelijk, naar een adres.
•
JG addr
: Spring …, als groter dan, naar een adres.
•
JGE addr
: Spring …, als groter dan of gelijk, naar een adres.
•
JL addr
: Spring …, als kleiner dan, naar een adres.
•
JLE addr
: Spring …, als kleiner dan of gelijk aan, naar een adres.
•
STOP
: Stop het programma.
: Laad een waarde “con” in register B
: Spring …, als gelijk, naar een adres. Deze instructie volgt
onmiddellijk na een vergelijk instructie. Het resultaat in het
testregister wordt gebruikt.
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.3.4 Een eenvoudig programma.
Het volgend voorbeeld van een eenvoudig programma verduidelijkt de werking van de
processor.
Stel we schrijven een eenvoudig programma om twee getallen met elkaar op te tellen.
Deze getallen bevinden zich in het geheugen op adres 124 en 125.
Het programma:
LOADA
124
; laad de waarde van geheugenadres 124 in het register A
LOADB
125
; laad de waarde van geheugenadres 125 in het register B
ADD
; Tel de waarde van het register A bij deze van de waarde van
register B en bewaar het resultaat in register C
SAVEC
126
STOP
; bewaar de waarde van register C op het geheugenplaats 126.
; programma einde.
In detail(vereenvoudigd) zou het volgende gebeuren:
De instructie ‘LOADA 124’ wordt vertaalt in volgende stappen.
Na een reset staat in de programmacounter het adres van de eerste regel van het
programma.
● In een eerste klokcyclus wordt de instructie die te vinden is op het adres van de
programmacounter in het instructieregister ingelezen.
Op de adresbus staat het adres dat in de programmacounter staat, de
geadresseerde bouwsteen, bijvoorbeeld een geheugen, krijgt de opdracht de
gegevens van dit adres op de DATABUS te plaatsen. Deze DATA wordt in het
instructie register opgeslagen.
● In dit geval is er nog een tweede cyclus nodig om het tweede deel van de instructie
in te lezen, (het adres waar de eerste waarde gehaald moet worden). Het tweede
gedeelte van deze instructie, 124 in het voorbeeld, wordt in dit geval in het
adresregister bewaard.
● De derde klokcyclus zorgt er voor dat de gegevens van het adres 124 in het register
A bewaard wordt.
(In dit geval heeft de instructie 3 klokcycli nodig gehad. Hoeveeel cycli een
instructie nodig heeft om uitgevoerd te worden is afhankelijk van de complexiteit
van de instructie, van de breedte van de databus en de registers.)
● De instructie eindigt met het verhogen van de programmacounter.
De volgende instructie wordt gelezen.
● De volgende instructie wordt met een volgende klokcyclus in het instructieregister
gelezen.
De instructie LOADB 125 wordt vertaalt involgende stappen.
● Nu wordt het getal 125 in het adresregister geplaatst.
● Het verder verloop van deze instructie is analoog aan de vorige.
.
Toegepaste informatica
25
VRIJ TECHNISCH INSTITUUT
1.3.5 Processor eigenschappen
Je merkt dat voor dit eenvoudig programma met eenvoudige instructies al verschillende
klokcycli nodig zijn voor de uitvoering van een programma regel.
De klokfrequentie, de breedte van de data en adresbus, de complexiteit van de processor
(het aantal ALU’s) de grootte van het instructie set beïnvloeden de uitvoeringstijd van het
programma.
∗ Hoe hoger de klokfrequentie, hoe sneller de uitvoering van een programma.
∗ Meerdere ALU’s en dus de mogelijkheid om verschillende bewerkingen gelijktijdig uit te
voeren, beïnvloed de verwerkingssnelheid gunstig.
∗ Hoe breder de databus, adresbus en registers hoe meer informatie tegelijk verwerkt kan
worden, hoe sneller de verwerking dus.
26
Toegepaste informatica
VRIJ TECHNISCH INSTITUUT
1.4 Doelstellingen.
1. De functie van het binaire talstelsel verklaren.
2. De functie van het hexadecimale talstelsel verklaren.
3. Een binair getal omrekenen naar decimaal en omgekeerd.
4. Een hexadecimaal getal omrekenen naar decimaal en omgekeerd.
5. Een hexadecimaal getal omrekenen naar binair en omgekeerd.
6. Een binaire som kunnen berekenen.
7. Het two’s complement van een getal kunnen berekenen.
8. Een binair verschil kunnen berekenen.
9. Een AND functie van binaire getallen kunnen berekenen
10. Een OR functie van binaire getallen kunnen berekenen
11. Een NOT functie van binaire getallen kunnen berekenen
12. Een XOR functie van binaire getallen kunnen berekenen
13. De functie van de ALU in een processor kunnen omschrijven.
14. De belangrijkste delen op het schematische overzicht van een CVE kunnen
aanduiden..
15. De functie van de adresbus in een processorsysteem kunnen omschrijven.
16. De functie van de databus in een processorsysteem kunnen omschrijven.
17. De functie van de controlbus in een processorsysteem kunnen omschrijven.
18. De functie van het kloksignaal in een processorsysteem kunnen omschrijven.
19. De functie van het resetsignaal in een processorsysteem kunnen omschrijven.
20. De functie van de programcounter kunnen omschrijven.
21. De functie van het instructieregister en de instructiedecoder kunnen omschrijven.
22. Een eenvoudig assembler programma kunnen verklaren.
23. De belangrijkste factoren die de verwerkingstijd beïnvloeden kunnen opnoemen.
Toegepaste informatica
27
VRIJ TECHNISCH INSTITUUT
28
Toegepaste informatica
Download