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

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



[第140回]


●CPLDロジアナ(29)USBデータ通信速度

前回CPLDロジアナのVHDLプログラムに追加した部分に1箇所ミスがありました。
現在は訂正済みです。

さてそれで。
前回書きましたようにVHDLプログラムを追加変更したのはサンプリングクロックをもっと低い周波数まで範囲を広げるためでした。
もう少し低い周波数で測りたいものがでてきたからです。
何を測りたいと思ったのか?
その「何」が今回のテーマです。

CPLDロジアナは対象物をサンプリングクロックで測定してその測定値をRAMに記録します。
RAMは62256(32KB)です。
たとえばサンプリングクロックが100MHzの場合、1回のサンプリングに要する時間は10nsです。
測定データがRAMの容量いっぱいになるのは10×32768=327680ns(327.68μs)です。
ほとんど瞬時に測定が完了します。
プログラム変更前の一番遅いサンプリングクロックは500KHzです。
1回のサンプリングに要する時間は2μsです。
測定が完了するまでの時間は2×32768=65536μs(65.536ms)です。
この場合でも体感的にはほぼ瞬時に測定が完了するといえるでしょう。
測定そのものはそのようにほとんど瞬時に完了するのですが、記録したデータをRAMから読み出してUSB経由でWindowsパソコンに読み込んでそれを波形として表示するためには少し時間がかかります。
アバウトなところで大体3〜4秒かかっています。

たかだか32Kバイト程度のデータを読み込むのになぜそんなに時間がかかるのか、といいますとCPLDロジアナのUSB通信は一般的な外部機器のUSB接続と違ってうんと低速の通信方法を使っているからです。
そのあたりのことにつきましては「PICでUSBを!」に詳しく書いておりますのでそちらを参照願います。
そこに書いておりますようにあれこれ試行錯誤の泥沼状態を経て最終的にたどりついたのがHID(Human Interface Device)という名の低速通信方式でした。
HIDは専らマウスやキーボードなどの低速機器で使われている通信方式です。
通信速度は64バイト/msです。
秒速に直すと64Kバイト/秒です。
今どきの通信速度としては超低速ですがRS232Cの通信速度と比較してみますとRS232Cでは1バイトのデータにスタートビットとストップビットを付加して10ビットにして送りますからRS232Cの640Kビット/秒(640000bps)に相当する通信速度です。
一般的なマイコンボードなどのRS232C通信は9600bpsかせいぜい19200bpsですからUSBとしては超低速ですけれどマイコンボードの通信手段としては十分な速度であるといえましょう。
HID通信の最大の利点はWindowsパソコンと接続するために通常必要なドライバが不要だという点です。
このドライバというのが実にやっかいな代物で、Windowsのバージョンごとに異なるドライバを要求されてしまったり、ドライバのバージョンが合わなくてうまく動作してくれないなどということが起きたりします。
その点HIDの場合には特別なドライバなどを組み込まなくても標準的な入出力装置として認識されます。
ドライバを必要としないということは通信速度が低速であるということを補ってもなお余りある長所だと思います。

ところで。
64Kバイト/秒の通信速度ということなら32Kバイトのデータを受信するには0.5秒しかかからないはず、です。
それが3〜4秒もかかってしまうのはWindows側のプログラムとCPLDロジアナのPICとの間で送信と受信を交互に繰り返しながら受信を行なっているからです。
ま、しかし、そこのところは当初のテストプログラムとしてスタートしたときのままですから、改善の余地はあると思います。
とにかくせっかく作ったCPLDロジアナですから、そのデータ受信速度の実体がどのようなものなのかをCPLDロジアナを使って測ってみようと考えました。
しかし。
当初のCPLDロジアナの最低サンプリング周波数は500KHzです。
上のほうに書きましたように65ms程度の期間しか測定できません。
それでは3〜4秒の期間の波形を観測記録することはできません。
最低でも5秒程度の期間は必要です。
すると64msの100倍が6.4秒ですから、その位の期間の測定ができるということになると、500KHzの1/100の5KHzのサンプリング周波数が必要になります。
そのように考えた結果前回書きましたようにサンプリング周波数の範囲を低速周波数にまで広げて最低1KHzまでにしたのでした。
そこまでは考えたのですが。
それでは実際にUSBでのデータ通信をどのようにして観測するのか。
そこが問題でした。

途中ですが本日は時間が無くなってしまいました。
次回に続きます。

CPLD入門![第140回]
2022.3.11upload

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