Main Content

マルチレート モデルからのコード生成

HDL Coder™ は、単一クロックおよび複数クロックのマルチレート モデルの HDL コード生成をサポートしています。次の内部で、モデルに複数のサンプルレートで実行されるブロックを使用できます。

  • テスト対象デバイス (DUT) 内。

  • DUT を実行しているテスト ベンチ内。この場合、DUT は入力および出力から複数のサンプルレートを継承します。

  • テスト ベンチ内と DUT 内の両方。

通常、マルチレート モデルの HDL コードの生成は、シングル レート モデルの HDL コードの生成とほとんど変わりません。ただし、マルチレート モデルの場合、モデルの構成や特殊ブロック (Rate Transitions など) の使用に関して適用される要件や制限があります。詳細は、マルチレート モデルの HDL コード生成に関する要件を参照してください。

マルチレート DUT のクロック イネーブルの生成

次のブロック線図は、異なるサンプル時間が明示的に設定されたブロックがあるサブシステムの内部を示しています。上部と下部の Counter Free-Running ブロックにはそれぞれ 10 秒および 20 秒のサンプル時間が設定されています。カウンター出力信号は出力端子 ST10 および ST20 にルーティングされます。これらの出力端子はサンプル時間を継承します。ST10 で終了する信号のパスはモデルの基本レートで実行されます。ST20 で終了する信号のパスはサブレート信号で、モデルの基本レートの半分のレートで実行されます。

次の図が示すように、マルチレート DUT の出力によりテスト ベンチの To Workspace ブロックが稼働します。これらのブロックは DUT 出力のサンプル時間を継承します。

次のリストは、DUT 用に生成された VHDL® エンティティ宣言を説明しています。

ENTITY DUT IS
  PORT( clk                               :   IN    std_logic;
        reset                             :   IN    std_logic;
        clk_enable                        :   IN    std_logic;
        ce_out_0                          :   OUT   std_logic;
        ce_out_1                          :   OUT   std_logic;
        ST10                              :   OUT   std_logic_vector(7 DOWNTO 0);  -- uint8
        ST20                              :   OUT   std_logic_vector(5 DOWNTO 0)  -- ufix6
        );
END DUT;

このエンティティには、ST10 および ST20 信号用の標準的なクロック リセットおよびクロック イネーブル入力とデータ出力があります。また、このエンティティには 2 つのクロック イネーブル出力 (ce_out_0ce_out_1) があります。これらのクロック イネーブル出力は、タイミング コントローラー エンティティにより維持される内部クロック イネーブル信号を複製します。

次の図は、生成された VHDL コードの Mentor Graphics® ModelSim® シミュレーションの一部を示しています。この図からは、基本レート クロック (clk)、クロック イネーブル、モデルの計算出力のタイミング関係がわかります。

clk_enable (ce_out_0 により複製) のアサーション後に、基本レート クロックのサイクルごとに新しい値が計算され、ST10 に出力されます。

1 つおきの基本レート クロックごとのサブレート信号 ST20 に対して新しい値が計算され、出力されます。この計算のタイミングは内部信号 enb_1_2_1 (ce_out_1 により複製) により決定されます。