PROVA SCRITTA FIDUCIARIA DEL CORSO DI CALCOLATORI ELETTRONICI - UniCa

Pagina creata da Luca Beretta
 
CONTINUA A LEGGERE
PROVA SCRITTA FIDUCIARIA DEL CORSO DI
 CALCOLATORI ELETTRONICI
 PRIMA PARTE – Tempo a disposizione 30 minuti
 CORSO DI LAUREA IN INGEGNERIA ELETTRICA, ELETTRONICA ED INFORMATICA
 CORSO DI LAUREA IN INGEGNERIA BIOMEDICA
 15 Giugno 2020

NOME: COGNOME:
MATRICOLA: CORSO DI LAUREA:

Codice d’onore
Durante le prove d'esame online l’allievo si impegna a:
 ● non avvalersi di alcun ausilio esterno, cartaceo o elettronico, se non espressamente autorizzato dal
 docente all’inizio della prova d’esame;
 ● non avvalersi dell’aiuto di altre persone;
 ● non contattare o tentare di contattare in alcun modo altri allievi;
 ● non copiare o osservare le prove di altri allievi;
 ● nel corso della prova orale di un altro allievo e durante lo svolgimento della prova scritta “fiduciaria”,
 tenere il proprio microfono spento, salvo diversa richiesta del docente;
 ● restare connesso per il tempo strettamente necessario allo svolgimento della prova scritta “fiduciaria”
 e al termine della prova, consegnare il proprio elaborato scritto secondo le modalità previste dal
 docente.
Con la consegna della presente prova scritta fiduciaria l’allievo si impegna ad accettare il presente codice
d’onore. La violazione degli impegni di cui sopra o delle eventuali altre disposizioni indicate dal docente
comporta, in ogni caso, l'annullamento della prova.

***Quando consegnate la prova d’esame, rinominate il file in questo modo, lasciando l’estensione
originale: MATRICOLA_COGNOME_NOME (per esempio 123456_TURING_ALAN.rtf)***

***Motivare adeguatamente tutte le risposte***

ESERCIZIO 1 (8 punti)
Si disegni la tabella delle transizioni, o in alternativa il grafo degli stati, di una rete logica in grado di
riconoscere in una sequenza di bit in ingresso la stringa 0101 ponendo a “1” l’uscita solo quando si
abbia il riconoscimento di tale stringa.

Soluzione:

ESERCIZIO 2 (7 punti)
I trasferimenti di parole a/dalla memoria di un calcolatore sono codificati utilizzando il codice di
Hamming. Sia data la stringa 11011110 da codificare, con bit meno significativo corrispondente
all’ultimo 0 a destra. Si rappresenti la stringa codificata.

Prova scritta fiduciaria di Calcolatori Elettronici – 15 Giugno 2020
Soluzione:
Dev’essere rispettata la condizione:
 2K ³ N + K +1 (1),
dove K è il numero di bit di controllo inseriti. Essendo N = 8, si evince dalla (1) che K = 4.

Nella codifica di Hamming, la sequenza codificata è la seguente:

 c0 c1 b0 c2 b1 b2 b3 c3 b4 b5 b6 b7
 0 1 0 0 1 1 1 1 1 0 1 1

Dove c0…c3 sono i quattro bit costituenti il vettore di controllo, e b0…b7 gli otto bit trasmessi.
I bit di controllo rispetto alla sequenza b0…b7 sono:

 c0 = 0
 c1 = 1
 c2 = 0
 c3 = 1

ESERCIZIO 3 (6 punti)
Scrivere un frammento di codice Assembly che calcola la seguente sommatoria e la memorizza in
una parola di memoria di indirizzo x:
 !

 ! 
 "#$

Si supponga che n sia memorizzato nel registro $5.

Soluzione:
 move $7, $0
 addi $8, $0, 1
while: beq $8, $5, exit
 add $7, $7, $8
 addi $8, $8, 1
 j while
exit: sw $8, x($0)

Prova scritta fiduciaria di Calcolatori Elettronici – 15 Giugno 2020
PROVA SCRITTA FIDUCIARIA DEL CORSO DI
 CALCOLATORI ELETTRONICI
 SECONDA PARTE – Tempo a disposizione 30 minuti
 CORSO DI LAUREA IN INGEGNERIA ELETTRICA, ELETTRONICA ED INFORMATICA
 CORSO DI LAUREA IN INGEGNERIA BIOMEDICA
 15 Giugno 2020

NOME: COGNOME:

MATRICOLA: CORSO DI LAUREA:

Codice d’onore
Durante le prove d'esame online l’allievo si impegna a:
 ● non avvalersi di alcun ausilio esterno, cartaceo o elettronico, se non espressamente autorizzato dal
 docente all’inizio della prova d’esame;
 ● non avvalersi dell’aiuto di altre persone;
 ● non contattare o tentare di contattare in alcun modo altri allievi;
 ● non copiare o osservare le prove di altri allievi;
 ● nel corso della prova orale di un altro allievo e durante lo svolgimento della prova scritta “fiduciaria”,
 tenere il proprio microfono spento, salvo diversa richiesta del docente;
 ● restare connesso per il tempo strettamente necessario allo svolgimento della prova scritta “fiduciaria”
 e al termine della prova, consegnare il proprio elaborato scritto secondo le modalità previste dal
 docente.
Con la consegna della presente prova scritta fiduciaria l’allievo si impegna ad accettare il presente codice
d’onore. La violazione degli impegni di cui sopra o delle eventuali altre disposizioni indicate dal docente
comporta, in ogni caso, l'annullamento della prova.

***Quando consegnate la prova d’esame, rinominate il file in questo modo, lasciando l’estensione
originale: MATRICOLA_COGNOME_NOME (per esempio 123456_TURING_ALAN.rtf)***

***Motivare adeguatamente tutte le risposte***

ESERCIZIO 1 (6 punti)
E’ dato un vettore v di valori binari di indirizzo iniziale salvato nel registro $4 e dimensione N salvata
nel registro $5. Scrivere una funzione Assembly shift che, ricevuto un terzo parametro m nel registro
$6, effettui lo scorrimento degli ultimi N-m elementi del vettore dalla coda alla testa, assegnando le
ultime m posizioni a 0; corrispondentemente, le m posizioni in testa andranno perse.
Per esempio dato il seguente vettore (N=32):
 v 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0
 Dopo la funzione shift con m=1:
 v 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0

Possibile codice C:
void shift(int*v, int N, int m)
{
 int i;
 for(i=m, j=0; i
Soluzione:
shift: addi $29, $29, -16
 sw $8, 0($29)
 sw $9, 4($29)
 sw $10, 8($29)
 sw $11, 12($29)
 move $8, $6
 muli $9, $6, 4
for: beq $8, $5, exit
 muli $10, $8, 4
 add $10, $10, $4
 lw $11, 0($10)
 sub $10, $10, $9
 sw $11, 0($10)
 addi $8, $8, 1
 j for
exit: add $10, $10, $9
 muli $11, $5, 4
 add $11, $11, $4
for2: beq $10, $11, exit2
 sw $0, 0($10)
 addi $10, $10, 4
 j for2
exit2: lw $8, 0($29)
 lw $9, 4($29)
 lw $10, 8($29)
 lw $11, 12($29)
 addi $29, $29, 16
 jr $31

ESERCIZIO 2 (3 punti)
Progettare un flip flop JK a partire da un flip flop D. Disegnare il circuito logico finale indicando la
funzione di transizione dello stato, il numero di stati, la funzione di uscita.

Soluzione:
Lo schema logico per sintetizzare un flip flop JK a partire da un flip flop D è il seguente:

 J RETE DI D FLIP Q RETE DI Z
 TRANSIZIONE FLOP USCITA
 DELLO D
 K STATO

 FLIP FLOP JK

L’uscita di un flip flop JK corrisponde ai valori dello stato (due), per cui si ha Z=Q.

Rimane da definire solo la funzione di transizione dello stato, che si ottiene dalla tabella di transizione
di un flip flop JK e dalla tabella di eccitazione del flip flop D:

Prova scritta fiduciaria di Calcolatori Elettronici – 15 Giugno 2020
J K Q Q’ D
 0 0 0 0 0
 0 0 1 1 1
 0 1 0 0 0
 0 1 1 0 0
 1 0 0 1 1
 1 0 1 1 1
 1 1 0 1 1
 1 1 1 0 0

Sintetizzando con le mappe di Karnaugh:
 JK
 Q 00 01 11 10

 0 1 1

 1 1 1

D = J Q + KQ

ESERCIZIO 3 (3 punti)
Si consideri una CPU con architettura a zero indirizzi con set istruzioni: PUSH X (pushßM[X]), POP X
(M[X]ßpop), ADD (pushßpop+pop), DIV (pushßpop1/pop2).
Scrivere la sequenza d’istruzioni necessaria per implementare l’espressione algebrica:
Z = A + B/C.

Soluzione:
A partire dalla semantica fornita nel testo, una possibile sequenza è:

 Istruzione Semantica
 PUSH C PushßM[C]
 PUSH B PushßM[B]
 DIV PushßM[B]/M[C]
 PUSH A PushßM[A]
 ADD PushßM[A] + M[B]/M[C]
 POP Z M[Z]ßpop

Prova scritta fiduciaria di Calcolatori Elettronici – 15 Giugno 2020
Puoi anche leggere