前回 AS モードでコンフィグレーションを行うことが決まったので、次は ROM の選定です。
AS モードのコンフィグレーションで使用されるアルテラのコンフィグレーション ROM は EPCS シリーズになります。
コンフィグレーションの ROM といっても、デザインの大きさによって容量が変わってくるのでは?と考え、のちにデザインを追加する可能性があるのにどうやって EPCS のサイズを決めればよいのだろうか・・・

とりあえずは、コンパイル・レポートから、 Total Logic Element 数を確認しましたが、これを見ても何 Mbits の EPCS を使えばいいのかわかりませんでした。
さてどうしたものか・・・

先輩に質問してみるとコンフィグレーション ROM の大きさはデザインではなくデバイスに依存しているとのことでした。ということは、1 bit のカウンタを作っても、カウンタよりは複雑な時計を作っても ROM の容量は変わらない?混乱してきました。
・・・原点に立ち戻って考えてみます。
まずデバイスの構造を知るべきと考えました。デバイス内部は、格子状に Logic Element が並んでいることがわかります。
さらに今回使用している Cyclone® IV E デバイスは、乗算器ブロックや M9K と呼ばれるメモリ・ブロックが縦に並んでいることもわかります。デバイスの四隅には PLL が存在します。

時計機能を実現するに当たり、Cyclone® IV E デバイスのリソースを 100% 使用したわけではありませんでした。
100% のリソースを使用していないのにデバイス規模に対してコンフィグレーション ROM が決まっているという事はつまり、各リソースの使用/未使用の情報を全て書き込んでいるのでは?

FPGA はトランジスタで構成されていて、ゲートの接続や配線のスイッチに対する ON / OFF 設定により回路を実現するらしいのです。
使用有無に依存せず、デバイスを構成している全トランジスタ情報が必要になるため、コンフィグレーション ROM の容量は、デバイスに依存するのですね。

では、基板上にある EP4CE10 はどのくらいの容量が必要なのでしょうか?
ハンドブックの Section III → Configuration File Size に一覧表が載っていました!下の図がその一覧表です。

上記表は、rbf ファイルサイズについてまとめられています。
rbf ファイルとは、Raw Binary File の略で、ヘッダーやフッター情報などが含まれないデータのみが含まれているファイルです。
データのみのファイルであることからコンフィグレーション ROM の見積りなどでも使用されます。
上記の表から EP4CE10 ではおおよそ 3 Mbits の容量が必要であることがわかりました。
では、EPCS の容量はどのようなものがあるのでしょうか?
これも EPCS のハンドブックに一覧表がありました。下記が EPCS の一覧表です。

上記の表から EPCS4 であればデバイスのコンフィグレーション・データが入りそうです。
しかし、実際は、約 3 Mbits なのに EPCS4 ではもったいない気がしました。そこで、Cyclone® IV のハンドブックを読んでいるとコンフィグレーション・データが圧縮できるとの表記がありました。
圧縮できれば EPCS の容量も一つ小さいサイズでよくなるかもしれない。そうすれば基板のコストダウンに成功です!
どのくらいの圧縮率かというと、35% ~ 55% 圧縮可能だそうです。

コンフィグレーション・データの圧縮率はデザインに依存します。

デザインに依存するため圧縮オプションを有効にした状態でファイルを生成してみないと分かりません。
基板の設計と平行される場合、デザインが出来上がらないとコンフィグレーション ROM のサイズがわからないままでは、設計が進みません。
そのため、目安値がハンドブックに記載されているというわけです。
目安値の最小値で計算しておけば問題ないので、最小値の 35% でコンフィグレーション・データを計算したところ、おおよそ 2 Mbit でした・・・
残念です!ぎりぎり EPCS1 には入らない容量でした。ハンドブックをよく見ると Cyclone® IV では EPCS1 は使用できないという注意書きがありました。
EPCS4 が最小容量とのことですので EPCS4 を使用することに決め、社内での発注手続きを行いました。

尚、 Cyclone IV E デバイスの rbf に 35% 圧縮率を適用した一覧表がこちらです。

ところで、 AS モードでコンフィグレーションができるようになったらどのくらいの時間で立ち上がるんだろうか?
次回はコンフィグレーションにかかる時間について勉強していきます。