关于在Quartus中编译Verilog的初学者问题



我正在学习Verilog我正在尝试创建一个代码,我得到一个LED闪烁在一定的频率。我知道我使用的时钟是100Mhz,所以我希望它以1Hz的周期运行。我设置了一个27位的注册表,这应该会让我得到1*10^8。

module main(
input wire clk,         //100MHz//
input wire reset_,
output reg[1:0] LED1        //LED On/Off Two-States//
);
reg ON = 1'b1;      //INIT//
reg[27:0] LEDStateCount;    //LED Counter - 27 Bit Stored//
reg OFF;            //State of LED//

assign LED1[0] = OFF;       
assign LED1[1] = ON;

always @(posedge clk or negedge reset_)begin
if (!reset_)begin
LEDStateCount <= 27'd0;    //On startup, clear value//
end
else if (LEDStateCount<LEDStateCount[27'd50000000])begin
LEDStateCount <= LEDStateCount + 1;             //Accumulate to ~50,000,000//
OFF <= LEDStateCount[27'd50000000];             //LED Off Until Value Reached//
end
end
endmodule

在Quartus-

中编译时出现错误

错误(10219):Verilog HDL连续分配错误在Frequencytest.v(10): object "LED1"赋值的左边必须有一个净类型

错误(10219):Verilog HDL连续分配错误在Frequencytest.v(11): object "LED1"赋值的左边必须有一个净类型

我相信这与我在制作reg条目时声明的内容有关。这是我做这个的时候参考的两页,

Badprog.com - LED闪烁在Verilog

类似的线程闪烁的LED

我敢肯定这段代码除了语法错误之外还有其他问题。

错误告诉您不应该将assign用于reg类型。要解决这个问题,修改:

output reg[1:0] LED1        //LED On/Off Two-States//

:

output [1:0] LED1        //LED On/Off Two-States//

我还得到了LEDStateCount[27'd50000000]的两种用法的警告。

Warning-[SIOB] Select index out of bounds
"LEDStateCount[27'd50000000]"
The select index is out of declared bounds : [27:0].
In module : main.

括号内的数字必须在0 ~ 27之间。不能是50,000,000

else if (LEDStateCount<LEDStateCount[27'd50000000])begin

应该是这样的:

else if (LEDStateCount<27'd50000000)begin

相关内容

  • 没有找到相关文章

最新更新