11. 複数クロック・ドメインでの システム構築 この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 QII54008-6.0.0 はじめに この章では、SOPC Builder を使用して複数のクロック・ドメインを持つ システムを作成するプロセスを説明します。1 つのクロック・ドメイン を使用する既製のデザインで開始し、2 つのクロックを使用するように デザインを修正します。 デザイン例の概要 この章に記載するデザインは、独立したコントロール・パスとデータ・ パスを持つシステムの一般的なシナリオに類似しています。一般にコン トロール・パスは低速です。これはコントローラ自体が比較的低速であ り、データ転送をセットアップするための短いバーストでしか使用され ないためです。他方、データ・パスは高速なので、コントローラが転送 を開始した後、データはソースからディスティネーションまで可能な限 り高速で移動します。 11–2 ページの図 11-1 に、システム構造の簡略化されたブロック図を示し ます。このデザインでは、Nios® II プロセッサは、50 MHz で動作するコ ントローラとして機能します。100 MHz で動作する DMA コントローラ はデータ・パスを管理し、同じく 100 MHz で動作するデータ・バッファ を読み書きします。この図は、システムのマルチ・クロックの本質に焦 点を当てたもので、マスタ・ポートとスレーブ・ポート間の接続を示し ています。 Altera Corporation 2006 年 5 月 11–1 Quartus II ハンドブック Volume 4 図 11-1. デザイン例の簡略化ブロック図 CPU 50 MHz S インスト ラクション データ M DMA 100 MHz コントロール M リード ライト M M コントロール・ パス データ・ パス クロック・ ドメイン・ クロス・ ロジック アービタ アービタ アービタ S S S SDRAM コントローラ 50 MHz リード・ バッファ 100 MHz ライト・ バッファ 100 MHz プログラムと データを含む SDRAMへの 接続 入力ストリーム 出力ストリーム M Avalonマスタ・ポート S Avalonスレーブ・ポート 図 11-1 は、Nios II プロセッサで使用される JTAG UART 通信ペリフェ ラルやタイマ・ペリフェラルなど、複数クロックの問題に直接関連性が ないデザイン例の特徴は示していません。 ハードウェアおよびソフトウェア要件 この章の評価用デザインを使用するには、以下のものが必要です。 ■ 11–2 暫定仕様 評価用デザインのためのデザイン・ファイル – デザイン・ファイル へのハイパーリンクは、この章の SOPC Builder 資料ページの隣にあ ります。www.altera.co.jp/sopcbuilder を参照してください。 Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 Quartus® II ソフトウェア・バージョン 4.2 以上 – 評価用デザインで は、Quartus II Web Edition とフル・ライセンス・バージョンの両 方が動作します。 ■ Nios II 開発キット・バージョン 1.1 以上 – 評価用デザインでは、評価 版とフル・ライセンス・バージョンの両方で動作します。 ■ Nios 開発ボードとアルテラの USB-BlasterTM ダウンロード・ケーブル (オプション)– 以下の Nios 開発ボードのいずれも使用できます。 ■ ● ● ● ● Stratix® II Edition Stratix Edition Stratix Professional Edition CycloneTM Edition 開発ボードがない場合、ハードウェア開発ステップに従うことはで きますが、作業用ボードにシステム全体をダウンロードすることは できません。 Quartus II Web Edition ソフトウェアと Nios II 開発キット評価版は、ア ルテラのダウンロード・センタ(www.altera.co.jp)から無料でダウン ロードできます。 作業を開始する前に、Quartus II ソフトウェアと Nios II 開発ツー ルをインストールする必要があります。 マルチ・ クロック・ ハードウェア・ システムの作成 ここでは、Nios II 開発キットに付属している評価用ハードウェア・デザ インで作業を開始し、マルチ・クロック・システムを作成します。以下 のステップを実行します。 1. ハードウェア・デザイン・ファイルを新しいディレクトリにコピー します。 2. SOPC Builder のデザインを修正して、マルチ・クロック・ハードウェ ア・システムを作成します。 3. 新しいクロック・ドメインを使用するように、Quartus II デザイン をアップデートします。 4. Quartus II ソフトウェアのハードウェア・デザインをコンパイルし、 そのハードウェア・デザインをターゲット・ボードにダウンロード します。 Altera Corporation 2006 年 5 月 11–3 暫定仕様 Quartus II ハンドブック Volume 4 ハードウェア・デザイン・ファイルを新しいディレクトリ にコピーする この章で使用するハードウェア・デザインは、Nios II 開発キットに含ま れる標準的な 標準的な評価用ハードウェア ・デザインに基づきます。以下のステッ 標準的な プを実行して、デザイン・ファイルをコピーします。 1. ホスト・コンピュータのファイル・システムで、以下のディレクト リを検索します。 <Nios II キットのパス >\examples\<verilog または vhdl>\< ボード・ バージョン >\standard 各開発ボードには、デザインの VHDL および Verilog バージョンが あります。どちらのバージョンでも使用できます。表 11–1 に Nios 開発ボードで使用できるディレクトリの名前を示します。 表 11–1. デザイン・ファイル・ディレクトリ Nios 開発ボード Stratix II Edition チュートリアル・ディレクトリ niosII_stratixII_2s60_es Stratix Edition niosII_stratix_1s10 or niosII_stratix_1s10_es Stratix Professional Edition niosII_stratix_1s40 Cyclone Edition niosII_cyclone_1c20 デモのために、この章に記載する数値は、Nios 開発ボード、Cyclone Edition の Verilog デザインのケースを示しています。 2. standard ディレクトリを新しい場所にコピーします。本書では、新し く作成されるディレクトリを < ハードウェア・ファイル・ディレク トリ > と呼びます。 SOPC Builder でのデザインの変更 ここでは、SOPC Builder でマルチ・クロック・システムを実装するプロ セスを説明します。ここでは、以下のことを行います。 1. SOPC Builder でシステムを開きます。 2. 1 個の DMA コントローラと 2 個の 4 K バイト・オンチップ・メモリ・ コンポーネントを追加します。 11–4 暫定仕様 Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 3. DMA のマスタ・ポートをメモリのスレーブ・ポートに接続します。 4. クロック・ドメインのアサインメントを行います。 5. システムを再生成します。 SOPC Builder でシステムを開く SOPC Builder でシステムを開くには、以下のステップを実行します。 1. Quartus II ソフトウェアを起動します。 2. Open Project (File メニュー ) を選択します。 3. < ハードウェア・ファイル・ディレクトリ > を参照します。 4. standard.qpf を選択し、Open をクリックします。 5. SOPC Builder (Toolsメニュー)を選択し、 SOPC Builderを起動します。 SOPC Builder ウィンドウが開き、システムの内容が表示されます。ユー ザはこれをデザインの出発点として使用します。 DMA コントローラおよびメモリ・コンポーネントの追加 以下のステップに従って、DMA コントローラおよびメモリ・コンポー ネントをシステムに追加します。 1. SOPC Builderの使用可能なコンポーネントのリストで、Otherグルー プの DMA を選択し、Add をクリックします。DMA コンフィギュ レーション・ウィザードが表示されます。 2. DMA コンフィギュレーション・ウィザードで、Finish をクリックして、 デフォルト設定を受け入れます。SOPC Builder の System Contents タ ブに戻り、dma_0 という名前の新しい DMA コンポーネントが表示さ れます。 SOPC Builder メッセージ・ウィンドウにエラーが表示されます。こ のエラーは後のステップで修正するので、ここではメッセージを無 視できます。 3. 使用可能なコンポーネントのリストで、Memory グループの On-Chip Memory (RAM or ROM) を選択し、Add をクリックします。オン・ チップ・メモリ・コンフィギュレーション・ウィザードが表示されます。 Altera Corporation 2006 年 5 月 11–5 暫定仕様 Quartus II ハンドブック Volume 4 4. オン・チップ・メモリ・コンフィギュレーション・ウィザードで、Finish をクリックして、デフォルト設定を受け入れます。SOPC Builder の System Contents タブに戻り、新しいメモリ・コンポーネントが表示さ れます。 5. 新しいメモリ・コンポーネントを右クリックし、Rename を選択します。 6. read_buffer と入力して、コンポーネントの名前を変更します。 7. ステップ 3 および 4 を繰り返して、別のオン・チップ・メモリ・コン ポーネントをシステムに追加します。 8. 新しいメモリ・コンポーネントを右クリックし、Rename を選択します。 9. write_buffer と入力して、コンポーネントの名前を変更します。 DMA およびメモリ・コンポーネントに上記で指定されたとお りの名前(dma_0, read_buffer および write_buffer)を付ける 必要があります。コンポーネントに別の名前を付けた場合、後 のステップが失敗します。 DMAのマスタ・ポートをメモリのスレーブ・ポートに接続します。 これで、システムに DMA コントローラとメモリ・コンポーネントが追 加されました。それらのマスタ・ポートとスレーブ・ポートを適切に接 続する必要があります。以下のステップを実行します。 1. マウス・ポインタを SOPC Builder の System Contents タブの接続パ ネルの上に置くと、DMA に指定可能なマスタ・ポート接続が表示さ れます。図 11-2 を参照してください。 2. DMA リード・マスタ・ポート(dma_0/read_master)を read_buffer メモリに接続します。 3. DMA ライト・マスタ・ポート(dma_0/write_master)を write_buffer メモリに接続します。 4. Nios IIプロセッサ・インストラクション・マスタ (cpu/instruction_master) を両方のオン・チップ・メモリのスレーブ・ポートから切断します。こ のデザイン例の場合、プロセッサは命令をフェッチするのにこれらの メモリを使用しません。 5. Nios II プロセッサ・データ・マスタ(cpu/data_master)が DMA スレー ブ・ポート(dma/control_port_slave)に接続されていることを確認し ます。 11–6 暫定仕様 Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 図 11-2 に、すべてのコンポーネントが正しく接続された後の接続パネル の状態を示します。 図 11-2. マスタ・ポートとスレーブ・ポート間の正しい接続 DMA コントローラがオン・チップ・メモリに正しく接続されると、SOPC Builder のメッセージ・ウィンドウからエラー・メッセージが消えます。 クロック・ドメイン・アサインメントの実行 ここでは、100 MHz のクロック入力を指定し、DMA およびメモリ・コ ンポーネントを新しいクロック・ドメインに割り当てます。次にシステ ムを生成します。以下のステップを実行します。 1. Clock MHz の System Contents タブで、click to add というラベル のセルをクリックして、新しいクロック・エントリを入力します。 2. 図 11-3 に示すように、新しいクロックの名前に fastclk を入力します。 3. 図 11-3 に示すように、fastclk のスピードに 100 を入力します。 図 11-3. クロック設定 4. 図 11-4 に示すように、DMA コンポーネントの Clock リストで、fastclk を選択して、 DMAコンポーネントに100 MHzクロックを割り当てます。 5. 図 11-4 に示すように、read_buffer および write_buffer コンポーネ ントに対して、ステップ 4 を繰り返します。 Altera Corporation 2006 年 5 月 11–7 暫定仕様 Quartus II ハンドブック Volume 4 図 11-4. DMAおよびメモリ・コンポーネントへの異なるクロックの割り当て 6. Generate をクリックして、システムの生成を開始します。 7. システム生成が正常に完了したら、 SOPC Builderを終了して、 Quartus II ソフトウェアに戻ります。 Quartus II デザインのアップデート この時点で、複数のクロック・ドメインを使用する SOPC Builder シス テムが作成されています。ここでは、以下のステップを実行します。 1. システム・モジュール・シンボルをアップデートします。 2. 100 MHz クロックを生成するように PLL 設定をアップデートします。 3. 100 MHz クロックをシステム・モジュールに接続します。 4. デザインをコンパイルして、ボードにダウンロードします。 このセクションを完了するには、Quartus II Block Editor を理解してい る必要があります。 システム・モジュール・シンボルをアップデートする standard.bdf ファイルは、Quartus II プロジェクト用のトップ・レベル・ ブロック・ダイアグラム・ファイル(BDF)です。BDF には、SOPC Builder システム・モジュール用のシンボルが含まれており、std_<FPGA> という 名前が付けられています。ここで、<FPGA> はターゲット開発ボード上の FPGA を指します。 SOPC Builder システム・モジュールは、100 MHz クロック・ドメイン に別のクロック入力が必要なので、システム・モジュールのシンボルを アップデートする必要があります。古いシンボルを削除して、アップデー トされたシンボルを挿入するには、以下のステップを実行します。 11–8 暫定仕様 Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 以下のステップでは、FPGA ピンへの接続を含めて、システム・ モジュールへのすべての接続を取り外してから再接続します。 これらの接続を正確に行う必要があります。そうしないと、デ ザインがハードウェアで動作せず、開発ボードを損傷する可能 性があります。可能な場合は、BDF を参考にプリントしておけ ば、後でシステム・モジュールにピンを再接続するときに役立 ちます。 1. BDF で、シンボル std_<FPGA> を選択して、削除します。 2. 以前にシンボルの右側に接続されていたすべてのピンをクリック& ドラッグして選択します。 3. 右矢印キーを 10 回押して、ピンを右に移動し、新しいシンボル用にス ペースを作成します。 4. 新しいシンボルを挿入するために、シンボルを置くスペースをダブ ルクリックします。Symbol ウィンドウが表示されます。 5. Libraries の下の Project フォルダを展開します。 6. std_<FPGA> シンボルを選択して、OK をクリックします。図 11-5 を 参照してください。 Altera Corporation 2006 年 5 月 11–9 暫定仕様 Quartus II ハンドブック Volume 4 図 11-5. 新しいシンボルの選択と挿入 7. マウスを移動してピン・シンボルの間にあるシンボルに置き、左マ ウス・ボタンをクリックしてシンボルを配置します。 8. シンボルを調べて、新しいクロック入力 clk_fastclk と古いクロック入 力に注目します。 古いクロック入力は現在 clk_clk という名前になって います。 9. クロック入力 clk_clk および clk_fastclk を除く以前のすべての接続を std_<FPGA> シンボルに再接続します。これらのクロック入力は後の ステップで接続します。 11–10 暫定仕様 Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 図11-6にクロックを除くすべての信号に再接続される新しいシンボルを 示します。 図 11-6. クロック接続のないアップデートされたシンボル 100 MHzクロックを生成するようにPLL設定をアップデートする 以下のステップを実行して、BDF での PLL インスタンスを変更して、 100 MHz クロックを生成します。 1. BDF でシンボル sdram_pll を配置します。 2. このシンボルを右クリックして、MegaWizard® Plug-in Manager を 選択し、PLL 設定をコンフィギュレーションします。ALTCLKLOCK ファンクション用の MegaWizard Plug-In Manager が表示されます。 Altera Corporation 2006 年 5 月 11–11 暫定仕様 Quartus II ハンドブック Volume 4 この時点で、Quartus II ソフトウェアが以下の穏やかな警告を表示す る場合があります。Delay shifts (time delay elements) are no longer supported in the Stratix PLLs(遅延シフ ト(時間遅延エレメント)は、Stratix PLL ではもはやサポートさ れていません)このメッセージが表示された場合は、OK をクリック します。 3. 図 11-7 に示すウィザード・フローのページ 15 の 6 に達するまで、Next をクリックします。 4. Use this clock をクリックします。 5. Enter output clock frequency を選択します。 6. Requested settings で、100 と入力し、MHz を選択します。 図 11-7 に、正しい設定の ALTCLKLOCK MegaWizard Plug-In Manager を示します。 図 11-7. 100 MHz クロックを生成する ALTCLKLOCK の設定 7. Finish をクリックして、ウィザード・フローの最後のステージ(15/15 ページ)にジャンプします。 8. Finish を再度クリックして、Quartus II ソフトウェアに戻ります。 9. sdram_pll シンボルを右クリックして、Update Symbol or Block を選 択します。Update Symbol or Block ダイアログが表示されます。 11–12 暫定仕様 Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 10. OK をクリックして、シンボルの選択されたインスタンスをアップデー トします。 これで PLL が、100 MHz 出力クロックを生成するように正しくコンフィ ギュレーションされます。 アルテラ・デバイスでの PLL の使用方法について詳しくは、ターゲッ ト・デバイス・ファミリのハンドブックを参照してください。 システム・モジュールへの 100 MHz クロックの接続 次に、SOPC Builder システム・モジュールにクロック信号を接続する必 要があります。これを行う最も簡単な方法は、PLL 出力をコンジット・ エイリアスを使用してシステム・モジュール入力にシンボルでリンクす ることです。ここでは、1 つの接続を作成する手順示します。残りの接 続は、演習としてユーザ自身で作成してください。 100 MHz クロック信号を PLL からシステム・モジュールに接続するに は、以下のステップを実行します。 1. マウス・ポインタを sdram_pll 上のノード c1 の上に、マウス・ポイ ンタの形状が十字に変わるまで移動します。 2. クリックして右にドラッグし、コンジット(つまり、接続ライン)を ノード c1 に追加します。 3. コンジット・ラインをクリックして選択します。 4. dmaclk と入力し、Enter を押します。 5. マウス・ポインタを std_<FPGA> 上のノード clk_fastclk の上に、マ ウス・ポインタの形状が十字に変わるまで移動します。 6. クリックして、左にドラッグし、コンジットをノード clk_fastclk に 追加します。 7. コンジット・ラインをクリックして選択します。 8. dmaclk と入力し、Enter を押します。 これで、コンジット・エイリアスを介して 2 つのノードがシンボル(名 前 dmaclk)でリンクされました。 Altera Corporation 2006 年 5 月 11–13 暫定仕様 Quartus II ハンドブック Volume 4 以下の指示に従って、残りのクロック接続を完成させます。ターゲット とする Nios 開発ボードによって、PLL への残りの PLL 接続は多少異な ります。ここでは、すべての Nios 開発ボードで使用できる手順を示し ます。 自分のボードに適用する手順を使用してください。そうしない と、ハードウェアでデザインが失敗します。 Nios 開発ボード Stratix II Edition、Stratix Professional Edition、および Stratix Edition の場合は、表 11–2 に従って PLL を接続します。 表 11–2. PLL 接続 sdram_pll 上のノード 接続先 c0 std_<FPGA> 上の clk_clk c1 std_<FPGA> 上の clk_fastclk e0 PLD_CLKOUT ピン Nios 開発ボード Cyclone Edition の BDF には、sdram_pll に加えて、 connector_pll という名前の第 2 の PLL シンボルが含まれています。 表 11–3 に従って、両方の PLL を接続します。 表 11–3. Nios 開発ボード Cyclone Edition での PLL 接続 ノード 11–14 暫定仕様 接続先 sdram_pll 上の c0 なし sdram_pll 上の c1 std_<FPGA> 上の clk_fastclk sdram_pll 上の e0 SDRAM_CLK ピン connector_pll 上の c0 std_<FPGA> 上の clk_clk connector_pll 上の e0 PLD_CLKOUT ピン Altera Corporation 2006 年 5 月 マルチ・クロック・ハードウェア・システムの作成 図 11-8 に、コンジット・エイリアスを使用してすべての接続を完成した Nios 開発ボード Cyclone Edition の BDF の例を示します。 図 11-8. システム・モジュールに PLL を接続したシンボリック・コンジット・エイリアス デザインのコンパイルとボードへのダウンロード デザインをコンパイルし、ターゲット・ボードにダウンロードするには、 以下のステップを実行します。 1. Save(File メニュー)を選択して、BDF に対する変更内容を保存し ます。 2. Start Compilation(Processing メニュー)を選択して、ハードウェア・ デザインのコンパイルを開始します。コンパイルが開始されます。 これまでのステップをすべて正しく実行していれば、QuartusII のコン パイルは数分で正常に終了し、プロジェクト用の新しい FPGA コンフィ ギュレーション・ファイルが生成されます。 Altera Corporation 2006 年 5 月 11–15 暫定仕様 Quartus II ハンドブック Volume 4 この章の残りのステップは、開発ボードがある場合にのみ実行で きます。 ボードにハードウェア・デザインをダウンロードするには、以下のステッ プを実行します。 1. USB Blaster などのアルテラ・ダウンロード・ケーブルを使用して、 ホスト・コンピュータを開発ボードに接続します。 2. Programmer(Tools メニュー)を選択して、Quartus II Programmer を開きます。 3. Programmer ウィンドウを使用して、ボードに以下の FPGA コンフィ ギュレーション・ファイルをダウンロードします。 <Hardware files directory>\standard.sof これで、マルチクロック・ハードウェア・デザインを作成して、それを ハードウェアにダウンロードするすべてのステップが完了しました。こ のデザインは Nios II プロセッサに基づいているため、ハードウェアを 実験するには、プロセッサ上でソフトウェア・プログラムを実行する必 要があります。 ソフトウェアを 実行してマルチ クロック・ ハードウェアを 実験する ここでは、NiosII プロセッサ上でソフトウェアを実行して、マルチクロッ ク・ドメイン・ハードウェアを実験します。このプログラムは、Nios II プ ロセッサを使用して DMA 転送をセットアップおよび初期化し、DMA 転 送が完了するまでの時間を測定します。 このプログラムをマルチクロック・ドメイン・システム専用とし て使用するのに、特別な注意はありません。Avalon スイッチ・ ファブリックは、クロック・ドメイン・クロスの詳細を抽象化す るため、Nios II プロセッサではシステム・クロック・ドメインの プロパティを認識しなくても、DMA コントローラの高速性能の 利点が得られます。 以下のステップを実行します。 1. 評価用ソフトウェア・デザインのファイルをインストールします。 2. このソフトウェア・ファイルを使用して、新しい Nios II IDE プロジェ クトを作成します。 3. プログラムをビルドして実行します。 4. 結果を分析します。 11–16 暫定仕様 Altera Corporation 2006 年 5 月 ソフトウェアを実行してマルチクロック・ハードウェアを実験する このセクションでのステップを完了するには、以前のすべてのステップ を実行し、マルチ・クロック・ハードウェア・デザインによってターゲッ ト・ボードを正しくコンフィギュレーションしている必要があります。 評価用ソフトウェア・デザイン・ファイルのインストール ここでは、自分のコンピュータに評価用ソフトウェア・デザイン・ファ イルをインストールします。アルテラの Web サイトから評価用デザイ ン・ファイルをダウンロードできます。ファイルのインストールを続行 する前に、この章の URL に関連付けられているファイル multi_clock.zip をダウンロードします。 multi_clock.zip ファイルには、以下の C 言語ソース・ファイルが含ま れています。 dma_xfer.c — main() が含まれています。 init.c、init.h — メモリ・バッファをセットアップし、タイマを初期化 する初期化ルーチンが含まれています。 ■ settings_check.h — ハードウェアに必要な DMA とメモリ・コンポー ネントが含まれていることを検証する基本的なエラー・チェックを 提供します。 ■ ■ multi_clock.zip ファイルには、Nios II IDE ソフトウェア・テンプレー トとしてパッケージされた評価用ソフトウェア・ファイルが含まれてい ます。以下のステップに従って、ファイルをインストールします。 1. multi_clock.zip の内容を multi_clock という名前の新しいディレク トリに抽出します。 2. multi_clock ディレクトリを以下のディレクトリの下に移動します。 <Nios II kit path>\examples\software ファイルが Nios II IDE テンプレートとしてパッケージされているのは、 ソフトウェアを実行するのに必要なステップ数を減らすためにすぎませ ん。マルチクロック・ドメイン・システム用のソフトウェアを記述する ときに、必ずしもテンプレートは必要ありません。テンプレートを使用 すると、以下の Nios II IDE の機能が自動的に提供されます。テンプレー トを使用しない場合は、これらの機能を手動で実行する必要があります。 1. 新しいプロジェクト・ディレクトリにソース・ファイルをインポー トする。 2. システム・ライブラリ設定をセットアップする。 3. プロジェクト設定をセットアップする。 Altera Corporation 2006 年 5 月 11–17 暫定仕様 Quartus II ハンドブック Volume 4 新しい Nios II IDE プロジェクトの作成 提供された評価用ファイルを使用して、新しい Nios II IDE プロジェクト を作成するには、以下のステップを実行します。 1. Nios II IDE を起動します。 2. New > C/C++ Application(File メニュー)を選択して、新しいプロ ジェクトを開始します。New Project ウィザードの最初のページが表 示されます。 3. Select Project Template で、Multi-Clock Domain Tutorial を選択し ます。 4. Use Default Location がオンになっていることを確認します。 5. Select Target Hardware の Browse をクリックします。Select Target Hardware ダイアログ・ボックスが表示されます。 6. 以前にハードウェア・デザインを作成した <hardware files directory> ディ レクトリを参照します。 7. std_<FPGA>.ptf ファイルを選択します。 8. Open をクリックして、New Project ウィザードに戻ります。図 11-9 に示すように、SOPC Builder System フィールドが指定され、CPU フィールドにシステム内の CPU の名前が表示されます。 9. Finish をクリックします。 11–18 暫定仕様 Altera Corporation 2006 年 5 月 ソフトウェアを実行してマルチクロック・ハードウェアを実験する 図 11-9. 正しい値が設定された New Project ウィザード IDE で新しいプロジェクトが正常に作成されると、図 11-10 に示すように、 C/C++ Projects ビューに、Nios II Device Drivers に加えて、multi_clock_0 と multi_clock_0_syslib の 2 つの新しいプロジェクトが表示されます。 図 11-10. C/C++ Projects ビューに表示される新しいプロジェクト プログラムのビルドと実行 ここでは、Nios II IDE でソフトウェアをビルドして開発ボード上で実行 します。簡単に説明すると、このプログラムは以下の処理を実行します。 ■ Altera Corporation 2006 年 5 月 リードおよびライト・メモリ・バッファを初期化し、リード・メモ リ・バッファにランダム値を入れます。 11–19 暫定仕様 Quartus II ハンドブック Volume 4 ■ ■ ■ ■ ■ ■ タイマの初期化を実行して、DMA トランザクションに要する時間を 正確に測定します。 DMA トランザクションをセットアップし、リード・バッファの内容 をライト・バッファにコピーします。 タイマを起動し、DMA トランザクションを開始して、DMA が割り 込みを生成するまで待機します。 DMA トランザクションが終了すると、タイマを停止します。 ライト・バッファの内容が正しいことを検証します。 DMA トランザクションに要する時間をレポートします。 プログラムをビルドして実行するには、以下のステップを実行します。 1. Nios II IDE C/C++ Projects ビューで、multi_clock_0 プロジェクト を選択します。 2. Run As > Nios II Hardware(Run メニュー)を選択してプログラムを ビルドし、ボードにダウンロードして実行します。IDE でプログラ ムが自動的にビルドされてから、実行が試行されます。ビルド・プ ロセスには数分かかる場合があります。ビルドが完了したら、IDE に よってターゲット・ボードにプログラムがダウンロードされ、実行 されます。 3. Console ビューで結果を確認します。 Console ビューに、以下のような結果が表示されます。 nios2-terminal: starting in terminal mode (Control-C exits) Hello from Nios II! Starting DMA transfer... Starting a DMA transfer of 4096 bytes of data. DMA transfer completed. It took 34.3600006104 useconds to complete the transfer. Comparing send and receive buffer data... Data Matches. Program completed successfully. プロジェクトのビルドおよびダウンロード方法について詳しくは、 Nios II IDE のオンライン・ヘルプを参照してください。 11–20 暫定仕様 Altera Corporation 2006 年 5 月 まとめ この例では、DMA は 1 秒間あたり約 120 MB(4096 バイト /34.36 マイ クロ秒)を達成しています。ソース(リード)およびデスティネーショ ン(ライト)バッファ・メモリはゼロ・ウェート・ステートなので、1 クロック・サイクルあたり最大 1 転送を実行できます。100 MHz での連 続 32 ビット転送の場合、理論的な最大 DMA 転送性能は 1 秒間あたり 400 MB です。34.36 マイクロ秒時間には、以下のプロセッサ・オーバ ヘッドが含まれます。これによって 400 ∼ 120 の差が生じます。 DMA ドライバが DMA 転送のセットアップに要する時間 DMA が転送完了をフラグした後、割り込みハンドラで要する時間 ■ DMA コールバック関数に入って終了時刻をキャプチャするのに要す る時間 ■ ■ まとめ Altera Corporation 2006 年 5 月 以上で、この章で説明するすべてのチュートリアル・ステップを完了し ました。SOPC Builder でマルチクロック・ドメイン・システムを作成し てシステムをハードウェアで実験できました。 11–21 暫定仕様 Quartus II ハンドブック Volume 4 11–22 暫定仕様 Altera Corporation 2006 年 5 月