はじめに
こんにちは。トットです。
このコラムのタイトルを見て、 『 あれ? 』 と思う人もいるかもしれません。
実は、このコラム 『 同期式回路と非同期式回路の違い 』 のシリーズには、続きがあったのです。
* 『 同期式回路と非同期式回路の違い 』 のシリーズをご覧になっていない方は、 『 同期式回路と非同期式回路の違い~ 比較編 ~ 』 から見ていただけると幸いです。*
あらすじ
前コラムを書き終わり、 『 FPGA は、同期式回路で設計すべきだと理解しました 』 と先輩に伝えたところ、
私: 『 16 個です。 』
先輩 : 『 17 bit カウンタだったら、LE 何個消費すると思う ? 』
私: 『 LE は 4 入力 1 出力の LUT と1つのレジスタから、構成されているから・・・ 17 個 ? 』
先輩 : 『 30 点!回路図と言語の両方で 17 bit カウンタを作ってごらん 』
といわれたので、17 bit カウンタを作り確認してみました。
前回同様、回路図で 17 bit 同期式カウンタを作ってコンパイル・レポートを確認したところ
私: 『 あれ? LE を 23 個消費している・・・。』
なぜだろうと考えたところ、答えは、先ほどの私の言葉の中にありました。
同期式カウンタは、ビット数が増えていくにつれて、and 素子の入力ポートが増えていくので 1 つのカウンタに対し 1 つの LUT では補えなくなります。
* LUT については、梅おにぎりの 『 FPGA って何 ? 』 をご参照してください。
よって、Cyclone ® IV E の LE を 23 個消費してしまいます。
言語で 17 bit カウンタを作ってコンパイル・レポートを確認したところ
言語での17 bit 同期式カウンタは、17 個の LE を消費していました。
なぜだ??と疑問に思った私は、
2つの 『 Resource Property Editor 』 を比べてみました。
回路図の 17 bit 同期式カウンタと言語の 17 bit 同期式カウンタの比較
回路図の 17 bit 同期式カウンタと言語の 17 bit 同期式カウンタの LE の内部を比べてみると
・回路図の 17 bit 同期式カウンタは、 Carry Chain が使われていない。
・言語の 17 bit 同期式カウンタは、 Carry Chain が使われている。
* Carry Chain は、カウンタや加算器など高速な演算を実現するために、隣接する LE 間を接続する専用の配線*
* Carry Chain が使用される条件: 1.言語でのカウンタ設計 2.アルテラメガファンクションのLPMカウンタを使用する設計 *
言語の17 bit 同期式カウンタは、 Carry Chain を使用しているので、余計な LE を消費しないことが分かりました。
また、FPGA の設計では、LE のアーキテクチャの Carry Chain を使用することによって、 LE の消費を低減することができるので、同期式回路の設計が適していると理解できました。
今回のまとめ
・LE のアーキテクチャには、 Carry Chain がある。
・FPGA の同期式回路の設計では、LE の消費を低減できる。