タイミングとクロック - 2023.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2023-11-15
Version
2023.2 日本語

離散時間システム

Vitis Model Composer のデザインは離散時間システムなので、信号とその信号を生成するブロックにはサンプル レートがあります。ブロックのサンプル レートは、ブロックのステートがアップデートされる頻度を決定します。Model Composer では、ほとんどのサンプル レートが自動的に設定されますが、サンプル レートを明示的または暗示的に設定する必要のあるブロックもあります。

注記: Simulink 離散時間システムとサンプル時間の詳細は、MathWorks 社の資料『Using Simulink』を参照してください。

簡単な Model Composer モデルで、離散時間システムの動作を示します。次の図に示すモデルがあるとします。Simulink ソース (Sine Wave) で Gateway In ブロックを駆動し、Gateway Out ブロックで Simulink シンク (Scope) を駆動しています。

図 1. 離散時間システム

Gateway In ブロックのサンプル周期は、1 秒に設定されています。Gateway Out ブロックは、AMD固定小数点信号を Simulink の Scope で解析できるように倍精度に変換しますが、サンプル レートは変更しません。Scope の出力は、サンプル レートが変更されていない、サンプリングされたサイン波となります。

図 2. Scope 出力

マルチレート モデル

Model Composer では、複数のサンプル レートで動作する信号を含むマルチレート デザインがサポートされています。マルチレート モデルは、Model Composer で自動的にハードウェアにコンパイルされます。これにより、マルチレート デザインが Simulink に適した直接的な方法でインプリメントされます。

レート変換ブロック

Model Composer HDL ライブラリには、サンプル レートを変換するブロックが含まれています。最も基本的なレート変換ブロックは、Up Sample と Down Sample ブロックです。これらのブロックは、次の図に示すように、パラメーター ダイアログ ボックスで指定した固定の値を乗算することにより、レートを変換します。

図 3. レートの変換

Parallel To Serial や Serial To Parallel などのその他のブロックは、ブロックのパラメーターで指定された方法でレートを変換します。

次のような単純なマルチレート システムがあるとします。このモデルでは、SP1 と SP2 の 2 つのサンプル周期が使用されます。サンプル周期 SP1 は、Gateway In のパラメーター ダイアログ ボックスで指定します。Down Sample ブロックによりモデルのレートが変更され、SP1 の 1/2 である新しいレート SP2 が作成されます。

図 4. マルチレート例

ハードウェア オーバーサンプリング

一部の HDL ブロックはオーバーサンプリングされ、ブロックのデータ レートより高速のレートで内部処理が実行されます。ハードウェアでは、これはデータ サンプルを処理するのに複数のクロック サイクルが必要であることを意味します。Simulink では、このようなブロックはサンプル レートに計測可能な変化はありません。

Simulink ではオーバーサンプリングされるブロックでサンプル レートが変化することはありませんが、Model Composer では、ハードウェア インプリメンテーション用のクロック ロジックを生成する際に、サンプル レートと共に内部ブロック レートも考慮されます。そのため、Model Composer Hub ブロックのパラメーター ダイアログ ボックスで Simulink system period を指定する際に、オーバーサンプリングされるブロックの内部処理レートを考慮する必要があります。

非同期クロック

Model Composer は、1 つのクロックに同期するハードウェアの設計に適していますが、場合によっては、複数のクロックを使用するシステムの設計にも使用できます。この場合、デザインをクロック ドメインに分割し、ドメイン間での情報転送をデュアル ポート メモリおよび FIFO で制御します。このセクションでは、Model Composer のクロック同期について説明します。この内容は、1 つのクロックのデザインおよび複数クロックのデザインの両方に関係します。

同期クロック

デフォルトでは、Model Composer により同期クロックでデザインが作成され、複数のレートはクロック イネーブルを使用して生成されます。Model Composer でモデルをハードウェアにコンパイルすると、ハードウェアの対応する部分が適切なレートで動作するように、デザインのサンプル レート情報が保持されます。Model Composer は、クロックとクロック イネーブル (1 つのレートに 1 つのイネーブル) を組み合わせて、関連するレートをハードウェアに生成します。各クロック イネーブルの周期は、システム クロックの周期の整数倍です。

Simulink 内では、Model Composer デザインの信号としてクロックおよびクロック イネーブルは必要ありません。Model Composer でデザインをハードウェアにコンパイルする際、デザインのサンプル レートから必要なクロック イネーブルが推論されます。具体的には、Model Composer Hub ブロックの 2 つのユーザー指定の値である Simulink system periodFPGA clock period が使用されます。これらの値は、Simulink シミュレーションの時間、および実際のハードウェア インプリメンテーションでの時間のスケーリング係数を定義します。Simulink システム周期は、モデルに含まれるサンプル周期の最大公約数 (gcd) にする必要があり、FPGA のクロック周期 (ns) はシステム クロックの周期です。Simulink システム周期を p、FPGA システム クロック周期を c とすると、Simulink で kp かかる処理は、ハードウェアではシステム クロックの k サイクル分 (kc ナノ秒) になります。

たとえば、3 つの Simulink サンプル周期 2、3、4 を含むモデルがあるとします。これらのサンプル周期の gcd は 1 で、そのモデルの Simulink system period フィールドで指定する必要があります。FPGA clock period は 10 ns に設定されているとします。これらの情報から、ハードウェアでの対応するクロック イネーブルの周期を決定できます。

ハードウェアでは、Simulink のサンプル周期 2、3、4 に対応するクロック イネーブルを CE2、CE3、CE4 を参照します。各クロック イネーブルの周期とシステム クロック周期の関係は、対応する Simulink サンプル周期を Simulink System Period 値で割ることにより求められます。この結果、CE2、CE3、CE4 の周期はそれぞれ 2、3、4 システム クロック周期になります。次の図に、クロック イネーブル信号のタイミング図の例を示します。

図 5. タイミング図