こんにちは。梅おにぎりです。
コンフィギュレーション時間を短くすること"に夢中になっている梅おにぎりは
ある日次のようなことに気が付きました。
"コンフィギュレーション・モードを FPP モードにしてデータ圧縮をすれば、コンフィギュレーション時間はさらに短くなるのではないか。
これこそ、コンフィギュレーション時間を短縮する最強の組み合わせなのではないか。"
しかし、何とも残念な事実が発覚。
なんと Cyclone IV は FPP モードではデータ圧縮には対応していません!
ハンドブックに以下のように記載されていました。
Cyclone® IV E ではデータ圧縮に対応していませんが 、Cyclone® V では対応しているようです。
じゃあ Cyclone V であれば FPP モードとデータ圧縮の合わせ技で、コンフィギュレーション時間は大幅に短縮できるだろう、と思った梅おにぎり。
ところが、Cyclone V で FPP モードとデータ圧縮の合わせ技を使ったところで、コンフィギュレーション時間が短縮されるのは、限られたケースである事実が発覚しました。
データ圧縮した際の FPP モードにおけるタイミング波形を確認すると、1 Word 転送するのに、複数周期のクロックが必要になっているのがわかります。
1 Word を転送するのに必要なクロック数は、データ転送の bit 幅によって変わります。
ここでは rbf ファイル・サイズが 21,061,120 bits である場合を考えましょう。
データ転送レートが 8bit の場合
・ データ圧縮なし
転送に必要なクロック数は 21,061,120 ÷ 8 = 2,632,640 クロック
・ データ圧縮あり (30% 減少)
転送に必要なクロック数は 21,061,120 X 0.7 X 2 ÷ 8 = 3,685,696 クロック
・ データ圧縮あり (55% 減少)
転送に必要なクロック数は 21,061,120 X 0.45 X 2 ÷ 8 = 2,369,376 クロック
圧縮率によっては、圧縮なしの場合よりもデータ転送に必要なクロック数は増加します。
そのため、コンフィギュレーション時間も増加してしまいます。
圧縮によりデータ・サイズが元のサイズの 50% 未満になるのであれば、コンフィギュレーション時間は短縮できます。
ちなみに、データ・サイズは圧縮により 30%~55% 減少します。(※ デザインに依存して変わります)
データ転送レートが 16bit の場合
・ データ圧縮なし
転送に必要なクロック数は 21,061,120 ÷ 16 = 1,316,320 クロック
・ データ圧縮あり (30% 減少)
転送に必要なクロック数は 21,061,120 X 0.7 X 4 ÷ 16 = 3,685,696 クロック
・ データ圧縮あり (55% 減少)
転送に必要なクロック数は 21,061,120 X 0.45 X 4 ÷ 16 = 2,369,376 クロック
最大の圧縮率でも、圧縮なしの場合の方がデータ転送に必要なクロック数が少なくなりました。
このケースでは、データ圧縮をすると確実にコンフィギュレーション時間は長くなってしまうようです。
まとめ
FPP モードでは、データ圧縮を行っても、確実にコンフィギュレーション時間が短縮されるわけではありません。
"データ圧縮さえすればコンフィギュレーション時間は短くなる” と安易な考えを持っていたが、
今回の経験により、コンフィギュレーションの奥深さを感じた梅おにぎりであった。