[verilog] Contatore ad un secondo

phabloshablo

Nuovo Utente
32
2
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?
 

Andretti60

Utente Èlite
6,440
5,091
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.
 

phabloshablo

Nuovo Utente
32
2
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.JPG
    Cattura.JPG
    123 KB · Visualizzazioni: 33
Ultima modifica:

Andretti60

Utente Èlite
6,440
5,091
Ah ecco, ora è chiaro :)

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

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili