こんにちは。梅おにぎりです。

 

FPGA は書き換えが可能なデバイスであることはみなさんご存知ですよね。

その「書き込み」にも実は種類があります。

 プログラミングコンフィグレーション

それぞれはいったい何を指しているのでしょうか。

今回はこの 2つの違いについて勉強していきます。

プログラミング

FPGA 外部のコンフィグレーション用 ROM にデザインデータを書き込むこと。

大きく分けると

 

【1】 直接コンフィグレーション用 ROM に書き込む場合

【2】 FPGA を経由して書き込む場合

 

の2つがあります。

 

FPGA は設計データを SRAM に保存しているため、電源を OFF にするとデータは消えてしまう “揮発性のデバイス” です。

そのため、電源を ON にする度に FPGA にデータを供給することが必要となります。

そのデータを保存しているのがコンフィグレーション用 ROM となります。

図で表すと以下のようになります。

コンフィグレーション

FPGA にデザインデータを書き込むこと。

コンフィグレーションには様々なモードがあります。

コンフィグレーションモードについては去年の先輩がまとめてくださっているのでこちらを参照。

大きく分けると

 

【1】 コンフィグレーション用 ROM から書き込む場合

【2】 FPGA に直接書き込む場合

 

の 2つに分かれます。
図で表すと以下のようになります。

また、プログラミングとコンフィギュレーションを行うに当たっては使用するファイルも異なっています。

・プログラミングで ROM に直接書き込む場合には pof ファイル

・FPGA を経由して書き込む場合には jic ファイル

・コンフィギュレーションで FPGA に直接書き込む場合 sof ファイル

を使用します。

 

プログラミングに必要な pof ファイルと jic ファイルは Quartus® II の Convert Programing Files 機能(File メニュー)で sof ファイルから変換することができます。

Quartus でのメニュー

Convert Programming Files での設定

プログラミングやコンフィグレーションを行う際には

・それぞれが何をしようとしているのか

・どのような工程で行われるのか

・どのファイルを使用したらよいのか

をきちんと確認してから行うように心掛けていきたいと思いました。