「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
ご存知のようにUSBはパソコンと周辺機器との接続に使用されることが多く、最近のほとんどのパソコンにはUSBが搭載されています。
USBはシリアルポート(RS232C)やパラレルバス(パラレルポート)、PS/2(マウスキーボード)などのレガシーインターフェイスの替わりとして位置しています。
USBの通信速度としては、USB1.0、1.1では12MHzのフルスピードと 1.5MHzのロースピードの2種類に対応し、USB2.0ではさらに、より高速な480MHzのハイスピードに対応するようになりました。
USBの主な特徴としては以下のようなものがあります。
USBはIntel社が推進していることもあり、今後もUSBの需要は増えていくと予想しています。
今回はUSBの小型コネクタ化について取り上げたいと思います。
USBのコネクタは他のインターフェイスと比べかなりコンパクトになっているのをご存知だと思います。このことにもUSBの特徴がよく表れています。始めにUSBコネクタ、つまり信号線について見てみたいと思います。USBのピン配置は以下のようになっています。
USBピン番号 | 名称 | 機能 |
---|---|---|
1 | VBus | 電源(バスパワー) |
2 | D−(Data−) | データ− |
3 | D+(Data+) | データ+ |
4 | GND | グランド |
ここで、制御系でよく使われる、RS232CとRS422と比較してみます。
RS232C(9ピン)ピン番号 | 名称 | 機能 |
---|---|---|
1 | CD(Carrier Detect) | キャリア検出(入力) |
2 | RD(Received Data) | 受信データ(入力) |
3 | TD(Transmitted Data) | 送信データ(出力) |
4 | DTR(Data Terminal Ready) | データ端末レディ(出力) |
5 | GND | グランド |
6 | DSR(Data Set Ready) | データセットレディ(入力) |
7 | RTS(Request To Send) | 送信要求(出力) |
8 | CTS(Clear to Send) | 送信可(入力) |
9 | RI | リング(入力) |
*送信側からみたピン配置
RS422(9ピン)ピン番号 | 名称 | 機能 |
---|---|---|
2 | TD− | 送信データ− |
3 | RD+ | 受信データ+ |
4 | GND | グランド |
7 | TD+ | 送信データ+ |
8 | RD− | 受信データ− |
*送信側からみた推奨ピン配置
まず、RS232Cと比較してみます。
上の表からUSBではデータ線以外の信号線がすべてなくなっていることが分かると思います。(VBusを除く)
これらの信号線RTS、CTS、DTR、DSRは通信相手のバッファがなくなることを通知するハードウェアフロー制御に使用されるものですが、USBではこれらを取り払っています。
ではUSBでは通信相手のバッファがなくなってしまった場合にどう対処するのか?という疑問がでてきますが、USBではフロー制御をハードではなくプロトコルで回避するようになっています*1。
具体的にはターゲットはホストとの接続時に自分自身のバッファ(FIFO)サイズをホストへ申告します。(USB通信はホストとターゲットとして分けられています。一般的にはホストはパソコンとなり、ターゲットが周辺機器となります。これについては次回説明します) またバッファに空きがあればACKを、なければNAKを即座に返すというフロー制御をプロトコルが行っているため、ハードウェアフロー制御用の信号線が必要なくなりました。(USB2.0で追加されたハイスピードの場合には更にリトライを未然に防ぐPINGフロー制御というものが追加されています)
また、CDやRIはモデム専用といってよい信号線ですので、汎用的なインターフェイスであるUSBからは取り払われています。仮にこれらの信号情報が必要になった場合には、USBプロトコルの上位のプロトコルをベンダー独自で使用することになります。
次にRS422と比較してみます。
まず、USBはRS422と同じ差動信号を使った平衡型伝送方式をとっています。
RS232CはGNDを共通として、送信、受信信号線の電圧を変化させて伝送する不平衡型ですが、平衡型では+と−の差動信号で電圧をみるため、ノイズに強く、高速通信に向いています。USBでもこの平衡型を使用しています。最近ではシリアルATAにも平衡型が使われています。
RS422ではデータ線は送信用、受信用で+、−がそれぞれありますが、USBには送受信共通として使用しています。
データ線を送信用と受信用で分けなくてよい理由は、USBのプロトコルは必ずホストからの要求に対してターゲットが応答を返すという半2重方式をとっているためです。そのためデータの衝突は基本的に起きないようになっています。
この様に信号線が少なくなっていることにもきちんとした理由があり、今まではハードで実現していた部分をUSBではプロトコルで実現していることが分かると思います。
USBのプロトコルは大きな役割をもっています。
ここで前回の技術レポートで取り上げた通信方式について考えてみたいと思います。ピン配置から分かるようにUSBの通信方式はシリアル通信方式をとっています。
以前はシリアル通信対パラレル通信では、パラレル通信の方がデータ通信は速いと言われていました。が、通信速度を上げるためクロックの高速化により、複数線の信号が同時に届かないスキューという問題が発生してしまうことから、現在ではパラレル通信よりもシリアル通信の方が速いとされています。
そういった経緯からもUSBもパラレル通信ではなくシリアル通信を採用していると思われます*2。
次回はUSBの高速/高信頼通信について取り上げたいと思います。
(H.K.)
関連ページへのリンク
関連するソフテックだより