Column

エクスプローラ通信

通信・画像・音声処理技術についての
お役立ち情報をお届けしています。

EFINIX

FPGAプログラムの書き込み

はじめに

フラッシュへビットストリームを書き込む方法がいくつかあります。
ここでは特にEfinixの推奨である "SPI Active using JTAG Bridge" について紹介したいと思います。

  • SPI Active
    • SPIインタフェースを利用してボード上のSPIフラッシュへ直接書き込みます
    • .hexのビットストリームを利用します
    • 書き込みにはプログラミングケーブルが必要です
  • SPI Active using JTAG Bridge
    • JTAGインタフェースを利用してボード上のSPIフラッシュへFPGAを介して書き込みます
    • .hex  .bit のビットストリームを利用します
    • 書き込みにはJTAGに加え、FPGAはJTAGでSPIを操作するIPコアを利用する必要があります

FLASH_01.jpg

SPI Active using JTAG Bridge

このモードはJTAGがFPGAを介してコマンドを送信、SPIフラッシュへ書き込みを行います。
"SPI Active"に比べると、SPIヘッダを使わないためボードのスペースを省略できるメリットがありますが、書き込み手順が2ステップとやや複雑です。

  1. JTAGを使い".bit"のビットストリームをコンフィグ
    • ビットストリームは JTAG SPI Flash Loader のIPが入ったもの
    • IPはJTAG-SPIのブリッジ機能、コンフィグしてFPGAでブリッジ機能が動作する状態にする
  2. JTAGからFPGAへ".hex"を転送、FPGAはSPIインタフェースを操作して書き込み
    • ビットストリームはユーザーデザインで、フラッシュへ書き込みたいイメージ
  3. 以上で書き込み完了、後は再起動またはリコンフィグでフラッシュから読み込んで起動

FLASH_02.jpg

書き込み手順(Efinity Programmer)

  1. ボードとJTAGを接続
  2. ボードの電源を入れる
  3. Efinity Programmerを起動
  4. 書き込み設定を行い"Start Program"で書き込み
    • Programming Mode を "SPI Active using JTAG Bridge" に設定
  5. 以上で書き込みは終了です

FLASH_03.jpg

書き込み手順(コマンドライン)

  1. ボードとJTAGを接続
  2. ボードの電源を入れる
  3. コマンドプロンプトを起動して、Efinityの環境変数を読み込み
  4. JTAGで .bit をコンフィグ
  5. JTAGからSPIフラッシュへ .hex を書き込み

set MY_BITSTREAM="C:\Efinity\2022.1\project\tutorial\T20EvalBoard\outflow\counter.hex"
set JTAG_BITSTREAM="C:\Efinity\2022.2\project\work\t20flashloader\outflow\t20flashloader.bit"
cd C:\Efinity\2022.2
.\bin\setup.bat
%EFINITY_HOME%\bin\python3 %EFINITY_HOME%\pgm\bin\efx_pgm\ftdi_program.py %JTAG_BITSTREAM% -m jtag
%EFINITY_HOME%\bin\python3 %EFINITY_HOME%\pgm\bin\efx_pgm\ftdi_program.py %MY_BITSTREAM% -m jtag_bridge


書き込み速度の目安

T20BGA256開発キットで、各モードの書き込み速度を確認しました。

モード 合計時間(s)
SPI Active 54
SPI Active (quicker erase/write) 7
JTAG Bridge (JTAG Clock 6MHz) 38
JTAG Bridge (JTAG Clock 15Mhz) 35

お問い合わせ

Efinix製品に関するお問い合わせはこちらまで
https://www.explorer-inc.co.jp/contact/efinixcontact.html
デバイスのご購入や開発についてのご相談なども受け付けています。

ご質問・ご相談などは
こちらから
お問い合わせください。