我试图编译代码

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

但我得到的错误

Error (10170): Verilog HDL syntax error at counter.v(7) near text "@"; expecting ".", or "("

这是什么意思?

有帮助吗?

解决方案

的Quartus不支持一些SystemVerilog的。请参阅此链接了解详细信息> 的Quartus帮助

有关的Quartus自动识别正在使用的系统的Verilog,你需要打电话给你的文件something.sv

因此,在这种情况下,可能的 counter.sv

如果您的文件名为 counter.v ,然后你会得到一个错误。我可以证实,与Quartus II V10.0确实编译。

我会建议您更改模块输出端口REG中,Quartus没有抱怨,而是一个模拟器会。

output reg [7:0] count

让我们知道您的身体情况如何。

干杯

其他提示

我觉得乔治是正确的(乔治你好!很高兴见到你),该文件被解释为Verilog的(不SystemVerilog的),所以它不理解always_ff。

在输出值的类型,我更喜欢SystemVerilog中使用的逻辑。它的作用是相同的,但它会从“其宣称的‘章’逃脱,因此它是一个寄存器的思维能抓住人们的。

另外,您得到了特别的错误信息的原因是因为它不知道什么always_ff是,它假定这是一个模块/接口/函数的名称。一个模块可以有一个可以与启动端口映射“”,一切都需要一个开放的支架。

其他的一个问题与此代码。

计数变量从程序块(always_ff),以使计数变量需要被声明为变量的类型,典型地逻辑类型这种SystemVerilog的代码分配。声明应包括:输出的逻辑 [7:0]计数

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top