Tang Nano 4K 開発環境構築（Win10）

#はじめに
FPGAの評価環境が2000円ほどで、手に入ってしまうということでひそかに話題になっている。
深圳にある[矽速科技有限公司](https://www.sipeed.com/)（以下SiPEED）社で製造販売されている、「Tang Nano 4K」FPGAボードを入手したので早速動かしてみた。秋葉原の[Shigezone](https://www.shigezone.com/product/tangnano4kcam/)さんで税込\1,980で購入可能になっている。

#Tang Nano 4K 概要
![IMG_8999_M.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/45b639b6-4872-4b81-8b19-7c43d3e2ea0a.jpeg)

- GOWIN GW1NSR-LV4CQN48
- Arm Cortex-M3
- Camera If Input(Built in OV2640) & HDMI Video Output

#デモ動作
ボードに電源（USB Type-C 5V）を供給し、HDMIケーブルで適当なモニターに繋ぐとテストパターンのようなの数種類がサイクル表示されて停止する。

![IMG_9002_L.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/79ae6a7d-d73e-11cd-ec1c-728eb2619f2e.jpeg)

![IMG_9003_L.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/c49b1e2c-fab7-dd09-cffc-d9495e83a084.jpeg)

#開発環境構築
デモが動いたら、開発環境を構築してサンプルロジックを動かしてみる。
##１．EDAインストール
以下URLよりWin用をインストールする。
http://www.gowinsemi.com.cn/faq.aspx
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/b1649182-6ffd-24d0-c58c-b8715a3d7e9a.png)
※今回は確認時点（2021/10/24）での最新版（V1.9.8）を使用した

結論だけ先に書くと、EDA（V1.9.8）に於いてSRAMからの起動は行えるが、フラッシュへの書き込みに失敗する。
フラッシュに書き込むためには、面倒だがEDA（V.1.9.3.02）に含まれるProgrammerを使用する必要がある。
合成や配置配線は問題なくEDA（V1.9.8）でも実行可能。ただたんに書き込みだけに失敗する。
旧バージョン以下URL（ユーザー登録が必要）
https://cdn.gowinsemi.com.cn/Gowin_V1.9.3.02Beta_win.zip


インストールは画面の手順に従って進める。インストール途中でオンボードダウンローダー（FPGA書き込み）用のドライバのインストールの確認を要求されるので、チェックを入れる。

##２．ライセンス設定
ソフトを起動し論理合成するためには、Synopsysのライセンスが必要になる。設定方法は2種類が提供されている。

1. Stand-Alone
2. SiPEEDライセンスサーバー（Network activation）

1.はPCのMACアドレスを連絡してライセンスファイルを取得する。今回は、簡単な2.の方法で設定した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/814d4ac7-eb42-7f34-9f3b-cad7f6bfac01.png)

初回起動時にLicense Configuration画面が表示される。
`Use loating License Server`を選択し、画像の通りアドレスとポート番号を入力する。`Test Connection`ボタンをクリックしてSuccessと表示されれば認証完了となる。`Save`ボタンをクリックして認証画面を終了する。

##３．EDA起動
正常に認証されていればStart Pageが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/1d561ced-fb47-6c2a-bf37-539db9b61c31.png)

##４．サンプルプロジェクトの読み込み
サンプルプロジェクトはSiPEEDのGitHubより入手可能。
https://github.com/sipeed/TangNano-4K-example

- led_test/project
- dk_video/project

Lチカ（ボード内臓）とカメラテストの2種類が準備されている。
ひとまずカメラテストを読み込んでみる。
`File`→`Open`より\dk_video\projectにある"dk_video.gprj"を開く。
正常に読み込まれるとDesign Summaryが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/1b671df3-d64f-3c5f-4ce0-991955d2c54b.png)
サンプルプロジェクトには "デザイン(Verilog)ファイル" と "制約(Constraint)ファイル"が含まれる。

##５．論理合成
左下のペインにある`Process`をクリックして、Synthesizeの右クリックメニューで`Rerun All`をクリックする。しばらくして緑色の☑がつけば正常終了している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/6c3402b1-621c-153a-a05c-73db7d2cdb0d.png)
エラーがある場合、下ペインのConsoleに表示される。

##６．配置配線
５．同様に`Place&Route`の右クリックメニューで`Rerun All`をクリックする。しばらくして緑色の☑がつけば正常終了している。
エラーがある場合、下ペインのConsoleに表示される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/62286d96-ec24-5a30-d4b8-a968c807eba1.png)

__フラッシュに書き込むためにはEDA（V.1.9.3.02）に含まれるProgrammer使用する必要がある__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/bab01233-119a-d62e-ef37-7b578136c905.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/cd051ae0-a273-bbca-9541-fb2f7cb4f8c3.png)
書き込みが正常に終了すると以下のように出力される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513159/9c7dc9ed-7489-0715-7d56-ef9c576b7872.png)

##７．動作確認
起動すると元々のテストパターンと同じようなものを表示し、カメラ入力をHDMIに白黒表示します。

##８．最後に
カメラテストがなんでカラーじゃないのとか思ってしまいましたが、自分で調べていろいろ改良してくれという感じなんでしょう。すべてオンボードで出来るし、これだけのロープライスですごいことになってると思います。