標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第422回]
●またMYCPU80のご注文をいただきました
MYCPU80のご注文のメールをいただきました。
千葉県八千代市のYS様。ご注文有難うございました。
さっそくパーツの手配を致しますので、準備が出来ますまでの間しばらくお待ちください。
●やっとMYCPU80の準備ができました
昨年12月にMYCPU80をご注文いただきました東京都豊島区のHT様、神奈川県座間市のMS様、やっと発送の準備ができました。
多分明日(1月22日)には発送できると思います。
大変長い間お待たせして申し訳ありませんでした。
発送いたしましたらメールでお知らせいたします。
今後ともよろしくお願いいたします。
有難うございました。
●HIDの送信速度について
前回HIDの送信速度について説明をいたしました。
説明を書きながら、「この説明にはアナがある」ということに気が付いていたのですけれど、時間がありませんでしたので、それ以上の説明はできませんでした。
USBではデータをパケットという、単位というか、入れ物に詰めて送信をします。
実際には複数のパケットがフレームという単位にまとめられて1ms毎に送信されます。
HIDの場合、1つのパケットには64バイト(フルスピード)か8バイト(ロースピード)しか入れられません。
さらに1つのフレームには1つのデータパケットしか入れられません。
ということはHIDの場合には、1msに64バイトしか送信できないということになります。
しかし、計算してみると64バイト/msということは64KB/秒という転送速度になりますから、これはRS232Cなどとは比較にならないほど高速です。
ちなみにRS232Cでは送信速度をあらわすのにボーレートという単位を使いますが、装置とパソコンをつないでデータの送受信をするときの最高ボーレートは9600か19200ボーあたりであることが多いようです。
19200ボーというのは約2KB/秒の転送速度です。
するとHIDの送信速度はRS232Cの30倍ということになります。
という説明を前回いたしました。
そのどこにアナがあるのか、といいますと、64KB/秒という送信速度は、実は計算上の値に過ぎなくて、実際の送信速度は多分それよりもうんと少ない値になってしまうのではないだろうか、と予想されたことです。
確かに1msに64バイトでも、それが切れ目無く連続して行われれば64KB/秒の送信速度になるわけですけれど、なにしろWindowsですから、そこは相当に疑問が残ります。
またアセンブラならばともかくとして、C++でAPIをCALLするというプログラムを書いて、それを使って送信するわけですから、そうすると計算通りにはいかないだろうなあ、という予想がついてしまいます。
●どうしたらHIDの送信速度が測定できるでしょうか?
なんとかして実際の送信速度を測ることはできないものでしょうか?
なにしろmsオーダーの速度ですから、時計などでは全く役に立ちません。
いい方法を思いつきました。
前回お見せした送信テストのプログラムをちょっと変更します。
まずホスト側の送信プログラムですが、前回は64バイトのみ送信しましたが、それを64バイトを連続して3回送信するように変更しました。
次にPIC18F4550ですが、データを受信したら232Cを使ってZB25Kにデータを送っていたところを削除しました。
つまり受信しっぱなしで他のアクションは何もしない、ことにしました(そうしておかないと、連続受信の妨げになってしまうからです)。
その代わりに未使用になっていたPORTCを利用して、データが受信されるごとにPORTCの値をインクリメント(+1加算)して出力するようにしました。
そして、PORTCのビット0(RC0)とビット1(RC1)の出力をオシロでストレージ観測するようにしたのです。
●オシロで観測してみました
上側(CH1)はPIC18F4550のRC0出力で、下側(CH2)はRC1出力です。
データを受信する前はRC0=0、RC1=0です。最初のデータブロックを受信すると、RC0=1、RC1=0になります。
次のデータブロックを受信すると、RC0=0、RC1=1になります。
最後のデータブロックを受信すると、RC0=1、RC1=1になります。
やっぱり予想した通り、かなり間が空いています。
最初の送信と次の送信との間は5msの空きがあります。
2番目の送信と最後の送信との間は30ms近く空いています。
これはちょっと空き過ぎのようです。
なぜでしょうか?
実はBASICボードZB25Kと接続しているDOSプロンプトがもうひとつ開いたままでした。
それが影響しているのではないかと考えました。
そこで、余計なDOS窓は閉じてから、もう一度テストをしてみました。
今度はだいぶ縮まりました。
それでも2回目と3回目のデータ送信の間隔は期待値1msに対して10倍の10msになっています。
こうしてみると、64KB/秒はとても無理で、せいぜい6KB/秒くらいがいいところではないか、と思います。
そうだとしても、MYCPU80やTK80を接続してのデータ通信目的としては、十分な速度である、といえるでしょう。
2010.1.21upload
前へ
次へ
ホームページトップへ戻る