はじめに
FPGAの書き込みにはFPGAベンダー製の書き込み用のダウンロードケーブルが必要ですが、お値段が高いのが悩みどころです。書き込みだけであれば市販のJTAGケーブルが利用可能です。書籍(FPGA電子工作スーパーキット)に付属しいるMAX10-FBとFT232HLモジュールを題材に書き込み手順を紹介します。
★★★セミナー情報★★★<広告>
〇手ぶらでOK!実習・Raspberry Pi PicoW×MicroPython I/Oデバイス「時短」開発入門
-- 133MHz ARM Cortex-M0マイコンをPythonでプログラミング
2024年12月6日(金) CQ出版社セミナルーム
1-1.使用する機材
FPGAボード MAX10-FB 書籍 :FPGA電子工作スーパーキットの付属品
書籍にはダウンロードケーブル互換基板(部品無し)が付属します。
これを使ってもFPGAの書き込みができます。
注意!! このページ方法でJTAGケーブルを使ってMAX10-FBに書き込みをすると
出荷時に書き込まれている回路(PICへのダウンロードケーブル互換プログラム書き込み)が
消去されます。ダウンロードケーブル互換基板の使用予定のある方はご注意ください。
JTAGケーブル FT232HLモージュール 購入先:秋月電子通商
USB-シリアル変換モジュールですがJTAGも使えます。普段はUSB-シリアル変換機として使えるので
1個持っていると重宝します。値段は1200円です。
1-2.使用するツール
Quartus Prime Lite Edition (18.0を使用)
FPGAの回路設計に使います。インテル社のサイトからダウンロードできます。
インストール、使用方法はインテル社の情報を参考してください。
UrJTAG フリーソフト
JTAGの制御ソフトです。フラッシュROMの書き込み機能を使ってMAX10へ書き込みします。
1-3.UrJTAGのインストール
Windows10でUrJTAGのインストール方法を紹介します。
https://sourceforge.net/projects/urjtag/files/urjtag/で"Download Latest Version"をクックして
インストールデータをダウンロードします。管理者権限でインストールデータを実行するとインストールが開始します。
次にUrJTAGの実行に必要なlibusb0.dllを追加します。https://sourceforge.net/projects/libusb-win32/でDownloadをクリックしてダウンロードしたデータを解凍します。解凍データのbin/x86/libusb0_x86.dllをUrJTAGのインストールファルダにコピーしてファイル名をlibusb0.dllに変更します。
1-4.BSDLファイルの入手
UrJTAGのインストール時にはMAX10の情報がありません。MAX10-FBで使用しているデバイス:M08SAE144のBSDLファイルをインテル社のサイトから入手します。
入手した10M08SAE144.bsdを任意のフォルダへ保存します。
2-1.FT232HLモジュールとMAX10-FBの接続
右の図のようにFT232HLモジュールとMAX10-FBを接続します。MAX10-FBの3.3v電源はFT232HLから供給します。電源に余裕がないので、初めからFT232HLの3.3V電源(3V3)とMAX10-FBの3.3V電源を接続するとFT232HLが起動しません。FT232HLにUSBを接続後にMAX10-FBの3.3V電源を接続してください。3.3Vの外部電源が用意できれば、MAX10-FBには外部電源を接続することをお勧めします。
2-2.UrJTAGの起動
画面の左下のWindowsのスタートアイコンを押してUaJTAGのJTAG Shellをクリックして起動します。
2-3 JTAGケーブル指定と解析
起動したJTAG Shellでケーブルをcableコマンドで指定します。
jtag> cable ft2232
FR232HLはFT2232と互換なのでft2232を指定。次にdetectコマンドでJTAGチェーンを解析します。
jtag> detect
デバイスが見つかってaltera製と表示されますが未知のパーツとなっています。
2-4.10M08SAE144のデバイス情報の追加
MAX10-FBに搭載されている10M08SAE144の情報をUrJTAGへ追加します。bsdlコマンドで1-4でダウンロードしたbsdlファイル(10M8SAE144.bsd)を解析します。
jtag> bsdl dump [パス]10M8SAE144.bsd
表示された内容をマウス操作で”signal GND(1)”から最後の行までの表示をコピーしてメモ帳等にペーストします.
情報を追加するためUrJTAGはquitコマンドを実行して終了します。
jtag> quit
UrJTAGのインストールファルダ/data/alteraの下にファルダ:10m08sae144を作成してメモ帳の内容を10M08SAE144のファイル名でセーブします.
2-5.他の設定ファイルの作成
あと二つの設定ファイルを作成します。一つ目はdata/altera/PARTSです。10M08SAE144の情報を追加します。必要な情報は16-bit Part NumberでBSDLファイル(10M8SAE144.bsd)から探します。以下が該当部分の抜粋です。
--10M8SAE144.bsdの抜粋
attribute IDCODE_REGISTER of MAX_10_10M08SAE144 : entity is
"0000"& --4-bit Version
"0011000110000010"& --16-bit Part Number
"00001101110"& --11-bit Manufacturer's Identity
"1"; --Mandatory LSB
16-bit Part Numberは"0011000110000010"となっています.PARTSの最後の行に 10M08SAE144の情報を以下のように追加します。
--PARTSの内容
# bits 27-12 of the Device Identification Register
0010000010000010 ep1c6q240 EP1C6Q240
0010000010000011 ep1c12 EP1C12
0010000010000100 ep1c20f400 EP1C20F400
0111000100101000 epm7128aetc100 EPM7128AETC100
0111000001100100 epm3064a EPM3064A
0010000010110010 ep2c8 EP2C8
0011000110000010 10m08sae144 10M08SAE144 #この行を追加
二つめのファイルはSTEPPINGSファイルです。UrJTAGインストールファルダ/data/altera/10m08sae144にSTEPPINGSファイルを追加します.内容は以下になります。
--STEPPINGSの内容
0000 10m08sae144 0
設定ファイルの追加は以上です。
2-6.detectの再実行
UrJTAGを起動して再度cable,detectコマンドを実行します。
jtag> cable ft2232
Couldn't connect to suitable USB device.
Error: Cable connection failed!
jtag> cable ft2232
Connected to libftd2xx driver.
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000011000110000010000011011101 (0x00000000031820DD)
Manufacturer: Altera
Part(0): 10M08SAE144
Stepping: 0
Filename: c:\program files (x86)\urjtag\data/altera/10m08sae144/10m08sae144
こんどはパーツが10M08SAE144と認識されます。
3-1.svfの作成
JTAGケーブルとUrJTAGで書き込むファイルはsvfファイルになります。Quartusのプログラマを使って回路情報の入ったsofファイルをsvfファイルに変換します。
予めQuartusで書き込む回路を設計しておきます。設計プロジェクトが開いてる状態でプログラマを起動します。書き込むsofファイルが選択されていることを確認して、
File→Create JAM,JBC,SVF or ISC File ...を選択します。
開いたウィンドでFile naneは任意に指定,
File formatは Serial Vector Format(msvf)を選択してOKをクリックする。設計プロジェクトのファルダにsvfファイルが作成される。
3-2.svfファイルの書き込み
UrJTAGからsvfコマンドでMAX10へ書き込みを実行します。
svfの後にパスも含めたsvfファイル名を指定します。
jtag> svf c:\svf\max10_fb_led.svf stop progress
Warning svf: unimplemented mode 'ABSENT' for TRST
Parsing 1460/1467 ( 99%)
Scanned device output matched expected TDO values.
jtag>
書き込みには多少時間が掛かり、書き込み中にエラーが発生した場合はエラーメッセージの表示されます。
エラーメッセージがなく、"jtag>"プロンプトが表示されれば書き込みに成功です。
★★★セミナー情報★★★<広告>
〇手ぶらでOK!実習・Raspberry Pi PicoW×MicroPython I/Oデバイス「時短」開発入門
-- 133MHz ARM Cortex-M0マイコンをPythonでプログラミング
2024年12月6日(金) CQ出版社セミナルーム