Soy un estudiante que intenta aprender Verilog por mi cuenta con un panel de desarrollo. Esto es sólo un módulo simple y corto. Solo necesito algunas aclaraciones.
module BASIC (CLOCK_50, KEY, LEDG);
input CLOCK_50;
input [3:0] KEY;
output reg [8:0] LEDG;
reg [2:0] key0_dly;
always @(posedge CLOCK_50)
begin
if (!key0_dly[2] && key0_dly[1])
LEDG[0] <= ~LEDG[0];
key0_dly <= {key0_dly[1:0], KEY[0]};
end
endmodule
Ahora conozco la sintaxis básica de Verilog. Mis preguntas serían:
-
¿Cuál es el propósito de key0_dly? ¿Por qué la instrucción if comprueba sus 2 bits?
-
¿Por qué key0_dly tiene asignados los valores
{key0_dly[1:0], KEY[0]}
? ¿Qué hace esa línea? -
¿Esta línea
key0_dly <= {key0_dly[1:0], KEY[0]};
está en la instrucción if? ¿Estoy en lo cierto al decir que si no hay un comienzo y un final, entonces, como en C, solo la línea de código que sigue en el bloque if?