Quello che volevo realizzare era un semplice contatore non dotato di reset, che, ad ogni colpo di clock, cominciava a sommare 1, a partire da 000. (Il tutto solo quando abilitato, cioè con en=1, per en=0, non dovrebbe sommare nulla)
Ok, quindi scrivo il codice del contatore.
- Codice: Seleziona tutto
`timescale 1ns / 1ps
module counter(
input en, ck,
output reg [2:0]cnt
);
reg [2:0]cnt_nxt;
always @(posedge ck) //rete sequenziale (insieme di ffd)
cnt <= cnt_nxt;
always @(cnt) //rete combinatoria
if (en)
cnt_nxt = cnt + 3'b001;
else cnt_nxt = cnt;
endmodule
Poi scrivo il testbench
- Codice: Seleziona tutto
`timescale 1ns / 1ps
module tbcounter;
reg enable, clock;
reg [2:0]cnt_nxt;
wire [2:0]cnt;
counter dut(enable,clock,cnt);
initial
begin
$monitor($time,,"enable=%b clock=%b cnt_nxt=%d cnt=%d", enable,clock,cnt_nxt,cnt);
enable = 0;
clock = 0;
#10 enable = 1;
#30 $stop;
end
always #2 clock = ~clock;
endmodule
La simulazione si avvia, enable passa da 0 a 1 come richiesto, idem il clock, mentre cnt e cnt_nxt rimangono ad un valore di "don't care" x.
Non capisco quale sia l'errore. Potreste farmi capire dove sbaglio?
----
Siccome mi veniva peggio commentare troppo nel listato, scrivo qui:
- en (o enable, nel testbench) serve per abilitare il contatore, quando è a 0 non somma, quando è a 1, somma;
- ck (o clock, nel testbench) è il segnale di clock;
- cnt è il segnale di uscita della rete sequenziale che entra nella rete combinatoria, e se en=1, si incrementa di uno;
- cnt_nxt è il segnale in uscita dalla rete combinatoria (cioè, se en=1, cnt_nxt = cnt+1), che entra nella rete sequenziale.
Grazie per l'aiuto!

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)