Visor音源を作ったのだが動作中に停止する問題があり、この音源チップに転送しているデータをキャプチャしたくなってきた。
この際市販品を思い切って買おうと思ったのだが、普及価格帯の市販品ロジアナでも意外にキャプチャできる容量は少ないことがわかった。
今回はタイミングを解析するよりはデータのキャプチャをしたかっただけなので、簡単に作れそうだ。
・ブロック図
・キャプチャ時
リセット(上記ブロックに書き忘れた)するとこのモードになる。
データは一般的な3線式シリアル転送されているので、これをデータバスコントロール側CPLDでパラレルに戻すとともに、SRAMの書き込みクロックを作る。アドレスバスコントロールCPLDは左記クロックでメモリ書き込みを行うのと単なるアドレスカウンタである。
アドレスがオーバーフローするとLEDを灯す。
・リートバック時
PCでターミナルソフトを上げて、リターンを叩くとこのモードになる。
読み込みアドレスはPICマイコンからアドレスバスコントロールCPLDにシリアル転送する。
データはデータバスコントロールCPLDからPICへデータをシリアル転送する。
PICとCPLDの通信がシリアルなのは、単にPICのIOが足らないから。
CPLDが2個になっているのも1個だとIOが足らないからです。
PICでターミナルソフトで読めるようデータをリテラル変換する。
あとはレベル変換してPCへRS−232C送信する。
・部品調達
CPLDは若松で入手。@800円くいらいだったか?
SRAM、PICマイコン、RS232Cトランシーバは秋月です。
RS232CトランシーバはSP233というやつでチャージポンプコンデンサ内蔵です。高いのが難点。
その他パーツはデッドストック箱から取り出しています。
全部で¥3K程度です。
・回路図
回路図はありません。
速攻製作モード時は回路図を書かないのです。
ブロック図から入出力線のネット名を決め、ICのピン番号とともにエクセルに作表します。
基板に部品を実装し、電源配線後、エクセルとにらめっこして信号ワイヤを走らせます。
以前この作業すら省略したところ大苦戦したため、結果的にこれが最速のようです。
こんな感じです
・基板の図
速攻モードなので、作りは荒いです。
SRAMは表面実装なので、サンハヤトの変換基板をかまします。
もちろん未使用のピンはフローティングほったらかしですが、UUT線はプルダウンしています。
何ら保護回路などは採用していません。壊れたらそれまでです。
・ソフト
2個のCPLDはVHDLで記述しています。
PICマイコンはアセンブラ記述です。久しぶりにアセンブラを使ったのでニーモニック表首っ引きです。
いい加減に作成しておりますので、とても公開できるレベルではありません。
どのようにいい加減かと言いますと、たとえばキャプチャできる容量が32KB
−2バイトであり先頭バイト
と終端バイトは無効(ゴミデータ)です。ループの先端・端末管理などはいい加減そのものです。
出力例、単にSRAMの内容を垂れ流すだけです。
0000:00,31,00,04,39,00,02,39,00,0a,35,00,02,00,43,54,
0010:00,68,64,00,00,00,00,00,06,00,00,00,00,00,01,00,
0020:00,18,00,43,54,38,01,04,32,00,01,00,72,6b,00,00,
0030:00,00,1e,4a,00,00,ff,00,51,03,00,0d,14,00,36,31,
0040:00,c1,30,00,00,c2,00,01,00,00,c3,21,00,00,c9,00,
0050:00,00,00,b1,07,00,7f,00,00,b2,07,00,7f,00,00,b3,
0060:07,00,7f,00,00,b9,07,00,7f,24,00,c0,49,00,00,b0,
|
・今後
これは役立ちました。Visor音源の停止問題は片づいたので、今のところ出番はなくなりました。
今度作るときは非速攻モードで設計しSDRAMなどを使い長ロングメモリにしたいところです。