標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第495回]

●HID送信プログラムの送信速度

HIDのデータ送信速度については、HIDについていろいろ調べる過程でわかってきました。
64バイトのデータを1msecごとに送信する速度です。
64バイト/msecですから、64KB/秒です。
ただし、HIDの場合には、送信(OUT)だけのプログラムを実行しても、間に受信(IN)動作が実行されてしまいます。
そのあたりのことについては、[第430回]で説明をいたしました。

とにかくHIDでは受信のためのプログラムは実行していなくても、勝手に受信動作が行われてしまいますから、送信のみのプログラムを実行させても、実際の送信速度は64KB/秒ではなくて、せいぜい32KB/秒になってしまいます。
それでもRS232Cに比べたら桁違いの送信速度です。
RS232Cは1バイトのデータにスタートビットとストップピットをつけて、少なくとも10ビットのデータとして送信します。
たとえば9600ボーの場合、9600/10=960ですから、960バイト/秒にしかなりませんから、32KB/秒は文字通り桁違いの速さだと言えます。

ところで、[第430回]で行ったHIDの送受信テストは、WindowsパソコンとPIC18F4550を接続して、機械的に送信、受信をただ繰り返しただけでした。
しかし実際には、PIC18F4550(PIC18F2550を使うことにしましたから、以下の説明ではPIC18F2550と書くことにします)とZ80CPUとの間で、データの受け渡しをしなければなりません。
送信時間には、Z80CPUがPIC18F2550からデータを受け取って、それをメモリに格納する時間も含めて考える必要があります。

今回、Z80版TK80ボード(ND80ZH)の試作基板にPIC18F2550を接続して、HIDを通じてTK80モニタプログラムのSTORE、LOADの機能が働くところまでできましたから、さっそくLOADを使って、パソコンからHID経由でPIC18F2550にデータを送り、さらにそのデータをND80ZHのRAMに書き込むところまでの時間がどれほどになるかを測定してみました。

●PIC18F2550からZ80にデータを渡しているところをオシロスコープでモニタしました


上側(CH1)はPIC18F2550からのストローブ出力で、下側(CH2)はZ80回路からのREADY/BUSY出力信号です。

1回1バイトのデータの転送に大体50μsecかかっています。
これは実はZ80がPIC18F2550からデータを受け取って、それをRAMに書き込むまでに必要な実行時間なのです。
Z80はクロック4MHzで動作させていますから、1バイトのデータをPIC18F2550から受け取って、それをRAMに書き込むために、その程度の時間がかかってしまいます。

1バイト50μsecですから、1000000/50=20000(バイト/秒)になります。20KB/秒です。
これはHIDの送信速度よりも遅い速度ですが、ここがネックになってしまいますから、結局このZ80ボードでのHID通信速度は20KB/秒ということになります(それでもRS232Cに比べればまだまだ十分桁違いの速さです)。

2010.5.6upload

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