Tang Primer 25K(Sipeed)はFPGAチップとしてAroraシリーズのGW5A(GOWIN)を搭載しています(1).
FPGAチップと電源IC,Flash ROMはSoMに搭載されています.このSoMを利用するメインボードを自作するための情報を記します.
具体的には,自作したボードを使ってLEDの点滅を行います.
次にモータを回すためのボードも作ります.
コンフィグレーション -Configuration-
GW5Aで使えるコンフィグレーションの種類
GW5Aのコンフィグレーション方法として,
- MSPI(Master SPI)
- SSPI(Slave SPI)
- Master Serial
- Slave Serial
- Master CPU
- Slave CPU
- JTAG
などが用意されています.
Tang Primer 25Kに搭載されている GW5A-MG121N は,MSPIとJTAGに対応しています.
<GW5A シリーズ FPGA 製品回路図 ユーザーガイド
UG987-1.1.2J, 2024-03-13, P12>
コンフィグレーションモードはMODEピンで設定する
どのコンフィグレーション方法を使うかは,MODEピンの設定で切り替えられます.
回路規模が小さめのデバイスは,MODE[1:0]
で設定します.(MG121Nはこちら)
回路規模が大きめのデバイスは,MODE[2:0]
で設定します.
JTAGでコンフィグレーションする場合は,MODEの設定は無視されます.
<GW5A シリーズ FPGA 製品回路図 ユーザーガイド
UG987-1.1.2J, 2024-03-13, P12>
Tang Primer 25Kの場合
Tang Primer 25Kに搭載されている GW5A-LV25MG121 は,JTAGによるコンフィグレーションのみに対応しています.
下記のドキュメントが間違っておりました.JTAGとMSPIに対応しているようです.
Tang Primer 25KではSoMにしろDockにしろボード上には,MODEピンは引き出されていません.チップ内部で結線されており,2'b01の固定値になっているので,デフォルトでMSPIモードで起動します.
<GW5A シリーズ FPGA 製品回路図 ユーザーガイド
UG987-1.1.2J, 2024-03-13, P26>
基板製作 -How to make a board-
SoMには60ピンのコネクタ DF40C-60DP-04V(51) が2つ搭載されています(3).このコネクタと対になるレセプタクルは,DF40C-60DS-0.4V(51) です.
SoM側がプラグ,Dock側がソケットです.
筆者は,SoMのほぼ全ピンを引き出す基板を作って,LED点滅で動作を確認しました.
コンフィグ方法1:MSPI -Master SPI-
配線 -Wiring-
SoMに搭載されたフラッシュ・メモリからビットストリームを読み込んでコンフィグレーションする方法です.
Tang Primer 25K(Sipeed)のSchematicsによると,コンフィグレーションに関係するバンク4/5/10は,SoM内でVDD_3V3に接続されており,各バンクへ電源が供給されている.従って,次のピンだけ接続すれば,コンフィグレーションを含め一連の動作を確認できる.
<Tang_Primer_25K_52300_Schematic.pdf(3)>
SoM(GW5A) | 接続先 | 説明 |
---|---|---|
D8_RECONFIG | 5.1k -> VDD_3V3 | PullUP |
E8_READY | 5.1k -> VDD_3V3 | PullUP |
D7_DONE | 5.1k -> VDD_3V3 | PullUP(プルアップしなくてもよいと思われ) |
VCCIO0/1 | VDD_3V3 | バンク0/1の電源 |
H5_IOT61A | LED Anode | 動作確認用LEDアノード |
GND | LED Kathode | 動作確認用LEDカソード |
<UG987-1.1.2J,P8>
手順 -procedure-
予めDockなど,SoMとは別なボードを使って,SoMのフラッシュメモリにコンフィグレーションデータを書き込んでおく(もしくは次のJTAG接続による方法を使ってフラッシュに書き込む).
電源を入れると,SoM上のフラッシュのデータでコンフィグレーションされる.
筆者は, H5
でLEDを点滅させるデザインを書き込んでおいた.
前述の通り,コンフィグレーション・モードは MODE1 になっているので,電源を入れると自動的にMSPI経由でコンフィグレーションされる(コンフィグレーション・データは,SoM上のフラッシュメモリから読み出される).
コンフィグ方法2:Configuration by using JTAG
AE-FT2232を使ってJTAG接続する.
配線 -Wiring-
SoM側(Tang Primer 25K) | FT2232側 |
---|---|
JTAG-TCK | AD0(5.1kでプルダウン) |
JTAG-TMS | AD3 |
JTAG-TDO | AD2 |
JTAG-TDI | AD1 |
<UG987-1.1.2J,P16>
手順 -procedure-
書き込みには openFPGALoader を使う.
Windowsでは,openFPGALoaderを使う場合,ドライバは WinUSB にする.
Zadigでドライバを入れ替える.
(Gowin Programmerを使う場合は,WinUSBでは動かないと思われる)
次のコマンドで,GW5Aが見えればOK.
$ openFPGALoader --detect
SRAMに書き込み -Write to SRAM-
ビットストリームのファイルが pmod_led.fs
であれば,次のようにすると書き込める.
$ openFPGALoader pmod_led.fs
フラッシュに書き込み -Write to flash memory-
openFPGALoaderに -f
オプションを付けると,ビットストリームをフラッシュ・メモリに書き込みます.
$ openFPGALoader -f pmod_led.fs
BLDCモータ制御用ボードの製作 -Make board for BLDC-
LED点滅に成功し,SoMを使えることが分かったので,元々作りたかったボードを作ってみます.
モータ制御用のゲートドライバICに信号を出すためのボードです.
ドライバ・ボード(ゲートドライバICが載っている)に重ねて使うボードを作るのですが,元々載っていたSTM32マイコンボードを換装する用途なので,自作するボードにはNUCLEO用のピンヘッダも搭載します.
他にも,5VのDC-DCコンバータや,A-Dコンバータ,スイッチ,CANトランシーバ・モジュール(WS2812B,RJ45付)を自作基板上に載せます.
コンフィグ
コンフィギュレーション動作をディレイできるように, Ready
ピンを引き出しておきました.ピンヘッダとジャンパ(黄)でプルアップするか,GND直結するかを選べるようにしておきました.
( GW5Aは, Ready
がHiになるまでコンフィグレーションが始まらない)
やってみた結果,基本的にはプルアップしておけば,特に起動シーケンスを気にしなくても正常にコンフィグレーションされるようです.条件によるかもしれませんが,試した範囲では,Ready
ピンをオープンにしておいても,コンフィグレーションされていました.
Windowsの場合,ドライバをFTDIUSBにしておけば,GOWIN EDAに付属するProgrammerからも書き込みできます.その場合はProgrammerの設定で,Through GAOの方を選びます.SRAM,Flashともに書き込みできました.
動作
そして,モータもバッチリ回りました.
回路図 -Schematics-
参考文献
(1)Sipeed Wiki Tang Primer 25K
https://wiki.sipeed.com/hardware/en/tang/tang-primer-25k/primer-25k.html
(2)FPGA.tokyo,写真館
https://fpga.tokyo/primer25k/
(3)Tang Primer 25K Schematic
https://dl.sipeed.com/shareURL/TANG/Primer_25K/02_Schematic
(4)物理図面
Tang_Primer_25K_52300_Dimension.pdf
(5)JLCPCB
https://jlcpcb.jp/capabilities/pcb-capabilities
(6)全体の構成
https://fpga.tokyo/bldc2/