この手順では、異なるデータ レートで動作する複数の部分を含むデザインを参照し、デザインを複数のサブシステムに分割して異なるクロック ドメインをインプリメントします。
-
System Generator を起動します。
- Windows の場合は、 をクリックします。
- Linux システムの場合は、コマンド プロンプトに「
sysgen
」と入力します。
- 「
cd C:\SysGen_Tutorial\Lab4
」と入力して Lab4 フォルダーに移動します。 - コマンド プロンプトに「
open Lab4_1.slx
」と入力します。次の図に示すような Simulink デザインが表示されます。このデザインは、次の 3 つの部分から構成されています。
- チャネル フィルターは、入力信号 (491.52 MSPS) を典型的なマルチレート フィルターを使用してベースバンド付近 (61.44 MSPS) に変換します。2 つのハーフバンド フィルターの後に 2 の間引き段フィルターを使用しており、1 つの大型フィルターよりも必要な係数の数が大幅に少なくなります。
- 出力部分では、データを使用する後続のブロック用に出力の増加を制御します。
- 増加は POWER_SCALE 入力で制御します。
- [Run simulation] ボタンをクリックしてデザインをシミュレーションします。
次の図では、色を使用したサンプル時間表示がイネーブルになっており (キャンバスを右クリックして
をクリック)、デザインが複数のデータ レートで実行されていることが示されています。
-
System Generator 環境では、異なるデータ レートがデザインで自動的に伝搬されます。
このようなマルチレート デザインをハードウェアにインプリメントする場合、データと同じ周波数のクロックを使用するのが最適なインプリメンテーションですが、この環境ではクロックは表示されていません。次に、この理想的なインプリメンテーションを最も効率的に作成する方法を示します。
- System Generator を使用してマルチレート (マルチクロック) デザインを効率的にインプリメントするには、同じデータ レート (クロック周波数) で実行される部分を 1 つの階層に含めて、それぞれに System Generator トークンを追加します。これらの各階層を FIFO に接続します。
- このデザインには、はっきりとしたクロック ドメインが 2 つと、少しわかりにくいクロック ドメインが 1 つあります。
- 増加制御入力 POWER_SCALE は CPU から設定できるので、CPU と同じクロック周波数で実行できます。
- 出力段の実際の増加制御ロジックは、FIR からの出力データと同じ周波数で実行する必要があります。これにより、システムの後続のブロックにより効率的に接続できます。
- わかりにくいのはフィルター チェーンです。演習 1 で説明したように、FIR Compiler などの System Generator で提供される複雑な IP では、自動的にオーバーサンプリングが利用され、最も効率的なハードウェアが得られます。たとえば、100 MHz で動作する乗算器を 40 個使用するのではなく、FIR Compiler では 500 MHz で動作する乗算器を 8 個 (= 40*100/500) 使用します。そのため、フィルター チェーン全体を 1 つのクロック ドメインにまとめることができます。最初の FIR Compiler インスタンスは最大クロック レートで実行し、次のインスタンスでは自動的にオーバーサンプリングを使用します。
これらの領域を異なる階層にまとめることから始めます。
- 下の図に示すように、フィルター チェーンのすべてのブロックを選択します。これらを 1 つのクロック ドメインにまとめます。
-
Create Subsystem をクリックして新しいサブシステムを作成します。
- サブシステムのインスタンス名を選択し、DDC に変更します。
- 出力パスのコンポーネントを選択し、Gain Control という名前のサブシステムを作成します。
- Gateway In インスタンス POWER_SCALE と Constant を選択し、CTRL という名前のサブシステムを作成します。デザインは次の図に示すようになります。
デザインが完成すると、各サブシステムは異なるクロック周波数で実行されます。クロック ドメインはお互いに同期しない可能性があります。現時点では、1 つのサブシステムから別のサブシステムに無効なデータがサンプリングされるのを防ぐための機構はありません。
次の手順では、異なるドメイン間に非同期チャネルを作成し、デザインをハードウェアにインプリメントしたときに、データが異なるクロック ドメイン間で非同期に安全に転送されるようにします。