[verilog] Contatore ad un secondo

Pubblicità

phabloshablo

Nuovo Utente
Messaggi
32
Reazioni
2
Punteggio
25
Ciao ragazzi mi servirebbe nell'ambito di una costruzione di una sveglia un contatore che ad ogni pressione per più di un sec di un sec di un tasto mi restituisca un hit.
stavo pensando di fare un semplice contatore finchè non raggiunge tot cicli quanto il suo clock impiega a fare un sec.
Può essere corretto?
 
La tua descrizione è nebulosa. Non si capisce cosa una sveglia abbia a che fare con la pressione di un tasto per più di un secondo. Sarebbe meglio se descrivesti meglio l’obiettivo, che linguaggio vuoi usare e pubblicasti il codice che hai scritto fino ad ora.
 
Linguaggio: Verilog.
Il contatore viene azzerato quando l'ingresso TASTO (supposto senza rimbalzi) rimane ad uno per un tempo maggiore di un secondo. A tale scopo nel datapath c'è un contatore che mette a 1 HIT dopo un secondo da quando è stato azzerato con CLR ad 1.

Per creare questo modulo avevo in mente di realizzare un semplice counter che mi restituisca hit ad 1 dopo che ha fatto tanti colpi di clock quanto ci impega per fare un secondo.
Il codice che ho pensato è:

module CONTA1(
input ck,clr,
output reg hit)
reg [.....] cnt,cnt_nxt //i bit necessari sono tanti in quanti essendo un clock di 1mhz per arrivare a 1 sec mi accorrono tanti bit/
Always@(posedge ck)
cnt=cnt_nxt;
Always@(clr,cnt)
if(clr) cnt_nxt=0
else cnt_nxt=cnt+1
Always@(cnt)
if(cnt==//TEMPO IMPEGATO PER UN SEC//)
hit=1; else hit=0;
endmodule

Ho allegato il testo intero sotto
Non so se sono riuscito a spiegarmi bene , comunque grazie mille per l'aiuto.
 

Allegati

  • Cattura.webp
    Cattura.webp
    76.1 KB · Visualizzazioni: 33
Ultima modifica:
Ah ecco, ora è chiaro :)

Il tuo metodo può funzionare, ma non è preciso perché dipende dal clock del processore.
Ti consiglio di usare $realtime
 
Pubblicità
Pubblicità
Indietro
Top