Domanda VHDL

Apr 21, 2005 1 Replies

Ho iniziato da poco a fare qualche esperimento in VHDL ma ho qualche dubbio:


1) Esattamente quale è la differenza tra i costrutti sequenziali e quelli concorrenti ? Non riesco a capire la loro differenza a livello implementativo.


2) All'interno di un processo è obbligatorio inserire solo costrutti sequenziali ? E' per come viene sintetizzato un processo ? Lo stesso vale per i costrutti sequenziali ? Per es. all'interno di un if non posso metterne uno concorrente ?



Scusate per le molte domande forse banali ma sono agli inizi...



Grazie a tutti, Simone Navari.


"Marcel" ha scritto:

Innanzitutto ricordati *sempre* che il VHDL e' un linguaggio molto potente che non serve solo per sintetizzare hardware, e quindi NON tutto quello che si scrive in VHDL e' possibile replicarlo sull'hardware. Di conseguenza il fatto di avere all'interno di un processo istruzioni sequenziali e' solo un *comportamento* che il sintetizzatore hardware riconosce nel suo complesso e *tenta* di implementare. All'interno dell'FPGA i segnali digitali viaggiano in modo combinatorio, non stanno certo a guardare quale riga di codice e' stata scritta prima: e' il sintetizzatore che deve mappare opportunamente la logica affinche' il *risultato* sia quello che tu vuoi.

Si'

I processi sono eseguiti tra di loro in maniera concorrente, ma al loro interno il comportamento e' sequenziale. Non focalizzarti troppo sul concorrente o meno, quando non serve: all'interno puoi fare gli IF che vuoi, basta che siano coperti *tutti* i casi possibili (pena la creazione di flip flop e latch nella sintesi del circuito).

Ad esempio:

begin -- behavioral

out_mux: process (Q,C,cin,conf) variable muxsel : Std_logic_vector(1 downto 0); begin -- process out_mux

if conf = '0' then muxsel(0) := C(0); else muxsel(0) := cin; end if; muxsel(1) := C(1); case muxsel is when "00" => out_data out_data(3 downto 2)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required