こんにちは。頭領です。

今回から 2回にわたり、未使用ピンの処理を忘れてしまった赤面エピソードと、そんな私を実は裏で助けてくれていた「命の恩人」を紹介します。

 

FPGA の I/O ってユーザ I/O は好きに使用できるけど、用途が決まった I/O がいくつかある。

用途の決まっている I/O の接続方法は、各デバイスの Pin Connection Guideline に1つひとつ丁寧に記載されているが、Pin Connection Guideline にはピンの概要と基板上での処理方法が記載されている資料なので、ピン番号を確認する際には「 Pin Information 」をあわせて参照する必要がある。

 

今回、デバイスとしてアルテラ社の Cyclone® IV E ( EP4CE10 ) デバイスを使用しているので、Cyclone® IV E デバイスの Pin Connection Guideline と Pin Information を見ながら配線した結果、デバイスは正常に動作してくれたので、ひとまず安心。

 

しかし後になって、実は処理しなければならなかったピンを見落としていたことに気づいた。

 

私がうっかり見落としてしまった、未使用 I/O ピンは以下の4つ。

 

・CLKUSR : コンフィギュレーション時に初期化クロックを選択できる

・DEV_CLKn : コンフィギュレーション時にデバイス内の全てのレジスタをクリアできる

・DEV_OE : コンフィギュレーション時に全ての I/O ピンをトライ・ステート状態にする

・VREF : SSTL など電圧リファレンス形式の I/O Standard で要求されるリファレンス電圧の入力ピンとして使用する

 

これらのピンは「未使用時はグラウンドに接続」( VREF の場合は電源かグラウンドのどちらかに接続)と、Pin Connection Guideline に記載されている。

 

一方、 Pin Information では上記ピン名は「 IO 」になっていた。

つまり、オプション・ピンだったのだ。

Optional Function (s) 機能として使用しない場合は、ユーザ I/O となる。

 

アルテラの FPGA は未使用ピン処理を推奨された方法で行わないと、動作は保障されないし、場合によってはデバイスを破損する恐れもあった。

しかし、見落としていた 4つのピンはグラウンドなどに接続と Pin Connection Guideline に記載しているにも関わらず、グラウンドに接続していない。

 

「でも、デバイスは動いてるしなぁ。なんでだろう。」

 

この時、新人の失態により訪れたデバイスの「命の危機」を回避してくれた、尊い存在がいたことを、頭領は知る由もなかった…

(次回へ続く)