オリジナルの無線LANをFPGAで作ろう 17ページ目


過去の記事はこちら
1ページ目 2ページ目 3ページ目 4ページ目 5ページ目  6ページ目 7ページ目 8ページ目 9ページ目 10ページ目  11ページ目 12ページ目 13ページ目 14ページ目  15ページ目 16ページ目


1-送信側の基板で実機デバッグ
送信側のデバッグをやっていきます。今回はデバッグツールのシグナルタップの使い方を説明します。
シグナルタップはFPGA内部・ピンの信号をモニタできるツールです。ピンに出さなくても、FPGA内部の信号が見えるのでデバッグにとても便利です。
また、バスをまとめて数値化したりグラフ化したり、高機能のロジックアナライザのような使い方ができます。

シグナルタップの原理を簡単に説明します。
シグナルタップはトリガが入るとモニタ対象のFPGA内部・ピンの信号をFPGA内部のSRAMに蓄えはじめます。シグナルタップではモニタ長をあらかじめ設定しておきますが、
設定されたモニタ長になるまでSRAMに信号を蓄え続けます。設定された長さに達すると、JTAGピン→FPGA書き込み器→PCにデータを転送します。そしてPCで、データを表示します。
FPGA内部のSRAMにモニタ信号を一旦蓄える原理ですので、USB転送では帯域不足になるような多ビット・超高速の信号もモニタすることができます。
モニタしたい信号とFPGA内部のSRAMを接続する必要がありますので、目的の信号のモニタが出来るようにするために再コンパイルが必要です。
FPGA内部に、モニタする信号のビット幅×モニタ長のSRAMの空きが必要です。

低速ADCで取り込んだ16ビットの音声信号のモニタを例にシグナルタップの使い方を説明します。
まずシグナルタップを立ち上げます。メインメニュー → Tools → SignalTapULogicAnalizerにてシグナルタップが立ち上がります。
シグナルタップで設定する項目は、モニタ長と、クロックと、モニタ対象の信号です。
モニタ長は、sample depthで設定します。あまり長くするとSRAM空きが足りなくなりますので注意です。今回は、128に設定します。


次にクロックを設定します。クロックに設定した信号の1パルス毎に1回信号をSRAMに取り込みます。
低速ADCが48Kspsで動きますので、同じ48kHz周期の信号をクロックに設定します。
 @Clock:の右のほうにあるボタンをクリック
 Aキーワードに*pulse44*と入力します
 BListボタンをクリックして、FPGA内の信号から*pulse44*を検索します
  ※コンパイル済みのFPGAファームウェアに対しての検索機能です。
   目的の信号を検索させるためにシグナルタップを使う前に一旦コンパイルしておく必要があります。
 Cgen_pulse内部にあるpulse44が検索されますので、この信号を選びます
 D右ボタンをクリックして、gen_pulse内部にあるpulse44をクロックとして設定します
 EOKをクリックして完了です


次にモニタする信号を設定します。
 @setupタブの中で左ダブルクリックします
 Aキーワードに*outdata*と入力します
 BListボタンをクリックして、FPGA内の信号から*outdata*を検索します
  ※コンパイル済みのFPGAファームウェアに対しての検索機能です。
   目的の信号を検索させるためにシグナルタップを使う前に一旦コンパイルしておく必要があります。
 Cpcm4201モジュールの中のoutdataが検索されますので、この信号を選びます
 D右ボタンをクリックして、pcm4201モジュールの中のoutdataをモニタ信号として設定します
 EOKをクリックして完了です


モニタ長、クロック、モニタ信号の設定が終わったら保存します。シグナルタップのメインメニュー → File → Save で保存できます。
保存した後でダイアログが出てきます。このダイアログでYesをクリックして、次にコンパイルする時は、モニタのためのSRAMやJTAGで読み出すための機能がFPGAファームに作りこまれます。


上で説明したダイアログで間違えてクリックしても、開発環境のメイン画面から設定を直すことができます。
 @Hierarchyタブの一番上の階層で右クリックしてsettingsを実行します
 ASignalTapUAnalyzerを選択
 Bモニタする機能の有効・無効・使用するファイルを選択


シグナルタップの設定が終わったら、再度コンパイルをかけてFPGA内部にモニタ用のSRAMの作り込みなどを行います。
信号のモニタを始める前に、FPGA書き込み器をFPGAボードのJTAGピンに接続しておきます。接続方法は16ページ目をご覧下さい。
FPGAボードのオーディオ入力として1KHzの正弦波を接続しました。正常に低速ADCが動作するとシグナルタップで正弦波がモニタできるはずです。

コンパイルが終わったら、メインメニュー → Tools → SignalTapULogicAnalizerにてシグナルタップを立ち上げます。
 @書き込み器を選択します。複数の書き込み器をPCに接続している場合は使用するほうの書き込み器を選択してください。
 A書き込むファーム(拡張子 .sof)を選択します。先ほどコンパイルしたファームを選択してください。
 Bファームを書き込みます。ファーム書き込みが完了したらNCOについての制限事項のダイアログが出ますから、
  OKをクリックしてダイアログを閉じてください。
 CRun Analysis もしくは、Autorun Analysisをクリックして低速ADCの16ビットの信号をPCに取り込みます。


※Run Analysis と、Autorun Analysisの違いについて、
・Run Analysis をクリックすると、クリックがトリガとなり128のモニタ長のSRAMデータ取り込み → PCに転送を行います
・Autorun Analysis をクリックすると、SRAMデータ取り込み → PCに転送 → SRAMデータ取り込み → PCに転送...を繰り返します
Run Analysis も、Autorun Analysisも、見たい瞬間だけをモニタすることが難しいです。見たい瞬間をモニタするために、「FPGA内部の信号がxxxになったのをトリガにSRAMデータ取り込む」
という使い方ももできます。これは、別の機会に説明します。


Run Analysis もしくは、Autorun Analysisをクリックすると、低速ADCで取り込んだデータが見れます。デフォルトでは16進数表示でよくわかりませんので、
 @信号名を右クリックしてBusDisplayFormatからSignedLineChartを選択します。


16ビットのデータがグラフで表示されます。正弦波が低速ADCで取り込まれていることが確認できました。低速ADCまわりは正常に動いているといえそうです。


次回も、送信側FPGAの実機デバッグを進めていきます。


2015年3月11日 記
18ページ目に続く

戻る