質問

コードをコンパイルしてみました

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 ヘルプ

システム Verilog を使用していることを quartus が自動的に認識するには、ファイルを something.sv と呼ぶ必要があります。

したがって、この場合、おそらく、 カウンタ.sv

ファイルが次のように呼ばれる場合 カウンタ.v, 、するとエラーが発生します。実際に Quartus II v10.0 でコンパイルできることが確認できました。

モジュールの出力ポートを reg に変更することをお勧めします。Quartus では問題は発生しませんでしたが、シミュレーターでは問題が発生します。

output reg [7:0] count

どうやってうまくいくのか教えてください。

乾杯

他のヒント

私は(こんにちはジョージ!ファンシーここであなたを見て)ジョージは正しいと思う、ファイルは、Verilog(ないSystemVerilogの)として解釈され、それがalways_ff理解できないようにします。

出力値の種類、IはSystemVerilogの内のロジックを使用することを好みます。その効果は同じですが、それゆえ、それは人々をつかまえることができるレジスタの思考だ。「その宣言 『REG』から離れる。

また、あなたがその特定のエラーメッセージが表示されました理由は、それがalways_ffだったかわからなかったので、それはそれはモジュール/インターフェース/機能の名前だったと仮定ということでした。モジュールは、「」で始まる可能性がポートマップを持つことができ、そして他のすべてがオープンブラケットが必要になります。

このコードのもう一つの問題。

カウント変数は、変数の型、このSystemVerilogのコードの典型的な論理型として宣言する必要があるので、

は、カウント変数は手続きブロック(always_ff)から割り当てられます。宣言が含まれるべきである:出力のロジックをの[7:0]のカウント

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top