Can';无法理解系统Verilog中的错误

Can';无法理解系统Verilog中的错误,verilog,system-verilog,Verilog,System Verilog,我试着编译代码 module counter( input clk, input upSignal, input downSignal, output [7:0] count ); always_ff @(posedge clk) begin if (upSignal) count <= count + 1; else if (downSignal)

我试着编译代码

module counter(
    input clk,
    input upSignal,
    input downSignal,
    output [7:0] count
   );
        always_ff @(posedge clk) begin
          if (upSignal)
              count <= count + 1;
          else if (downSignal)
              count <= count - 1;
        end
    endmodule
模块计数器(
输入时钟,
输入上信号,
输入下行信号,
输出[7:0]计数
);
始终_ff@(posedge clk)开始
如果(上升信号)

countQuartus确实支持一些systemverilog。有关详细信息,请参阅此链接>

为了让quartus自动识别您正在使用system verilog,您需要将您的文件命名为something.sv

所以在这种情况下,可能是counter.sv

如果文件名为counter.v,则会出现错误。我可以确认is确实使用Quartus II v10.0编译

我建议您将模块输出端口更改为reg,Quartus没有抱怨,但模拟器会

output reg [7:0] count
让我们知道你进展如何


干杯

Quartus确实支持一些systemverilog。有关详细信息,请参阅此链接>

为了让quartus自动识别您正在使用system verilog,您需要将您的文件命名为something.sv

所以在这种情况下,可能是counter.sv

如果文件名为counter.v,则会出现错误。我可以确认is确实使用Quartus II v10.0编译

我建议您将模块输出端口更改为reg,Quartus没有抱怨,但模拟器会

output reg [7:0] count
让我们知道你进展如何

干杯

我认为乔治是对的(你好,乔治!真想不到在这里见到你),文件被解释为Verilog(而不是SystemVerilog),因此它并不总是能理解

关于输出值的类型,我更喜欢在SystemVerilog中使用逻辑。它的效果是相同的,但它摆脱了“它声明的‘注册’因此它是一个注册’思维,可以抓住人们

另外,您收到该特定错误消息的原因是,因为它不知道“始终”是什么,所以它假定它是模块/接口/函数的名称。模块可以有一个以“.”开头的端口映射,其他所有内容都需要一个开括号。

我认为乔治是对的(你好,乔治!很高兴在这里见到你),该文件被解释为Verilog(而不是SystemVerilog),因此它不能始终理解

关于输出值的类型,我更喜欢在SystemVerilog中使用逻辑。它的效果是相同的,但它避开了“它声明的'reg',因此它是一个寄存器”的思想,可以吸引人们


另外,您得到该特定错误消息的原因是,因为它不知道“始终”是什么,所以它假定它是模块/接口/函数的名称。一个模块可以有一个以“.”开头的端口映射,而其他所有模块都需要一个开括号。

这段代码还有一个问题


count变量是从程序块(始终\u ff)分配的,因此count变量需要声明为变量类型,通常是此SystemVerilog代码的逻辑类型。声明应该包括:输出逻辑[7:0]计数

此代码的另一个问题


count变量是从程序块(始终\u ff)分配的,因此count变量需要声明为变量类型,通常是此SystemVerilog代码的逻辑类型。声明应该包括:outputlogic[7:0]count

您试图用哪种软件工具编译它?有些模拟器默认使用Verilog-2001语法,需要告诉它使用SystemVerilog…我不熟悉那个软件
always\u ff
在SystemVerilog中是一个关键字,但在Verilog-2001中不是。检查软件的文档,查看是否必须启用SystemVerilog支持。如果您是从命令行运行它,它可能是类似于
-sv
之类的东西。您试图用哪个软件工具编译它?有些模拟器默认使用Verilog-2001语法,需要告诉它使用SystemVerilog…我不熟悉那个软件
always\u ff
在SystemVerilog中是一个关键字,但在Verilog-2001中不是。检查软件的文档,查看是否必须启用SystemVerilog支持。如果您是从命令行运行它,它可能是类似于
-sv
之类的东西。