37
Elettronica dei Sistemi Programmabili A.A. 2013-2014 Microcontrollori Esercizi

Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

Elettronica dei Sistemi Programmabili

A.A. 2013-2014

Microcontrollori

Esercizi

Page 2: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

2/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Registro speciale APSR: flag della ALU

Flag della ALU

N (b31) : copia di b31 del risultato. '1' se negativo, '0' se posivo o zero

Z (b30) : '1' se il risultato è pari a zero. '1' anche nel caso di confronto tra due numeri uguali

C (b29) : riporto per il risultato. Per una addizione senza segno '1' se c'è stato overflow. Per una sottrazione senza segno, è l'inverso del prestito d'uscita.

V (b28) : overflow per il risultato. '1' se c'è stato un overflow dopo una addizione o una sottrazione con segno.

Page 3: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

3/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Uso delle flag della ALU

nelle operazioni di addizione

Page 4: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

4/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

Page 5: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

5/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +

Page 6: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

6/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =

Page 7: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

7/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

1110111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

riporti intermedi

Page 8: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

8/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

0

no riporto d'uscita C = 0

Page 9: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

9/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

0

no riporto d'uscita C = 0

risultato negativo N = 1

Page 10: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

10/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

0

no riporto d'uscita C = 0

risultato negativo N = 1

Z = 0risultato ≠ 0

Page 11: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

11/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 1 addizione a 32 bit

0x70000000 + 0x70000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

no riporto d'uscita C = 0

risultato negativo N = 1

0

risultato ≠ 0 Z = 0

somma da pos. a neg. → overflow V = 1

Page 12: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

12/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 2 addizione a 32 bit

verificare che: N Z C V

0x90000000 + 0x90000000 = 0x20000000 0 0 1 1

0x80000000 + 0x80000000 = 0x00000000 0 1 1 1

0xFFFFFFF8 + 0x00000007 = 0xFFFFFFFF 1 0 0 0

Page 13: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

13/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Come viene usato il carry d'uscita

per le addizioni a più cifre?

Page 14: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

14/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Uso delle flag della ALU

Esempio: addizione a 64 bitSuddivisa come somma di “due cifre” a 32 bit

ADDS r0, r0, r2ADCS r1, r1, r3

r0r1

r2r3

r0r1

+

=

r0r1

r2r3

r0r1

+

=

C

Page 15: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

15/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 3 addizione a 64 bit

0x7000000070000000 + 0x7000000070000000 =

0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

0 +0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0000

C=0

= 0xE0000000E0000000

Ok anche se deve essere segnalato l'overflow

2x[ 7 x 1615 + 7 x 167 ] = 14 x 1615 + 14 x 167

E E

Page 16: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

16/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 4 addizione a 64 bit

0x7000000090000000 + 0x7000000070000000 =

1001 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =0000 0000 0000 0000 0000 0000 0000 0000

1 +0111 0000 0000 0000 0000 0000 0000 0000 +0111 0000 0000 0000 0000 0000 0000 0000 =1110 0000 0000 0000 0000 0000 0000 0001

C=1

= 0xE000000100000000

Ok anche se deve essere segnalato l'overflow

[7 x 1615 + 9 x 167 ] + [7 x 1615 + 7 x 167 ] =

14 x 1615 + 1 x 168

Page 17: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

17/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Uso delle flag della ALU

nelle operazioni di sottrazione

Page 18: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

18/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 5 sottrazione a 32 bit

0x00001234 - 0x00001000

0000 0000 0000 0000 0001 0010 0011 0100 -0000 0000 0000 0000 0001 0000 0000 0000 =

Page 19: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

19/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 5 sottrazione a 32 bit

0x00001234 - 0x00001000 = 0x00000234

0000 0000 0000 0000 0001 0010 0011 0100 -0000 0000 0000 0000 0001 0000 0000 0000 =0000 0000 0000 0000 0000 0010 0011 0100

0prestito

Page 20: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

20/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 5 sottrazione a 32 bit

0x00001234 - 0x00001000 = 0x00000234

0000 0000 0000 0000 0001 0010 0011 0100 -0000 0000 0000 0000 0001 0000 0000 0000 =0000 0000 0000 0000 0000 0010 0011 0100

no prestito d'uscita C = 1

risultato positivo N = 0

risultato ≠ 0 Z = 0

no overflow V = 0

0

Page 21: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

21/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 6 sottrazione a 32 bit

0x00000004 - 0x00000005

0000 0000 0000 0000 0000 0000 0000 0100 -0000 0000 0000 0000 0000 0000 0000 0101 =1111 1111 1111 1111 1111 1111 1111 1111

1abbiamo prestito in uscita

-1-1-1-1 -1-1-1-1 -1-1-1-1 -1-1-1-1 -1-1-1-1 -1-1-1-1 -1-1-1-1 -1-1-1

Page 22: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

22/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 6 sottrazione a 32 bit

0x00000004 – 0x00000005 = 0xFFFFFFFF

0000 0000 0000 0000 0000 0000 0000 0100 -0000 0000 0000 0000 0000 0000 0000 0101 =1111 1111 1111 1111 1111 1111 1111 1111

prestito d'uscita C = 0

risultato negativo N = 1

Z = 0

no overflow V = 0

1-1 in complemento a 2

risultato ≠ 0

Page 23: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

23/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Come viene usato il carry d'uscita

per le sottrazioni a più cifre?

Page 24: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

24/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Uso delle flag della ALU

Esempio: sottrazione a 64 bitSuddivisa come operazione a “due cifre” a 32 bit

SUBS r0, r0, r2SBCS r1, r1, r3

r0r1

r2r3

r0r1

-

=

r0r1

r2r3

r0r1

-

=

C

serve per segna-lare il prestito

Page 25: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

25/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Esempio n. 7 sottrazione a 64 bit

0x0000000100000001 - 0x0000000000000003 =

0000 0000 0000 0000 0000 0000 0000 0001 -0000 0000 0000 0000 0000 0000 0000 0011 =1111 1111 1111 1111 1111 1111 1111 1110C=0

= 0x00000000FFFFFFFE

-10000 0000 0000 0000 0000 0000 0000 0001 -0000 0000 0000 0000 0000 0000 0000 0000 =0000 0000 0000 0000 0000 0000 0000 0000

232 + 1 – 3

= 232 - 2

Page 26: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

26/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Per quale motivo nelle sottrazioni

il carry d'uscita è negato?

Page 27: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

27/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Complemento a 2

0x0000000100000001 - 0x0000000000000003 =

0000 0000 0000 0000 0000 0000 0000 0001 -0000 0000 0000 0000 0000 0000 0000 0011 =1111 1111 1111 1111 1111 1111 1111 1110

0000 0000 0000 0000 0000 0000 0000 0001 +1111 1111 1111 1111 1111 1111 1111 1100 + 1 =1111 1111 1111 1111 1111 1111 1111 1110

equivale a :

nego e aggiungo 1

0xFFFFFFFE

deve venire: 0x00000000FFFFFFFE

Page 28: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

28/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Complemento a 2

0x0000000100000001 - 0x0000000000000003 =

0000 0000 0000 0000 0000 0000 0000 0001 -0000 0000 0000 0000 0000 0000 0000 0011 =1111 1111 1111 1111 1111 1111 1111 1110

0000 0000 0000 0000 0000 0000 0000 0001 +1111 1111 1111 1111 1111 1111 1111 1100 + 1 =1111 1111 1111 1111 1111 1111 1111 1110

equivale a :

nego e aggiungo 1

1 Cin

no prestito

0Cin

si prestito0xFFFFFFFE

-1

deve venire: 0x00000000FFFFFFFE

Page 29: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

29/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Complemento a 2

0x0000000100000001 - 0x0000000000000003 =

0000 0000 0000 0000 0000 0000 0000 0001 -0000 0000 0000 0000 0000 0000 0000 0000 =0000 0000 0000 0000 0000 0000 0000 0000

0000 0000 0000 0000 0000 0000 0000 0001 +1111 1111 1111 1111 1111 1111 1111 1111 + 0 =0000 0000 0000 0000 0000 0000 0000 0000

equivale a :

0 Cin

si prestito

1Cin

no prestito (utile per altre cifre)

0xFFFFFFFE

-1 prestito

0x00000000 c.d.d.

deve venire: 0x00000000FFFFFFFE

non agg. 1: tengo conto del prestito

Page 30: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

30/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Sottrazione

Semplificato notevolmente lo schema logico della ALU:

32-bit FULL ADDER Cin

Cout

NEG SUB

OP1 OP2

Carry in

così è calcolato il complemento a 2RIS

Page 31: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

31/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Sottrazione

Il complemento a 1 si realizza con le XOR:

32-bit FULL ADDER Cin

Cout Carry in

RIS

SUB

OP2

b31

b30

b0

OP1

Page 32: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

32/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Negazione ecomplemento a 2

Lo schema della ALU è piuttosto semplificato

Servono però 32 XOR

La sintesi di una XOR non occupa poco spazioserve qualche idea per risparmiare spazio

Page 33: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

33/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Note su XOR

16 MOS per ogni XOR!

x32

512 MOS per il blocco di negazione!

Schema logico della XOR singola:

Page 34: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

34/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Note su XOR

0

1Y

s

A

B

A⊕B

Per risparmiare spazio possiamo ricorrere al MUX:

A B Y0 0 01 0 10 1 11 1 0

esce A

esce A

Un MUX CMOS richiede 6 MOS

passiamo a 8 x 32 = 256 MOS

A

B

A

Page 35: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

35/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Note su XOR

Risparmiamo altri 2 MOS per ogni XOR con lo schema:

Y = A se B è '0' B A A

Y

B

Y = A se B è '1'

A B Y0 0 01 0 10 1 11 1 0

esce A

esce A

se B = '0' l'inverter non può attivarsi!se B = '0' l'inverter si attiva.

Page 36: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

36/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Note su XOR

16 x Lg

2.9 um @ 180 nm

tot: 92 um

B A A

Y

B

1

2

3

1

2

3

4

5

6

B

AY

5

6 4

Page 37: Elettronica dei Sistemi Programmabili A.A. 2013-2014 · 2/37 Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori Registro speciale APSR: flag della ALU Flag della

37/37Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori

Altri esercizi

2

*

(*) no prestito(**) si prestito

**

N.B. sul libro, correggere il risultato della seconda riga