Hola,
Quiero hacer un circuito secuencial sencillo de tan solo 3 salidas, pero nunca antes habia programado CPLD.
Consiste en lo sigiente:
Tres lineas llamadas "I", "V", y "H" que tienen que tomar los niveles alto (1) y bajo (0) según la siguiente secuencia:
I V H ===== Inicio de BucleA: (!! SE REPITE 600 veces !!) Durante 100 periodos: 1 0 0 Durante 5 periodos: 0 0 0 Durante 16 periodos: 0 1 0 Durante 11 periodos: 0 0 0 Fin de BucleA Durante 132 periodos: 0 0 0 Durante 528 periodos: 0 0 1 Durante 3036 periodos: 0 0 0 Vuelta al INICIO de BucleA
Por si sirve de algo: cada periodo es de 200 nanosegundos, y la CPLD de destino sería una XC9536XL ó XC9572XL de XILINX.
¿Hay algun experto en Verilog (ó ABEL-HDL) que pueda orientarme?He escrito lo siguiente, pero me falta hacer el bucle general:
( ¿Existe algún repeat (forever)? ó ¿Se puede hacer un for(;;) infinito como el de C? )
== INICIO de CODIGO ===================================================
module secuencia;
output I; output H; output V;
initial
begin
repeat (600) begin // Inicio Bucle A repeat (100) begin I = 1; H = 0; V = 0; end repeat (5) begin I = 0; H = 0; V = 0; end repeat (16) begin I = 0; H = 1; V = 0; end repeat (11) begin I = 0; H = 0; V = 0; end end // Bucle A
repeat (132) begin // Inicio Bucle B I = 0; H = 0; V = 0; end // Bucle B
repeat (528) begin // Inicio Bucle C I = 0; H = 0; V = 1; end // Bucle C
repeat (3036) begin // Inicio Bucle D I = 0; H = 0; V = 0; end // Bucle D
end
== FIN de CODIGO ======================================================
Saludos.