在Quartus中编译Verilog代码
我是verilog HDL的新手,我的第一个项目是使用一组寄存器实现一个简单的秒表计数器。我用的是Altera Quartus 当我试图编译下面的代码时,每个寄存器都会出现错误。其中一条错误消息如下所示: 错误(10028):无法解析test_interface.v(127)处网络“sec0[3]”的多个常量驱动程序 有人能帮忙吗?代码在Modelsim中模拟得很好 下面是导致问题的代码片段:在Quartus中编译Verilog代码,verilog,hdl,intel-fpga,Verilog,Hdl,Intel Fpga,我是verilog HDL的新手,我的第一个项目是使用一组寄存器实现一个简单的秒表计数器。我用的是Altera Quartus 当我试图编译下面的代码时,每个寄存器都会出现错误。其中一条错误消息如下所示: 错误(10028):无法解析test_interface.v(127)处网络“sec0[3]”的多个常量驱动程序 有人能帮忙吗?代码在Modelsim中模拟得很好 下面是导致问题的代码片段: always @ (posedge clk) if (qsoutput == 1)
always @ (posedge clk)
if (qsoutput == 1)
sec0 = sec0 + 1;
else if (sec0 == 4'b1010) begin
sec1 = sec1 + 1;
sec0 = 4'b0000;
end else if (sec1 == 4'b0110) begin
min0 = min0 + 1;
sec1 = 4'b0000;
end else if (min0 == 4'b1010) begin
min1 = min1 + 1;
min0 = 4'b0000;
end else if (min1 == 4'b0110) begin
sec0 = 4'b0000;
sec1 = 4'b0000;
min0 = 4'b0000;
min1 = 4'b0000;
end
基于,在多个始终块中分配寄存器。这对于合成和Altera Quartus错误消息的共同赞助者来说是非法的。reg
类型只能在一个始终块中分配
例如,sec0
是在always@(posedge reset_reg)
和您问题中提供的代码中定义的。更糟糕的是,您将计数器逻辑拆分为4个单独的始终块,分配sec0
我建议您将所有的sec*
和min*
电阻器放置在一个时钟同步始终与一个异步块之间:
always(@posedge clk or posedge reset_reg)
begin
if(reset_reg)
begin
// ... asynchronous reset code ...
end
else
begin
// ... synchronous counter code ...
end
end
本文详细介绍了用于合成的良好verilog编码实践:
您将遇到的其他问题:
- 使用非阻塞(
基于,您在多个始终
块中分配寄存器。这对于合成和Altera Quartus错误消息的共同赞助者是非法的。一个reg
类型只能在一个始终
块中分配
例如,sec0
是在always@(posedge reset_reg)
和您问题中提供的代码中定义的。更糟糕的是,您将计数器逻辑拆分为4个单独的always块,分配sec0
我建议您将所有的sec*
和min*
电阻器放置在一个时钟同步始终与一个异步块之间:
always(@posedge clk or posedge reset_reg)
begin
if(reset_reg)
begin
// ... asynchronous reset code ...
end
else
begin
// ... synchronous counter code ...
end
end
本文详细介绍了用于合成的良好verilog编码实践:
您将遇到的其他问题:
- 使用非阻塞(
我真的看不出这段代码有什么错误。你能在记录第127行的同时发布整个“test_interface.v”吗?你能发布整个编译错误列表吗?事实上,我每行代码都有多个错误,而不仅仅是127个。它是这样的:Error(10028):无法在测试_接口处解析网络“sec0[3]”的多个常量驱动程序。v--错误(10028):无法解析网络“sec1[3]”的多个常量驱动程序在test_interface.v等网站,我们需要您提供更多信息。如果您想让我进一步了解,请发布我要求的两件事。您可以选择编辑,将它们添加到您的文章底部。下面是代码链接:很抱歉,这是我第一次使用此网站,我在格式化代码时遇到问题e本身!没问题,欢迎。如果您想粘贴代码,只需复制一个大的块,粘贴到编辑器中,选择代表代码的整个文本块,然后按Ctrl-K键或单击编辑器栏中的大括号。这样可以将其格式化为代码示例。我真的看不出这段代码有任何错误。你可以发布“test_interface.v”的全部内容,同时记下哪一行是第127行吗?你也可以发布编译错误的全部列表吗?事实上,每行代码都有多个错误,而不仅仅是127个。它是这样的:Error(10028):无法解析test_interface.v处net“sec0[3]”的多个常量驱动程序——Error(10028):无法解析网络“sec1[3]的多个常量驱动程序在test_interface.v等网站,我们需要您提供更多信息。如果您想让我进一步了解,请发布我要求的两件事。您可以选择编辑,将它们添加到您的文章底部。下面是代码链接:很抱歉,这是我第一次使用此网站,我在格式化代码时遇到问题e本身!没问题,欢迎使用。如果要粘贴代码,只需复制一个大的块,将其粘贴到编辑器中,选择代表代码的整个文本块,然后按Ctrl-K键或单击编辑器栏中的大括号。这样可以很好地将其格式化为代码示例。