Comments
Description
Transcript
SOPC Builder
4. SOPC Builder コンポーネント この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 QII54004-6.0.0 はじめに この章では、SOPC Builder コンポーネントが何かを詳細に説明していま す。SOPC Builder コンポーネントは、SOPC Builder がより大きなシス テム・モジュールに統合するために使用する個別のデザイン・ブロック です。各コンポーネントは、ディレクトリ内のファイルの構造化セット で構成されています。 コンポーネント・ディレクトリのファイルは、以下の目的で使用されま す。 ■ ■ ■ ■ ■ I/O 信号の名前と種類など、コンポーネントへのハードウェア・イン タフェースを定義する。 コンポーネント・ロジックの構造とコンポーネント・インタフェー スを指定するパラメータを宣言する。 SOPC Builderでコンポーネントをコンフィギュレーションするための コンフィギュレーション・ウィザード GUI を記述する。 SOPC Builder がコンポーネント HDL を生成し、コンポーネントをシ ステム・モジュールに統合するのに必要なスクリプトとその他の情 報を提供する。 SOPC Builder よりも後にある開発ステップで必要な、ソフトウェア・ ドライバなどのコンポーネント関連情報を格納する。 カスタム・コンポーネントの作成方法について詳しくは、 「Quartus II ハ ンドブック Volume 4」の「SOPC Builder におけるコンポーネントの開 発」の章を参照してください。SOPC Builder の Component Editor につ いて詳しくは、 「Quartus II ハンドブック Volume 4」の「Component Editor」の章を参照してください。 コンポーネント のソース Altera Corporation 2006 年 5 月 次のように、コンポーネントのソースはいくつかあります。 SOPC Builder を備え、いくつかのコンポーネントをインストールする Quartus® II ソフトウェア。 ■ SOPC Builder コンポーネントを開発キットの機能として提供する、 Nios® II 開発キットなどのアルテラ開発キット。 ■ サードパーティ開発者が提供する SOPC Builder Ready コンポーネン ト。コンポーネント・ディレクトリやコンポーネントの使用方法に 関するドキュメントなど。 ■ ユーザは、SOPC Builder の Component Editor を使用して、独自の HDL ファイルを新しいカスタム・コンポーネントにパッケージする ことができます。 ■ 4–1 Quartus II ハンドブック Volume 4 コンポーネント・ファイルは手動で記述できますが、一貫性 と上位互換性を維持するために、アルテラではカスタム・コ ンポーネントは SOPC Builder の Component Editor を使用し て作成することを強く推奨しています。 コンポーネン ト・ハード ウェアの場所 関連するコンポーネント・ロジックが存在する場所に基づいて、2 種類 のコンポーネントがあります。 ■ ■ 関連ロジックをシステム・モジュール内部に含むコンポーネント システム・モジュール外部のロジックにインタフェースするコン ポーネント 図 4-1 に、両方の種類のコンポーネント例を示します。 図 4-1. システム・モジュール内部および外部のコンポーネント・ロジック Avalon Interface (Automatically connected by SOPC Builder) Avalon Switch Fabric System Module Component Logic ApplicationSpecific Interface Signals Avalon Switch Fabric Rest of the System External Logic or Off-Chip Device Signals Unrelated to SOPC Builder Avalon Interface (Manually connected by system designer) 4–2 Preliminary Altera Corporation 2006 年 5 月 コンポーネント・ディレクトリの構造と内容 ロジックをシステム・モジュール内部に含むコンポーネント この場合、コンポーネント・ファイルは、コンポーネント・ハードウェ アの完全な記述を提供します。システムの生成時、SOPC Builder は、シ ステム・モジュール内部のコンポーネント・ロジックをインスタンス化 し、コンポーネントを自動的にシステムの残りのコンポーネントに配線 します。システム・モジュール内部では、コンポーネントは Avalon® イ ンタフェースを通してシステムの残りのコンポーネントに接続されま す。コンポーネントは、Avalon 以外の信号を持つこともできます。SOPC Builder はトップレベルのシステム・モジュール上でそれを露出します。 システム・モジュール外部のロジックにインタフェースす るコンポーネント この場合、コンポーネント・ファイルは、システム・モジュール外部の ロジックへのインタフェースのみを記述します。システム生成中に、 SOPC Builder はこのコンポーネントに対してどのロジックもインスタ ンス化しません。代わりに、SOPC Builder は、このコンポーネント用の Avalon インタフェースをトップレベルのシステム・モジュール上で露 出します。このインタフェースは、別の HDL モジュールやオフチップ・ デバイスなどの外部ロジックに手作業で配線する必要があります。 図 4-1 に示すように、このケースでは、SOPC Builder コンポーネントは 物理的には具体化されません。外部ロジックにインタフェースするコン ポーネントは、Avalon インタフェースの形状のみを記述します。つま り、システム・モジュール内部のロジックは含まれません。 コンポーネン ト・ディレク トリの構造と 内容 ここでは、コンポーネント・ディレクトリに存在するファイルについて 説明します。図 4-2 に、Component Editor で作成される標準的なコン ポーネント・ディレクトリを示します。 図 4-2. 標準的なコンポーネント・ディレクトリ 少なくとも、コンポーネントは、class.ptf という名前のファイルを含む ディレクトリで構成されます。通常は、これ以外のファイルもあります。 包含ディレクトリの名前は無視されます。class.ptf ファイルは、SOPC Builder がコンポーネント・ファイルの名前と場所を知るために必要な すべての情報を定義します。 Altera Corporation 2006 年 5 月 4–3 Preliminary Quartus II ハンドブック Volume 4 図 4-2 に示すように、コンポーネント・ディレクトリには以下のアイテ ムとその他のファイルを含めることができます。 ■ class.ptf ファイル cb_generator.pl スクリプト ■ hdl ディレクトリ ■ class.ptf ファイル SOPC Builder は、コンポーネントについて知る必要があるすべての情報 を見つけるためにこのファイルを読み込みます。class.ptf ファイルは、 コンポーネントの以下の点について定義します。 1. コンポーネント ID – コンポーネント class.ptf ファイルは、コンポー ネントを識別する以下のプロパティを定義します。 ● ● ● ● 名前 – ユーザに見えるコンポーネント名。 クラス – SOPC Builderがコンポーネントを区別するのに使用す る一意の識別子。クラス名には、ファイル名を想像しやすい文 字のみを使用します。SOPC Builder でコンポーネントをインス タンス化すると、インスタンス名にはデフォルトでクラス名が 設定されます。 バージョン – コンポーネントのバージョンを識別します。シス テム生成中に、SOPC Builder は、システム・モジュール内の各 コンポーネントのバージョン番号を記録します。 グループ – SOPC Builder GUI で、このコンポーネントを使用可 能なコンポーネントのリストのどのグループに表示するかを決 定します。 2. コンポーネント・ハードウェアをシステム・モジュールに接続する 方法。例えば、以下の方法があります。 ● ● 4–4 Preliminary コンポーネントにインタフェースする – class.ptf ファイルは、 コンポーネントのブラック・ボックス構造を記述し、各インタ フェース信号の名前、種類、および方向を定義します。 コンポーネントのハードウェア・インスタンスの生成方法 – コ ンポーネントがシステム・モジュール内にロジックを含んでい る場合、class.ptf ファイルは、SOPC Builder がコンポーネン ト・ハードウェアを生成するメカニズムを指定します。class.ptf ファイルは、通常はコンポーネント・インスタンスを生成する 独立した実行可能ファイルを指定します。 Altera Corporation 2006 年 5 月 コンポーネント・ディレクトリの構造と内容 3. コンフィギュレーション可能なコンポーネント・オプションをユー ザに提示する方法。class.ptf ファイルは、ユーザがコンフィギュレー ション可能なパラメータを宣言し、それらのパラメータをコンフィ ギュレーションするための GUI を指定します。 cb_generator.pl ファイル このファイルは、システム生成時に SOPC Builder によって使用される Perl スクリプトです。SOPC Builder GUI に指定したパラメータに基づ いて、スクリプトはトップレベルのシステム・モジュールでインスタン ス化されるこのコンポーネントの1つ以上のインスタンスを生成します。 ファイルの名前には意味はありません。ファイル名は class.ptf ファイル に定義されています。 SOPC Builder の Componet Editor で生成されるコンポーネントの場合、 このスクリプトは、hdl ディレクトリのファイルによって定義される HDL モジュールをインスタンス化する Verilog または VHDL ラッパを 作成します。システム生成時、標準的なジェネレータ・スクリプトは、 HDL ファイルを Quartus II プロジェクト・ディレクトリにコピーし、そ のファイル名をインスタンス名と一致する一意の名前に変更します。 ジェネレータ・スクリプトは、SOPC Builder GUI に指定されたパラメー タに基づいて、トップレベルの HDL モジュールのパラメータを定義す ることもできます。 ほとんどのアルテラが提供するコンポーネント用のジェネレー タ・スクリプトは、SOPC Builder GUI に指定されたパラメータ に基づいて、コンポーネントの各インスタンスに対して、HDL を ダイナミックに生成します。HDL はプログラムで生成されるた め、このようなコンポーネントにはHDLファイルは含まれません。 hdl ディレクトリ このサブディレクトリには、コンポーネント・ハードウェアを記述する HDL ファイルが含まれます。このディレクトリは必ずしも存在する必要 はなく、ディレクトリの名前には意味はありません。この HDL ファイ ルが存在する場合、ジェネレータ・スクリプトはこの HDL ファイルへ の正確なパスを指定します。 Altera Corporation 2006 年 5 月 4–5 Preliminary Quartus II ハンドブック Volume 4 その他のコンポーネント・ファイル コンポーネント・ディレクトリには、コンポーネントのデザインと推奨 の使用方法に応じて、他のファイルやサブディレクトリを含めることが できます。通常、このようなアイテムは SOPC Builder で直接使用され ることはありませんが、他の開発ステージで必要です。SOPC Builder で は、SOPC Builder の目的に合わせて識別できないファイルはすべて無視 されます。 コンポーネント・ディレクトリに含めることができるアイテムには、以 下のなものがあります。 ■ ■ ■ ■ ■ ■ 4–6 Preliminary inc サブディレクトリ – このディレクトリにはペリフェラル・コンポー ネントのレジスタ・マップが含まれます。レジスタ・マップは通常、 コンポーネント・ハードウェアにアクセスするためのシンボルとマ クロを定義する C ヘッダ・ファイルとして宣言されます。SOPC Builder は、この情報を直接は使用しません。Nios II プロセッサ・シ ステムの場合、Nios II IDE は inc の内容を使用します。 HAL サブディレクトリ – このディレクトリにはコンポーネント用のソ フトウェア・ドライバが含まれます。SOPC Builder は、この情報を直 接は使用しません。Nios II プロセッサ・システムの場合、Nios II IDE は HAL の内容を使用して、コンポーネント用のソフトウェアを生成 します。 UCOSII サブディレクトリ – このディレクトリには、MicroC/OS-II リアルタイム・オペレーティング・システム(RTOS)固有の、コン ポーネント用のソフトウェア・ドライバが含まれます。SOPC Builder は、この情報を直接は使用しません。Nios II プロセッサ・システム の場合、Nios II IDE は UCOSII の内容を使用してコンポーネント用 のソフトウェアを生成します。 ジェネレータ・スクリプトに関連付けられたファイル – ジェネレータ・ スクリプトは、データ・ファイル、Perl ライブラリ、またはその他の ファイルを必要とする場合があります。 sdk サブディレクトリ – このディレクトリには、第 1 世代の Nios プロ セッサ用のレガシ・ソフトウェア開発キット(SDK)フローをサポー トするソフトウェアとヘッダ・ファイルが含まれます。 データ・ファイル、ソース・コード、または SOPC Builder 以外のツー ルで必要なその他のファイル Altera Corporation 2006 年 5 月 コンポーネント・ディレクトリの場所 コンポーネン ト・ディレク トリの場所 SOPC Builder は、起動するたびにコンポーネント・ディレクトリを検索 します。SOPC Builder によって検出されたコンポーネントは、SOPC Builder の System Contents タブにある使用可能なコンポーネントのリ ストに表示されます。 SOPC Builder は、以下の場所からコンポーネント・ディレクトリを検索 します。 1. 現在の QuartusII プロジェクト・ディレクトリ 2. SOPC Builder GUI の SOPC Builder Setup ページの Component/Kit Library Search Path に指定されたディレクトリ 3. SOPC_BUILDER_PATH 4. QUARTUS_ROOTDIR/sopc_builder/ 以下では、SOPC Builder によるコンポーネントの識別プロセスについて 説明します。 ■ ■ ■ ■ ■ SOPC_BUILDER_PATH と QUARTUS_ROOTDIR は、Quartus II の インストール・プロセス時に定義される環境変数です。 SOPC Builderは、記載されている順にそれぞれの場所からサブディレ クトリを検索し、次に各サブディレクトリで class.ptf ファイルを検索 します。 SOPC Builder は class.ptf ファイルを検出すると、そのファイルを読み 出してコンポーネントを識別し、そのコンポーネントをSOPC Builder GUI で使用できるように設定します。 同じコンポーネント・クラスのインスタンスが複数存在する場合、 SOPC Builder は以下のルールに従って、どのインスタンスを使用す るかを決定します。 ● 最も大きなバージョンのコンポーネントが優先されます。 ● すべてのコンポーネントのバージョンが同じ場合は、最初に検 出されたコンポーネントが優先されます。 ディレクトリがキット・ディレクトリ(.sopc_builder という名前の ファイルの存在によって示される)として認識される場合、SOPC Builder はさらに components/ サブディレクトリを検索します。 図 4-3 に、Quartus II 開発ソフトウェアとともにインストールされるコ ンポーネントのディレクトリ例を示します。すべてのディレクトリが、 ユーザに見えるコンポーネントと直接対応しているとは限りません。 Altera Corporation 2006 年 5 月 4–7 Preliminary Quartus II ハンドブック Volume 4 図 4-3. Avalon コンポーネント・ディレクトリ 4–8 Preliminary Altera Corporation 2006 年 5 月