Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

クロック イネーブルとリセット信号の最小化

クロック イネーブルの最小化

シングルレート設計のクロック イネーブルロジックの生成を省略します。

設定

既定の設定: オフ

オン

シングルレート モデルについて、可能な場合はクロック イネーブル ロジックの生成を省略します。次の VHDL® コードの例では、クロック イネーブル信号は定義またはチェックされません。クロック信号 (clk) が高くなると、現在の信号の値が出力されます。

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      Unit_Delay_out1 <= In1_signed;
    END IF;
  END PROCESS Unit_Delay_process;
オフ

クロック イネーブル ロジックを生成します。次の VHDL コードの一部は、クロック イネーブル (enb) をもつレジスタを示したものです。

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      IF enb = '1' THEN
        Unit_Delay_out1 <= In1_signed;
      END IF;
    END IF;
  END PROCESS Unit_Delay_process;

例外

場合によっては、[クロック イネーブルの最小化] を選択しても、HDL Coder™ がクロック イネーブルを出力することがあります。以下のような場合です。

  • Enabled、State-Enabled および Triggered Subsystem 内のレジスタ。

  • マルチレート モデル。

  • 以下のブロックに対しては、クロック イネーブルは常に出力されます。

    • commseqgen2/PN Sequence Generator

    • dspsigops/NCO

      メモ

      NCO ブロックに対する HDL のサポートは将来のリリースで削除される予定です。代わりに、NCO HDL Optimized ブロックを使用してください。

    • dspsrcs4/Sine Wave

    • hdldemolib/HDL FFT

    • built-in/DiscreteFir

    • dspmlti4/CIC Decimation

    • dspmlti4/CIC Interpolation

    • dspmlti4/FIR Decimation

    • dspmlti4/FIR Interpolation

    • dspadpt3/LMS Filter

    • dsparch4/Biquad Filter

メモ

[RAM アーキテクチャ]Generic RAM without Clock Enable に設定された Dual Rate Dual Port RAM などの RAM ブロックを設計で使用している場合、コード ジェネレーターは [クロック イネーブルの最小化] 設定を無視します。

コマンド ライン情報

プロパティ: MinimizeClockEnables
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

このプロパティを設定するには、hdlset_param または makehdl を使用します。プロパティの値を表示するには、hdlget_param を使用します。

たとえば、sfir_fixed モデル内にある symmetric_fir サブシステムの HDL コードを生成するときに、クロック イネーブル信号を最小化するには、次のいずれかの方法を使用します。

  • プロパティを引数として関数 makehdl に渡す。

    makehdl('sfir_fixed/symmetric_fir', ... 
            'MinimizeClockEnables','on')
  • hdlset_param を使用すると、モデルにパラメーターを設定してから、makehdl を使用して HDL コードを生成できる。

    hdlset_param('sfir_fixed','MinimizeClockEnables','on')
    makehdl('sfir_fixed/symmetric_fir')

グローバル リセットの最小化

HDL コードでリセット ロジックの生成を省略します。

設定

既定の設定: オフ

オン

この設定を有効にすると、コード ジェネレーターは HDL コードからグローバルなリセット ロジックを最小化または削除しようとします。このコードの抜粋は、Simulink® モデルの Delay ブロックに対して生成された Verilog コードに対応します。このコードの抜粋には、HDL Coder でリセット ロジックが削除されたことが示されています。

 always @(posedge clk)
    begin : Delay_Synchronous_process
      if (enb) begin
        Delay_Synchronous_out1 <= DataIn;
      end
    end
オフ

このパラメーターを無効にすると、HDL Coder では、HDL コードにグローバルなリセット ロジックが生成されます。この Verilog コードの抜粋には、Delay ブロックに対して生成されたリセット ロジックが示されています。

  always @(posedge clk or posedge reset)
    begin : Delay_Synchronous_process
      if (reset == 1'b1) begin
        Delay_Synchronous_out1 <= 1'b0;
      end
      else begin
        if (enb) begin
          Delay_Synchronous_out1 <= DataIn;
        end
      end
    end

依存関係

[グローバル リセットの最小化] を選択すると、生成された HDL コードには、リセット端子をもたないレジスタが含まれます。これらのレジスタを初期化しない場合、HDL のシミュレーション結果には数値の不一致が生じる可能性があります。レジスタのリセットによらない初期化設定を使用してレジスタを初期化してシミュレーションの不一致を回避できます。

既定では、[レジスタのリセットによらない初期化] 設定には値 [モジュール内に初期化を生成] があるため、コード ジェネレーターによって、DUT に対して生成された HDL コードの一部としてレジスタが初期化されます。レジスタをスクリプトで初期化するには、[レジスタのリセットによらない初期化][外部スクリプトを生成] に設定します。Simulink モデルのブロックに対して 0 の初期値を使用しなければなりません。

例外

[グローバル リセットの最小化] を選択すると、次がある場合に HDL Coder がリセット ロジックを生成することがあります。

  • 非ゼロの [初期条件] が設定された Delay ブロックなど、非ゼロの初期値の状態をもつブロック。

  • 状態をもつブロックの列挙データ型。

  • リセット信号を要求する [BlackBox] HDL アーキテクチャをもつ Subsystem ブロック。

  • [タイミング コントローラーのアーキテクチャ]default に設定されたマルチレート モデル。

    [タイミング コントローラーのアーキテクチャ]resettable に設定すると、HDL Coder はタイミング コントローラーのリセット端子を生成します。[グローバル リセット信号の最小化]'on' に設定すると、コード ジェネレーターはこのリセット端子を削除します。

  • Truth Table

  • Chart

  • MATLAB Function ブロック

コマンド ライン情報

プロパティ: MinimizeGlobalResets
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

このプロパティを設定するには、hdlset_param または makehdl を使用します。プロパティの値を表示するには、hdlget_param を使用します。

たとえば、sfir_fixed モデル内にある symmetric_fir サブシステムの HDL コードを生成するときにグローバル リセット信号を最小化するには、次のいずれかの方法を使用します。

  • プロパティを引数として関数 makehdl に渡す。

    makehdl('sfir_fixed/symmetric_fir', ... 
            'MinimizeGlobalResets','on')
  • hdlset_param を使用すると、モデルにパラメーターを設定してから、makehdl を使用して HDL コードを生成できる。

    hdlset_param('sfir_fixed','MinimizeGlobalResets','on')
    makehdl('sfir_fixed/symmetric_fir')