Hello,
I am using DE2-115 FPGA to make LEDG[0] and LEDG[1] blink respectively.
LEDG[0] will be on in 2s. In that period of time, LEDG[1] will be off.
After that, LEDG[0] will be off and LEDG[1] will be on for 2 seconds.
In the end, I have reset line to make the blink test repeat again.
The clock is 50Mhz => 2s is 10^8 period = 9'd100000000.
After I connected with the FPGA and run the code, the LEDG[8] was on but
the LEDG[0] was on forever and the LEDG[1] was off forever as well.
Please help me!
Thank you
module GD (
input CLOCK_50,
output [8:0] LEDG
);
reg [31:0] counter = 0;
reg reset = 1;
assign LEDG[7:0] = 1’b0;
assign LEDG[8] = 1’b1;
/* always */
always @ (posedge CLOCK_50) begin
if (reset==0)
counter <= 0;
else
counter <= counter + 1;
end
always @ (posedge CLOCK_50) begin
if (counter < 9'd100000000 ) begin
LEDG[0] <= 1'b1;
LEDG[1] <= 1'b0;
end else begin
if (counter < 9'd200000000 ) begin
LEDG[0] <= 1'b0;
LEDG[1] <= 1'b1;
end else
reset <= 0;
end
end
endmodule
I don't think your code syntesize without errors. In an always block, you can only write into registers, but your LEDGs are wires. So you need a register for the LED states and assign that to the outputs:
1 | module GD ( |
2 | input CLOCK_50, |
3 | output [8:0] LEDG |
4 | );
|
5 | |
6 | reg [31:0] counter = 0; |
7 | reg reset = 1'b1; |
8 | reg ledState = 1'b0; |
9 | |
10 | assign LEDG[7:0] = ledState; |
11 | assign LEDG[8] = ~ledState; |
12 | |
13 | always @ (posedge CLOCK_50) begin |
14 | if (reset==0) |
15 | counter <= 0; |
16 | else
|
17 | counter <= counter + 1; |
18 | |
19 | if (counter == 99_999_999 ) begin |
20 | ledState <= ~ledState; |
21 | counter <= 0; |
22 | end
|
23 | end
|
24 | |
25 | endmodule
|
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.