Sei sulla pagina 1di 7

1

Esercizi
1. interfaccia seriale/parallelo
2. interfaccia parallelo/seriale
3. accumulatore (e calcolo di una media)
metodologia di progetto
scomposizione in blocchi e definizione dei segnali
interni
diagramma degli stati della FSM
scrittura del codice
Concatenazione: operatore &
2

Concatena due arrays, mettendo loperando di destra in coda


a quello di sinistra

Operatore comodo per eseguire prodotti e divisioni per


potenze di 2
es: In,Out a 8 bit es: In a 4 bit, Out a 8 bit
Out <= 0000& In(7 downto 4); Out <= In & 0000 ;
Loperazione Out = In / 24 Loperazione Out = In * 24

Operazioni eseguite su operandi di tipo signed o unsigned

Utile anche per realizzare shift registers in maniera compatta


3

Shift register con concatenazione


Esempio da esercizio 1:
memorizzazione dato seriale in registro da 8 bit (MSB first)
--registro MSB-first
reg_a:process(reset, clk) is
begin
if (RESET = '1') then
registro_acquisizione <= conv_unsigned(0,8);
elsif(clk = '1' and clk'event) then
if start_counter = '1' then
registro_acquisizione <= registro_acquisizione(6 downto 0) & IN_DATA;
end if;
end if;
end process reg_a;
Esercizio 2: parallelo /serie 4

Un sistema FPGA, funzionante a 100 KHz, utilizzato per la


conversione parallelo/serie di un segnale a 8 bit.
Un ciclo di lettura/scrittura viene attivato portando alto per un ciclo
di clock il segnale AVVIO; il dato sulla porta IN_DATA a 8 bit viene
quindi campionato e dopo un ciclo di clock trasmesso in modo
seriale (partendo da LSB) sulla porta di uscita (OUT_DATA).
Al termine delle operazioni di lettura e scrittura il circuito si riporta
nello stato iniziale.
entity paralleloserie is
port(
CLK : in std_logic;
RESET : in std_logic;
AVVIO : in std_logic;
IN_DATA : in std_logic_vector(7 downto 0) ;
OUT_DATA : out std_logic);
end paralleloserie;
Esercizio 2: parallelo /serie 5
Esercizio 2: parallelo /serie 6

AVVIO = 1

fineciclo=1 = 1
Esercizio 2: parallelo /serie 7

CLK
RESET
IN_DATA
AVVIO
OUT_DATA
uscita_contatore
stato corrente