0

Xilinx FPGA入門 回路データ・バイナリを転送


ターゲットFPGAボード Basys 3に回路を実装

FPGAへの回路データ書き込み

図1 FPGAのバイナリ・データはSRAMにロードされるため,電源OFFとともに消失する.解決するためには,外部フラッシュ・メモリを使用してバイナリを保存し,電源投入時に自動的にロードする.画像クリックで動画を見る.または記事を読む.[提供・著]森岡 澄夫
詳細[VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門

FPGAのプログラムは,回路データをバイナリ・ファイルに変換し,ターゲットボードに転送することで実行されます.Xilinx製のFPGAを使用する場合,以下の手順でバイナリを書き込みます.

  1. ボードのJ4にmicro USBケーブルを挿し,PCと接続.
  2. J2はUSB側にジャンパを挿し,USB給電を有効にする.
  3. 電源スイッチを入れる.
  4. VivadoのOpen Hardware Managerを開く.
  5. Open targetをクリックし,Auto Connectを選択.
  6. FPGAデバイスが認識されたら,Program deviceをクリック.
  7. .bitファイルの場所を指定し,Programを実行.

この方法でバイナリを転送すれば,FPGA内部のSRAMにデータが書き込まれ,動作を開始します.しかし,電源を切るとこのデータは消えてしまいます.

電源を切ってもバイナリを保持する方法

FPGAのSRAMに書き込まれたバイナリは,電源がオフになると失われます.回避するには,バイナリを外部フラッシュ・メモリに書き込みます.

  1. .bitファイルに加えて,.binファイルを生成する設定を行う.
  2. VivadoのOpen Implemented Designを開き,Generate Bitstreamを右クリック.
  3. BitStream Settingsを選択し,-bin_fileオプションを有効にする.
  4. 青字のConfigure additional bitstream settingsをクリックし,Enable Bitstream CompressionをTRUEに設定.
  5. ConfigurationのSPI ConfigurationでBus widthを4に設定.

この設定を適用すると,フラッシュ・メモリに書き込むための.binファイルが生成されます.

フラッシュ・メモリへのバイナリ転送

フラッシュ・メモリにバイナリを保存すれば,電源を入れたときに自動的にFPGAへ転送されます.

  1. Generate Bitstreamをクリックし,.binファイルを作成.
  2. ボードをPCに接続し,Open Target → Add Configuration Memory Deviceを選択.
  3. 使用するボードに応じたメモリデバイス(例:Macronix製 mx25l3233f-spi-x1_x2_x4)を選択.
  4. Spansion製のメモリを使用する場合は,s25fl032p-spi-x1_x2_x4を選択.
  5. Program Configuration Memory Deviceを選択し,.binファイルの場所を指定して書き込む.

これで,電源を入れ直してもFPGAが自動的にバイナリをロードし,動作を開始します.

キーワード

FPGAは,内部に論理回路を実装するための再構成可能なデバイスであり,設定情報(バイナリ・データ)は通常SRAMに保存される.

FPGAのSRAMコンフィグレーションの特徴

FPGAはSRAM型のコンフィグレーション・メモリをもち,電源を切ると内容が消えてしまう.そのため,通常のマイクロコントローラのフラッシュ・メモリとは異なり,起動時に外部メモリやPCから設定データをロードする必要がある.

フラッシュ・メモリを使用した永続的なコンフィグレーション

FPGAの設定を保持するためには,外部フラッシュ・メモリにバイナリを書き込み,電源投入時に自動的に読み込むようにする.この方法を採用すると,PCとの接続が不要になり,独立した組み込みシステムとして利用できる.

SPIフラッシュとコンフィグレーション設定

FPGAは,SPIフラッシュ・メモリを使用してコンフィグレーションを保持することができる.バス幅(Bus width)を4に設定することで,より高速なデータ転送が可能になり,起動時間を短縮できます.〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • NTT,IBM,Sony,NECの各研究所において高性能回路IPやハイレベル・シンセシスの研究,およびプレイステーションなどの製品用SoC開発に従事した後,現職にて民間宇宙ロケットの飛行制御コンピュータの研究開発に従事.FPGAや高位合成を活用している

著書

  1. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編】,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Tiny FPGA実習!高校生から始めるHDLプログラミング,ZEPエンジニアリング株式会社.
  6. [VOD/Pi KIT]カメラ×ラズパイで一緒に!初めての画像処理プログラミング,ZEPエンジニアリング株式会社.
  7. スパコンでも破れない!高セキュリティ・マイコン・プログラミング,ZEPエンジニアリング株式会社.
  8. [YouTube]宇宙軌道ロケット 成功の方程式
  9. [YouTube]宇宙ロケットの電子回路開発
  10. FPGA/Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  11. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  12. USBカメラの動画キャプチャ&描画用 Pythonプログラム,ZEPエンジニアリング株式会社.
  13. ライブラリ完備!組立式ラズパイI/O増設ボード MCC DAQ HATSファミリ誕生,ZEPエンジニアリング株式会社.

参考文献

  1. [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.