3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tang Mega 138K Dock (2) プロジェクト作成からLチカまで

3
Last updated at Posted at 2025-11-17

この記事は

初めてのGOWIN、とりあえず動かしてLチカさせたい!
ツールやボードを1回舐めてフロー確認しておきたい!

開発環境

2025年11月時点での最新、GOWIN FPGA Designer Version 1.9.12をインストールしました。

レッツLチカ!

プロジェクト作成

早速プロジェクトを作成していきます。
File > New... > FPGA Design Project
SOMの回路図を見ると「GW5AST-138K-PG484」とありました。この型番だとスピードグレードが分かりません。
GOWINはFPGAレーザーマーキング3行目の5番目がデバイスバージョンだとか。
ヒートシンク取らないとダメか…取った画像がこちら
image.png

見づらいですが、以下のような刻印がされていました。私のデバイスはバージョンBということです。
2025年7月以降はバージョンCになっているとのこと。購入時の見分けは困難でしょうから、SSRAMを使いたい人はなるべく新しいものを買いましょう。

刻印
GW5AST-LV138PG484AC1/I0
2402BA0N
TNMU32.05

image.png

ここ間違えると合成したものが動かないってことになるので面倒ですがちゃんと自分のボードを調べたほうが安心です。

Lチカ実装

RTLは書ける前提で…

module led_blink (
    input wire CLK,
    output wire[7:0] LED
);

    reg [29:0] r_count;

    always @(posedge CLK) begin
        r_count <= r_count + 1'b1;
    end

    assign LED = r_count[29:22];

endmodule

回路合成(Synthesize)

クロックでカウンタぶん回す。まずはこれです。
適当に30bitのカウンタを書きます。
image.png

2進数は10bitで1024です。10bitのカウンタは約1/1000分周ともいえます。
100MHzのクロックでカウンタをぶん回したら10bitで100kHzということになります。
20bitなら100Hz、30bitなら0.1Hz。周期10秒。今回LEDが8個ですから、20bit台をLEDに割り付ければ目に見える速度でチカチカする筈です。

Project > Configurationでトップモジュールも設定。
言語指定はVerilog2001かSystemVerilog2017にします。

image.png

できたら合成確認。
image.png

回路図を確認

カウンタ書いてLチカ、これで合成やJTAG書き込みのフローをまずは確認していきたいと思います。

PMOD用のLEDが同梱されていたので、こちらを使いましょう。オンボードLEDはマイコン内蔵フルカラーで動かすまでがすこし面倒です。

LED基板刺した図。逆刺ししないようにしてくださいね。
左上はPMOD0と裏面シルクにあります。
image.pngimage.png
image.png

SOM側の回路図を追わなくてもよいように、コメントに情報がありますね。

PMOD端子 Dock回路図コメント FPGA端子
PMOD0_IO0 BANK4_P19_IOB99A P19
PMOD0_IO1 BANK4_R19_IOB99B R19
PMOD0_IO2 BANK4_T21_IOB97A T21
PMOD0_IO3 BANK4_U21_IOB97B U21
PMOD0_IO4 BANK4_R17_IOB144B R17
PMOD0_IO5 BANK4_P16_IOB144A P16
PMOD0_IO6 BANK4_R18_IOB138A R18
PMOD0_IO7 BANK4_T18_IOB138B T18

クロック回りも確認。
image.png

SOM上に50MHzが乗っていて、V22ピンに繋がっているようだ。
image.png

SOMのLED、電源・ConfigDone・Readyか。なるほど。

ピンアサイン

設定ファイル(.cst)に手書きしてもいいですが、FloorPlannerでGUI設定してもよい。今回はGUIで設定しました。下のタブで「I/O Constraints」を選びLocationを入力しましょう。
image.png

配置配線(Place&Route)

Verilogも合成できたし、ピン指定もしたので配置配線だ!
image.png

っと・・・LED[3:0]がエラーですね。
専用端子(CPU/SSPI用)を使っているので怒られている。
SSPI=SlaveSPI、138KにはRISC-Vが搭載されていてそのペリフェラルが使うんだろう。

AMD/XilinxのZynq系とかだと、CPU(PS部)が使う端子(MIOxx)はFPGA(PL部)からはそもそも使えなかったりするんだけど、GOWINは行けるのね。

image.png
ConfigurationのP&RにDual-Purpose Pinとある。使い方を選べるピンだ。
「Use SSPI as regular IO」を有効にすれば、SSPIじゃなくて通常のIO、つまりFPGA側が使えるはず。
やってみたら、ダメだった。「Use CPU as regular IO」も有効にする必要があった。

2つを有効に(CPU、SSPIを使わない設定に)して配置配線したらエラーは消えた。
image.png
Warningは出ているけど、ひとまず置いておく。

レポート確認

Timing Analysis Reportは見ておかないと。
image.png
制約書いてないと100MHzになるのね。(回路図的には50MHzだからまあいいか感)
fMAXは357MHzだから、余裕です。てか結構早いな。

制約はGUIかテキスト(.sdc)か。今回はあえてGUIで。
Tools > Timing Constraints Editorを起動。
image.png

EMCCLK_50Mという名前で50MHzを指定。
image.png

.sdcに書くときは以下になる。

create_clock -name EMCCLK_50M -period 20 -waveform {0 10} [get_ports {CLK}]

再度配置配線してみると、変更が反映された。
image.png
Constraint(制約)が100MHzから50MHzに更新されている。制約が変わっただけで、別に性能(最大で357MHzで動く回路)が変わったわけではないので他は変わらず。

FPGA書き込み

Tang Mega 138K Dock基板、右上にUSB Type-Cが居てそこにケーブルを指すとバッテリー表示LEDが光ります。具体的には左3つが点灯、右1つが点滅。これ実はFPGAに電源入ってない状態なんです。

FPGAの電源入れるには、HDMIとPMOD1の間にあるPWRボタンを長押ししてください。
電源が入るとSOMのLEDが3つとも点灯します。

この状態で、FPGA DesignerからProgrammerを起動します。
Edit > Cable Setting > USBCable Settingでボードとの接続を確認です。
image.png

認識しない場合は以下を確認してみてください。

  • ボードの電源が入っている(バッテリーLEDが点灯・点滅)
  • PWR長押しでFPGAの電源が入っている(SOMのLED3つが点灯)
  • USBドライバ等が適切にインストールされている
  • 右上にUSBケーブルを指している
  • USBケーブルは付属のものを使用している。(100均で売ってるような充電専用ケーブルなどではない)

ツールバーの書き込みボタン(▶)を押すと書き込みが実施されました。
image.png

Info:	Target Cable: USB Debugger A/0/78353/null@2.5MHz
Info:	Target Device: GW5AST-138B(0x0001081B)
Info:	Operation "SRAM Program" for device#1...
Info:	Frequency Updated: "15MHz"
Info:	User Code is: 0x0000FAC2
Info:	Status Code is: 0x00006020
Info:	Finished.
Info:	Cost 19.65 second(s)

15MHzで書き込みに20秒かかりました。
無事、Lチカできました。
ezgif-217d0bf80501a377.gif

さて、今回は「SRAM Program」だったので電源を切ると消えてしまいます。
PWR長押ししてOFF-ONすると消えていることが分かると思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?