El modelado de un flanco positivo desencadenó un flip flop T con borrado asíncrono
Aug 19 2020
Estoy modelando un flip flop T activado por borde positivo con claro asíncrono. Aquí está el código:
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
¿Es este un código eficiente? ¿Está bien tener que separar always
bloques, o hay una manera de incluir tanto el código de comportamiento de clear
las clk
señales como el en un solo always
bloque?
Respuestas
1 toolic Aug 19 2020 at 17:33
Esta es una forma común de combinar los always
bloques:
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
Es mejor realizar asignaciones a una señal de un solo always
bloque.
Active el always
bloque en el posedge
de clear
para que la síntesis pueda inferir la lógica deseada (cambio asíncrono claro, sincrónico).
Utilice asignaciones sin bloqueo ( <=
) para la lógica secuencial.
No es necesario hacerlo explícitamente q=q
porque está implícito.