電子工作にあったら便利なロジックアナライザーを目標とし、シンプルで安価な回路を作成ました。データを一時保存するRAM領域がPIC16F18325では不足するためPIC16F18326を使用します。PICを最高速の 32MHzで動作させTimer0で定期的にロジック信号を取り込み内部RAMに収集していきます。
全てC言語 (XC8)でコーディングした場合、サンプルレートの最高は 10μSecでした。1回に1100サンプル読み込みます。アセンブラ言語 MPASM に書き換え、処理の効率化を図るために、1024サンプルに変更した場合、最高サンプルレートは 2μSecまで高速化できました。使用している入力端子は、RC0-RC4の5チャンネルです。さらに、RC5を追加することは簡単な変更で可能ですが、現在必要と考えている5チャンネルにしています。 収集したデータはUSBでPCに送り表示させます。PICからはシリアル115200bpsで出力し、「シリアル - USB変換」でPCのCOMポートに接続しています。PICロジックアナライザーの主要な特徴は以下の通りです。
ポイントは以下の点です。
リストの表示
XC8 C言語ソースリストは、[こちら]
PCからのコマンドを解釈し、データの収集を開始すると、サンプル間隔毎にデータを保存したのちに、トリガ条件を満たしているか検査します。トリガポイント前後の処理シーケンスの流れを下図ステート処理に示しました。
トリガ監視する3本の入力端子 (RC0-RC2) にCLC1を接続し、サンプルタイミングでそれら入力信号を確認・ラッチします。タイミングパルスでラッチしているため、その出力は次のタイミングパルスまで保持されています。トリガ条件の検出を行う CLC2 の入力に、CLC1出力を接続することで、トリガ前の状態と現在の状況を CLC2で同時に監視するトリガ条件の検出が可能となります。
つまり、トリガ前条件の検出にCLC1、トリガ条件の検出にCLC2を使用します。各チャンネルのトリガ条件でこれらCLCのGate2入力を都度設定し直します。下の図は、Ch1 立上り、Ch2 任意、Ch3 任意の時の設定です。
アルゴリズムをほぼそのままに PIC ロジックアナライザ のソフトウエアの全てを機械語MPASMで書き直しました。その結果ソフトウエアの命令数を削減し、処理時間を大幅に短くし、サンプルレートは今まで最高 10usec だったものを 2usec にすることができ実用性が高い ロジックアナライザになりました。
データを読み込みメモリーに記録するポインタは16ビットなのですが、8ビットのPICで処理すると多くの命令サイクルを使い高速動作ができません。そのため、今まで1100サンプルの記録をしていましたが、処理のしやすい2のべき乗である1024にしています。
アセンブラソースリストは、pic-as用と、MPASM用の2種類あります。
*注意*
pic-as アセンブラは、MPLAB X v5.40 以降で利用可能です。また、MPLAB アセンブラは、MPLAB X v5.35 以前を使用してください。
また、MPASM 32ビットソフトウエアのため、MAC OS は、Mojaveまでしか対応しません。最新のMACでは、MPASM を動作させる環境を作るのは大変困難になっています。作成したプログラムのHEXコードも掲載します。
HEXコードをPICに書き込む作業は、MPLAB IPE を起動させれば、どのMAC OS ででも可能です。
リストの表示
pic-as アセンブラ ソースリストは、[こちら]
MPASM アセンブラ ソースリストは、[こちら]
アセンブラ HEXコードは、[こちら]
PICロジックアナライザを制御するPCアプリケーションを Processing3 で作成しました。Processing3 は、Mac, Windows, Linuxで動作するソフトウエアです。Processing3本体とcontrolP%ライブラリがインストールしてあれば、どのPCでも動作します、ただし、Windows PCで使用するときは、フォント名 "Verdana" を使用しているPCに登録されている日本語フォント名に書き換えてください。
( 例えば、”Yu Gothic Medium” など )
リストの表示
Processing3 ソースリストは、[こちら]
PICとアプリの通信仕様は、[こちら]