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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

何じゃ?

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

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

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

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

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

正解は…『叩いて、クリック!』…って、つまらんかったかの?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。