• No results found

TDA143 Programmerade System. Föreläsning 16 Datorteknik Del 1 Jonas Duregård

N/A
N/A
Protected

Academic year: 2022

Share "TDA143 Programmerade System. Föreläsning 16 Datorteknik Del 1 Jonas Duregård"

Copied!
36
0
0

Loading.... (view fulltext now)

Full text

(1)

TDA143 – Programmerade System

Föreläsning 16 – Datorteknik Del 1 Jonas Duregård

(2)

Labbkomplettering

• Om du missat någon deadline kan du redovisa och få koder för tidigare labbar på något av de återstående labbpassen

• Kompletteringar utförs i mån av tid, det vill säga hjälp och redovisning av labb 4 prioriteras

• De flesta labbpass har haft fria handledare vid något tillfälle, men närmare deadline för labb 4 kan det ändras

• Redovisa så snart som möjligt (idag exempelvis)

(3)

Datorteknik

• Hur bygger man en dator? Hur kan elektriska signaler utföra beräkningar?

• Låg abstraktion!

• Först lite omkringliggande teori:

• Binära tal

• Boolesk logik

(4)

Boolesk logik

(5)

Vad är logik?

• Ett sätt att resonera om vad som är sant

• Det finns inte en logik utan flera olika logiska system

• Satslogik (Boolesk logik)

• Predikatlogik

• Första ordningens logik

• …

• De olika logikerna skiljer sig i vad som kan uttryckas och vilka sanningar som kan bevisas

• Notera att när jag kallar modellen i ett program för "logiken" så slarvar jag lite, det har inte direkt med formell logik att göra

(6)

Boolesk logik

• Boolesk logik är ett mycket enkelt logiskt system

• Består av två logiska värden: 0 och 1 (falskt och sant)

• Som datatypen boolean (0=false, 1=true)

• Vanliga operatorer är: och, eller, icke (&&, ||, !)

(7)

Notation: Kärt barn har (för) många namn

• Och (konjunktion):  ∧ ,  · ,  && , a AND b

• Eller (disjunktion):  ∨ ,  + ,  || , a OR b

• Icke (negation, invers): ¬, , ! , NOT 

• För att orsaka minimal förvirring använder jag Java-operatorer:

&&, ||, !

Symbol Används av

·, +, Hårdvaruutvecklare

∧, ∨, ¬ De flesta matematiker/logiker

&&, ||, !, AND, OR, NOT Programmerare



(8)

Boolesk algebra och booleska funktioner

• Operatorerna och sanningsvärdena i boolesk logik bildar en algebra

• Vi kan skriva funktioner som  ,  = ( &&  )   (!  && ! )

• Oftast skippar vi "f(x,y)="-biten och betraktar varje uttryck med variabler som definition av en funktion

(9)

Funktionstabeller

• Varje funktion med N variabler har en egen funktionstabell

• Varje rad beräknas genom en av unik tilldelning av variablerna

• 2N rader

• Exakt som sanningstabeller i satslogik (fast 1/0 istället för sant/falskt)

• Alla operatorer i Boolesk algebra kan definieras genom funktionstabeller

• Alla satser i Boolesk algebra kan bevisas genom att jämföra kolumner i funktionstabeller

• Quiz: Hur många olika funktioner med två variabler finns det?

• Svar: 24 = 16 (Det finns alltså bara sexton olika Booleska operatorer)



0 1 0

1 0 1

‼ 

! 

Bevis att ‼  = 

(10)

Funktionstabeller för operatorer

• Varje operator kan definieras med en funktionstabell p q

0 0 0 1 1 0 1 1

p && q 0 0 0 1

p q 0 0 0 1 1 0 1 1

p || q 0 1 1 1

p 0 1

!p 1 0

Exakt som multiplikation Nästan som addition

(11)

Exempeluppgift: Bevisa De Morgans första lag

• Lagen säger att !(p && q) = !p || !q

("inte p och q" är detsamma som "inte p eller inte q"

p q 0 0 0 1 1 0 1 1

p && q 0 0 0 1

!(p && q) 1

1 1 0

!p 1 1 0 0

!q 1 0 1 0

!p || !q 1 1 1 0

(12)

Uteslutande eller (Exclusive or XOR)

• Logiskt eller är inkluderande, det innefattar fallet när båda operanderna är sanna

• XOR är som OR, fast exkluderande

• Mer som vi använder "antingen eller" i svenska p q

0 0 0 1 1 0 1 1

p || q 0 1 1 1

p q 0 0 0 1 1 0 1 1

p XOR q 0 1 1 0

I Java kan man få XOR genom p^q eller p!=q

(13)

Talsystem

(14)

Talsystem: Binära och decimala tal

• Vanligtvis räknar vi i det decimala talsystemet

• Har tio siffror (0-9)

• Datorer räknar binärt, två siffror: 0 och 1

• Varför tror ni vi människor gillar det decimala talsystemet?

• Förmodligen för att vi har tio fingrar

• Det finns ingen naturlig fördel med att ha just tio siffror

• Hade vi haft tolv fingrar hade alla räknat i ett duodecimalt talsystem och det skulle fungera precis lika bra (femmans gångertabell skulle vara lite svårare, sexans lite enklare)

(15)

Decimala talsystemet – bas tio

• Siffror: 0,1,2,3,4,5,6,7,8,9

• Från höger till vänster anges ental, tiotal, hundratal …

• Siffra N från höger (börjar på N=0) anger 10N.

• Exempel:

• I allmänhet har siffran s på position p (från 0 till höger) värdet s×10p

• Vi säger att det decimala talsystemet har basen 10

• Vi skriver 23410 för att visa att talet är decimalt (när det behöver förtydligas) 234 = 2×102 + 3×101 + 4×100

9601 = 9×103 + 6×102 + 3×101 + 4×100

(16)

Binära talsystemet – bas två

• Binära talsystemet har basen två, och siffrorna 0 och 1

• Från höger till vänster anges ental, tvåtal, fyrtal, åttatal, sextontal …

• Exempel

• I allmänhet har siffran s på position p (från 0 till höger) värdet s×2p

• Vad är det högsta talet som kan skrivas med 8 bitar?

• 28-1 = 255 (så det finns 256 olika 8-bitars tal, 0-255) 1012 = 1×22 + 0×21 + 1×20=510

11112 = 1×23 + 1×22 + 1×21 + 1×20=1510

(17)

Hexadecimala talsystemet

• Bas sexton, siffrorna 0-9,A,B,C,D,E,F

• Höger till vänster: ental, sextontal, 256-tal …

• Exempel

• Lätt att räkna om binärt-hexadecimalt, 4 binära siffror blir alltid en hexadecimal

• Exempel: E316 = 1110 00112

• Alla 8-bitars tal kan skrivas med 2 hex-siffror

10 0

1 2

16

10 0

1 16

316 0

160 256

16 0

16 10

16 1 0

A 1

47 15

32 16

15 16

2 F

2

= + +

=

× +

× +

×

=

= +

=

× +

×

=

bas 10 bas 2 bas 16

0 0000 0

1 0001 1

2 0010 2

3 0011 3

4 0100 4

5 0101 5

6 0110 6

7 0111 7

8 1000 8

9 1001 9

10 1010 A

11 1011 B

12 1100 C

13 1101 D

14 1110 E

15 1111 F

(18)

Bråktal i olika talsystem

• Bråktalsdelen efter decimalkomma är tiondel, hundradel, tusendel…

• Passar vår tidigare formel med potenser:

• Så vad är 0.0112 decimalt?

• Svar: 2-2+2-3 = 1/4 + 1/8 = 3/8

• I allmänhet (binära tal): Första siffran efter komma är halvtal, sedan fjärdedelstal, åttondel, sextondel …

100 / 5 10 / 4 3 20 10

5 10

4 10

3 10

2 45

,

23 = × 1 + × 0 + × 1 + × 2 = + + +

(19)

Addition i andra talbaser

• Fungerar precis som i decimal bas, med anpassning för fler/färre siffror

1 1 1

5 6 7 8

+ 7 5 3

6 4 3 1

1 1 1 1

1 0 1 1

+ 1 1 1

1 0 0 1 0

(20)

Humor!

(21)

Digitala system

(22)

Digitala system

• Digitala system opererar på digitala signaler

• Varje digital signal har ett logiskt värde 1 eller 0

• Hur man fysiskt representerar signalerna varierar. Exempel:

• 1 och 0 motsvarar +5V eller 0V spänning i en ledare

• 1 och 0 motsvarar positiv eller negativ magnetisk pol

• Systemets beteende kan beskrivas med boolesk logik

• Flera signaler sammantaget bildar binära tal

(23)

Digitala system

• Enkla digitala system realiserar boolska funktioner

• Nästa vecka ska vi kika närmare på hur det går till

• Konkret är det en elektronisk krets, med ett antal kontakter

• Varje 0 och 1 är spänning i en kontakt (till exempel 0V/5V)

u=x && y || !Z

x y z

u=x && y || !Z

1 0 1

0

u=x && y || !Z

1 1 1

1 u

(24)

Den enklaste riktigt användbara kretsen

U = X + Y

• Insignaler: Två N-bitars binära tal (2xN digitala signaler)

• Utsignaler: Ett N-bitars tal, summan av de två in-talen

• Tänk er 2x32 strömbrytare (för N=32) för att ställa in insignalerna och lysdioder för att visa resultatet

• Omedelbart när en strömbrytare slås om visas den nya summan

• Som addition av int i Java (0 till 232-1)

… X (xN-1…x1x0)

… Y (yN-1…y1y0)

… U (uN-1…u0)

(25)

Addition, exempel

U = X + Y

X (x3x2x1x0) Y (y3y2y1y0)

U (u3u2u1u0)

U = X + Y

0 1 0 1 1 0 0 1

1 1 1 0

X=0101=510

Y=1001=910 U=1110=1410

(26)

ALU (Aritmetisk logisk enhet)

• En ALU (Aritmetisk-logisk enhet) är en komponent som kan utföra många aritmetiska operationer (+-*/%…)

• Funktionen väljs genom att ställa in en väljarsignal (F)

• Här har F fyra bitar så ALUn har 24 = 16 möjliga operationer

• Exempel kan man ställa in den så

U=D+E eller U=D-E, genom att ändra F

• Nästan omedelbart när någon insignal ändras

ändras också utsignalerna U(8)

ALU F(4)

D(8) E(8)

Carry

(27)

Digitala system med minnen

• En minneskomponent

• Strömbrytare för att ställa in ett tal

• Ett minneselement som lagrar ett tal

• En adderar-krets beräknar ständigt summan av det inställda och lagrade talet

• När man trycker på en knapp skrivs det gamla minnesvärdet över med det uträknade

• Som en enkel miniräknare!

Minne

U = X + Y

Strömbrytare

Knapp Nuvarande minnesvärde

Uträknat nytt minnesvärde

(minnet ändras när knappen trycks ner)

(28)

En dator som ett digitalt system

• En dator är ett invecklat digitialt system

• Beräkningar utförs av ALU och resultat skrivs till minne

• En styrenhet läser in program från minnet och översätter till insignaler för de olika komponenterna i systemet

• En modern PC kan utföra flera miljarder beräkningar i sekunden

Förenklad bild av en processor (CPU) med

minne, ALU och styrenhet

(29)

Maskinkod

• Maskinkod är det mest primitiva programmeringsspråket

• Ett program är en följd av tal, som representerar olika operationer

• Av typen "addera två tal och skriv till minnet" eller "kontrollera om värdet på minnesadress A är är 0, fortsätt i så fall körningen från den här minnesadressen"

• När programmet körs finns en särskilt pekare som håller reda på vilken instruktion som ska köras härnäst

• Hela datorns funktion kan beskrivas som "läs in en instruktion, utför den, börja om" (Maskincykeln: fetch-decode-execute)

• Olika processorer har olika maskinkodsspråk

• Exekverbara filer (.exe på Windows) består av maskinkod

(30)

Kompilering

• Att skriva maskinkod direkt är extremt långsamt och svårt

• Koden fungerar bara för just den typ av processor den är skriven för

• Därför uppfanns högnivåspråk (som Java!)

• Att kompilera ett program innebär att man översätter till ett språk på lägre nivå, och oftast i slutändan ner till maskinkod

• Javas byte-kod är lite av ett specialfall...

(31)

Mikrokontroller

• En mikrokontroller är en liten dator

• Har inget operativsystem

• I/O Portar för att läsa av sensorer eller tända lysdioder eller slå på/av anslutana maskiner

• Finns överallt

• Programmeras oftast i programspråket C (som påminner en hel del om Java)

(32)

Portar för att läsa/skriva digitala signaler

void main() { while(true){

if (digitalRead(7))

digitalWrite(8,HIGH);

else

digitalWrite(8,LOW);

} }

C-kod (notera likheten med Java)

Arduino, en mikrokontroller avsedd för hobbyprojekt

(33)

Tentafrågor, datorteknik (del 1)

Datorteknik ingår i Del A (alternativfrågor), ni förväntas kunna:

• Omvandla mellan binärt, decimalt och hexadecimalt

• Vilka formler är ekvivalenta (samma funktion)

• Vilken formel hör till sanningstabellen (eller tvärt om)

• Vad innebär: Maskinkod, mikrokontroller, ALU, CPU ...

...

(34)

Formeln är en konjunktion (&&) Tänk "när är den 0 på grund av första/andra operanden"

(35)

Mind blowing

Två tänkvärdheter:

• 10*10=100 är sant i alla talsystem

• En enda operator NAND, negationen av och (p NAND q = !(p && q)) kan användas för att definiera ALLA andra booleska operationer

• !p = p NAND p

• p && q = (p NAND q) NAND (p NAND q)

• p || q = !(!p && !q) = (p NAND p) NAND (q NAND q)

(36)

Framöver

• Måndagens föreläsning är 15-17 

• Onsdag nästa vecka är sista labbpasset

• Planera för att ha redovisat alla labbar innan det passet

• Fredag nästa vecka är en repetionsföreläsning

• Jag kommer gå igenom ett par tentauppgifter och sådant

References

Related documents

Socialnämnden beslutar att godkänna förvaltningens förslag till ändringar i socialnämndens delegationsordning. Reservation

Ett medborgarförslag har inkommit till kommunen med förslag att bygga vidare på cykelvägen längs väg 1341 från Höörs kommungräns till Ludvigsborg. Förslagsställaren

-Arvodesgruppen redovisar reviderat förslag av reglemente för ersättning till förtroendevalda vid kommunstyrelsens sammanträde i maj 2018. Sammanfattning

igångsättningstillstånd för Relining Hörby kommun 2020 Beslutet skickas

delegationsordning beslutad av tekniska nämnden 2019-01-24, § 12 samt förteckning över beslut fattade enligt vidaredelegation till befattningshavare inom tekniska

[r]

Delårsrapport 1 januari- 31 augusti 2017 Kommunstyrelsens förslag till kommunfullmäktige Kommunfullmäktige beslutar.. att godkänna delårsrapport för 1 januari-31 augusti 2017

Den 28 maj 2018 beslutar fullmäktige att uppdra till samtliga nämnder att lämna yttrande över revisionens slutsatser och rekommendationer gällande beslutsunderlag