【和訳】RUNBER Development Board / Hardware Instructions


#【本稿の目的】
Interface 2021年12月号の付録として「USB接続でサッ！GOWIN FPGA登場　5000円ボードで始めるFPGA開発」という別冊付録がついており、FPGAを「Gowin RUNBER Development Board」という評価ボードを使ってFPGAを体験してみるといった内容になっています。

>**Interface 2021年12月号**
>https://interface.cqpub.co.jp/magazine/202112/

ただ、上述評価ボードを使ったサンプルコードは載っていますが、詳しくハードウェアについては記載がなく、応用的なチャレンジをするためには自分でUMを読む必要があります。もちろんのこと中華製のため和訳版がない状態でしたので、可能な範囲で和訳した内容を本稿で共有したいと思います。
**ただ英語が得意だから和訳しているという訳では全然ないので、参照される際は自己責任でお願いします。変なところあればご指摘頂けると幸いです。意訳多いので意図からズレてなければ、良いかなという温度感で書いています。**

なお、ハードウェア編を今回和訳していますが、ソフトウェア編や回路図は以下ページにて別紙で公開されていましたので、必要に応じて参照ください。
https://www.seeedstudio.com/Gowin-RUNBER-Development-Board-p-4779.html

>**【UM原文】**
>https://files.seeedstudio.com/products/114992325/RUNBER_Development_Board_Hardware_Instructions_en.pdf

対象Version
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/0dc196f2-88af-4241-e06f-0cea14cbc662.png)
#【訳文】
## 1. 本評価ボードについて
### 1.1 概要
RUNBER評価ボードはMYMINIEYEが開発した新しいFPGA開発スイートであり、GOWIN GW1N-UV4LQ144が評価可能です。
GW1N-4BはGOWIN LittleBeeファミリのFPGA製品です。

本開発システムは回路図のオープンソースやプロジェクトで直接使用できる大量のソースコードを提供します。
ソースコードについてはコースリストを参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/e01fcabb-5cf5-d720-7546-ed73069d9962.png)

### 1.2 開発システムについて
#### 1.2.1 システムリソース
本評価ボードはGowin GW1N-4 拡張可能プラットフォームをベースに開発されています。
以下機能を提供します。

- Gowin® GW1N-UV4LQ144C6/15
    - デフォルト起動モード：内蔵flash

    |  デバイス                   |  GW1N-4/GW1N-4B  |
    | -------------------------  | ---------------- |
    |  LogicUnit(LUT4)           |  4,608           |
    |  レジスタ(FF)               |  3,456           |
    |  S-SRAM(bits)              |  0               |
    |  B-SRAM(bits)              |  180K            |
    |  B-SRAM 数                 |  10              |
    |  ユーザフラッシュメモリ(bits)|  256K            |
    |  18*18乗算器               |  16個             |
    |  PLLs+DLLs                 |  2+2             |
    |  IOバンクの合計             |  4               |
    |  ユーザIOの最大             |  207             |
    |  コア電圧(UVバージョン)     |  1.8V/2.5V/3.3V  |

    - ペリフェラル/ポート
        - MicroUSBポート(onboard USB JTAGポート)
        - 共通カスケード 8セグメント, 4桁数字ディスプレイ
        - DIPスイッチ × 8
        - LED × 8
        - 入力キー × 8
        - RGB-LED(共通アノード) × 4
        - 拡張IOポート(2.54mmピンヘッダ) × 36
    - オンボード発振器
        - 12MHz

## 2.ポート
### 2.1 USB-to-JTAGポート
USB-to-JTAGモジュールはRunberboard上に実装されています。
コネクタとしてFTDIのFT232HQを用いることで、USB microケーブルをon board J14を経由しon board JTAGモジュールに接続できます(microUSBソケットに対応するポートはボードポート?を参照ください)。本機は接続時に以下のドライバ名で認識します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/c07e54d1-7942-533d-a710-c3b464b3ce3c.png)
**RUNBER FPGAモデル:GW1N-UV4LQ144C6/I5 について**
もし以下のような警告がfsファイルコンパイル後に表示された場合、デバイスが一致していません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/40f34e05-a126-3429-d76f-13c2654a4a22.png)
プロジェクト設定にて選択したデバイスのモデルがボードに対応している場合、デバイス選択の一覧にて必ず問題になります(?)。
リセットするために下図に示した赤枠のデバイスをダブルクリックして下さい。デバイスのモデルがボードに対応していなかった場合は、ダブルクリックにより変更が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/63466413-6f59-9722-7bb7-82ca1fac6542.png)
どのシリーズのデバイスか不明な時は以下の方法によりJTAGを介してスキャンすることでどのモデルなのかを確認できます(デバイスセレクタからデバイスのシリーズを選びます、末尾の数字がRのものは内蔵SDRAMのFPGAで、Runber boardによって選択されたデバイスには内蔵SDRAMが実装されていません)。
※うまく和訳できませんでしたが、本ボードで実装しているGW1Nはデバイス選択を間違えやすいことに対する注記です。スキャンするとわかるようにデバイスの候補が複数あります。実際には内蔵SDRAMの有無が異なりますが、選び間違いのないようにと言っている？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/9e381b16-b56e-63ca-807d-bcb26c2c8b2c.png)
### 2.2 電源
本ボードはUSBからのVBUS、もしくは拡張ポートからの5VかLDOからの3.3Vのいずれかにより電源供給できます。
UVシリーズのデバイスの場合、最大3.3Vのコア電圧がサポートされているため、ボードの電源システムが簡素化されています。

### 2.3 クロック
Runber boardの発振器はFT232HQとGW1N-4に同期した12MHzを提供しています。
GW1N-4のピン設定はは下表のとおりです。

|信号|説明|FPGAピン番号(Location)|
|----|---|---------------------|
|FPGA_CLK_12M|クロック入力12Mhz|4|

### 2.4 共通カソード数字ディスプレイ(7セグメントLED)
数字ディスプレイのピンとセグメント選択間の対応を数に示します。応答時間は約0.1usです。
各セグメントに平均順方向電流20mAが必要となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/7c9417a3-bcf4-11a7-edc0-eb216bedb408.png)

|信号|説明|FPGAピン番号(Location)|
|----|---|---------------------|
|SEG_DIG1|左端から1つ目の数字表示|137|
|SEG_DIG2|左端から2つ目の数字表示|140|
|SEG_DIG3|左端から3つ目の数字表示|141|
|SEG_DIG4|左端から4つ目の数字表示|7|
|SEG_A|数字表示のセグメントA|138|
|SEG_B|数字表示のセグメントB|142|
|SEG_C|数字表示のセグメントC|9|
|SEG_D|数字表示のセグメントD|11|
|SEG_E|数字表示のセグメントE|12|
|SEG_F|数字表示のセグメントF|139|
|SEG_G|数字表示のセグメントG|8|
|SEG_DP|数字表示のセグメントDP|10|

### 2.5 単色LED
Runber boardはIO制御できる8つのLEDだけでなく、microUSBソケット("POWER"印字)の側面にある電源インジケータ、および水晶発振器("U27"印字)("DONE"印字)の下にある負荷インジケータを備えています。
操作可能な8つのLEDはHIGHレベルで点灯します。回路図とピン配置は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/4a6967cb-5da2-fa8e-f94e-0729dbfd0545.png)

|信号|説明|FPGAピン番号(Location)|
|----|---|---------------------|
|LED1|LED1の制御信号|23|
|LED2|LED2の制御信号|24|
|LED3|LED3の制御信号|25|
|LED4|LED4の制御信号|26|
|LED5|LED5の制御信号|27|
|LED6|LED6の制御信号|28|
|LED7|LED7の制御信号|29|
|LED8|LED8の制御信号|30|

### 2.6 RGB-LED
Runber boardのコモンアノードRGB LEDについて。
制御信号がLOWレベルのとき対応するLEDの色が発光します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/4b5cbf53-787d-c5b6-83c8-3b24c910521a.png)

|信号|説明|FPGAピン番号(Location)|
|----|---|---------------------|
|G_LED1|G_LED1の制御信号|114|
|B_LED1|B_LED1の制御信号|113|
|R_LED1|R_LED1の制御信号|112|
|G_LED2|G_LED2の制御信号|111|
|B_LED2|B_LED2の制御信号|110|
|R_LED2|R_LED2の制御信号|106|
|G_LED3|G_LED3の制御信号|104|
|B_LED3|B_LED3の制御信号|102|
|R_LED3|R_LED3の制御信号|101|
|G_LED4|G_LED4の制御信号|100|
|B_LED4|B_LED4の制御信号|99|
|R_LED4|R_LED4の制御信号|98|

### 2.7 DIPスイッチ
Rnber boradの8桁DIPスイッチについて。
デフォルトLOWレベルで認識されるよう回路設計されており、導通時HIGHレベルでの入力です。
回路図は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/c58c728c-79ac-9555-a43d-f4f80d2713e7.png)

|信号|説明|FPGAピン番号(Location)|
|----|---|---------------------|
|SW1|SW1の制御信号|75|
|SW2|SW2の制御信号|76|
|SW3|SW3の制御信号|78|
|SW4|SW4の制御信号|79|
|SW5|SW5の制御信号|80|
|SW6|SW6の制御信号|81|
|SW7|SW7の制御信号|82|
|SW8|SW8の制御信号|83|

### 2.8 入力キー
Runber boardはソフトタッチキー×８つを実装しています。
デフォルトHIGHレベルで認識し、キー押下時はLOWレベルでInputされる回路設計となっています。
回路図は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/865d75d4-3fde-df15-ca05-75bb0a4bdfe1.png)

|信号|説明|FPGAピン番号(Location)|
|----|---|---------------------|
|KEY1|KEY1の制御信号|58|
|KEY2|KEY2の制御信号|59|
|KEY3|KEY3の制御信号|60|
|KEY4|KEY4の制御信号|61|
|KEY5|KEY5の制御信号|62|
|KEY6|KEY6の制御信号|63|
|KEY7|KEY7の制御信号|64|
|KEY8|KEY8の制御信号|65|

### 2.9 拡張IO
Runber boardは2.54mmピンヘッダ(20ピン)を2列実装しており、ユーザーにて拡張利用できます。
回路上の結線は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/6d720f1a-c593-6718-d6e0-5d8c106ff128.png)

#### 【 J1 】
J1は数字ディスプレイに対して左側に配置されています。MSPI_CLK, MSPI_CS, MSPI_MOSI, MSPI_MISOの４つはJ1の特殊ピンとして接続されており、外部のFLAHとの接続に使用できます。なお、汎用IOとしても利用できます。
プロジェクトにおけるセットアップは以下の手順をご確認ください。

(1)プロジェクト設定を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/2ea39578-e77d-7b31-deda-dd957f1e1de6.png)

(2)Place&Ruote > Dual-Purpose Pin > Use MSPI as regularIOにチェックを入れる
※ポップアップを読むとわかるように本チェックを入れることでMSPI以外も関連ピンとして一緒に汎用IOとして使えるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127486/32487c9f-f92d-c621-12dc-df903dba7aa8.png)

**J1ピンのIO**
1番ピンが数字でディスプレイ側の端になり、キー入力側の端が20番ピンになります。

|信号|説明|FPGAピン番号(Location)|ボード上のピン番号|
|----|---|---------------------|-----------------|
|A3V3_1A|ピンへの3.3V供給（数字ディスプレイ側の端）||1|
|GPIO38|拡張IO|38|2|
|GPIO39|拡張IO|39|3|
|GPIO40|拡張IO|40|4|
|GPIO41|拡張IO|41|5|
|GPIO42|拡張IO|42|6|
|GPIO43|拡張IO|43|7|
|GPIO44|拡張IO|44|8|
|GPIO66|拡張IO|66|9|
|GPIO67|拡張IO|67|10|
|GPIO68|拡張IO|68|11|
|GPIO69|拡張IO|69|12|
|GPIO70|拡張IO|70|13|
|GPIO71|拡張IO|71|14|
|GPIO72|拡張IO|72|15|
|MSPI_CLK|MSPIコネクタとして使用する場合のSPIクロックポート|96|16|
|MSPI_CS|MSPIコネクタとして使用する場合のSPI許可ポート|95|17|
|MSPI_MOSI|MSPIコネクタとして使用する場合のSPI信号出力ポート|94|18|
|MSPI_MISO|MSPIコネクタとして使用する場合のSPI信号入力ポート|93|19|
|GND|グランド||20|

#### 【 J2 】
J2は数字ディスプレイに対して右側に配置されています(LED側)。1番ピンが数字でディスプレイ側の端になり、キー入力側の端が20番ピンになります。gowinに接続されたピンと信号は同じ番号が採番されています。なお、VBUSへの入力信号は5Vです。

**J2ピンのIO**

|信号|説明|GOWINチップのピン番号(Location)|ボード上のピン番号|
|----|---|---------------------|-----------------|
|VBUS|ピンへの5V供給（数字ディスプレイ側の端）||1|
|GPIO136|拡張IO|136|2|
|GPIO135|拡張IO|135|3|
|GPIO134|拡張IO|134|4|
|GPIO133|拡張IO|133|5|
|GPIO132|拡張IO|132|6|
|GPIO131|拡張IO|131|7|
|GPIO130|拡張IO|130|8|
|GPIO129|拡張IO|129|9|
|GPIO128|拡張IO|128|10|
|GPIO123|拡張IO|123|11|
|GPIO122|拡張IO|122|12|
|GPIO121|拡張IO|121|13|
|GPIO120|拡張IO|120|14|
|GPIO119|拡張IO|119|15|
|GPIO118|拡張IO|118|16|
|GPIO117|拡張IO|117|17|
|GPIO116|拡張IO|116|18|
|GPIO115|拡張IO|115|19|
|GND|グランド||20|

### 2.10 外部電源との接続
本ボードをモジュールとして使う場合、電源共有は以下の２つの方法があります。
(1)5V電源をJ2の1番ピンに入力
(2)3.3V電源をJ1の1番ピンに入力

**Note**
Runberは上記のどちらでも機能します。

------------------------------------------

参考：

- Gowin RUNBER Development Board
 
>秋月商店
>https://akizukidenshi.com/catalog/g/gM-16723/

- FT232HQ

>マルツ 
>https://www.marutsu.co.jp/pc/i/27811842/