組み込み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への機能割り当て
システムのデジタル処理要求がマイクロコントローラやプロセッサの能力を超える場合、FPGAを検討します。高速並列ハードウェアの恩恵を受けるアーキテクチャが主要候補です。従来のプロセッサでも性能を満たせる場合でも、FPGAは製品ライフサイクルを通じた柔軟性とアップグレード可能性を提供できます。
FPGA使用を決定したら、関連処理タスクをFPGAに割り当てます。FPGAの入出力インターフェース、更新レート、ADC、DAC、メモリデバイスなどの周辺コンポーネントとの相互作用を定義します。
必要なFPGA機能の特定
FPGAの責任とインターフェースが定義されたら、必須デバイス機能のリストを作成します。リソース要件—ロジックセル、DSPブロック、メモリ—と電力および冷却ニーズを考慮します。低コスト・バッテリ駆動設計は小型デバイスとパッシブ冷却を使用する一方、高性能システムは大型FPGAとアクティブ冷却を必要とする場合があります。
デバイスファミリによって利用可能な機能は異なります。例えば、一部にはボード複雑性を削減する統合ADCが含まれます。要件を用いて候補ファミリを絞り込み、リソース見積もりが明確になるにつれて特定モデルまで絞り込みます。
FPGA設計の実装
候補デバイスが選択され、機能がマッピングされたら、ベンダーツールスイート(一般的にXilinx VivadoまたはIntel Quartus)を使用して実装を開始します。プロセスは通常、トップレベル設計から始まり、これはブロック図として表現されるか、HDL(VerilogまたはVHDL)またはC/C++などのハイレベル合成言語で直接記述されます。
以下のフェーズを繰り返し、動作するビットストリームが生成されるまで設計を洗練させます:
設計エントリ
HDL、ブロック図、またはC/C++コードを使用してシステムロジックを定義。これらの成果物は意図する振る舞いを記述しますが、物理的統合は記述しません。
I/O計画
I/Oピンを割り当て、信号標準を設定し、ピン配置や高速信号のトレース長などの物理的制約を考慮。I/O制約はタイミング制約とともに合成プロセスをガイドします。
合成
HDLを、選択したFPGAのリソースにロジックをマッピングするネットリストに変換。制約が満たせない場合、合成は失敗し設計を見直す必要があります。
配置と配線
ネットリストのロジック要素を特定のFPGAリソースに配置しながら制約を遵守。相互接続を配線して物理レイアウトを確定。結果は完全に指定されたコンフィギュレーションです。
ビットストリーム生成
FPGAの内部SRAMをロードするコンフィギュレーションファイルを作成。このビットストリームはソフトウェア実行ファイルに類似し、毎電源投入サイクルでロードされる必要があります。通常、オンボードフラッシュまたは外部ソースからロードされます。
ビットストリーム生成後、機能的正確性を検証するために徹底的なテストを実行します。
実装のテスト
あらゆる段階でテスト: HDLロジックのシミュレーション、合成ネットリストの検証、ターゲットボードでのハードウェアインザループテスト。包括的なテストは、製品信頼性を損なう稀なバグを軽減します。
次のセクションでは、Arty A7ボードとVivadoツールスイートを使用した実践例を詳細に説明します。
Packt Publishingの許可を得て再録. Copyright © 2021 Packt Publishing
Jim Ledin氏はLedin Engineering, Inc.のCEOです。組み込みソフトウェアとハードウェアの設計、開発、テストにおける深い専門知識を持ち、組み込みシステムサイバーセキュリティの権威として認められています。アイオワ州立大学で航空宇宙工学のB.S.、ジョージア工科大学で電気・コンピュータ工学のM.S.を取得。カリフォルニア州登録プロフェッショナルエンジニア、CISSP、CEH、CPT保持者。
関連コンテンツ:
- FPGAを用いた組み込み設計: ハードウェアリソース
- FPGAを用いた組み込み設計: 実装言語
- オープンソースツールがFPGAプログラミングを簡素化
- FPGAやASICでの浮動小数点アルゴリズム実装
- ディープラーニングへのFPGA活用
- AIアプリケーション向けGPUコードをFPGAに移行するソフトウェアツール
- FPGAがSubaru EyeSightビジョンベースADASでASICに取って代わる
さらにEmbeddedの情報を得るには、Embeddedの週刊メールニュースレターを購読してください。
埋め込み
- 高度なアディティブ・マニュファクチャリング・ソフトウェアで生産を最大化
- 安全性と信頼性のためのフェイルセーフ制御システム設計
- 組み込みシステムプログラミング:言語、アーキテクチャ、応用
- チャットボット入門:設計プロセス、アーキテクチャ、実践的知見
- 組み込みシステム設計:手順、原則、実世界での応用
- 組み込みシステムの基礎と実世界での応用
- 組み込みCでテスト駆動開発(TDD)によるステートマシン構築
- Analog Devices、Embedded World 2019でAI、産業ネットワーキング、電源ソリューションを展示
- Axiomtek tBOX400-510-FL:統合10ポート マネージドPoEスイッチ搭載のデュアルプロセッサー輸送用PC
- IBASE、AMD Ryzen Embedded V1807B搭載超コンパクトMini-ITX PC「CMI300-988」発表
- MicroSys、miriac MPX-LS1028A SoM発表-IEEE TSN & 4Kグラフィックス搭載エッジコンピューティング