Tang nano 9Kを使いたい(1)
目的
Tang nano 9Kを使いこなせるようにチュートリアル的にことをやっていきたい.
前提
- Tang nano 9Kをもっていること
- Gowin FPGA Designerのインストールとライセンス取得が終わってること
手順
以下の手順で作業してきます
- プロジェクトの作成
- コードの作成
- 合成,制約,配置,ルート
- ボードに書き込み
extra. ボードのフラッシュに書き込み
プロジェクトの作成
-
GOWIN FPGA Designerを起動
-
File>New...を選択
-
FPGA Design Projectを押してOKを押す
-
プロジェクト名と保存場所を指定(今回は"Lblink"としました)してNextを押す
-
デバイスを選択(今回はTang nano 9KのGowin GW1NR-9というチップなので以下のような設定にすればok)
-
Nextを押す
-
設定を確認し,大丈夫そうならFinishを押す
-
するとこんな画面になる
コードの作成
- File>New...からVerilog Fileを選択し,OKを押す
2.ファイル名を決めOKを押す.基本的に全角,日本語等は避け,アルファベットのみで.(今回は"lblink"にしました)
3. このようにDesignウィンドウに現れるので,.vのファイルをダブルクリックする.すると,右のウィンドウでコードがかけるようになる.
4. Verilogのコードを書く(今回はコードの説明は省略)
書き終わったら保存を忘れずに.(Ctrl+SかFile>Save ...)でできる.
module led (
input sys_clk, // clk input
input sys_rst_n, // reset input
output reg [5:0] led // 6 LEDS pin
);
reg [23:0] counter;
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
counter <= 24'd0;
else if (counter < 24'd1349_9999) // 0.5s delay
counter <= counter + 1'b1;
else
counter <= 24'd0;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
led <= 6'b111110;
else if (counter == 24'd1349_9999) // 0.5s delay
led[5:0] <= {led[4:0],led[5]};
else
led <= led;
end
endmodule
- Project>Configurationを押し,Dual-Purpose Pinで"Use Done as regular IO"にチェック入れ,Apply押した後OKを押す.
合成,制約,配置,ルート
合成
- Designウィンドウ下のProcessを押してSynthesizeをダブルクリック
- 問題がなければConsoleウィンドウが以下のようにfinishって言ってくれます
制約
- ProcessウィンドウのFloorPlannerをダブルクリック,出てきたウィンドウのOKを押す
- するとこんな画面がでてくる
- Portsでpinを選択し,右クリックで"Edit Constraint"を押す.
- こんな感じの画面になる
- pinアサイン等をする(今回はこんなかんじ)
pin配置はここからダウンロードできる.
4,12,52pinは使わない.何かしらの出力のpin?になってるらしい(詳細はしらん.回路図みてくれ)
- おわったら,保存をして閉じる.
配置,ルート
- Processウィンドウの"Place&Route"をダブルクリック
- 問題がなければこんな感じになる
ボードにダウンロード
- ボード(Tang nano 9K)をPCに接続する
- Processウィンドウの"Programmer"をダブルクリック.こんな画面がでてくる. saveを押す
- OperationのところをダブルクリックしてDevice Configurationをする.今回はこんなかんじ.
- 書き込む.書き込みボタンはこれ.
- 書き込み中(今回は一瞬でおわった)
- 実機でみてみると,こんな感じでLEDがチカチカしてるのがわかる.
ボードのフラッシュに書き込みたいとき
以上で実機でためせたが,一回USB抜いてさすだけでは,LEDチカチカは維持されない.これはTang nano 9Kのボードに保存されてないからである.ボード上のメモリに保存する方法を以下で説明する.
-
Gowin ProgrammerウィンドウでEdit>Configure Devieceをクリックすると以下のような"Device configuration"ウィンドウが出てくる
-
Access Modeを""Emmbedded Flash Mode"にし,saveする.
-
もう一回実行ボタン押すと,フラッシュの書き込みもしてくれる.
まとめ
今回はLチカをやった.プログラム変えたり,いろいろすれば,電子工作の幅が広がるなとおもった.
ほかの記事
参考文献
[1]Swiki Light LED (閲覧日2024/04/17)
[2][tang nano 9k その1] 公式チュートリアルにLチカさせてもらった @haihuiliyuyuan (閲覧日2024/04/17)
[3] Verilog-HDL入門(閲覧日2024/04/17)
Discussion