PS/2コントローラでキーボードやマウスを接続する

無償で使えてよりどりみどり!オープン・ソースIPコアの研究
IP コ
アの
活用
技法
を
体験
PS/2コントローラでキーボードやマウスを接続する
横溝 憲治
Kenji Yokomizo
キーボードやマウスは USB 接続タイプのものが一般的ですが,「FPGA にてっとり早くキーボードやマウスをつなげたい!」と
いった場合は,USB よりも制御が簡単な PS/2 を使うのも有効です.USB に切り替わったとはいえ PC ショップを探せば,PS/2
接続のキーボードやマウスもまだまだ入手可能です.そこでここでは FPGA に PS/2 コントローラを実装し,キーボードやマウス
を接続してみます.
1
PS/2 インターフェースの概要
● PS/2 とは
PS/2 ポートは IBM の PS/2 パソコンに用意された
キーボードおよびマウス用のインターフェースです.
PC/AT 互換機に装備されていたので,キーボードと
マウスの標準的な接続方法として使われてきました.
図 1 は PS/2 ポートと FPGA の接続図です.信号は
Vcc ,GND,CLK,DATA の 4 本があり,通信として
使う信号は CLK と DATA です.
● PS/2 ポートのプロトコル
CLK と DATA はオープン・コレクタ信号でホスト,
デバイスのいずれかが“L”レベルを出力すると信号が
“L”レベルになり,どちらも“L”レベルを出力しない
場合はハイ・インピーダンス(以降 Hi-Z)となり,プ
ルアップ抵抗によって“H”レベルになります.
通信の状態は CLK と DATA の信号レベルで決まり
ま す.CLK=“H”,DATA=“H”は ア イ ド ル 状 態,
CLK=“L”,DATA=“H”で 通 信 禁 止,CLK=“H”,
DATA=“L”で送信要求になります.ホストからデバ
イスへの送信パケットは 12 ビットで構成されスター
ト(1 ビット,値 =0),データ(8 ビット),パリティ(1
ビット)
,ストップ(1 ビット,値 =1)
,アクノリッジ
(1 ビット,値 =0)になります.
・ホストからデバイスへの転送
図 2 はホストからデバイスへの転送時の波形です.
①ア イドル状態からホストが CLK を“L”レベルにし
ていったん通信禁止にします.
②ホ ストが CLK を Hi-Z にすると CLK=“H”になりま
すが,DATA を“L”レベルにしてあるのでホスト
からデバイスへの送信要求になります.また,ここ
での DATA=“L”はそのままスタート・ビットとな
ります.
③デバイスからクロックが送信されます.
④クロックの立ち下がり後にホストはデータを 1 ビッ
トずつ送信します.
⑤デバイスはクロックの立ち上がりでデータを取り込
みます.
⑥ホストは 11 番目のデータとして DATA を Hi-Z にし
てストップ・ビットを送信します.
⑦デ バイスは 11 個データを受信するとアクノリッジ
として DATA を“L”レベルにします.
⑧転 送が終了するとデバイスは CLK を Hi-Z のままに
して通信が終了します.
プルアップ 5V
抵抗
ホスト
FPGA
レベル変換
バス・スイッチ
Vcc
DATA
CLK
4
3
デバイス
2 1
DATA
保護抵抗
図1
65
PS/2ポート
CLK
GND
PS/2 ポートと FPGA の接続例
PS/2 ポートの信号レベルは 5V なので FPGA と直結できない.この例ではレベル変換バス・スイッチ
を利用して接続している.
130
PS/2 コントローラでキーボードやマウスを接続する