FPGAの回路を実機で動かすときに、一つだけ忘れてはいけないオプションがあります。それは「未使用ピンを入力/Hi-Zに設定する」です。数あるオプションの中で最も重要であるにも関わらず、ISEやクオータスのバージョンによってデフォルト値がまちまちになっています。
このオプションが適切に設定されていない場合、時に回路が動かなくなり、最悪ボードの破壊まで可能性があります。まずい設定の例としては、未使用ピンをas output driving groundに設定した時(Alteraの場合)を考えます。これは、使っていないピン(Verilogに記載されていないピン)をGNDに接続してしまいます。このオプションを使い基板側で未使用ピンをGNDに接続しておけば、FPGAデバイスのGNDピンが増えるためノイズに強くなるというメリットがあります。しかし、基板側でGNDに落ちていないときは非常に危険な事になります。
私が実際に見た例ですが、PCIの回路で問題が起きたことがありました。普通のPCIデバイスはPERR(パリティエラー)やSERR(システムエラー)といった緊急用の信号をドライブしません。これらの信号が、未使用ピンとしてGNDに落とされるとどうなるでしょう。SERR、PERRは負論理なのでGNDに落ちている場合は、CPUに対して「パリティやばい。マジやばい」「もうやめて!、PCIデバイスのライフは0よ」と警告を出すことを意味します。結果的にCPUが「なんかやばいからブートしない」となり、パソコンが立ち上がらなくなります。これとは別に、接続先がHを出力しているときは過電流が流れ、最悪基板を壊してしまします。
スターターキットのような基板では、全部の機能を使うことは希です。必然的に未使用ピンが出てくるので、オプションで忘れずに設定しておきましょう。
Alitera、Xilinxの設定方法です。
Alteraの場合
QuartusIIのメニューから、Assiginmetns→Settingsを選びます。
Settingsの画面が出たら、Deviceを選択し、さらにDevice and pin Optionsを選択します。
Device and pin Optionsの画面から、Unused Pinsのタグを選び、All input tristatedを選択してください。
Xilinxの場合
ISEのプロジェクトから、Generate Programming Fileを右クリックしpropertiesを開きます。
propertiesの画面が出たら、Configuration Optionsを選択します。
Unused IOB Pinsを選択しfloatに設定してください。