25K LUTのGOWIN FPGAを搭載する格安ボード
Tang Primer 25K(Sipeed)が発売されました.
Tang Mega 138Kに続き,Sipeedは勢いがありまね(138Kはまともに動かないみたいだけど…).
138Kのチップを搭載する別なボードも,近々発売されるようです(138Kはまともに動かないみたいだけど…).
Primer 25Kについては,出たばかりなので まだ予断を許しませんが,今のところ特に不具合の報告もなさそうです.
Sipeedからは,幾つかのサンプルがGitHubに上がっています.
https://github.com/sipeed/TangPrimer-25K-example
- UART
- HDMI
- Litex(RISC-V)
- NES
- 7セグ
- HUB75E
- LCD
- LED
現時点で,確認できるサンプルは以上です.
今回は,この中のHUB75Eを使うので,上記リポジトリをクローンしておきます.
必要な機能はPmodで追加
周辺機能がてんこ盛りだった「Primer 20K+Dock」と異なり,「Primer 25K+Dock」はシンプルな構成となっており,そのぶん低価格です.
Primer 25KのDockには3つのPmodポートが付いており,各々のユーザが必要な機能を追加できるようになっています.
Primer 25Kの発売と同時に幾つかのPmod対応ボードが発売されており,今後SipeedはPmod製品を充実させていくのかもしれません.
64x64マトリクスLED HUB75Eに画像を表示(Show something on HUB75E)
Exampleのプロジェクトを使い,任意の画像をマトリクスLED(HUB75E)に表示してみます.
ハードウェア(Hardware)
Tang Primer 25K
当然のことながらFPGAボードが必要です.
HUB75E
Tang Primer 25Kに,Sipeedで販売されているHUB75Eを接続します.
AliexpressのSipeedストアで販売されているHUB75Eには,Pmod経由で接続できるように,専用基板と配線(通信線,5V電源線)が付属されています(2).
https://www.instagram.com/p/C0EQUEVvur4/?igshid=MjJiNWQxZDI5Yg%3D%3D&img_index=1
5V電源
HUB75Eには,64×64個のLEDが搭載されています.表示する内容(点灯内容)によりますが,MAXで1.8Aくらい流れるので,それなりの5V電源が必要です.
サンプル
故障していないことを祈りつつ,まずはリポジトリに含まれているビットストリームを使って動作確認します.
pmod_hub75e/impl/pnr/HUB75E.fs
をTang Primer 25Kに書き込むと,次のようにSipeedのロゴが表示されます.
任意の画像を表示させる
上記のプロジェクトは,HUB75Eの64×64個のLEDをダイナミック点灯させるものです.
表示する内容は予めメモリに格納されています.メモリとしては,GowinのIPである gowin_prom
を利用しています.
次に任意の画像を表示するため,サンプルのプロジェクトを改変しますが,まずは表示する画像を用意します.
変換
任意の画像を, gowin_prom
が読み込めるように変換します.
ここでは,画像 staba.bmp
を使います.
pmod_hub75E/readme.md
の中に,変換用のPythonスクリプトが書かれているので,これを適当なファイル名で保存します.
ここでは,translation.py
としました.
読み込む画像は,スクリプト内にベタ書きしてあるので,適宜スクリプト内の該当の箇所(読み込むファイル名)を編集しておきます.
そして,このPythonスクリプトを実行します.
$ python3 translation.py > data.hex
画像データが変換された, data.hex
というファイルができます.
HUB75Eのサンプル・プロジェクトを開く
Gowin EDAで, pmod_hub75e/HUB75E.gprj
プロジェクトを開きます.
IP Core Generator
pmod_hub75e/src/gowin_prom/gowin_prom.ipc
を開きます.
設定ダイアログが開くので,先ほど生成したファイルを指定します.
それ以外は,触る必要はありません.
src/gowin_prom/gowin_prom.v
が自動で生成されます.
次のような形で表示するデータが保持されています.
合成すると,ビットストリームが生成されます.
(エラーが出る場合,Configuration - Dual-Purpose Pin - Use CPU as regular IO の設定を確認する)
書き込み
あれ?特にHDLの話が出てこなかったぞ.
まぁ,何というか画像表示されちゃったし,致し方なし.
参考文献(References)
(1)Sipeed公式WiKi
https://wiki.sipeed.com/hardware/en/tang/tang-primer-25k/primer-25k.html
(2)Aliexpress, Sipeed, Tang Primer 25K
https://ja.aliexpress.com/item/1005006224593018.html?spm=a2g0o.store_pc_groupList.8148356.1.4df223b3sWV7pj&pdp_npi=4%40dis%21JPY%21%EF%BF%A5%201%2C202%21%EF%BF%A5%201%2C202%21%21%218.23%218.23%21%40211b88ef17021398990884289e8070%2112000036357545337%21sh%21JP%212054787332%21
(3)Tang Primer 25Kの写真
https://fpga.tokyo/20231126/primer25k