No puedo entender por qué g y b están atascados. Tengo entendido que always@(posedge clock)
se ejecutará en cualquier momento en que la entrada del reloj pase de 0 a 1. Tengo el pin del reloj conectado a un pll que está controlado por el reloj del FPGA. Mi variable count
debería incrementarse con cada reloj, y luego color
debería incrementarse cada vez que count
se ajusta. ¿Puede alguien ayudarme a explicar lo que me falta?
module state_machine ( clock, r, g, b );
input clock;
output reg r;
output reg g;
output reg b;
reg count;
reg color;
always@(posedge clock)
begin
if(count == 50000000) count = 0;
else count = count + 1;
if(count == 0) color = color + 1;
if(color > 1'o7) color = 1'o0;
r = color & 1'o1;
g = color & 1'o2;
b = color & 1'o4;
end
endmodule
Aquí está el mensaje de error de Quartus:
Warning (10230): Verilog HDL assignment warning at state_machine.v(15): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at state_machine.v(17): truncated value with size 32 to match size of target (1)
Warning (13024): Output pins are stuck at VCC or GND
Warning (13410): Pin "pin_name2" is stuck at GND
Warning (13410): Pin "pin_name3" is stuck at GND
EDITAR: Gracias por la ayuda. Ahora tengo esto y funciona.
module state_machine ( clock, rgb );
input clock;
output reg[2:0] rgb;
reg[31:0] count;
reg[2:0] color;
always@(posedge clock)
begin
if(count == 50000000) count = 0;
else count = count + 1;
if(count == 0) rgb = rgb + 1'o1;
end
endmodule