FPGAの速度とは?

FPGAの速度とは?

 FPGAの選定をしていると、speed grade という項目が出てきて、FPGAの速度? という疑問が沸きます。

 確かにFPGAにはスピードグレードがあり、早い方が高価な傾向にあります。それでは、FPGAが早い。とかスピードグレードがfastであるとかは何なのでしょう?

 FPGAの速度というのは、DFFとDFFの間で処理できる時間になります。この速度が速いという事はクロック周波数を上げる事ができたり、論理回路を多く処理できたりする。という事になります。

 図で示すと上のようになります。早い方が論理回路が多く詰め込む事ができるので、大規模な設計が可能になります。

 しかしながら、実際にはこの論理回路はエンジニアがVHDLやVerilogなどで設計した回路がそのまま実現されるとは限りません。通常はコンパイラの最適化をONしているので、論理圧縮機能により実際には小さくなります。

 どの程度小さくなっているのかはコンパイル結果を見なくてはわかりません。開発環境にもよりますが、コンパイラレポートが出力されますので、そのファイルを参照して推測します。

 論理圧縮はコンパイラの機能でON/OFFすることができますが、一般的なコンパイラは最初ONになっています。長年FPGAの設計を行っていますが、論理圧縮をOFFで使用したことはありませんので、普通はONで使うと思います。

 通常は論理圧縮がどのように行われていたのかを調べるのではなく、希望するクロック周波数に対して、DFFのセットアップ・ホールドタイムが満足しているのかをコンパイラレポートから読み取ります。

 下記のデータはMicroSemi社のコンパイラレポートからタイミングについての記述部分を抜粋したものです。

##### START OF TIMING REPORT #####[
# Timing Report written on Sat Jul 18 15:06:18 2020
#


Top view:               period
Requested Frequency:    100.0 MHz
Wire load mode:         top
Paths requested:        5
Constraint File(s):    C:\patio\
                       
@N: MT320 |This timing report is an estimate of place and route data. For final timing results, use the FPGA vendor place and route report.
@N: MT322 |Clock constraints include only register-to-register paths associated with each individual clock.

Performance Summary
*******************

Worst slack in design: 8.208

                   Requested     Estimated     Requested     Estimated               Clock        Clock              
Starting Clock     Frequency     Frequency     Period        Period        Slack     Type         Group              
---------------------------------------------------------------------------------------------------------------------
period|clock       100.0 MHz     558.1 MHz     10.000        1.792         8.208     inferred     Inferred_clkgroup_0
=====================================================================================================================


Clock Relationships
*******************

Clocks                      |    rise  to  rise   |    fall  to  fall   |    rise  to  fall   |    fall  to  rise 
------------------------------------------------------------------------------------------------------------------
Starting      Ending        |  constraint  slack  |  constraint  slack  |  constraint  slack  |  constraint  slack
------------------------------------------------------------------------------------------------------------------
period|clock  period|clock  |  10.000      8.208  |  No paths    -      |  No paths    -      |  No paths    -    
==================================================================================================================
 Note: 'No paths' indicates there are no paths in the design for that pair of clock edges.
       'Diff grp' indicates that paths exist but the starting clock and ending clock are in different clock groups.

 FPGAのスピードグレードとコストは相反する物なので、十分に検討する必要がありますが、稀に早いスピードグレードの方が安い。という事があります。ビジネスでFPGAを購入する場合には、部品商社を通して購入すると思いますが、その商社が常時在庫として持っている物があります。大口顧客が多量に購入している場合、相対的に価格が下がりますので、スピードグレードとパッケージによる価格の違いは商社と十分に打ち合わせをして、使いやすい物を選ぶようにします。

 逆に商社が扱ったことの無いようなスピードグレードやパッケージを選定してしまうと、その都度輸入という事になりますので、高価で納期もかかりますし、MOQ(Minimum Order Quantity)といって最低購入制限を付けられる事があります。この場合、1個購入したくてもMOQ分全部を購入しなくてはなりません。

 もし、純粋にスピードグレードだけで悩む事があれば、低い(遅い)スピードグレードで設計を進めるようにします。最近のFPGAはそれでも十分に高速で、設計途中でスピードグレードが満足しない。となっても、上のグレードに変更すれば良いだけです。

 最後に、FPGAの速度を気にしながら設計するような高速設計が必要な場合には、EMC(Electromagnetic Compatibility)にも注意しておきます。日本語では電磁両立性という名称になっていますが、機器が放出するノイズの事です。

 一般的に高速なデバイスを使ったり、高速なクロック信号を使うとノイズが出ます。それが機器から放出されても許容される範囲なのかは、設計段階で検討しておかなくては、ならない事項の一つです。

 無駄に速度を上げると、EMCで苦労することになりますので注意してください。