かけがえの無いメモ書き
(原著者Petteri Aimonenさん了解で日本語ページ作成しました)
|
|
DSO
QUADのメニューへ
|
|
ロジアナのアプリケーション
このロジックアナライザのアプリケーションはDSO QUAD用カスタムプログラム第二弾です。DSO QUADには4096サンプルのバッファ域が用意されています。アナログ利用では十分なようですが、デジタル用にはチョット限られています。更に標準の
ファームウェアでは取り込み中断でタイムベースを変えることができないやっかいな表示になっています。
このプログラムでは遷移だけを蓄えることにしました。もし信号線に変化が無ければバッファの空きは消費しません。およそ20kBのRAMをバッファに割り当
てると1万から2万イベント分になります。たとえば、これはRS232信号で2kBのデータ通信に十分な容量です。
信号の追っかけをなるべく簡単にしようとしました。2種のナビゲーションスイッチをズーミングとスクローリングに割り当てたので、動きは素早いです。最小
のズームになると全信号書替えに時間をとられ、スクロールがかったるくなります。今後中間値のキャッシングを追加することで実行能力改善を図りたいと思い
ます。
|
論理レベルに変化無き時は画面タイミングは省略されます(経過時間を表示) |
信号の取り込み
組み込まれたFPGA論理には面白いFIFOとのやり取りが入っています。一度に4096サンプルを読み込めるのですが、新しいデータを読むにはリセットしないといけません。オシロスコープでは有効ですが、実時間での解析には苦痛です。
幸いなことにバッファの最後を越えて読み続けると前の値に重ね書きできる癖があります。これを使うとFPGAをバイパスでき、入力される生データを読めま
す。でも少し複雑で、その結果は18ビットなので16ビットバスでは2分解して読みます。データのマルティプレックスはH_L(high/lowという意味
か)と呼ばれる信号で制御され、その信号はTM32マイコンのGPIOC5(回路図参照)につながっています。言い換えるとこのピンはスーパーパワーではなく、タイマー
の出力でもFSMC制御信号でもありません。そういうわけで、この入力をソフトウェアによるポーリングでいつも見ている時間が必要です。
翻って、STM32のDMAコントローラは非常に柔軟なので、DMAチャンネルで常に0と1をGPIOC5に書き続けるようにし、その書き込み中には別の
チャンネルでメモリーに入力データを読み出すようにしました。一度割り込みルーチンがDMAメモリーバッファを走ると、すべての遷移をチェックします。遷
移があると長さ+レベル標記を使ってコード化し、もっと大きいバッファに溜め込みます。
この方法によると500kHzのサンプル速度に対応でき低速のRS232とかi2cなどデバッグには十分です。すばらしいことにいつもキャプチャできて、最新信号を観測できます。
FPGAの開発環境はラティスがシリコンブルーテックに買収され無償になりました。動作に使用できるビットファイルを入手できたら、ハードウェアでキャ
プチャする論理を組み込みたいと思います。そうなると72MHzで4チャンネルを簡単にコード化できると思っています。
|
目盛り線間隔は自動的に信号へあわせます
スクロールバーをダブルクリックすると該当位置の時間が出ます |
|
表示の仕方
もちろん信号をキャプチャするだけでは十分ではありません。簡単な方法でデータを画面に書くには__Display_strと__LCD_etPixiのようなBIOSを呼べば良いのですが、これらルーチンは画素単位描画なので、遅くなります。
200kBのフレームバッファはプロセッサの48kBRAMでは間に合いません。そこでオリジナルのファームウェアの一部を使う方法を取ります。線毎のレンダリングとか同時に画面にデータを転送するとかです。オリジナルのファームウェアはオシロスコープ画面のために使うので、数種の簡単なクラス、TextDrawableなどを組み込みました。そして画素単位操作を完全にやめることができました。
その結果画面更新がすごく早くなり、平均10mSしかかかりません。これでスクロールが快適に成りましたが、まだコード中にいくつかのボトルネックがあり、大きい信号では速度に制限がかかります。
|
|
|
インストールの仕方と使い方
注意:デジタル入力C/Dチャンネルには最大安全電圧を制限する欠陥があります。
しかし、もう少し解析してみると、そんなに悪くないことが判ります。5Vまでの電圧なら全く確実に安全ですが、おそらく20Vまででもいけるでしょう。良く理解する必要があります。A、Bチャンネルはもっと高い80Vまで扱えます。
次のHEXファイルはアプリ3に組み込まれますので、DSO QUADの電源投入時に3番ボタンを押してください。その他周波数応答アプリケーションも同じように用意されています。
左矢印の3つのボタンでキャプチャの再開したり、VCDファイルとして全データを記憶したり、現在表示を.BMPファイルで記憶したりします。VCD様式だとPC上でGTKWaveのようにたくさんのビュワーで読むことができます。
ソースコードはGitHubにあります。
-Petteri Aimonen 12/1/2012
Email: Petteri Aimonen <jpa@hm.mail.kapsi.fi>
抄訳 by nobcha@2012
|