2022.3.20
前へ
次へ
ホームページトップへ戻る

[新連載]CPLD入門!
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使うことになるだろうと思ってはいたのですが。
何を今頃になって、というようなものですが。
ようやく本気で、CPLDと四つに取り組みます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜




[第144回]


●CPLDロジアナ(33)16CH版

いままで説明をしてきましたCPLDロジアナは8チャンネルです。
ロジアナの機能としては8チャンネルというのはちょっと少ないかなという印象です。
それでも2現象オシロに比べれば4倍の能力ということになりますからこれはこれでもよいかと勝手に納得をしました。
実は当初は8チャンネル版とは別に16チャンネル版も作るつもりでした。
それを現行の8チャンネル版の延長として考えるとメモリが8ビットですから16チャンネルのデータは2回に分けてメモリに書き込まなければなりません。
そこのところでサンプリングクロックが落ちてしまいます。
単純に考えても1/2になってしまいます。
それはやっぱり面白くありません。
なんとかよい工夫はないものかと折に触れて思い出しては考えていました。
入力については16チャンネル分必要ですがこれは当然のことです。
それをそのままメモリに書き込むことができればよいのですが…。
RAM62256のデータビットは8ビットです。
データビットが16ビットのRAMもあるようですが価格がとても合いません。
やっぱり無理か、と半ば諦めていたのですが。

なんだ、できるじゃないか。
簡単なことでした。
62256を2個使って1個をD0〜D7に、もう1個をD8〜D15に割り当てればよかったのでした。
なんてことだ。
やっぱり相当に頭が固くなっておりました。
そのようにすれば16チャンネルのラッチデータを同時にRAMに書き込むことができます。
しかしそれを読み出すときは?
そのときも16ビット2バイトのデータを同時に読み出してPICに送る時点で2回に分けて送るようにすればなんとかなりそうです。
そのように考えて作ってしまったのが下の写真のボードです。

サンプリングクロックを100MHzにアップしてテストするよりも前に作った基板ですので「20MHz」になっています。
毎度書いておりますように記事はリアルタイムではありません(そういうときもありますけれど)。
内容によっては2ヶ月も3ヶ月も前のことを書いていたりします。
この基板も今年1月の初めごろに作ったものです。
しかしハードはともかくとしてソフトについては8チャンネルと16チャンネルでは大きく異なります。
現行の8チャンネル版についてあれこれ試したりしながらその裏で16チャンネル版についてもプログラムの作成を進めてきました。
そのことだけに専念するわけにもいきませんでしたのでハードはできたもののただ横目で眺めているしかないときもありました。
それでも時折時間をみつけて少しずつ作業を進めてやっとなんとか動くようになったのはつい先日のことです。
さらにここ2〜3日は集中してプログラムの仕上げにあたったおかげでほぼ完成と言えるところまでできたと思います。
今回はその出来たてのプログラムを実行してテストをした結果を初公開いたします。

下は16チャンネル版をテスト中の写真です。

写真右側は8チャンネルでもテストに使っているクロック発生回路基板です。

下はWindows7パソコンでの表示画面です。

サンプリングクロックは100MHzです。
PROBE0〜PROBE15にはクロック発生回路基板の出力を接続しています。
各プローブに接続しているクロック発生回路基板の出力信号の周波数とその周期を下に示します。
クロック発生回路基板の出力が足りませんのでPROBE13〜PROBE15にはPROBE0〜PROBE2と同じ出力をつないでいます。

PROBE0  4MHz(250ns)
PROBE1  2MHz(500ns)
PROBE2  1MHz(1μs)
PROBE3  500KHz(2μs)
PROBE4  250KHz(4μs)
PROBE5  125KHz(8μs)
PROBE6  62.5KHz(16μs)
PROBE7  31.25KHz(32μs)
PROBE8  15.625KHz(64μs)
PROBE9  7.8125KHz(128μs)
PROBE10 3.90625KHz(256μs)
PROBE11 1.953125KHz(512μs)
PROBE12 976.5625Hz(1024μs)
PROBE13 4MHz(250ns)
PROBE14 2MHz(500ns)
PROBE15 1MHz(1μs)

サンプリング周波数が高いのでPROBE6〜PROBE12は波形の一部がただの水平な線としてしか表示されません。
またPROBE2〜PROBE5も1周期の全体は表示されずその一部だけの表示になっています。

下はサンプリングクロック10MHzで測定した波形です。

PROBE5でトリガをかけています。
サンプリング周波数を下げて10MHzにしましたからPROBE2(1MHz、1μs)〜PROBE5(125KHz、8μs)は1周期の全体の波形が表示されるようになりました。
逆にPROBE0(4MHz、250ns)はサンプリング周波数が10MHzでは分解能が足りませんから少し乱れた波形になっています。

下はサンプリングクロック1MHzで測定した波形です。

PROBE8でトリガをかけています。
サンプリング周波数をさらに下げて1MHzにしましたからPROBE6(62.5KHz、16μs)〜PROBE8(15.625KHz、64μs)は1周期の全体の波形が表示されるようになりました。
逆にPROBE0〜PROBE2は測定できなくなりました。
PROBE3(500KHz)はサンプリングクロック1MHzでは1周期(2μs)に2回のサンプリングしかできません。
上の波形はちょうど同期がとれた波形になっています。

下はサンプリングクロック100KHzで測定した波形です。

PROBE10でトリガをかけています。
サンプリング周波数をさらに下げて100KHzにしましたからPROBE9(7.8125KHz、128μs)〜PROBE12(976.5625Hz、1024μs)は1周期の全体の波形が表示されるようになりました。
PROBE0〜PROBE3はサンプリング周波数(100KHz)に対して信号の周波数が高すぎるので測定できません。
PROBE4(250KHz、4μs)〜PROBE7(31.25KHz、32μs)は100KHzでは分解能が足りませんから乱れた波形になっています。
PROBE8(15.625KHz、64μs)は100KHzでは1周期に6回〜7回のサンプリングができますからなんとか実際に近い波形として表示されています。

下はサンプリングクロック10KHzで測定した波形です。

PROBE12でトリガをかけています。
サンプリング周波数をさらに下げて10KHzにしましたからPROBE11(1.953125KHz、512μs)とPROBE12(976.5625Hz、1024μs)は1周期の全体の波形が表示されていますがそのほかのほとんどの信号はサンプリング周波数(10KHz)が低すぎるので正しく測定できません。
PROBE10(3.90625KHz(256μs)は10KHzでは分解能が足りませんから乱れた波形になっています。

CPLD入門![第144回]
2022.3.20upload

前へ
次へ
ホームページトップへ戻る