请帮我看看这段程序:编译没有错误,可是LED灯不亮
时间:10-02
整理:3721RD
点击:
麻烦帮我看看这段程序,编译没有错误,可是LED灯不亮,请问是哪里有问题呢?
module test(clk,LEDG);
input clk;
output [7:0] LEDG;
reg [7:0] LEDG;
reg [23:0] counter;
reg [4:0] led_state;
reg clk_div;
always @(posedge clk)
begin
if(counter==24'h100000)
begin
clk_div<=~clk_div;
counter<=24'h000000;
end
else
counter<=counter+1'b1;
end
always @(posedge clk_div )
begin
case (led_state)
5'b00000: LEDG<=8'b1111_1110;
5'b00001: LEDG<=8'b1111_1101;
5'b00010: LEDG<=8'b1111_1011;
5'b00011: LEDG<=8'b1111_0111;
5'b00100: LEDG<=8'b1110_1111;
5'b00101: LEDG<=8'b1101_1111;
5'b00110: LEDG<=8'b1011_1111;
5'b00111: LEDG<=8'b0111_1111;
5'b01000: LEDG<=8'b1011_1111;
5'b01001: LEDG<=8'b1101_1111;
5'b01010: LEDG<=8'b1110_1111;
5'b01011: LEDG<=8'b1111_0111;
5'b01100: LEDG<=8'b1111_1011;
5'b01101: LEDG<=8'b1111_1101;
5'b01110: LEDG<=8'b1111_1110;
5'b01111: LEDG<=8'b1110_0111;
5'b10000: LEDG<=8'b1101_1011;
5'b10001: LEDG<=8'b1011_1101;
5'b10010: LEDG<=8'b0111_1110;
5'b10011: LEDG<=8'b1011_1101;
5'b10100: LEDG<=8'b1101_1011;
5'b10101: LEDG<=8'b1110_0111;
5'b10110: LEDG<=8'b1010_1010;
5'b10111: LEDG<=8'b0101_0101;
5'b11000: LEDG<=8'b1000_0000;
5'b11001: LEDG<=8'b0100_0000;
5'b11010: LEDG<=8'b0010_0000;
5'b11011: LEDG<=8'b0001_0000;
5'b11100: LEDG<=8'b0000_1000;
5'b11101: LEDG<=8'b0000_0100;
5'b11110: LEDG<=8'b0000_0010;
5'b11111: LEDG<=8'b0000_0001;
default:LEDG<=8'b1111_1111;
endcase
led_state<=led_state+1'b1;
end
endmodule
module test(clk,LEDG);
input clk;
output [7:0] LEDG;
reg [7:0] LEDG;
reg [23:0] counter;
reg [4:0] led_state;
reg clk_div;
always @(posedge clk)
begin
if(counter==24'h100000)
begin
clk_div<=~clk_div;
counter<=24'h000000;
end
else
counter<=counter+1'b1;
end
always @(posedge clk_div )
begin
case (led_state)
5'b00000: LEDG<=8'b1111_1110;
5'b00001: LEDG<=8'b1111_1101;
5'b00010: LEDG<=8'b1111_1011;
5'b00011: LEDG<=8'b1111_0111;
5'b00100: LEDG<=8'b1110_1111;
5'b00101: LEDG<=8'b1101_1111;
5'b00110: LEDG<=8'b1011_1111;
5'b00111: LEDG<=8'b0111_1111;
5'b01000: LEDG<=8'b1011_1111;
5'b01001: LEDG<=8'b1101_1111;
5'b01010: LEDG<=8'b1110_1111;
5'b01011: LEDG<=8'b1111_0111;
5'b01100: LEDG<=8'b1111_1011;
5'b01101: LEDG<=8'b1111_1101;
5'b01110: LEDG<=8'b1111_1110;
5'b01111: LEDG<=8'b1110_0111;
5'b10000: LEDG<=8'b1101_1011;
5'b10001: LEDG<=8'b1011_1101;
5'b10010: LEDG<=8'b0111_1110;
5'b10011: LEDG<=8'b1011_1101;
5'b10100: LEDG<=8'b1101_1011;
5'b10101: LEDG<=8'b1110_0111;
5'b10110: LEDG<=8'b1010_1010;
5'b10111: LEDG<=8'b0101_0101;
5'b11000: LEDG<=8'b1000_0000;
5'b11001: LEDG<=8'b0100_0000;
5'b11010: LEDG<=8'b0010_0000;
5'b11011: LEDG<=8'b0001_0000;
5'b11100: LEDG<=8'b0000_1000;
5'b11101: LEDG<=8'b0000_0100;
5'b11110: LEDG<=8'b0000_0010;
5'b11111: LEDG<=8'b0000_0001;
default:LEDG<=8'b1111_1111;
endcase
led_state<=led_state+1'b1;
end
endmodule
看仿真结果是对的 那可能就是下面几个问题了1、连线问题2、二极管共阴共阳没有分清楚3、fpga输出端口的驱动能力不够无法点亮二极管
是不是缺少初始化
要搞清楚<=和=的区别,又看了一遍,觉得最大的可能就是这个问题。
先要搞清楚,你的LED是共阴还是共阳。如果不亮的话,改变一下试试~~祝好
你这程序根本没有构成循环,只有第一个灯亮,后边的不可能亮 你应该加一个for循环
FPGA需要在程序里写初始化吗?
我写单片机程序的时候的确是需要的
啊,需要for循环?
啊,需要for循环?
谢谢您,还帮我仿真了。
我检查检查开发板