Estratto del documento

Scuola Politecnica e delle Scienze di Base

Corso di Laurea Magistrale in Ingegneria Informatica

Tesina di Architettura dei Sistemi Digitali

Analisi, Progettazione,

Implementazione, Simulazione e

Sintesi degli esercizi assegnati

Anno Accademico 2020/2021

Professori

prof. Nicola Mazzocca

prof.ssa Alessandra De Benedictis

Componenti del gruppo

Margherita Maria M63001118

Martina Russo M63001128

Michelle Pepe M63001196

Chiara Paventa M63001157

Indice

1 Progetto di macchine combinatorie 4

1.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Riconoscitore di sequenza 15

2.1 Riconoscitore di sequenza 1-1 . . . . . . . . . . . . . . . . . . . . 15

2.1.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.1.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.1.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.1.5 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2 Riconoscitore di sequenza 1-10 . . . . . . . . . . . . . . . . . . . 33

2.2.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.2.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.2.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.2.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.2.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3 Orologio 42

3.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.6 Sintesi su FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4 Registro a scorrimento 54

4.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

1 2

INDICE

4.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5 A mod B 67

5.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6 Protocollo handshaking 96

6.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

6.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7 Prodotto scalare 117

7.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

7.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

7.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

7.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

8 Processore 138

8.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

8.2 Cenni teorici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

8.3 Analisi codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

8.4 Analisi istruzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

8.5 Modifica di un codice operativo . . . . . . . . . . . . . . . . . . . 160

9 Seriale 161

9.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

9.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

9.3 Uart tappo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

9.4 Sintesi su FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

9.5 2 Uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

9.6 Sintesi su FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

10 Switch multistadio 176

10.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

10.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

10.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

10.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

10.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

3

INDICE

11 Progetto di macchine aritmetiche 190

11.1 Traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

11.2 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

11.3 Schematici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

11.4 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

11.5 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Capitolo 1

Progetto di macchine

combinatorie

1.1 Traccia

Si progetti un decoder 4:16 utilizzando componenti decoder 2:4 opportuna-

mente interconnessi :

1. in una struttura ad albero

2. in una struttura a semiselezione

1.2 Soluzione

Per risolvere tale traccia, è stato utilizzato un approccio modulare, ovvero

abbiamo decomposto la macchina da implementare in componenti più piccoli. In

particolare, sono stati utilizzati 5 decoder 2:4 per la progettazione del decoder

4:16 ad albero; per realizzare invece la struttura a semi-selezione sono stati

utilizzati 2 decoder 2:4, connettendo le uscite di quest’ultimi tramite 16 porte

AND, così da realizzare correttamente le funzioni di uscita. Di conseguenza, il

primo passo compiuto è stato quello di realizzare il componente fondamentale

dell’architettura, il decoder 2:4, utilizzando una descrizione di tipo behavioral

e successivamente è stato descritto il contenitore, il decoder 4:16, mediante

approccio strutturale.

1.3 Schematici

Il Decoder 2:4 è una macchina combinatoria notevole, che riceve in ingresso

una parola codice su n bit e presenta in uscita la sua rappresentazione decodifi-

cata su m=2 bit. Opzionalmente, può ricevere anche un ingresso di abilitazione

n

en, tale che quando en=0 tutte le uscite del decoder sono nulle. Il decoder 4:16

4 5

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

è dunque una macchina combinatoria che fa corrispondere ad un codice di 4 bit

in ingresso un’uscita decodificata di 16 bit, in cui al più uno dei bit è alto, se

l’abilitazione è alta e se è stato inserito un codice valido in ingresso. Come si

nota dalla figura 1.1, il decoder risulta avere due ingressi (x1 ed x0), un ingresso

di abilitazione (en) e quattro uscite.

Figura 1.1: Decoder 2:4

Come anticipato nella sezione precedente, tramite composizione di diversi

decoder 2:4 abbiamo realizzato il decoder 4:16. Concettualmente, progettando

un decoder più grande tramite composizione di macchine più piccole, stiamo

suddividendo il codice in ingresso su n bit in sottocodici espressi su un numero

di bit inferiore. Nel nostro caso, il codice in ingresso al decoder più grande,

espresso su 4 bit, è stato suddiviso in due codici espressi su due bit, i quali

saranno gli ingressi dei decoder 2:4 utilizzati per la composizione.

Per il primo punto della traccia, l’ingresso x3x2x1x0 del decoder 4:16 è

stato suddiviso nei due codici x3x3 e x1x0, che rispettivamente piloteranno

il primo e il secondo livello dell’architettura risultante. Infatti, come si può

osservare dalla figura 1.2, la parte più significativa del codice su 4 bit, x3x2,

viene utilizzata per pilotare il decoder 2:4 del primo livello, le cui uscite fungono

da ingressi di abilitazione per i decoder 2:4 del secondo livello, i quali ricevono

in ingresso la parte meno significativa del codice, x1x0. Le uscite dei 4 decoder

del secondo livello vanno poi a definire l’uscita del blocco più grande. 6

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

Figura 1.2: Decoder 4:16 : struttura ad albero

Per il secondo punto della traccia, sono stati utilizzati due decoder 2:4, dal-

l’architettura si può osservare che l’organizzazione segue quella di una matrice:

ogni uscita del decoder corrisponde ad una locazione di quest’ultima, in partico-

lare, un’uscita è alta se sono abilitate contemporaneamente la riga e la colonna

ad essa corrispondente. Anche in questo secondo caso l’input è stato conside-

rato suddiviso in due parti, ciascuna delle quali va in ingresso ad uno dei due

decoder. Dalla figura 1.3 si può vedere come la parte più significativa, x3x2,

va in ingresso al decoder posto in verticale, mentre la parte meno significativa,

x1x0, va in ingresso al decoder posto in orizzontale. 7

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

Figura 1.3: Decoder 4:16 : struttura a semiselezione

1.4 Codice

Siamo partite dall’implementazione del decoder 2:4: come prima cosa ab-

biamo definito l’entity dec 2:4, che rappresenta l’interfaccia del componente. Al

suo interno sono stati dichiarati i 3 ingressi (a,b,e) e le 4 uscite (o). L’entity è

stata implementata attraverso un process, quindi tramite una descrizione com-

portamentale; lo stesso risultato poteva essere ottenuto dando una descrizione

dataflow per ognuna delle 4 uscite. Come si può vedere, se il segnale di abili-

tazione è alto, in base alla combinazione dei due bit in ingresso, in uscita verrà

alzato solo uno dei 4 bit, quello corrispondente, in maniera posizionale partendo

da destra verso sinistra, alla decodifica del valore in ingresso.

entity decoder_2_4 is

(

Port a : in std_logic;

b : in std_logic;

e : in std_logic; 8

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

o : 0)

out std_logic_vector(3 downto

);

end decoder_2_4;

architecture Behavioral of decoder_2_4 is

begin

process(a,b,e)

begin (e='1')

if then

(a='0' b='0')

if AND then

o<="0001";

(a='1' b='0')

elsif AND then

o<="0010";

(a='0' b='1')

elsif AND then

o<="0100";

(a='1' b='1')

elsif AND then

o<="1000";

end if;

else

o<="0000";

end if;

end process;

end Behavioral;

Per l’implementazione del decoder 4:16 sia per quanto riguarda la decompo-

sizione ad albero, sia per quella a semiselezione, abbiamo utilizzato la stessa

entity, per la quale sono state poi definite due architetture differenti tramite il

costrutto architecture. Inoltre, in entrambi i casi, per descrivere il sistema co-

me composizione di macchine, ci siamo posti a livello di astrazione strutturale,

facendo uso del costrutto component, che consente di dichiarare i componenti

utilizzati da un design, mentre con il port map è possibile istanziare il com-

ponente nella parte di descrizione funzionale di un’architettura. L’entity è la

stessa per entrambe le implementazioni:

entity decoder_4_16 is

(

Port x : (3 0);

in std_logic_vector downto

s : := '1';

in std_logic

y : 0)

out std_logic_vector(15 downto

);

end decoder_4_16;

Di seguito è riportato il codice per la risoluzione del primo punto : implemen-

tazione ad albero di un decoder 4:16 : 9

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

architecture Structural of decoder_4_16 is

-- Definizione segnali intermedi

enable0 : := '0';

signal std_logic

enable1 : := '0';

signal std_logic

enable2 : := '0';

signal std_logic

enable3 : := '0';

signal std_logic

component decoder_2_4

(

port

a : in std_logic;

b : in std_logic;

e : in std_logic;

o : 0)

out std_logic_vector(3 downto

);

end component;

begin

-- Utilizzo di 5 Decoder 2:4 per realizzare Decoder 4:16 ad albero

decoder0: decoder_2_4

(

port map a=> x(2),

b=> x(3),

e=> s,

o(0)=> enable0,

o(1)=> enable1,

o(2)=> enable2,

o(3)=> enable3

);

decoder1: decoder_2_4

(

port map a=> x(0),

b=> x(1),

e=> enable0,

o=>y(3 0)

downto

);

decoder2: decoder_2_4

(

port map a=> x(0),

b=> x(1),

e=> enable1,

o=>y(7 4)

downto

); 10

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

decoder3: decoder_2_4

(

port map a=> x(0),

b=> x(1),

e=> enable2,

o=>y(11 8)

downto

);

decoder4: decoder_2_4

(

port map a=> x(0),

b=> x(1),

e=> enable3,

o=>y(15 12)

downto

);

end Structural;

Per quanto riguarda invece l’implementazione del decoder 4:16 mediante strut-

tura a semi-selezione, è possibile osservarla di seguito:

architecture Structural of decoder_4_16 is

riga : 0);

signal std_logic_vector(3 downto

colonna : 0);

signal std_logic_vector(3 downto

component decoder_2_4

(

port a : in std_logic;

b : in std_logic;

e : in std_logic;

o : 0)

out std_logic_vector(3 downto

);

end component;

component operatore_and

(

port a : in std_logic;

b : in std_logic;

z : out std_logic

);

end component;

begin 11

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

decoder_riga: decoder_2_4

(

port map a => x(2),

b => x(3),

e => s,

o => riga

);

decoder_colonna: decoder_2_4

(

port map a => x(0),

b => x(1),

e => s,

o => colonna

);

and_riga : i 0 3

for in to generate

and_colonna : j 0 3

for in to generate

uscita : operatore_and (

port map a=> riga(i),

b=> colonna(j),

z=> y(j+i*4)

);

end generate;

end generate;

end Structural;

1.5 Simulazione

Per vedere l’implementazione simulata, è stato creato un test bench adegua-

to, riportato in seguito

entity decoder_4_16_tb is

end decoder_4_16_tb;

architecture Behavior of decoder_4_16_tb is

component decoder_4_16

port(

x : (3 0);

in std_logic_vector downto

s : in std_logic;

y : 0)

out std_logic_vector(15 downto

);

end component; 12

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

-- Dati di input

x : (3 0) := (others=>'0');

signal std_logic_vector downto

s :

signal std_logic:='1';

-- Dati di output

y : (15 0) := (others=>'0');

signal std_logic_vector downto

begin

uut : decoder_4_16

(

port map

x => x,

y => y,

s => s

);

stim_proc : process

begin

x <= "0000";

10 ns;

wait for

y="0000000000000001";

assert

x <= "0001";

10 ns;

wait for

y="0000000000000010";

assert

x <= "0010";

10 ns;

wait for

y="0000000000000100";

assert

x <= "0011";

10 ns;

wait for

y="0000000000001000";

assert

x <= "0100";

10 ns;

wait for

y="0000000000010000";

assert

x <= "0101";

10 ns;

wait for

y="0000000000100000";

assert

x <= "0110";

10 ns;

wait for

y="0000000001000000";

assert 13

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

x <= "0111";

10 ns;

wait for

y="0000000010000000";

assert

x <= "1000";

10 ns;

wait for

y="0000000100000000";

assert

x <= "1001";

10 ns;

wait for

y="0000001000000000";

assert

x <= "1010";

10 ns;

wait for

y="0000010000000000";

assert

x <= "1011";

10 ns;

wait for

y="0000100000000000";

assert

x <= "1100";

10 ns;

wait for

y="0001000000000000";

assert

x <= "1101";

10 ns;

wait for

y="0010000000000000";

assert

x <= "1110";

10 ns;

wait for

y="0100000000000000";

assert

x <= "1111";

10 ns;

wait for

y="1000000000000000";

assert

wait;

end process;

end Behavior;

Entrambe le architetture sono state simulate attraverso l’utilizzo dello stesso

testbench, il cui risultato è riportato in figura 1.4 : 14

CAPITOLO 1. PROGETTO DI MACCHINE COMBINATORIE

Figura 1.4: Simulazione Decoder 4:16

Capitolo 2

Riconoscitore di sequenza

2.1 Riconoscitore di sequenza 1-1

2.1.1 Traccia

Si vuole progettare un riconoscitore di sequenza come macchina sincrona

a sincronizzazione esterna. La macchina riceve attraverso un ingresso seriale

stringhe di 3 bit e, alla ricezione del terzo bit di ciascuna stringa, fornisce uscita

alta se la sequenza ricevuta è 1-1. Si disegni l’automa e si proceda alla sintesi

utilizzando flip-flop D. Implementare la m

Anteprima
Vedrai una selezione di 10 pagine su 216
Tesina Architettura dei Sistemi digitali Pag. 1 Tesina Architettura dei Sistemi digitali Pag. 2
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 6
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 11
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 16
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 21
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 26
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 31
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 36
Anteprima di 10 pagg. su 216.
Scarica il documento per vederlo tutto.
Tesina Architettura dei Sistemi digitali Pag. 41
1 su 216
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher martinarusso.777 di informazioni apprese con la frequenza delle lezioni di Architettura dei sistemi digitali e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Mazzocca Nicola.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community