工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> 埋め込み

FPGAを使用した組み込み設計:開発プロセス

編集者注:スマートな製品設計のための高度なアルゴリズムが出現し続けるにつれて、開発者は、これらのアルゴリズムに関連する処理要求を満たすことができる組み込みシステムの実装に苦労することがよくあります。 FPGAは必要なパフォーマンスを提供できますが、FPGAを使用したデザインは、FPGAプログラミングの専門家の権限に限定されると長い間考えられてきました。しかし、今日では、より強力なFPGAとより効果的な開発環境が利用できるようになり、FPGA開発に幅広くアクセスできるようになりました。この抜粋、 『Architecting High-Performance Embedded Systems』の第4章では、FPGAデバイス、実装言語、FPGA開発プロセスの包括的なレビューと、FPGAの実装を開始する方法の詳細なウォークスルーを提供しています。設計。完全な抜粋は、次の一連の記事で紹介されています。
1:ハードウェアリソース
2:実装言語
3:開発プロセス(この記事)
4:プロジェクトの構築
5:実装

ジム・レディンによる「高性能組み込みシステムの設計」から採用。


FPGA開発プロセス

FPGAはさまざまな異なるアプリケーションドメインで使用されていますが、FPGA開発プロジェクトに広く適用できる一連の開発ステップを特定することができます。このセクションでは、プロジェクト中に通常発生する順序での通常のFPGA開発手順について説明します。

システム要件の定義

新しいシステムを開発するとき、または既存のシステムへの大幅なアップグレードを開始するときの最初のステップは、システムが何をすることになっているのかを明確かつ詳細に理解することです。要件定義プロセスは、システムの目的の機能、動作モード、および主要な機能の一般的な説明から始まります。この情報は明確で明確な言葉で書き出され、開発努力の成功に関与するすべての関係者と共有されるべきです。システム要件を共有する目的は、説明の完全性と正確性に関して、すべての関係者間でコンセンサスを達成することです。

要件の説明を具体化して、入力信号のサンプリングレートやアクチュエータ出力コマンドの更新レートなど、必要なレベルのシステムパフォーマンスの仕様を含める必要があります。物理的なサイズの制約、最小バッテリ寿命、許容可能な環境温度範囲などの追加の詳細が、設計プロセスをガイドします。一般に、システム全体の成功に関連すると判断されたすべてのシステムパラメータの最小パフォーマンスしきい値を説明する包括的な仕様セットを開発する必要があります。

システム要件の完全なセットは、記載されているすべての仕様に準拠する設計ソリューションが適切なソリューションである必要がある範囲で完全である必要があります。すべての仕様を満たす設計が何らかの無関係な理由で受け入れられないと見なされた場合、これはシステム要件を完全に述べていないことを意味します。

たとえば、技術的に適切なソリューションを作成するにはコストがかかりすぎると判断された場合、問題の原因は、要件開発プロセス中にコスト抑制の制約を完全に定義できない可能性があります。

トップレベルのシステム要件が定義され、合意された後、一般に、システム構成全体をサブシステムのコレクションに分割する必要があります。各サブシステムには、まとまりのある目的と、独自の説明要件および技術仕様のセットがあります。リアルタイムの組み込みシステムアーキテクチャでは、デジタル処理機能は、対応する要件のコレクションを備えたサブシステムとして表される可能性があります

FPGAへの機能の割り当て

システムアーキテクチャでのデジタル処理の要件が、システムでの使用に適したマイクロコントローラおよびマイクロプロセッサの機能を超える場合は、FPGAを設計に組み込むことを検討することが適切な場合があります。一部のシステムアーキテクチャ、特に並列動作を実行する高速デジタルハードウェアの恩恵を受けるシステムアーキテクチャは、FPGA実装の当然の候補です。他のシステムアーキテクチャは、従来のデジタル処理で十分なパフォーマンスを発揮できる可能性がありますが、将来の大幅なシステムアップグレードを想定した、計画されたライフタイムにわたってFPGA実装によって提供される柔軟性と拡張性を活用する貴重な機会があるかもしれません。

FPGAをデザインに組み込むことが決定されたら、次のステップは、システム全体のデジタル処理要件の一部をFPGAデバイスに割り当てることです。これには通常、FPGAの入力信号と出力信号の仕様、入力と出力の更新レート、ADCやRAMデバイスなどの部品を含むFPGAが相互作用する必要のあるコンポーネントの識別が含まれます。

必要なFPGA機能の特定>

FPGAによって実行される機能を定義し、FPGAがサポートする必要のある他のデバイスへのインターフェイスの知識があれば、候補のFPGAデバイスが提供する必要のある機能のリストを作成することが可能になります。

一部のFPGAファミリは、低コストで複雑性の低いアプリケーション向けに設計されているため、デジタルロジックを実装するための限られたリソースセットを提供します。これらのデバイスはバッテリ電源で動作し、パッシブ冷却のみを必要とする場合があります。その他のより強力なFPGAファミリは、大規模なフル機能のデジタルデザインをサポートし、最高のパフォーマンスで動作することを目的としており、継続的なアクティブ冷却が必要になる場合があります。

組み込みアプリケーションに関連するシステム要件は、アプリケーションに適したFPGAファミリの選択をガイドします。この時点では、FPGA実装のリソース要件が完全に定義されていないため、優先ファミリ内の特定のFPGAモデルを特定できない可能性があります。ただし、経験を積むと、設計に適していると思われる少数のFPGAモデルを特定することができます。

デジタル回路実装用のFPGAリソースに加えて、多くのFPGAモデルには、システム設計にとって重要な追加機能が含まれています。たとえば、内蔵ADCは、システムの部品点数を最小限に抑えるのに役立つ場合があります。必要なFPGA機能と必要なFPGA機能のリストは、システムに適したFPGAデバイスの選択をさらに絞り込むのに役立ちます。

FPGAデザインの実装>

候補となるFPGAモデルを特定し、FPGAに割り当てられた機能の詳細な定義を入手したら、FPGAデザインの実装を開始します。これには通常、FPGA開発ツールスイートの使用が含まれ、通常、プロジェクトに適した言語でHDLコードを開発することで主に構成されます。

必要に応じて、FPGAの実装はトップレベルのFPGAデザインのブロック図表現で始まる場合があります。必要に応じて、HDLまたはC / C ++で開発されたコンポーネントをブロック設計に組み込んで、完全なシステム実装を完了することができます。

あるいは、システム全体の設計をHDLで直接開発することも一般的です。言語に精通し、使用中のFPGAモデルの機能と制約を完全に理解している開発者にとって、これは最もリソース効率が高く、最高のパフォーマンスを発揮する設計結果につながる可能性があります。

FPGAの開発は、FPGAデバイスのプログラミングファイルが作成されるまで、初期設計がより詳細に指定されるようになるにつれて段階的に進行します。大規模なプロジェクトでは、これらのフェーズを数回繰り返し、各ステップのパスで設計全体のごく一部を開発するのが一般的です。これらのフェーズについては、次のセクションで説明します。

デザインエントリ

デザインエントリ システム開発者がHDLコード、ブロック図、および/またはC / C ++コードを使用してシステム機能を定義するフェーズです。コードおよびブロック図などの他のアーティファクトは、システムの論理機能を抽象的な用語で定義します。言い換えれば、設計成果物は論理回路を定義しますが、それがシステムの他の部分とどのように統合されるかを定義しません。

I / O計画

FPGA I / O計画 特定のI / O機能を実行するために割り当てられたピンを識別し、各信号に使用するI / O信号規格などのデバイス機能を関連付けるプロセスです。 I / O計画プロセスの一環として、物理デバイスパッケージのどこにI / Oピンが配置されているかなどの問題を考慮することが重要な場合があります。この手順は、高速信号のプリント回路基板のトレース長を最小限に抑え、回路信号のトレースが不必要に相互に交差することを回避するために重要です。

I / O信号要件の定義は、制約の一形態です。 FPGA開発プロセスで。もう1つの主要な制約カテゴリは、FPGAソリューションのパフォーマンスを決定するタイミング要件で構成されます。 FPGA合成プロセスでは、HDLコードとプロジェクトの制約を使用して、定義されたすべての制約を満たす機能的に正しいFPGAソリューションを開発します。ツールがすべての制約を満たすことができない場合、合成は失敗します。

合成

合成 ソースコードをネットリストと呼ばれる回路設計に変換します 。ネットリストは、ターゲットFPGAモデルのリソースから構築された回路を表します。ネットリストは、回路の論理バージョンまたは回路図バージョンを表します。回路が物理FPGAデバイスにどのように実装されるかは定義されていません。これは次のステップで発生します。

配置とルーティング

場所 プロセスは、ネットリストで定義されたFPGAリソースを取得し、それらを選択したFPGA内の特定のロジックエレメントに割り当てます。結果として得られるリソース配置は、I / O制約やタイミング制約など、これらの要素の割り当てを制限する制約を満たす必要があります。

配置プロセス中に論理要素に物理的な場所が割り当てられた後、ルート中に論理要素間の一連の接続が構成されます。 処理する。ルーティングは、論理要素間のすべての接続を実装し、HDLコードで説明されているように回路が機能できるようにします。配置配線操作が完了すると、FPGAの構成が完全に決定されます。

ビットストリーム生成

FPGA開発プロセスの最後のステップは、ビットストリームファイルの作成です。最高のパフォーマンスを実現するために、最新のFPGAデバイスのほとんどは、スタティックRAM を使用して構成を内部に保存します。 ( SRAM

FPGAコンフィギュレーションSRAMは、おそらく数百万ビットを含む非常に大きなシフトレジスタと考えることができます。このシフトレジスタの内容は、FPGAデバイスの構成と動作のすべての側面を完全に指定します。 FPGA開発中に生成されたビットストリームファイルは、HDLおよび制約によって指定された目的の機能をデバイスに実行させるシフトレジスタの設定を表します。従来のソフトウェア開発プロセスに関しては、ビットストリームファイルはリンカーによって生成された実行可能プログラムに類似しています。

SRAMは揮発性であり、デバイスの電源が切断されるたびにその内容が失われます。リアルタイム組み込みシステムアーキテクチャは、電力が供給されるたびにビットストリームファイルをFPGAにロードする手段を提供する必要があります。通常、ビットストリームは、デバイス内にあるフラッシュメモリから、または各電源投入サイクル中にデバイスに接続されているPCなどの外部ソースからロードされます。

FPGAビットストリームのコンパイルが完了したら、次のステップは、実装をテストして、正しく動作することを確認することです。このステップは、従来のソフトウェアビルドプロセスの最後に必要なテストと同じです。

実装のテスト

FPGA開発は、従来のソフトウェア開発の取り組みを悩ませているあらゆる種類のバグの影響を受けやすくなっています。 FPGAの開発中に、誤った構文、現在アクセスできないリソースの使用の試み、およびその他の多くの種類の違反に関連する多くのエラーメッセージが表示される可能性があります。他のプログラミング作業と同様に、各エラーの原因を特定して問題を修正する必要があります。

FPGAアプリケーションがすべての段階を経てビットストリーム生成に成功した後でも、デザインが意図したとおりに動作するという保証はありません。妥当なスケジュールで設計を成功させるには、開発の各段階で適切なテストを実行することが絶対に重要です。

テストの最初のフェーズでは、HDLコードの動作を徹底的に実行して、意図したとおりに機能することを実証する必要があります。この章の最後にあるサンプルプロジェクトでは、Vivadoツールスイートを使用して、デザイン内のHDLロジックの徹底的なテストを実行する方法を示します。

ビットストリームが生成された後は、最終的なシステム構成で実装されたFPGAの包括的なテストに代わるものはありません。このテストでは、範囲外やエラー状態への応答を含め、FPGAのすべての機能とモードを徹底的に実行する必要があります。

設計、開発、およびテストプロセスの各ステップで、プロジェクト担当者は、ありそうもない、またはまれな状況で不適切な動作を起こしやすいシステム機能を実装する可能性に常に注意を払う必要があります。この種の問題の発生は、複製が非常に困難であり、組み込みシステムの設計とそれを作成した組織の認識を永久に損なう可能性のあるバグを表す可能性があります。優れたテストを行うと、この結果が生じる可能性は大幅に低下します。

次のセクションでは、ArtyA7開発ボードとザイリンクスVivadoツールスイートを使用した単純なFPGAプロジェクトの開発、テスト、および実装の手順について詳しく説明します。

PacktPublishingの許可を得て転載。 Copyright©2021Packt Publishing


> ジム・レディン Ledin Engineering、Inc。のCEOです。Jimは、組み込みソフトウェアおよびハードウェアの設計、開発、およびテストの専門家です。彼はまた、組み込みシステムのサイバーセキュリティ評価と侵入テストでも活躍しています。彼は理学士号を持っていますアイオワ州立大学で航空宇宙工学の学位を取得し、M.S。ジョージア工科大学で電気およびコンピューター工学の学位を取得。ジムは、カリフォルニアで登録された専門の電気技師、Certified Information System Security Professional(CISSP)、Certified Ethical Hacker(CEH)、およびCertified Penetration Tester(CPT)です。
>

関連コンテンツ:

  • FPGAを使用した組み込み設計:ハードウェアリソース
  • FPGAを使用した組み込み設計:実装言語
  • オープンソースツールはFPGAプログラミングを簡素化するのに役立ちます
  • FPGAまたはASICでの浮動小数点アルゴリズムの実装
  • ディープラーニングにFPGAを活用する
  • ソフトウェアツールは、AIアプリケーション用にGPUコードをFPGAに移行します
  • FPGAはスバルEyesightビジョンベースADASのASICに取って代わります

Embeddedの詳細については、Embeddedの週刊メールニュースレターを購読してください。


埋め込み

  1. フェイルセーフ設計
  2. 組み込みシステムプログラミングとその言語とは
  3. チャットボットとは:設計プロセスとそのアーキテクチャ
  4. 組み込みシステム設計とは:設計プロセスのステップ
  5. 組み込みシステムとアプリケーションの基礎
  6. テスト駆動開発によるステートマシンの開発
  7. ADIは、組み込みシステム設計のあらゆる分野のテクノロジーを示しています
  8. Axiomtek:統合されたレイヤー2マネージドPoEスイッチを備えた組み込みシステム
  9. IBASE:オンボードAMD Ryzen Embedded V1000SoCを搭載したスリムなMini-ITXシステム
  10. MicroSys:NPX LS1028ACPUとIEEETSNを使用した組み込みエッジコンピューティング
  11. 添加物を含むすべて