フィンランドのホビイストが作った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につながっています。
http://essentialscrap.com/dsoquad/DS203V2.png
言い換えるとこのピンはスーパーパワーではなく、タイマーの出力でもFSMC制御信号でもありません。そういうわけで、この入力をソフトウェアによるポーリングでいつも見ている時間が必要です。
翻って、STM32のDMAコントローラは非常に柔軟なので、DMAチャンネルで常に0と1をGPIOC5に書き続けるようにし、その書き込み中には別のチャンネルでメモリーに入力データを読み出すようにしました。一度割り込みルーチンがDMAメモリーバッファを走ると、すべての遷移をチェックします。遷移があると長さ+レベル標記を使ってコード化し、もっと大きいバッファに溜め込みます。
この方法によると500kHzのサンプル速度に対応でき低速のRS232とかi2cなどデバッグには十分です。すばらしいことにいつもキャプチャで来て、最新の信号を観測できます。
この画面ではCH-Bにi2cインターフェイスのSCL、ch-AにはSDAを入れました。電源入れて3.6秒間は変化が無く、その後PIC電源オン後イニシャルされてi2cのREADが始まっています。先頭のアドレス部分をキャプチャしている例です。ナビボタンで少し広げロケーションボタンでスクロールしました。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
原著者Petteri Aimonenさんに了解得て日本語翻訳ページ作成しました。
右側の実験用チップスから入り、一覧表のDSO QUAD説明から入っていきます。
http://chitose6thplant.web.fc2.com/
WHAT'NEWからも入れます。
最新アルミボディ版がアマゾンで売られています。