Modellazione di un flip flop T innescato con fronte positivo con clear asincrono
Aug 19 2020
Sto modellando un flip flop T innescato da un fronte positivo con clear asincrono. Ecco il codice:
module t_flip_flop_exam (q,clk,clear,t);
input t ;
input clk;
input clear;
output reg q ;
reg internal_t;
always @ (clear)begin
if (clear==1)
q=0;
else
q=q;
end
always @ (posedge clk)begin
if (t==1)
q=~q;
else
q=q;
end
endmodule
È un codice efficiente? Va bene separare i always
blocchi o esiste un modo per includere sia il codice comportamentale dei segnali che clear
quello dei clk
segnali in un unico always
blocco?
Risposte
1 toolic Aug 19 2020 at 17:33
Questo è un modo comune per combinare i always
blocchi:
module t_flip_flop_exam (q,clk,clear,t);
input t;
input clk;
input clear;
output reg q;
always @(posedge clk or posedge clear) begin
if (clear)
q <= 0;
else if (t)
q <= ~q;
end
endmodule
È meglio fare assegnazioni a un segnale da un singolo always
blocco.
Attivare il always
blocco su posedge
di in clear
modo che la sintesi possa inferire la logica desiderata (asincrona chiara, commutazione sincrona).
Usa assegnazioni non bloccanti ( <=
) per la logica sequenziale.
Non è necessario farlo esplicitamente q=q
perché è implicito.