◆ パソコンとそのキーボード、プリンタなどのデバイス(周辺機器)とを結ぶ、代表的なインターフェースに、USB があります。従来から多く使用されてきた、汎用シリアルインターフェース(RS232C、RS422/485)や、汎用パラレルインターフェース(セントロニクスインターフェース)に代わって、パソコンインターフェースの主流になっています。
◆ USB は、パソコンを中心とする、親子式、トリー形のインターフェースで、1 つの USB システムに、多数のデバイスを接続することができます(図.1)。
図のノードは、独立したものではなく、デバイスに内蔵されています。
◆ USB は、直列伝送で、最大 12Mビット/秒と、かなり高速です。キーボード/マウスはもちろん、プリンタ等にも対応します。しかし、外付けのハードディスクなどに対しては不十分です。これらにも対応できるように、最近、USB2 が使われ始めています(最大480 Mビット/秒)。
◆ この USB2 と区別するときは、従来からの USB を、USB1 (現在の規格は USB1.1)と呼びます。ここでは、USB1 について解説します。以下 USB は、USB1 を指します。
[注]
上位互換とは、上位の機種が下位の機種としても使用できることを言います。上位互換と称しても、その程度は、システムによって様々です。
USB の例では、コネクタは共通で、USB2 インターフェースのパソコンに、USB1インターフェース の機器を接続して使用することができます。USB は、ネットワークになっていますが、同一の USB 中に、USB1 のデバイスと、USB2 のデバイスとを混在して使用することができます。
なお、USB2 の高速性を利用するためには、パソコン/デバイスだけでなく、途中のハブも全て USB2 に対応していることが必要です。
◆ USB は、パソコンが親となって、パソコンの周辺機器を制御するシステムです。デバイス(周辺機器)側が主体となって動作することはできません(最近、デバイス相互間のやり取りを可能にする仕様が追加されました)。
図.38 に示したように、トリー ネットワークで、最大 6 層まで可能です(図は 5層まで)。デバイス数は、最大127(ハブ を含む)で、伝送距離は、各ケーブル毎に最大 5m(シールド付ツイストペアの場合、シールド無しのケーブルでは最大 3m) です。
◆ 伝送速度は、フルスピード モード (12Mビット/秒とロースピード モード (1.5Mビット/秒)の 2 種類があり、各デバイスごとに、決められます。ロースピードモードは、主に、キーボードやマウスなどで使用します。フルスピードモードは、プリンタ等の大量データ転送や、音声などのリアルタイム 伝送に使用されます。
[注] リアルタイムとは、所定のタイミングで処理を行わなければならないものを言います。音声の場合は、所定のタイミングで処理を行わないと、音が崩れてしまいます。リアルタイムであることが必要です。
◆ USB の特徴は、ホットプラグや PnP への対応による、使いやすいインターフェースにあります。
ホットプラグ とは、回路の電源をオンにしたままで、コネクタを抜き差しすることが可能なことです。したがって、パソコンを動作させたままで、デバイスを組み込んだり切り離したりすることができます。通常のコネクタは、電源をオフにしてから抜き差しする必要があります。
◆ PnP は、パソコン ソフトウェアの機能で、デバイスをパソコンに接続したときに、自動的にそれを検出し、動作可能な状態に設定を行ってくれる機能です。PnP 対応で無いと、デバイスを接続したとき、手動で設定を行う必要があります。手動の設定をしないと、そのデバイスを使用することができません。
◆ ホットプラグと PnP との両方に対応していれば、初心者でも簡単に、新たにプリンタを取り付けるなどの作業を行うことができます。ホットプラグ/PnP によって、パソコンは、家電並とまでは行きませんが、誰でもが扱うことができる製品になりました。
USB は、また小容量であれば、パソコンやハブから、電源を供給することができます。これも便利な機能です。
◆ USB のケーブルは、電源線、信号線が各1 対の 4 本線です。
電源電圧は 5V ±5%、供給電流は、デバイス 1 台あたり最大 500mA で、システム全体で最大 5A です。なお、パソコンが動作していないときは、デバイスは、サスペンドモード に入らなければなりません。サスペンドモードでの消費電流は最大 500μA に制限されます。
◆ 信号は、ディファレンシャル(ノイズ4.(4-A)、4.(4-B))で、非終端です。
DC 特性を表.7 に示します。
◆ フルスピードモードの AC 特性を図.39、表.8 に、ロースピードモードの AC 特性を図.40、表.9 に示します。
◆ フルスピードモードでは、信号波形を送信側と受信側の両方を規定しています。これは、伝送速度が速いために、送信側から受信側に伝わる遅れを無視できないからです(3.1.(1-A-b))。これに対して、ロースピードモードでは、伝送速度が遅いので送信側と受信側との遅れは、無視できます。
◆ ケーブルは、フルスピードモードでは、信号線として、シールド付 AWG28 のツイストペア線が規定されています(図.41)。フルスピードモードは高速なので、外部への放射ノイズをシールドによって阻止する必要があるからです。
[注] AWG は、米国等で使用されている、電線の太さの規格で、BS と呼ばれているものと同じです。番号が大きいほど線径は細くなります。AWG28 は、0.32mmφ です。
◆ ロースピードモードでは、信号の立ち上がりが遅く放射ノイズが小さいので、ケーブルの指定はありません。もちろん、フルスピードモード用のケーブルを使用することができます。
◆ コネクタは、USB 固有のコネクタです。上流側(パソコンに近い方)のコネクタを、シリーズ A 、下流側をシリーズ B と呼び、形状が異なります(図.42)。
◆ 端子は、表.10 の通りです。
◆ 図.41 を見ると、電源とグラウンド(1、4番)ピンが、信号(2、3番)ピンよりも長くなっています。これは、ホットプラグを実現するための仕組みです。
コネクタを挿入するとき、ピンが長い、電源/グラウンド ピンが、信号ピンよりも先に繋がり、電源が供給されます。デバイス等の回路が動作し、その状態で信号ピンが繋がります。コネクタを抜くときも、先ず信号ピンが切断された後に、回路の電源がオフになります。
◆ USB では、先に述べたように、全てパソコンの制御の下に、データのやり取りを行います。複数のデバイスと、タイムシェアリングでやり取りを行います。USB では、1ms 毎に繰り返されるフレームを単位として伝送を行います。伝送にはパケットを使用し、フレームは、複数のパケットで構成されます(図.43)。
図の SOF、アイソクロナス転送のデータ等がパケットです。SOF はフレームの開始を示すパケットです。
◆ 転送には、アイソクロナス転送、バルク転送、インタラプト転送、およびコントロール転送の、4 つの転送モードがあります(表.11)。
(a) アイソクロナス転送 : フルスピードモードだけに使用されます。1 フレーム当り最大1023バイト送ることができます。音声などの、リアルタイム データの伝送に使用されるモードです。アイソクロナス転送を行っている期間は、各フレームに、必ず n バイト分の転送時間が割り当てられます。
◆ このアイソクロナス転送は、他の転送モードよりも、最も高い優先順位で割り当てられます。したがって、n kバイト/秒の転送が保証され、リアルタイムを実現します。
(b) バルク転送 : フルスピードモードだけに使用されます。1 フレーム当り最大 64 バイトが割り付けられます。待ち時間や、伝送速度の制約が厳しくない、不定期に発生するデータを転送します。従来の汎用しシリアルインターフェースや汎用パラレルインターフェースを利用していたデータの転送、たとえばプリンタ等は、ほとんどが、このバルク転送を利用できます。
◆ バルク転送は、他の転送モードよりも低い優先順位が割り当てられますが、空いていれば、毎フレーム送られます。
(c) インタラプト転送 : フルスピードモード、ロースピードモードの何れでも使用できます。USB には、割り込み (コラム 3.4参照)の機能がありません。割り込みに代わるものとして、このインタラプト転送があります。1 フレーム当り最大 64 バイト(フルスピードモード)、または 8 バイト(ロースピードモード)が割り付けられます。インタラプト転送は、主に、マウスやキーボードなど、人間が操作する入力デバイスに使用されます。
◆ インタラプト転送は、アイソクロナス転送に次ぐ優先順位を持っています。USB では、パソコンの割り込みのように、デバイス側から自発的にパソコンに要求を上げることができません。代わりにパソコンからデバイスに対して定期的に、要求の有無をポーリングします。
◆ ポーリングですから、本物の割り込みのように即時処理することはできません。しかし、ミリ秒のオーダーで受け付けますから、キーボードやマウスにとっては、十分な応答速度を持っています。
(d) コントロール転送 : フルスピードモード、ロースピードモードの何れでも使用できます。コントロール転送は、USB 自体の制御情報をやり取りします。1 フレーム当り最大 64バイト(フルスピードモード)、または 8 バイト(ロースピードモード)です。
◆ デバイスがハブに接続されると、パソコンは、その接続を自動的に検出して、コンフィギュレーション を行います。コンフィギュレーションで、パソコンは、デバイスの種類や要求している転送サービスを読み込んで、スケヂューリングを行います。USB を介してデバイスに電源を供給する場合には、デバイスが要求している消費電流を読み込んで、電源の割り当てを行います。
★ コンピュータには、割り込み (インタラプト )の機能があります。割り込みは、コンピュータ外部からのハードウェア信号によって、強制的にプログラムの流れを変える機能です。
コンピュータでは、予めメモリに書き込まれているプログラムを実行します。単純なプログラムでは、プログラム通りに仕事を実行するだけで、外部からプログラムの流れを変えることはできません。
★ しかし、プログラムの中には、コンピュータの外部からの情報によってプログラムの流れを変えることが必要なものがあります。簡単な例として、人がキーボードを打ち込み、そのキーの値によって後続するプログラムを選ぶ場合を考えます。
★ このプログラムによって、入力したキーが「A」であればプログラム A を、「B」であればプログラム B を、その他の場合はプログラム C を実行することができます。このプログラムで目的を達成することは、できます。
しかし、このプログラムでは、キー入力を待ち続けるという、無駄な仕事にコンピュータが占有されています。しかも、上記のキー入力待ちのプログラムを実行しているときだけしか、キー入力を受け付けることができません。
★ パソコンでは、あるプログラムを実行している最中に、任意のタイミングでキー入力を行うことによって、実行中のプログラムとは関係の無い別のプログラムを、起動することができます。図のプログラムでは、このようなことは不可能です。
★ 割り込みの機能を利用すると、他のプログラムを実行していて、割り込みがあったときだけ,その割り込みに対応するプログラムを実行することができます。
★ キーボード入力を、割り込みによって受け付ければ、不特定のタイミングで入力したキー入力を、即時に受け付けて、それに対応する処理を行うことができます。
パソコンでは、キーボードは割り込みによって、随時受け付けます。そして、それが新しいプログラムの実行要求であれば、その新しいプログラムを、タイムシェアリングによって、現在走っているプログラムと同時並行して走らせるようにします。
★ あるプログラムを走らせている最中に、マウスのカーソルを移動させたり、クリックを受け付けたりできるのも、割り込みを利用していからです。