FPGA

 AIT鉄人1号ではSH7045Fで時分割のPWM信号を発生し、CPLDで各サーボに信号を振り分けていた。AIT鉄人2号では、まずCPUをより高速なSH7145Fに変更し、さらにPWM信号の生成をFPGAに行わせるようにした。また、センサ信号もFPGAで処理させた。FPGAとはField Programmable Gate Arrayの略で、プログラミングできるLSIを言う。CPLDもFPGAと同じようにプログラミングできるLSIだが、規模が小さくて、PWM信号を1個のCPLDで発生させることができなかったが、FPGAによりそれらが可能になった。このように信号処理を専用LSに任せることにより、CPUの負荷を減らし、高精度、高速な処理ができるようになる(かな?)。また、通常行われているようなトリッキーなプログラムが不要に成り、制御プログラミングも簡単でわかりやすく成る。

FPGAはSH7145FのCS2のメモリー空間にマッピングし、マッピングされたアドレスへPWMの値をWRITEするだけで、PWM信号が出力される。また、角速度ジャイロセンサーのパルス幅もFPGAで計測し、マッピングされたアドレスからREADするだけで、センサー信号を読み込むことができる。SH7145Fは16ビットデータバス、8ビットアドレスバスでFPGAと接続している。

今回のボードは、FPGAとコンフィグレーションPROMだけのシンプルなもの。回路図をEagleで書き、自動配線でパターンをある程度生成(実際には自動ではほとんどパターンはできません)した後、人力でパターン修正。データを基板加工機で読み込んで基板製作した。表面実装です。ボードの主な構成は以下のよう。これだけの機能を入れてもFPGAのゲートは1/3も使われていない。今後は、さらに機能を入れていく予定。


FPGAボード
FPGA XILINX SPARTAN II (XC2S100TQ144)
 10万ゲート
 User I/O 92 
コンフィグレーションEEPROM XC18V01VQ44
 1Mbit
開発ツール XilinxWebPACK ISE
回路設計、パターンレイアウト Eagle4.11
CAM CAM-21RS
プリント基板自動加工機 FP-7A(MITS)
使用基板 両面基板
表面実装

機能
出力 PWM×24(サーボ用:分解能0.5µs、周期16.384ms、パルス幅0-8,192ms)
PWM×3 (角速度ジャイロセンサ用:周期16.384ms、パルス幅1.024ms固定)
入力 パルス幅×3(角速度ジャイロセンサ用:分解能0.5µs、計測パルス幅0-8.192ms)

SH7145Fボードのメモリマップ
FPGAとは、CS2空間で8ビットアドレスで接続

回路の全体構成
 
PWMユニット ジャイロセンサユニット

VHDLでFPGAの回路を記述
 
Eagleで回路設計、基板パターン作成
 
基板加工機で基板製作 部品を半田付けして完成(裏面/表面)
 
SH7145F(ベストテクノロジーBTC080)
ボードと合体