USBシステム: ハードウェア実装

jp

システム構成

今回、実装を行うシステムの構成です。

usb_pic3

システム構成図

  • CPUはSH-4A
  • USBホストCoreを含むすべての回路は、Local Busに接続されたFPGA(Spartan3 XC3S400)に格納
  • USB TYpe-AコネクタからのUSBバス信号が、バススイッチICを経由してFPGAに接続されている
  • FPGA基本クロックは66MHz(Local Busクロック)
  • USBホストCore用に48MHzを使用
  • USBデバイスとして、特殊なデバイスドライバを必要としないゲームPADを利用
  • CPUへのインタラプト信号を1本使用(IRQ1)

FPGA内部構成

USBホストCoreを中心に周辺回路を追加して、FPGA用のトップモジュールを作成します。FPGA内部は、USBホストCoreを含めて3つのモジュールで構成されます。

Module名 説明
CPU I/F CPU(SH-4A)バスインターフェース
Bus Bridge CPUバスとWHISHBONE*1のブリッジ回路
USBホストCore CpenCores USB Host/Slave Core

CPU I/Fは、SH-4AのLocal Busのインターフェース回路です。Local BusはSRAMインターフェースに設定されており、SH-4A CS2空間のシングルRead/Write転送を受け付けます。Bus Bridgeは、WISHBONEとのインターフェースを変換するブリッジ回路です。USBホストCoreは、8ビット幅のレジスタ設定バスで設計されていますが、今回はSH-4Aの32ビットバスにそのまま接続し、上位24ビット部分を未使用としました。

シミュレーション

usb_pic9

テストベンチの構成

ターゲットシステムでCPUが行う処理部分をバスファンクションモデルに置き換えてシミュレーションを実行します。バスファンクションモデルは、Local BusでのCPUのRead/Write処理を受け持ちます。USBホストCoreのテストベンチtestCase0.vを参考に、CPUからのレジスタ設定でUSBホストCoreの動作を確認します。

論理合成

ISEを用いた論理合成の結果、FPGA使用リソースは以下の様になりました。

Logic Utilization
Number of Slice Flip Flops 1,144 out of 7,168 15%
Number of 4 input LUTs 1,871 out of 7,168 26%
Logic Distribution
Number of occupied Slices 1,268 out of 3,584 35%
Number of RAMB16s 4 out of 16 25%

*1 OpenCoresで推奨されているSoC用インターコネクト規格


タイトルとURLをコピーしました