这个verilog代码有什么问题?
What is wrong in this verilog code?
我正在学习 verilog 并尝试在我的 fpga 中应用这些概念。
它应该以这种方式工作:
当开关 1 打开时,所有红色 LED 都会亮起。
当开关 2 打开时,所有绿色 LED 都会亮起。
当开关 3 打开时,所有 LED 都会亮起。
问题是当我将它放入我的 fpga 开关时。
有人能告诉我为什么吗?
这是我的代码:
module LED (
input CLOCK_50,
input [17:0] SW,
output reg [17:0] LEDR,
output reg [9:0] LEDG
);
always@(posedge(CLOCK_50))
begin
case(SW[0])
0:
LEDR = 0;
1:
LEDR = ~LEDR;
endcase
case(SW[1])
0:
LEDG = 0;
1:
LEDG = ~LEDG;
endcase
case(SW[2])
0:
begin
LEDR = 0;
LEDG = 0;
end
1:
begin
LEDR = ~LEDR;
LEDG = ~LEDG;
end
endcase
end
endmodule
代码中的一些问题是:
您正在使用 case(SW[2])
语句重新分配 LEDR
和 LEDG
您正在切换每个 posedge(CLOCK_50)
上的 LEDG
和 LEDR
的值。这就是您看到 LED 强度低的原因。
小贴士:
你可以使用像 LEDG = 10'b1111111111;
或 LEDG = 10'b1111_1111_11;
这样的位表示法(也是十六进制)(十六进制:10'h3AA)
您可以使用 case
作为 SW
,例如:
case(SW)
3'b000:
...
3'b001:
...
3'b010:
...
3'b100:
...
default:
...
我正在学习 verilog 并尝试在我的 fpga 中应用这些概念。 它应该以这种方式工作: 当开关 1 打开时,所有红色 LED 都会亮起。 当开关 2 打开时,所有绿色 LED 都会亮起。 当开关 3 打开时,所有 LED 都会亮起。 问题是当我将它放入我的 fpga 开关时。 有人能告诉我为什么吗? 这是我的代码:
module LED (
input CLOCK_50,
input [17:0] SW,
output reg [17:0] LEDR,
output reg [9:0] LEDG
);
always@(posedge(CLOCK_50))
begin
case(SW[0])
0:
LEDR = 0;
1:
LEDR = ~LEDR;
endcase
case(SW[1])
0:
LEDG = 0;
1:
LEDG = ~LEDG;
endcase
case(SW[2])
0:
begin
LEDR = 0;
LEDG = 0;
end
1:
begin
LEDR = ~LEDR;
LEDG = ~LEDG;
end
endcase
end
endmodule
代码中的一些问题是:
您正在使用
case(SW[2])
语句重新分配LEDR
和LEDG
您正在切换每个
posedge(CLOCK_50)
上的LEDG
和LEDR
的值。这就是您看到 LED 强度低的原因。
小贴士:
你可以使用像
LEDG = 10'b1111111111;
或LEDG = 10'b1111_1111_11;
这样的位表示法(也是十六进制)(十六进制:10'h3AA)您可以使用
case
作为SW
,例如:case(SW) 3'b000: ... 3'b001: ... 3'b010: ... 3'b100: ... default: ...