時計の製作実習中、JTAG だけのコンフィグレーション・モードだけではなく、少なくとも AS モードのコンフィグレーションはやったほうがよいと言われました。
確かに製作実習では、論理を間違えている可能性が高いため、都度 FPGA データを書き換えられる JTAG コンフィグレーションが最適ですが、お客様の製品で JTAG コンフィグレーションは最適とは考えにくいです。
様々なところに設置されている製品に対していちいち JTAG で書き込みを行うのは、各製品にエンジニアがはりつかなければならない事になってしまいます。
人件費がかかりすぎる。。。
ということで、コンフィグレーションに関して調べてみました。
コンフィグレーションに使用するもので分類すると 3 つにわけられます。
・アルテラ・ダウンロード・ケーブルを使用
・シリアル・コンフィグレーション・メモリを使用
・汎用パラレル・フラッシュ・メモリを使用
お客様にどのような構成を提案すべきか、メリットとデメリットをあげてみようと思います。
コンフィグレーション・モードは次のようなものがあります。
・Active Serial (シリアル・コンフィグレーション・メモリを使用)
・Active Parallel (外部制御回路 or プログラム + 汎用パラレル・フラッシュ・メモリを使用)
・JTAG (アルテラ・ダウンロード・ケーブルを使用)
・Passive Parallel (汎用パラレル・フラッシュ・メモリを使用)
・Fast Passive Parallel (外部制御回路 or プログラム + 汎用パラレル・フラッシュ・メモリを使用)
Serial と Parallel は表現通り、コンフィグレーション・データがシリアル・データかパラレル・データかを意味しています。
・Serial: コンフィグレーション・データがシリアル
・Parallel: コンフィグレーション・データがパラレル
パラレル・データの方が、コンフィグレーション時間がシリアルに比べて速くなるのは推測できます。
Active と Passive は、クロックがどちらからドライブしているかを表現しているようです。
・Active: Cyclone® IV デバイスがコンフィグレーション用のクロックを出力
・Passive: Cyclone IV デバイスがコンフィグレーション・クロックを受信
Active Serial (AS) モードを勧められたのは納得ができました。
コンフィグレーション用の制御回路もしくはプログラムを作成することが困難な我々にはハンドブックに記載がある通りに接続さえすれば、コンフィグレーションができる Active Serial モードが最適であることがわかりました。
ここで疑問に思ったのが、複数のコンフィグレーション・モードはどうやってデバイスが認識するのだろうかという点です。
Cyclone IV のハンドブック Section III -> Configuration -> Configuration Scheme に記載がありました。
FPGA の MSEL ピンでコンフィグレーション・モードを選択するようになっていました。
研究開発の段階だと JTAG モードにおけるコンフィグレーションをお勧めできますが、量産品の場合は、製品仕様により提案すべきモードが異なります。
コンフィグレーションを簡単に実現したい場合には、シリアル・コンフィグレーション・メモリを使用する AS モード、部品点数を増やせない場合は既に他の機能で使用予定の CPU + 汎用フラッシュ・メモリの組み合わせ、といった具合です。
コンフィグレーションが失敗してしまうとただの板になってしまう。。。コンフィグレーションって重要だと認識しました。
これでコンフィグレーション・モードが決まりました。次はアルテラのコンフィグレーション・メモリを選択する必要があります。
次回はコンフィグレーション ROM の選定についてご紹介する予定です。