入門チュートリアル - 仮想計測器の追加
デザイン内部のノードの状態をテストするため、仮想計測器を '接続する' ことができます。計測器の 'ハードウェア' の部分は、他のコンポーネントと同じように回路図上に配置、配線され、FPGAに論理合成されます。各計測器へのインターフェースには、Devices ビューからアクセスします。
仮想計測器は、\Library\Fpga\FPGA Instruments.IntLib
ライブラリから配置します。
一組の計測器をチュートリアル用のデザインに追加してみましょう:
- 周波数カウンタ(FRQCNT2) - クロック分周器回路からの周波数出力の表示用。
- デジタル IO モジュール(DIGITAL_IO) - カウンタ出力と NanoBoard の DIP スイッチに関連する 3 つのスイッチについての現在の状態の表示用。
この時点でプロジェクトの現在の状態は、VHDL サブファイルで供給されたクロック分周器があります。チュートリアルのこのパートでは、それをそのままにしておくことにします。回路図での分周器の編集作業に戻る必要は特に無いからです。もちろん、試してみることはいつでも可能です。
周波数カウンタの追加
では、始めましょう。周波数カウンタをチュートリアル用のシンプルなカウンタデザインに配置し、接続します。
- Simple_Counter の回路図ドキュメント (
Simple_Counter.SchDoc
) を開きます。
- Libraries パネルにアクセスして、FRQCNT2 コンポーネントを FPGA Instruments と言う統合ライブラリ (
FPGA Instruments.IntLib
) から配置します。VHDL サブファイルの参照に使用したシートシンボルの右下に配置します。
- Tools » Annotate Schematics Quietly コマンドを使用してアノテートします。
モニタしたい信号は、クロック分周器(CLK_OUT)の出力です。この信号を仮想計測器の FREQA 入力に接続します。TIMEBASE 信号は、NanoBoard(CLK_REF)からのオリジナルの周波数である必要があります。
仮想計測器を接続します(図 1 参照)。GND ポートを配置します。仮想計測器の FREQB ピンに直に接続されていますが、このチャネルは使用していません。
図 1. シンプルカウンタのデザインに配置され、接続された周波数カウンタの仮想計測器。
デジタル IO モジュールの追加
デジタル IO の仮想計測器を追加しましょう。
- Libraries パネルにアクセスして、デザイン中のメイン回路の中央上方に、DIGITAL_IO コンポーネントを配置します。
- Tools » Annotate Schematics Quietly コマンドを使用してアノテートします。
接続を検討する前に、モニタしたい信号について仮想計測器を構成しましょう。
仮想計測器を右クリックして、Configure U13 (DIGITAL_IO) をメニューから選択します。Digital I/O Configuration ダイアログにアクセスします(図 2)。デフォルトで、仮想計測器の構成がシングル 8-bit 入力バス (
図 2. デジタル IO 仮想計測器の構成をコントロール。AIN[7..0]
)、シングル 8-bit 出力バス (AOUT[7..0]
) になっていることに注意してください。
- 出力を生成しなくてもデフォルトのエントリは簡単に削除することができます。
AOUT[7..0]
信号をクリックして選択し、Remove ボタンをクリックします。
- デフォルトの入力信号はチュートリアルの目的にかなう周波数幅なので、この信号は保持しましょう。ただし、もっと意味のある名前にします。
Count_Output[7..0]
と言う名前にします。Style 設定をLEDs
のままにします。ただし、Color 設定は、Green
(NanoBoard 上の LED の色を模倣!)に変更します。
- 関連する DIP スイッチ信号をモニタするため、更に 3 つの入力信号を構成に追加しましょう。3 つの信号は以下のように定義します:
- Signal 1 - Name:
Shift_Left
, Style:LEDs
, Color:Green
. - Signal 2 - Name:
Shift_Right
, Style:LEDs
, Color:Green
. - Signal 3 - Name:
STOP
, Style:LEDs
, Color:Red
.
- Signal 1 - Name:
ダイアログの Input Signal 領域は、図 3 のようになるはずです。
図 4 のように、仮想計測器を接続します。ネットラベルを使用してモニタしたい信号 (
図 4. シンプルカウンタのデザインに配置され、接続されたデジタル IO の仮想計測器。S04
,SO3
,SO2
) を取り出して、乱雑な接続を避けることに注意してください。このようなネットラベルは、データ取得ポイントのために既に作ってあるので、コピーアンドペーストすれば事足ります。モニタしている信号は、既にそれぞれの変換器を通過した後のものであることに注意してください。このことは、DIP スイッチに関連するスイッチがアクティブローであるために起こります。従って、Off よりも ON ポジションに設定された時に、ライトの点灯を確認するほうが良いでしょう。
ソフトデバイス JTAG のチェーンの有効
Altium Designer 環境から、組込みプロセッサや FPGA デザイン内の仮想計測器への通信は、JTAG 通信リンクを通じて行われます。この通信は、デスクトップ NanoBoard 上でソフト JTAG(または Nexus)チェーンとして参照されます。
ソフト JTAG チェーンの信号 (NEXUS_TMS
、NEXUS_TCK
、NEXUS_TDI
、NEXUS_TDO
) は、デスクトップ NanoBoard の NanoTalk コントローラ(Xilinx Spartan-3)に由来するものです。通信チェーンの一環として、これらの信号は FPGA ドータボードの 4 つのピンに接続されています。これらのピンとの通信には、NEXUS_JTAG_CONNECTOR
と言うデザインインターフェースのコンポーネントが必要です(図 5)。このコンポーネントは、FPGA NB2DSK01 Port-Plugin と言う統合ライブラリ (\Library\Fpga\FPGA NB2DSK01 Port-Plugin.IntLib
) にあります。
このコンポーネントで、ソフト JTAG が使用できるようになります。関係する全ての Nexus 対応可能デバイス(このチュートリアルでは、2 つの仮想計測器)をこのチェーンに接続するには、NEXUS_JTAG_PORT
コンポーネント(図 6)を配置し、これを直接 NEXUS_JTAG_CONNECTOR
に接続することが必要です。このコンポーネントは、FPGA Generic 統合ライブラリ (\Library\Fpga\FPGA Generic.IntLib
) にあります。
この NEXUS_JTAG_PORT
コンポーネントが存在すると、NEXUS_JTAG_DEVICE=True
と言うパラメータを持つ全てのコンポーネントがソフト JTAG チェーンに接続されます。
NEXUS_JATAG_CONNECTOR
とNEXUS_JTAG_PORT
コンポーネントを Simple_Counter の回路図上に配置し、お互いを接続してください。
VCC 電源ポートを
図 7. JTAG デバイスをソフト JTAG チェーンに接続。NEXUS_JTAG_PORT
コンポーネントの TRST 入力に配置、接続します。
これで接続は完了です。2 つの仮想計測器が設定され、図 8 のようになるはずです。
図 8. デザインの最終段階、2 つの仮想計測器の完成。- 回路図とその親プロジェクトを保存します。
- プロジェクトを再コンパイルします。今回は、Messages パネルには何も表示されません。これは、全ての SQ 出力が Digital IO に使用されているためです。これで、デザインのロードに進むことができます!
仮想計測器のコントロール
前のセクションで、ソフト JTAG チェーンに追加された仮想計測器の構造を確認しました。これから FPGA を再プログラムし実際に仮想計測器にアクセスする前に、Altium Designer の環境でこれらの仮想計測器にアクセス可能かどうか検討してみることは良い考えです。
ホストコンピュータは、ターゲットの仮想計測器に IEEE 1149.1(JTAG)標準インターフェースで接続されています。これは、物理的なインターフェースです。FPGA デバイスの物理的なピンへの接続を提供することで、仮想計測器の組込みを可能にします。
Nexus 5001 基準は、プロトコルとしてホスト~全デバイス間の通信に使用され、これを通じた各デバイスのデバッグが可能です。デバッグ可能なデバイスには、デジタルI/O、周波数カウンタが含まれます。その他の Nexus 準拠のデバイスであるデバッグ可能なプロセッサや周波数ジェネレーター、ロジックアナライザ、クロスポイントスイッチなども同様です。
これら全てのデバイスがチェーン - Soft Device チェーン - の内部に接続されます。チェーンが定義されるのは、デザインがターゲットの FPGA デバイス内に実装された時です。チェーンは Devices ビュー内に表示されます。これは物理的なチェーンではないので、外部の配線を見たりすることはできません。Nexus 対応が可能なデバイス間で必要な接続は、FPGA 自身の内部で行われます。
- Devices ビューを開いて、ドータボードの FPGA デバイスを再プログラムします。
一度プログラムしておけば、Soft Devices チェーンは最新のチェーンとしてビュー内に表示されます。チュートリアル用の 2 つの仮想計測器(図 9)のアイコンもそこに含まれています。
図 9. プログラム後の Soft Devices チェーン内にある仮想計測器。
- NanoBoard の DIP スイッチ 7 または 8 を切り換えてカウンタを開始します。
仮想計測器用のアイコンをダブルクリックして、関連する 2 つのパネルを Instrument Rack - Soft Devices パネルに表示させます(図 10)。これらのパネルは必要なコントロールを提供し、仮想計測器との対話をリアルタイムで表示します。
図 10. 周波数カウンタとデジタル IO モジュールの各仮想計測器用コントロールパネル。
パネルを見れば、異常時の確認ができます。まず、周波数カウンタが周波数 50Hz
を表示します。覚えておいででしょうか。NanoBoard からのリファレンス周波数は 20MHz
でした。作成したクロック分周器が MHz を分周しています。期待値の 20Hz
になっていません! 次は、カウンタ出力用の LED 表示です。デジタル IO 仮想測定器のパネルではややチラチラしすぎているようです。LED は確かに、NanoBoard 上で見られるようなスムーズなシフトを示していません。
この 2 つのシチュエーションを打開するには、それぞれの仮想計測器に関するオプションをさらに構成していく必要があります。作業はそれぞれの仮想計測器パネルから行います。
周波数カウンタ用の仮想計測器パネルで Counter Options ボタンをクリックします。Counter Module - Options ダイアログが表示されます。Counter Time Base エントリをデフォルトから変更。
図 11. 仮想計測器の TIMEBASE 入力に物理的に接続50.000MHz
を20.000MHz
にします(これで、仮想計測器の TIMEBASE 入力に接続した信号と同じ周波数になるはずです)。
されている周波数と同じになるように、カウンタのタイム
ベースを仮想計測器用に変更。
- ダイアログを閉じます。表示される周波数は
20Hz
になっています。
デジタル IO モジュール用の仮想計測器パネルで Options ボタンをクリックします。Digital I/O Module - Options ダイアログが表示されます。Update Display From Core Every エントリをデフォルトから変更。
図 12. 表示の更新速度をアップ。250ms
を最小値100ms
にします。
- ダイアログを閉じます。より早く更新させることで、LED はよりスムーズに表示されるようになります。
- 作成したデザインを走らせてみましょう。カウント方向を切り替えたり、停止させたりすることで、デジタル IO モジュールはライブで、あるいは操作に伴って、アップデートされる様を観察します。
更に
Counter Module.
Digital IO Module.
PC to NanoBoard Communications.