FPGAプログラミング大全Xilinx編第2版 実機テスト下準備 #2

FPGAに再入門しようと思いたち[FPGAプログラミング大全Xilinx編第2版](https://www.amazon.co.jp/FPGA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%A4%A7%E5%85%A8-Xilinx%E7%B7%A8-%E7%AC%AC2%E7%89%88-%E5%B0%8F%E6%9E%97-%E5%84%AA/dp/4798063266/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1S5G3UKPB55O9&keywords=FPGA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%A4%A7%E5%85%A8Xilinx%E7%B7%A8%E7%AC%AC2%E7%89%88&qid=1669893715&qu=eyJxc2MiOiIwLjc2IiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=fpga%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%A4%A7%E5%85%A8xilinx%E7%B7%A8%E7%AC%AC2%E7%89%88%2Caps%2C151&sr=8-1)を頭からやっていく2日目

時期的にも良いので一人Advent Calendarで25日続ける

今日からFPGAプログラミング大全Xilinx編第2版の実際の項目をやっていく
今日は第2章 "Vavidoの論理合成を試す"をやりつつ購入した[Digilent Artix-7 35T Arty FPGA 評価キット](https://japan.xilinx.com/products/boards-and-kits/arty.html#resources)の動作チェックのための下準備

### 目標
4004等の実CPUの実装

### 目次
| # | タイトル |
|:-:|:-:|
|   01|  [ツール導入](https://qiita.com/Gazyu/items/8f3797abf4ddc88ecacd) |
|  02 |  実機テスト下準備 |
|  03 |  未定 |


### 環境
【実装ボード】 [Digilent Artix-7 35T Arty FPGA 評価キット](https://japan.xilinx.com/products/boards-and-kits/arty.html#resources)
【OS】 Windows10
【IDE】 Vivado 2022.2

### 今日のゴール
Vivadoでプロジェクトを作ってボードの設定ファイルの読み込み


## ボードの設定ファイルをVavidoに追加
1. 設定ファイルのDL
Digilentの[vivado-boards Githubリポジトリ](https://github.com/Digilent/vivado-boards)から最新のmasterブランチのコードを[ダウンロード](https://github.com/Digilent/vivado-boards/archive/refs/heads/master.zip)する

1. DLしたファイルの設置
Zipでダウンロードするので、解凍する
解凍すると下記のファイル群が出てくる
![スクリーンショット 2022-12-02 220840.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/ec14917d-80bb-758c-2650-85340881810a.png)
今回はVivado 2022.2を使用するので、この内のnewフォルダに入っているboard_filesフォルダをVivado がインストールされたフォルダー (WinだとだいたいC:/Xilinx/Vivado) 内の2022.2/data/boards/ にコピーする
2022.2はインストールしたバージョンなので適宜変更
また、boardsフォルダ以下にすでにboard_filesフォルダが有る場合は、もとフォルダと中身をマージする

## プロジェクトの作成
1. Vivadoを立ち上げCreate Projectを選択
![スクリーンショット 2022-12-02 221614.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/6b4119da-93b1-c5e6-9809-584b86a384b8.png)

1. next
![スクリーンショット 2022-12-02 221842.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/2bdd2a01-878e-1786-79dc-486822c7a10c.png)
1. プロジェクトのファイルを置く場所を選択する
![スクリーンショット 2022-12-02 221931.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/b4b905f4-387a-c9d8-a0d0-a9a4bb6167a6.png)
とりあえず今回はcドライブの直下にfpgaフォルダを置いて更にその下に作った
だいたいこういう時はc:/Usersの下の個人フォルダとかを指定されたりするが2byte文字が含まれてたりスペースが含まれてたりする可能性のあるパスは辞めといたほうが安全

1. プロジェクトの設定
![スクリーンショット 2022-12-02 222108.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/5f1ea184-d843-cbea-a4c6-4c8340d8e83e.png)
とりあえず初めてなのですべて標準設定で
1. ファイルを作成
![スクリーンショット 2022-12-02 222258.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/0dea6e30-3dc1-4a7d-875a-ab574180315a.png)
![スクリーンショット 2022-12-02 222313.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/f44041d0-21ca-d566-a583-ed78fdb7c3b1.png)
まずはVerilogのソースファイルを1つ作ってみてる
1. 特に追加設定はしない
![スクリーンショット 2022-12-02 222344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/2e388ec9-112a-fae1-1478-0f20822eda5a.png)


1. 動作ボードの選択
![スクリーンショット 2022-12-02 222433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/f349a7c1-d466-b71d-1d4d-9d415ce7408e.png)
上で行ったボードのファイルが正しく追加できていた場合にはここの一覧にボードが出てくる
今回使用したボードはDigilent Artix-7 35T Artyなのでそれを選択
Digilent社の公式docにはVivado2022.2を使用する場合にはここでリフレッシュをしてインストールする必要があると書かれていただがそんなことはなかった
1. 最終確認
![スクリーンショット 2022-12-02 222510.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/a1fcf3c5-a804-2adc-caab-67496351db31.png)

## プロジェクトの設定
### XDCの取得・設定
XDC(制約ファイル)とは主にFPGAの端子に対して
- 回路記述のボードに対する外部端子割当
- 端子の信号レベル設定
- クロック周波数と波形設定

などを行うファイルらしい
ないと話にならなさそうなので早速設定する
今回使用したボードはGithub上にすでに公開されてるんのでそれを利用する
（こういう公開がない場合にはもしかして自分で設定？？？？そうだとしたら地獄・・・・）

#### XDCの取得
1. XDC(制約ファイル)のDL
Digilentの[digilent-xdc Githubリポジトリ](https://github.com/Digilent/digilent-xdc)から最新のmasterブランチのコードを[ダウンロード](https://github.com/Digilent/digilent-xdc/archive/refs/heads/master.zip)する
1. ダウンロードしたZipの解凍
![スクリーンショット 2022-12-02 230202.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/66f41008-a1e6-5488-643e-a0943e3b06bf.png)
解凍すると大量の.xdcファイルが出てくるので適当な場所に置いておく

#### XDCの設定
1. プロジェクトを開いた状態で左上の方にある **Add Sources**をクリック
![スクリーンショット 2022-12-02 230341.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/87b0da34-642f-a3b8-8e5d-fabbe9e91aed.png)

1. 今回は制約ファイルなので **Add or create constraints**を選択してnext
![スクリーンショット 2022-12-02 230354.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/d2fa42c0-38d2-67a9-6cf2-d9c1423c4ce9.png)


1. **Add Files**から追加
![スクリーンショット 2022-12-02 230509.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/1bb2275d-d204-95ac-e0da-1c117d0f976d.png)
![スクリーンショット 2022-12-02 230527.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/a4e907e1-cd71-ecbf-8944-89fdb1c3d4ee.png)
今回は*Arty-A7-35-Master.xdc*を選択

1. Finishで追加完了
![スクリーンショット 2022-12-02 230551.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/a2979b57-b1a4-83c8-cf96-6bb553509287.png)


一応プロジェクトwindowのSourcesで追加されてることを確認
![スクリーンショット 2022-12-02 231726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45441/bca50072-dd1f-f1e0-329f-4128ab5e910d.png)


今日はここまで
明日からはHDLを書いていく想定