|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
[VHDL] cronometro
ciao a tutti, sto cercando un cronometro in VHDL che conti da 0 a 60 secondi... qualcuno sa dirmi dove ne posso trovare uno per prendere spunto?
Grazie mille |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
nessuno ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma questo timer deve essere regolato su un clock esterno ? Se sai la frequenza del clock esterno è semplice realizzare il timer è semplicemente un contatore su uno o più registri.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Usare Time ha poco senso perché misura solo il tempo di simulazione, quindi non è sintetizzabile in hardware.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
non sono molto pratico di vhdl... i nteoria io devo solo saper fare un cronometro che vada da 0 a 60...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ripeto, senza un clock esterno non ha molto senso (come fai a temporizzare il conteggio ?). Le specifiche del progetto ti devono dire la frequenza del clock, in alternativa dovresti presentare in ingresso il numero di cicli di clock corrispondenti alla durata di un secondo (direi che su un numero a 32 bit va bene), quindi anche un segnale di write/enable che fa in modo di abilitare la scrittura del valore in un registro e di inizializzare il conteggio.
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
Input: start/restart, stop, reset.
Output: num_sec, num_centsec. La gestione del sistema deve garantire una reattività agli ingressi pari a 10 microsec. queste sono le uniche specifiche che ho.. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora includi un generatore di clock nel modulo VHDL...
Questo è un generatore di clock: Codice:
process
begin
loop
CLK <= not CLK;
wait for 5 us;
end loop;
end process;
Una curiosità studi a Pisa ? |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
nu a genova... ok quello mi serve per il clock... ora come ci costruisco attorno il cronometro ?_?
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
ehm... ho qualche lacuna di vhdl
Ultima modifica di selion : 28-12-2008 alle 15:31. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
mi sai indicare una sorta di tutorial inerente al caso ? :o
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prova questo: http://xoomer.alice.it/nitorqua/vhdl/vhdl.html
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
sto cercando di smanettare con il link che mi hai passato, una curiosità:
ora io devo fare due contatori ok? Pero' poi come realizzo i due output? cioè mi è richiesto in output solo il numero di sec e il numero dei centesimi di sec... |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Definirai un'entity con gli input e gli ouptput richiesti. Ovviamente visto che l'output dovrà essere un numero binario dovranno essere due numeri binari dovrai usare un vettore di bit per rappresentarlo nella entity:
Codice:
MSEC_OUT : out std_logic_vector(9 downto 0); SEC_OUT : out std_logic_vector(5 downto 0); Quando hai definito la entity e la sua implementazione, puoi passare alla simulazione del funzionamento, ovviamente dipende dall'ambiente che usi per simulare il tutto, ma in teoria basta realizzare un processo quantizzato ogni tot secondi (sempre con la tecnica del wait). Puoi settare reset e start/stop ai valori che vuoi testare (ad esempio potresti esaurire tutti i vari input come una tavola di verità) e vedere l'ouput del contatore dopo 1 ms (+ 10 ns) verificando che abbia effettua un conteggio sui ms e dopo 1 secondo verificando che abbia conteggiato anche il secondo. E così via per verificare che l'output sia quello desiderato ad ogni istante (in realtà non importa verificare ogni istante, l'importante è verificare che i ms arrivati a 999 poi tornino a 0 e i secondi vengano incrementati e che arrivato a 60 secondi l'aggeggio si fermi). Ovviamente dovrai verificare anche la funzionalità di start/stop e del reset. |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
sei enorme
comunque dev'essere perforza un binario in uscita ? |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 662
|
ora cerco di capire come fare il contatore... in caso ti richiedo
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
A quel punto diventa semplice generalizzare il tutto Ultima modifica di cionci : 29-12-2008 alle 11:21. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:16.




















