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

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



[第141回]


●CPLDロジアナ(30)USBデータ通信速度の測定

前回からの続きです。
実際にUSBの信号ラインを直接観測することもできないことはありませんが、簡単に観測できる代物ではありません。
前回書きましたようにCPLDロジアナのUSB通信は超低速のHID方式ですがしかしそのベースになっているUSBそのものの周波数は12MHzと高速です。
さらにいえば仮にUSB信号そのものを観測したとしても、その信号はUSBプロトコルという信号ルールで送受信されていますから、それによって運ばれているデータ以外にいろいろなものがごちゃまぜになっています。
そのあたりのことにつきましては「CPLD+SIMMを使ってUSBプロトコルの解析を!」に詳しく書いていますので興味がおありの方はご参照ください。
そもそも今回の目的とするところはCPLDロジアナのUSBでのデータ通信速度を確認することでUSBプロトコルの解析などではありません。
その目的からするとUSB信号ラインを直接見ることはちょっと方向が違っています。
それではどうするか。
しばし考えたのですが、それほど悩むことでもありませんでした。

CPLDロジアナは測定データを記録するときにはそのデータをRAM(62256)に1バイトずつ順に書き込んでいきます。
逆に書き込んだデータを読み出すときにもRAMの先頭アドレスから順に読んでいきます。
RAMの先頭アドレス(0000)から最後のアドレス(7FFF)まで読み出す期間がそのままCPLDロジアナからWindowsパソコンにUSBでデータを送信する期間に一致します。
ならば。
そのRAMのアドレスラインを見ればそれがそのままUSB通信の状態を見ていることになります。
RAMのアドレス全部を見る必要はありません。
RAMの最上位アドレスA14を見ているだけで(さらに同時にA13も見ればなおよいことになります)それがUSB通信の状態を見ていることになるはずです。
もっともCPLDロジアナを使って自分自身のRAMのアドレスラインを見るというわけにはいきません。
幸い今までに何回も試作を重ねてきましたから今回の用途に使えるCPLDロジアナを2つ用意することには問題はありません。
それならばその一方のCPLDロジアナでもう一方のCPLDロジアナのRAMのアドレスラインを観測すればよいわけです。
ただしCPLDロジアナは1台のWindowsパソコンには1つしか接続できません。
1台のWindowsパソコンに複数のCPLDロジアナを接続することは不可能ではありませんがWindows側のプログラムもPICのプログラムもそのように書き換えなければなりません。
CPLDロジアナのUSB通信の実体を観測してみようというのはたまたま思いついただけのことですから、そのたまたま思いついただけのことのためにおそらく相当に面倒なプログラムの変更作業をするというのはとても間尺に合うことではありませんし全く無駄なことでもあります。
そんなことをしなくても2台のWindowsパソコンにそれぞれ1つずつCPLDロジアナを接続してその一方で他方のRAMのアドレス端子を見れば今回の目的は達成できます。
普段いろいろな作業に使っているパソコンがちょうど隣同士で並んでいます。
1台はWindows7でもう1台はWindows98SEです。
CPLDロジアナはWindows98SEにも接続できますからこの2台のパソコンと2つのCPLDロジアナを使ってテストをしてみることにしました。

とそこまで考えてテスト作業をしてみることにしたのですが。
ちょっと待てよ、と思いました。
CPLDロジアナの機能をテストするのにはちょうどよい機会なのでそのようにしてみることに問題はないのですけれど。
RAMのアドレス端子を見ることでUSB通信速度を観測するには何もCPLDロジアナをもう1つ用意しなくてもオシロスコープでもできるのでは?
私の使っているのはソニーテクトロの100MHz2現象ストレージオシロスコープです。
これなら使えるのでは。
ということでさっそく使ってみました。
下はサンプリングクロック500KHzで測定中のCPLDロジアナのRAMのアドレスA14の波形です。



Lの期間のほうがHの期間よりも長いのは測定を開始するまでの準備期間があるからです。
Hの期間を見ると30msほどです。
A14がHの期間ですから32KBの半分16KB分のメモリ書き込み期間ということになります。
サンプリングクロックが500KHzのとき1バイトのデータをRAMに書き込む時間は2μsですからその16Kバイト分では32msかかります。
おお。
オシロの波形と一致しました。
そこまで確認できたのでいよいよ本来の目的、RAMからの読み出し期間(=USB通信時間)の測定です。
せっかくの2現象ですからCH1にA14、CH2にA13をつなぎました。



左のほうに見えるヒゲがRAMへの書き込み期間のHの期間です。
上の写真では時間軸が20ms/divでしたから幅のある波形として見えましたが今回は時間軸が500ms/divなのでただのヒゲにしか見えません。
CH1のA14がL、Hと変化する間にCH2のA13はL、H、L、Hと変化しています。
最後のH期間はUSB送信が完了してもそのままの状態で残ります。
しかし32KBの送信時間はCH2(アドレスA13)の波形から知ることができます。
A13のL、Hはそれぞれ32KBの1/4、8KBの変化を示しています。
それぞれが1secですから32KBでは4秒かかっていることがわかります。

ところで上の写真はCPLDロジアナをWindows98SEパソコンに接続したときの観測結果です。
同じことをWindows7でも確認してみました。
下はCPLDロジアナをWindows7パソコンに接続したときの観測結果です。



Windows98SEでもWindows7でもUSB通信時間はほとんど変わりません。
写真によって波形の左側がHのときとLのときがありますが、これはCPLDロジアナを最初にスタートさせたときがLで測定完了後に再度測定を開始したときにはHになっているからです。
RAMアドレスは測定完了後はH(7FFF)の状態のままになります。
再び測定を開始する時点でアドレスがクリアされてスタートするため上の写真のようになります。

さて結局のところオシロスコープを使ってみることでUSBの通信速度の確認はできてしまったわけですが、せっかくCPLDロジアナを使って測定してみるつもりでサンプリング周波数も広げたわけですし、CPLDロジアナの動作テストとしてもよい機会ですから、次回は当初の予定通りCPLDロジアナを使ってRAMのアドレス端子の波形を観測してみることにします。

CPLD入門![第141回]
2022.3.12upload

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