Pagina 1 di 1

Domanda VHDL

MessaggioInviato: 13 apr 2014, 14:59
da deltax
Salve, è possibile in VHDL inserire una struttura "with...when" all'interno di una struttura if/elseif?
perché ci ho provato in un codice molto semplice e mi da errori di sintassi nel with, anche se la sintassi è corretta.

Re: Domanda VHDL

MessaggioInviato: 13 apr 2014, 17:07
da RenzoDF
Forse per il semplice fatto che non è possibile usare un costrutto concorrente all'interno di un costrutto sequenziale?

Re: Domanda VHDL

MessaggioInviato: 13 apr 2014, 18:18
da deltax
RenzoDF ha scritto:Forse per il semplice fatto che non è possibile usare un costrutto concorrente all'interno di un costrutto sequenziale?

interessante. Scusa se sembro newbie ma...è effettivamente cosi :lol: E' da poco che studio il VHDL, nemmeno una settimana. Nelle guide che ho a disposizione non ho letto (forse ci ho messo poca attenzione) alla differenza tra costrutti che si possono usare SOLO sequenzialmente o in maniera concorrente (anche se questa differenza mi è chiara).
Adesso quindi devo trovare un alternativa a quel costrutto che vada bene per il sequenziale...se avete consigli, cosi magari risparmio qualche ora a cercare nei manuali :lol:

EDIT: come non detto, risolto. Ho usato altri if ed elsif annidati.

Grazie, mi hai risparmiato ore e ore di ricerche

Re: Domanda VHDL

MessaggioInviato: 13 apr 2014, 20:43
da deltax
Bhè, adesso ho un problema. Sto implementando un contatore updwon con svariate funzioni (impostazioni di valore iniziale e finale, impostazione di un valore qualsiasi ecc); il conteggio al contrario funziona correttamente, quello in avanti non funziona :shock:
Credo che il problema sia in questa parte di codice:
Codice: Seleziona tutto
UD <= UD + '1' ;

poiché UD non ha una dimensione predefinita, ma è parametrizzato con una variabile N, io dovrei scrivere tutti 0 tranne l'ultimo bit che è 1; in sostanza il valore binario corrispondente al 1 decimale, ma con un numero N di bit che non conosco a priori (nel caso di 4 bit, quindi, 0001).
Ho letto che con quel codice sopra quella somma fa si che l'1 venga "adattato" alla dimensione di UD.
Potrebbe anche essere giusto eh, non so se è quello il problema, ma il codice dopo è praticamente identico sia per la funzione di conteggio in avanti che indietro, essendo appunto UD il valore che viene sommato dal contatore (che deve essere 1 nel caso di avanti, -1 nel caso di indietro). Questo mi fa essere molto fiducioso sul fatto che sia quella riga di codice il problema.
Ho provato anche con i doppi apici, ma non funziona.

Re: Domanda VHDL

MessaggioInviato: 13 apr 2014, 20:48
da RenzoDF
In questo periodo non ho molto tempo a disposizione, ma se posti il codice completo del contatore, prima o poi, potrei darci un occhio. ;-)

Re: Domanda VHDL

MessaggioInviato: 13 apr 2014, 22:09
da deltax
non ti preoccupare, ho risolto usando un altro costrutto. Era quello il problema, avevo individuato bene. Usando un construtto più basilare, ovvero facendo una conversione da decimale a vettore di std_logic a N bit, ha funzionato tutto.
Comunque se poi vuoi il codice dimmelo che te lo passo ;-)

Re: Domanda VHDL

MessaggioInviato: 13 apr 2014, 23:14
da TardoFreak
Non passarlo, postalo.

Re: Domanda VHDL

MessaggioInviato: 14 apr 2014, 0:54
da rini
In questo sito del prof. Mattoccia (Unibo) c'è un po' di materiale sul VHDL (a mio avviso spiegato bene) con annessi progetti ed esercizi. Spero che potrà esservi di aiuto.

http://www.t3lab.it/wp-content/uploads/ ... /20110517/
http://vision.deis.unibo.it/~smatt/VHDL.html

buona lettura

Re: Domanda VHDL

MessaggioInviato: 14 apr 2014, 12:52
da deltax
grazie mille, i PDF del secondo link però non funzionano....

TardoFreak quando è finito lo posterò, anche se è un progettino semplice semplice e sicuramente si può scrivere con un codice moooolto più pulito e sintetico

Re: Domanda VHDL

MessaggioInviato: 15 apr 2014, 0:18
da rini
Si infatti, i pdf del secondo link sono nel primo. Mi sono dimenticato di scrivere la volta scorsa che nelle slide c'è un esempio pratico di un contatore a modulo N con reset asincrono.