1

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

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 "("

どういう意味ですか?

4

3 に答える 3

7

Quartus はいくつかの systemverilog をサポートしています。詳細については、このリンクを参照してください > Quartus ヘルプ

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

したがって、この場合、おそらくcounter.sv

ファイルの名前がcounter.vの場合、エラーが発生します。実際に Quartus II v10.0 でコンパイルできることを確認できます。

モジュールの出力ポートをregに変更することをお勧めします.Quartusは文句を言いませんでしたが、シミュレータは文句を言います.

output reg [7:0] count

乗り方を教えてください。

乾杯

于 2010-10-26T18:57:06.940 に答える
1

ジョージの言う通りだと思います (こんにちは、ジョージ! ファンシーです)。ファイルは Verilog (SystemVerilog ではない) として解釈されているため、always_ff を理解していません。

出力値のタイプについては、SystemVerilog でのロジックの使用を好みます。その効果は同じですが、人々を捕まえることができる「宣言された 'reg' したがって、それはレジスターです」という考えから逃れます.

また、その特定のエラー メッセージが表示された理由は、always_ff が何であるかわからないため、それがモジュール/インターフェイス/関数の名前であると想定したためです。モジュールには、「.」で始まるポート マップを含めることができ、それ以外のすべてのポート マップには開き括弧が必要です。

于 2010-11-08T13:12:53.440 に答える
1

このコードにはもう 1 つの問題があります。

カウント変数は手続き型ブロック (always_ff) から割り当てられるため、カウント変数は変数タイプ (通常はこの SystemVerilog コードのロジック タイプ) として宣言する必要があります。宣言には次を含める必要があります。 出力ロジック[7:0] カウント

于 2012-06-27T20:52:18.807 に答える