Я пытаюсь заставить мою светодиодную панель (светодиоды 20x40 с режимом сканирования 1/5) работать на Spartan-6. Я написал простой код, в котором я назначаю SCLK внутреннему тактовому сигналу clk 1 МГц, LCLK - ~ clk, адрес ABC и цветные выводы RGB некоторым постоянным значениям.
module main(
output reg A,B,C,R1,G1,B1,R2,G2,B2,CS,
output wire S,L,OE,
input clk
);
initial
begin
CS<=1;
{A,B,C}<=3'b001;
{R1,G1,B1}<=3'b001;
{R2,G2
end
assign OE=0;
assign S=clk;
assign L=~clk;
endmodule
И я получил черную панель. Но если я загружу этот код
module main(
output reg A,B,C,R1,G1,B1,R2,G2,B2,CS,
output wire S,L,OE,
input clk
);
reg [3:0] state;
initial
begin
state<=0;
CS<=1;
end
assign OE=0;
always @(posedge clk)
begin
case (state)
00: begin
{A,B,C}<=3'b000;
{R1,G1,B1}<=3'b001;
{R2,G2,B2}<=3'b010;
state<=state+1;
end
01: begin
{A,B,C}<=3'b001;
{R1,G1,B1}<=3'b101;
{R2,G2,B2}<=3'b110;
state<=state=1;
end
02: begin
{A,B,C}<=3'b010;
{R1,G1,B1}<=3'b100;
{R2,G2,B2}<=3'b011;
state<=state+1;
end
03: begin
{A,B,C}<=3'b100;
{R1,G1,B1}<=3'b011;
{R2,G2,B2}<=3'b010;
state<=state+1;
end
04: begin
{A,B,C}<=3'b101;
{R1,G1,B1}<=3'b111;
{R2,G2,B2}<=3'b010;
state<=0;
end
endcase
end
assign S=clk;
assign L=~clk;
endmodule
Хотя этот код работает, цвета одинаковы во всех 5 светодиодных столбцах и соответствуют значениям в состоянии 0
.
Я не понимаю, почему это происходит, пожалуйста, помогите.
Кроме того, я не могу угадать адрес для одной строки. Горит строка на 000,001,010,100
адресах, но остальные адреса не работают. (Я меняю их в состоянии 04). У меня только 3 адресных контакта.