Esperimentazioni di Fisica III

1 Applicazioni delle FPGA: realizzazione di una

ALU

Relazione Gruppo ..........

Attenzione: Alimentare la FPGA a circa 8 Volt, facendo uso dell’alimentazione della basetta

Figura 1:

1.1 Realizzazione di una unitá logico-aritmetica

Si monti il circuito indicato in figura 2. Questo puó effettuare le operazioni di somma e prodotto, nonché le operazioni logiche OR ed AND su due numeri interi a 4 bit. Per la realizzazione delle operazioni indicate, si faccia uso del Mega Wizard Plug-In Manager (menu File). Scegliere Arithmetic Mega Functions per il prodotto e la somma, e Gates per l’AND e l’OR (sempre a 4 bit). Seguire poi le istruzioni fornite dallo stesso programma per definire il numero di bits in ingresso ed in uscita.

Figura 2:

Si faccia uso di due dei tre interruttori (da 4 elementi ciascuno) forniti per realizzare gli input dei numeri su cui operare. Si faccia uso di due elementi del terzo interruttore per specificare (con 2 bit) l’operazione da effettuare, come mostrato in tabella 1.

0 0 OR
0 1 AND
1 0  +
1 1  x

Tabella 1:

Ciascun commutatore dovrá esser montato in modo tale che, con il commutatore in una delle due posizioni il relativo ingresso venga ad esser collegato a massa, mentre con il commutatore nella seconda posizione l’ingresso venga ad esser collegato a +5 V, attraverso una resistenza (di pull-up) da circa 1 k. Ció va ripetuto per ciascuno dei bit in ingresso dei numeri a e b, nonché per i bit che specificano l’operazione da effettuare. Si faccia molta attenzione alle tensioni applicate e ad evitare eventuali ”corti”.

I numeri su cui operare sono indicati dai simboli a[3..0] e b[3..0]. Il numero risultante é indicato con res[7..0]. La variabile (a due bit) adoperata per specificare l’operazione da effettuare é indicata con sel[1..0].

Si proceda all’assegnazione degli ingressi e delle uscite come indicato in tabella 2, dove i valori indicati (37, 38, etc.) si riferiscono alla numerazione indicata sul circuito per le linee di I/O.

a(3) a(2) a(1) a(0) b(3) b(2) b(1) b(0)
37  38  39  41  46  47  48  49
res(7) res(6) res(5) res(4) res(3) res(2) res(1) res(0)
99  100  101  102 117 118 119 120
sel(0) sel(1) Parity
79  78  130

Tabella 2:

Dopo aver disegnato il circuito, si compili, si effettui il download (opzione PRO-GRAMMER in FILE) e si effettui le seguenti operazioni elementari:

Hex(A) × Hex(B) =

Hex(7) + Hex(C) =

Hex(3) OR Hex(E) =

Hex(B) AND Hex(3) =

Si effettui poi la simulazione e si verifichi il funzionamento anche in questo caso.

Si valuti poi il ritardo tra i segnali in ingresso e quelli in uscita, per ciascuna delle quattro operazioni effettuate.

Nota: il ritardo puó esser valutato (facendo uso della simulazione) in due modi:

(a) facendo uso del sottomenu waveform editor (nel menu Max+PLus II esaminando i tempi relativi dei vari segnali

(b) facendo uso della utility analyse timing (menu utilities)

Si riporti nella tabella 3 il ritardo osservato in ciascuno dei quattro casi.

operazione  ritardo(ns)

SOMMA PRODOTTO OR AND

Tabella 3:

Si acclude in figura 3 un esempio di forme d’onda.

Figura 3:

Si apporti ora le necessarie modifiche al circuito in modo che esso fornisca anche la paritá della parola in uscita ed accenda il LED collegato alla linea 130 se la paritá é dispari.

Suggerimento: la paritá é ottenibile dall’XOR delle uscite, anch’esso implementabile attraverso il Mega Wizard Plug-In Manager.

Si accluda alla relazione una stampa del circuito disegnato ed una delle forme d’onda in uscita ottenute dalla simulazione.