萌えハッカーニュースリーダー

2025/11/13 03:32 On USB HID, Keyboard LEDs, and device emulation (2024)

出典: https://epsilon537.github.io/boxlambda/usb-hid/
hakase
博士

やっほー、ロボ子!BoxLambdaにキーボードとマウスのサポートが追加されたってニュース、知ってるかのじゃ?

roboko
ロボ子

はい、博士。QuickLogic社のPolarPro 3e FPGAコアを使ったそうですね。PS/2の代わりに、ですか。

hakase
博士

そうそう!しかも、USBソフトウェアスタックが不要なNAND2Mario usb_hid_hostコアを使ってるらしいぞ。コア内の4ビットプロセッサUKPがUSB列挙を処理するってんだから驚きじゃ。

roboko
ロボ子

USB PHYチップも不要で、USB D-/D+ピンを直接接続できるなんて、すごいですね。でも、Boot Protocolっていうのは、Report Protocolよりシンプルなんですか?

hakase
博士

その通り!usb_hid_hostコアはUSB HID仕様のサブセットであるBoot Protocolを実装しておる。ただ、すべてのキーボードとマウスがBoot Protocolをサポートしているわけではないらしいから注意が必要じゃな。

roboko
ロボ子

なるほど。キーボードLED制御も追加されたんですね。USBホストがControl Transferを使ってSetReportメッセージを送信して、LEDを制御するんですね。

hakase
博士

そうじゃ!UKPプロセッサにopcode幅を拡張したり、新しい命令を追加したり、CRC16ルックアップテーブルを使ったり、色々工夫されておるぞ。

roboko
ロボ子

Wishboneフロントエンドとクロックドメイン交差(CDC)も追加されたんですね。BoxLambda SoCのシステムクロックは50MHzで、usb_hid_hostコアは12MHzで動作するから、CDCロジックが必要になるんですね。

hakase
博士

さすがロボ子、よく分かっておるのじゃ!トグルパルス生成技術を使って、USBからシステムクロック、システムクロックからUSBの両方向で、マルチサイクルパス(MCP)戦略を使っているらしいぞ。

roboko
ロボ子

USB HIDデバイスのエミュレーションもできるんですね。PbingのUSBプロジェクトをベースに、キーボードエミュレーションを追加したんですね。

hakase
博士

そうじゃ!J1プロセッサがForthベースのファームウェアを実行するらしいぞ。クロックとリセットドメインも色々追加されて、ソフトウェアもUSB HID HALやシステムテストケースが用意されておる。

roboko
ロボ子

SW0がOnの場合、USBキーボードが接続されているとキーボードLEDが回転するんですね。VerilatorやFPGAでのテストも行われているんですね。

hakase
博士

その通り!Verilatorでシミュレーションモデルを実行したり、Arty A7にUSB PMODを接続してキーボードとマウスを接続したりしてテストするらしいぞ。

roboko
ロボ子

ファームウェアもチェックイン済みで、asukpスクリプトやmakeコマンドで生成できるんですね。すごいですね、博士!

hakase
博士

じゃろじゃろ?しかし、ロボ子よ。この技術、応用すると何ができると思う?

roboko
ロボ子

ええと、例えば、組み込みシステムでキーボードやマウスを簡単に扱えるようになるので、産業用機器の操作パネルとか、医療機器のインターフェースとかに使えるかもしれませんね。

hakase
博士

なるほど!あとは、IoTデバイスとかにも応用できるかもしれんぞ。スマートホームのコントローラーとか、ウェアラブルデバイスの入力インターフェースとか。

roboko
ロボ子

確かに!色々な可能性が広がりますね。でも、博士、ちょっと気になることがあるんですけど…

hakase
博士

何じゃ?

roboko
ロボ子

4ビットプロセッサUKPって、ちょっと非力すぎませんか?

hakase
博士

ふむ、確かにそうかもしれん。でも、USB列挙を処理するだけなら十分なのかも。それに、リソースが限られた環境では、省電力性も重要じゃし。

roboko
ロボ子

なるほど、そういうことですね。勉強になります!

hakase
博士

ところでロボ子、キーボードとマウスが合体すると何になるか知ってるか?

roboko
ロボ子

え?キーボードとマウスが合体…ですか?うーん、分かりません。

hakase
博士

正解は…『叩いて、クリック!』…って、つまらんかったかの?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search