高性能組み込みシステム向けFPGAハードウェアリソース
編集部注: スマート製品設計のための高度なアルゴリズムが登場し続ける中、開発者はしばしば関連する処理要求を満たす組み込みシステムの実装に苦労しています。FPGAは必要な性能を提供できますが、FPGAを用いた設計は長らくFPGAプログラミング専門家の領域と見なされてきました。しかし現在、より強力なFPGAとより効果的な開発環境の利用可能性により、FPGA開発は広くアクセス可能になっています。『Architecting High-Performance Embedded Systems』第4章からの抜粋では、著者がFPGAデバイス、実装言語、開発プロセスを包括的にレビューし、独自の設計でFPGAを使い始める方法を詳細に解説しています。
1: ハードウェアリソース(本記事)
2: 実装言語
3: 開発プロセス
4: プロジェクトの構築
5: 実装
『Architecting High-Performance Embedded Systems』Jim Ledin著より抜粋・翻案
初めてのFPGAプログラム開発
本章は、リアルタイム組み込みシステムにおけるFPGAデバイスの効果的な活用についての議論から始まり、標準的なFPGAに含まれる機能要素の説明に続きます。FPGA設計言語の範囲—ハードウェア記述言語(HDL)、ブロック図手法、CやC++のような一般的なソフトウェアプログラミング言語—を紹介し、FPGA開発プロセスの概要を提供します。本章は、システム要求仕様から、低コストFPGA開発ボード上で完全に機能するシステム実装まで、FPGA開発サイクルの完全な例で締めくくられます。
本章を完了すると、FPGAがリアルタイム組み込みシステムアーキテクチャにどう適用できるか、FPGA ICの主要コンポーネント、FPGAアルゴリズム設計に使用されるプログラミング言語、FPGAベースアプリケーション開発のステップバイステップ手順を理解できます。また、無料FPGAソフトウェアツールを使用した低コストボードでの完全なFPGA開発例を実践します。
以下のトピックを扱います:
- リアルタイム組み込みシステム設計でのFPGA活用
- FPGA実装言語
- FPGA開発プロセス
- 初めてのFPGAプロジェクト開発
技術要件
本章のファイルはhttps://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systemsで入手可能です。
リアルタイム組み込みシステム設計でのFPGA活用
第1章のFPGAの要素節で概説した通り、典型的なFPGAデバイスには多数のルックアップテーブル、フリップフロップ、ブロックRAM要素、DSPスライス、その他のコンポーネントが含まれます。各コンポーネントの詳細な能力を理解することは有用ですが、最も重要な考慮事項は、特定のFPGA部品番号には各リソースの有限な数しか含まれず、その特定モデルをターゲットとする設計はそれらの制限を超えることができないことです。
組み込みシステムの要求仕様の観点から開発プロセスを見る方が生産的です。要件を快適に満たすモデルをターゲットとすることから始められます。設計が進むにつれて、リソース制限に遭遇したり、必要な機能が欠けていることに気づいたりするかもしれません。その時点で、より高性能なターゲットを選択して開発を継続するのは簡単です。逆に、選択したFPGAに余剰リソースがあると判明すれば、より小さな部品への移行でコスト、ピン数、パッケージサイズ、消費電力を削減できます。
同一ファミリ内でのターゲットFPGAの切り替えは通常シームレスで、設計成果物は完全に再利用可能です。ファミリやベンダーを切り替える場合は追加の労力が必要かもしれません。重要なポイントは、特定モデルを最初から選択する必要はなく、まずFPGAを実行可能なソリューションとして検証し、その後適切なベンダーとデバイスファミリを選択すればよいことです。
本書のサンプルプロジェクトではXilinxのVivadoツールファミリを使用します。一部のXilinxファミリではVivadoライセンスが必要ですが、ここで使用するArtix-7デバイスは無料でサポートされています。Artix-7は高性能、低消費電力、システムコスト削減を兼ね備えています。他のベンダーからも同様のファミリとツールスイートが利用可能です。
FPGA開発は、さまざまな分析と設計データを必要とする関与の深いプロセスです。議論を具体的に保つため、本書ではVivadoを通して使用します。これらの技術を習得すれば、他ベンダーのツールにも適用できます。
以下のセクションでは、FPGAファミリとモデルの主要な差別化機能について説明します。ブロックRAM容量、I/O信号タイプ、専用オンチップリソース、組み込みプロセッサコアの有無などです。
ブロックRAMと分散RAM
ブロックRAMは、FPGA内部の専用メモリ領域を実装します。メモリ領域はビット幅(通常8または16ビット)と深度(格納位置数)で指定されます。総ブロックRAMは通常キロビット(Kb)で表現され、ファミリとモデルによって異なります。
多くのFPGAは分散RAMも提供します。これはルックアップテーブルロジックから構築された小さな16ビットセグメントで、必要に応じてより大きなブロックに結合できます。分散RAMは中間結果の一時保存に最適ですが、ブロックRAMはキャッシュやI/Oバッファに使用されます。
ブロックRAMはシングルポートまたはデュアルポートです。デュアルポートRAMは2つの読み書きポートを持ち、異なるクロック速度で動作するサブシステム間の橋渡しに特に有用で、干渉なしにデータ転送を可能にします。
ブロックRAMはFIFOモードで動作でき、フル、エンプティ、ほぼフル、ほぼエンプティの状態信号を提供します。書き込みと読み取り操作を慎重に制御することで、データ損失や破損を防ぎます。
FPGA I/Oピンと関連機能
FPGA I/Oピンは多様な高速標準をサポートします。設計時に、開発者は特定のピンに機能を割り当て、各ピンのインターフェース標準を設定します。信号はシングルエンドまたは差動です。
シングルエンド信号はグラウンドを基準とし、歴史的にTTL/CMOSレンジが使用されてきました。最新FPGAはより低電圧レンジ—LVTTL(0〜3.3 V)とLVCMOSバリエーション(1.2、1.5、1.8、2.5、3.3 V)—をサポートし、消費電力削減と速度向上を実現します。高速シングルエンド標準にはHSTLとSSTLがあります。
差動信号はピンのペアを使用し、コモンモードノイズがほぼキャンセルされるため、高データレートリンクで好まれます。差動標準にはHSTL、SSTL、LVDSがあります。1994年に導入されたLVDSは、一定の3.5 mA電流を供給し、方向を切り替えてデータビットを表現します。伝送線路インピーダンス(LVDSで100 Ω)を終端インピーダンスに合わせることは、反射を避けるために不可欠です。
専用ハードウェアリソース
FPGAには、固定された効率的な実装が恩恵をもたらす機能のための専用ハードウェアが含まれることがよくあります:
- 外部ダイナミックRAM(DRAM)インターフェース、通常DDR3をサポート
- アナログ-デジタルコンバータ
- 複数クロック周波数生成用の位相同期ループ
- デジタル信号処理MACハードウェア
MACユニットのような専用ハードウェアは、合成ロジックでは達成できない遥かに高い性能を提供します。
プロセッサコア
一部のFPGAファミリはハードプロセッサコアを統合します。例えば、Xilinx Zynq-7000はARM Cortex-A9とFPGAファブリックを組み合わせます。設計がハードコアを必要としない場合、FPGAリソースからソフトプロセッサをインスタンス化できます。ソフトプロセッサは高度に設定可能ですが、通常ハードコアの性能には及びません。
次のセクションでは、FPGAアルゴリズム開発に使用される主要なプログラミング言語とデータ入力方法を紹介します。
Packt Publishingの許可を得て再録. Copyright © 2021 Packt Publishing
Jim Ledin氏はLedin Engineering, Inc.のCEOです。組み込みソフトウェアとハードウェアの設計、開発、テストのエキスパートであり、組み込みシステムのサイバーセキュリティ評価とペネトレーションテストにも精通しています。アイオワ州立大学で航空宇宙工学のB.S.、ジョージア工科大学で電気・コンピュータ工学のM.S.を取得。カリフォルニア州登録プロフェッショナル電気エンジニア、CISSP、CEH、CPT保持者です。
関連コンテンツ:
- オープンソースツールがFPGAプログラミングを簡素化
- FPGAやASICでの浮動小数点アルゴリズム実装
- ディープラーニングへのFPGA活用
- AIアプリケーション向けGPUコードをFPGAに移行するソフトウェアツール
- FPGAがSubaru EyeSightビジョンベースADASでASICに取って代わる
- フラッシュベースFPGAが機能安全要件をどう簡素化するか
- インスタントオンFPGAのメリットを享受する
- 高速NORフラッシュを用いたFPGA設定
- FPGA技術が新しいミッドレンジシステム要件にどう対応するか
さらにEmbeddedの情報を得るには、Embeddedの週刊メールニュースレターを購読してください。
埋め込み
- コネクテッドハードウェア設計で高コストなサプライズを回避する:実証済み戦略
- 高度なアディティブ・マニュファクチャリング・ソフトウェアで生産を最大化
- Eclipse IoT:迅速なIoT開発のための統合オープンソースパッケージ
- 組み込みシステム設計:手順、原則、実世界での応用
- 組み込みCでテスト駆動開発(TDD)によるステートマシン構築
- 組み込みAIでビッグデータを実用的なスマートインサイトに変換
- コミュニティ主導のハードウェアCWE:設計セキュリティ弱点を特定する新フレームワーク
- サイプレス、ModusToolboxでデバイスツークラウド完全サポートを実現しIoT開発を加速
- Lattice MachXO3D FPGA、ハードウェアルートオブトラストでセキュリティを強化
- MAXREFDES220# - 光学センサーによるカフレス血圧モニタリング
- Java 9のTry-with-resources改善:よりクリーンなコードへ