View Full Version : [VHDL] Come calcolare il tempo trascorso tra due eventi di un segnale
billys13
19-06-2008, 17:04
Ciao a tutti,
Il mio problema è che non so come calcolare in VHDL il tempo trascorso tra due eventi su un segnale. In particolare, voglio calcolare precisamente il tempo che fa il clock da quando va a 1 fino a quando torna a 0 (cioè quanto tempo è stato a 1). C'è qualche funzione che posso usare?
Grazie!
ilsensine
19-06-2008, 17:27
Se non ricordo male c'è la funzione "now"
(ovviamente non è sintetizzabile)
billys13
19-06-2008, 17:57
Mi potresti dare un esempio come si usa questa funzione per favore?
Si può utilizzare un timer in vhdl?
ilsensine
20-06-2008, 10:16
Mi potresti dare un esempio come si usa questa funzione per favore?
E' da eoni che non vedo il vhdl...ti ho dato un indizio, ora cerca di approfondire da te.
Si può utilizzare un timer in vhdl?
Non nel modo in cui siamo abituati; puoi emularlo con un generatore di un segnale che "scatta" al tempo opportuno, emulando il timer. Un generatore di clock ad esempio puoi pensarlo equivalente a un timer periodico.
billys13
20-06-2008, 20:00
Ho trovato la soluzione. E' l'attributo S'LAST_EVENT, che dà il tempo dall'ultimo evento sul segnale S.
@ ilsensine: grazie per le risposte!
ilsensine
23-06-2008, 09:47
Ho trovato la soluzione. E' l'attributo S'LAST_EVENT, che dà il tempo dall'ultimo evento sul segnale S.
Non è proprio pulita come soluzione...ti fornisce l'istante attuale solo se hai un evento su S (altrimenti ti restituisce un tempo "passato").
Qualcosa come la "now" ha invece validità generale.
billys13
23-06-2008, 18:01
Si, ma se S è il segnale di clock, clock'last_event calcola il tempo tra l'istante attuale e l'ultimo fronte di salita/discesa, vero?
Per esempio, in questo codice:
variable t: time;
clock <= '1';
.
.
.
wait until clock= '0';
t := clock'last_event;
t non deve essere uguale al periodo del clock, considerando che appena clock diventa 0, l'ultimo evento è il fronte di salita?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.