🕌

Tang nano 9Kを使いたい(1)

2024/04/17に公開

目的

Tang nano 9Kを使いこなせるようにチュートリアル的にことをやっていきたい.

前提

  • Tang nano 9Kをもっていること
  • Gowin FPGA Designerのインストールとライセンス取得が終わってること

手順

以下の手順で作業してきます

  1. プロジェクトの作成
  2. コードの作成
  3. 合成,制約,配置,ルート
  4. ボードに書き込み
    extra. ボードのフラッシュに書き込み

プロジェクトの作成

  1. GOWIN FPGA Designerを起動

  2. File>New...を選択

  3. FPGA Design Projectを押してOKを押す

  4. プロジェクト名と保存場所を指定(今回は"Lblink"としました)してNextを押す

  5. デバイスを選択(今回はTang nano 9KのGowin GW1NR-9というチップなので以下のような設定にすればok)

  6. Nextを押す

  7. 設定を確認し,大丈夫そうならFinishを押す

  8. するとこんな画面になる

コードの作成

  1. 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

  1. Project>Configurationを押し,Dual-Purpose Pinで"Use Done as regular IO"にチェック入れ,Apply押した後OKを押す.

合成,制約,配置,ルート

合成

  1. Designウィンドウ下のProcessを押してSynthesizeをダブルクリック

  2. 問題がなければConsoleウィンドウが以下のようにfinishって言ってくれます

制約

  1. ProcessウィンドウのFloorPlannerをダブルクリック,出てきたウィンドウのOKを押す

  2. するとこんな画面がでてくる
  3. Portsでpinを選択し,右クリックで"Edit Constraint"を押す.
  4. こんな感じの画面になる
  5. pinアサイン等をする(今回はこんなかんじ)

pin配置はここからダウンロードできる.

4,12,52pinは使わない.何かしらの出力のpin?になってるらしい(詳細はしらん.回路図みてくれ)

  1. おわったら,保存をして閉じる.

配置,ルート

  1. Processウィンドウの"Place&Route"をダブルクリック
  2. 問題がなければこんな感じになる

ボードにダウンロード

  1. ボード(Tang nano 9K)をPCに接続する
  2. Processウィンドウの"Programmer"をダブルクリック.こんな画面がでてくる. saveを押す
  3. OperationのところをダブルクリックしてDevice Configurationをする.今回はこんなかんじ.

  4. 書き込む.書き込みボタンはこれ.
  5. 書き込み中(今回は一瞬でおわった)
  6. 実機でみてみると,こんな感じでLEDがチカチカしてるのがわかる.

ボードのフラッシュに書き込みたいとき

以上で実機でためせたが,一回USB抜いてさすだけでは,LEDチカチカは維持されない.これはTang nano 9Kのボードに保存されてないからである.ボード上のメモリに保存する方法を以下で説明する.

  1. Gowin ProgrammerウィンドウでEdit>Configure Devieceをクリックすると以下のような"Device configuration"ウィンドウが出てくる

  2. Access Modeを""Emmbedded Flash Mode"にし,saveする.

  3. もう一回実行ボタン押すと,フラッシュの書き込みもしてくれる.

まとめ

今回はLチカをやった.プログラム変えたり,いろいろすれば,電子工作の幅が広がるなとおもった.

ほかの記事

参考文献

[1]Swiki Light LED (閲覧日2024/04/17)

https://wiki.sipeed.com/hardware/en/tang/Tang-Nano-9K/examples/led.html

[2][tang nano 9k その1] 公式チュートリアルにLチカさせてもらった @haihuiliyuyuan (閲覧日2024/04/17)

https://qiita.com/haihuiliyuyuan/items/b6c89b5295411b5ed70d

[3] Verilog-HDL入門(閲覧日2024/04/17)

https://openit.kek.jp/training/2019/fpga/introduction-to-veriloghdl.pdf

Discussion