---
# System prepended metadata

title: 宇佐美研 FPGA演習(上級者向け)
tags: [Lab]

---

###### tags: `Lab`
宇佐美研 FPGA演習(上級者向け)
===
## 更新履歴

| 日付      | 内容                         | 備考                                                             |
| --------- | ---------------------------- | ---------------------------------------------------------------- |
| 2020/3/11 | 初版 |                                                                  |
| 2020/3/14 | 開発環境の変更、課題の微修正 | 課題の修正は拡張についての言及などで、内容自体には変更ないです。 |


## はじめに
### お願い
まず一通り目を通して、最後の[スケジュール(目安)](#スケジュール目安)を確認した際、この期間は絶対に忙しいから無理！みたいな期間があったら先に教えて下さい。先生チェックが発生しそうな日の目処をつけることが目的です。リスケが発生したら、先生に共有します。

### おことわり
適宜変更の可能性があります。その際にはSlackで連絡しますので、よろしくお願いします。

## この演習について
宇佐美研チュートリアルでは、普通は電卓を制作してFPGAの制作を行いますが、もう終わってしまったという人向けに、さらなる課題を用意しました。
いかんせん小野が思いつき & 突貫で作成した課題なので、粗だらけで申し訳ないなあと思いますが、疑問点は相談しながら、ぜひ頑張って取り組んでみてください。たぶん力はつくと思います？？

## 教材
### 教科書
- FPGAプログラミング大全 Xilinx編

宇佐美研の蔵書で一冊あるので、借りて使ってください。
実は石原がもう一冊個人のものを持っているので、研究室と家で一冊ずつほしいなあとか言う場合は相談してみてください。

[Amazonはこちら](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-%E5%B0%8F%E6%9E%97-%E5%84%AA/dp/4798047538/)

### 開発環境
- Vivado ~~2019.2~~ 2019.1
- Xilinx SDK ~~2019.2~~ 2019.1

2019.2におけるXilinx SDK廃止に伴い、2019.2 => 2019.1に変更

多分クライアントPCにインストール済みです。
自前のPCでも問題ないし、多少バージョンが違っても大丈夫です。

### 評価ボード

#### Basys3
いつものやつです。
この演習に取り組む人はきっと使ったことがあると思うので割愛します。

#### Zybo Z7-20
CPU(ARM Cortex-A9 2コア)を搭載したFPGAボードです。

教科書で触れられているボードは古い世代のZyboなので、一部違う箇所があります。**が、あえてここでは何も説明しません。** 
機能的には同じことが実現できるので、このボードで頑張って取り組んでみてください
どうしても詰まってしまったら小野に聞いてください。ヒントがあげられればあげます。

#### 使い分け
- 教科書1~4章は、Basys3とZyboどちらを使ってもいいです。
- 教科書5~6章については、Zyboを使えるかどうかがちょっと不明です。小野はBasys3でやりました。使えたらZyboでもいいです。
- 教科書7~9章は、Zybo必須です。

## 課題
Practice, Excerciseはぜひ終わらせてください。
Excerciseの結果を先生にチェックしてもらう事になっています。
(ここまででもかなりハードだと思います。無理はせず、厳しそうなら適宜相談してください。課題の変更やリスケをします。)

Excercise (Advanced) に関しては、任意課題とします。
ここまでできると、FPGA + 画像処理の研究に対応できる素地が完成すると思います(実際小野の学部の研究で必要でした)。
研究テーマ次第では取り組むべきですが、テーマがFPGA + 画像処理に関連しないなら、あとは興味次第です。取り組んでみたければ取り組んでください。

### Practice
1. 教材の1~4章に取り組む
    かなりの範囲が復習を占めます。分かる部分は飛ばしてOKです。
    ロジアナの使い方など新しいところもあるので、そういう箇所にはぜひ取り組んでみてください。
    
2. 教材の5~6章に取り組む
    ここからは、電卓やgPBL@CSUEBの時とまったく異なる技術を習得していくことになります。
    
3. 教材の7~9章に取り組む

    
### Excercise
9章の章末課題【9-4-1】or【9-4-2】を改良し、 **好きな画像処理フィルタ** を適用させた画像を、ディスプレイに表示させて下さい。
ただし、画像は任意で変更しても構いません。

***e.g.,***
- 色調変換フィルタ: グレイスケール変換、セピアフィルターなど
- 空間フィルタ: 平均化フィルタ、ガウシアンフィルタ、ソーベルフィルタ、ラプラシアンフィルタなど

### Excercise (Advanced)
Excerciseを改良し、フィルタ処理した画像データをSDカードに書き出して、PC上の任意のアプリケーションを用いて表示させてください。

***注意***
- 書き戻したデータをPCで閲覧できるようにソフトウェア(プログラム)を使って編集しても構いませんが、画像処理自体をソフトウェアで行うことは禁止です。
- プログラムを書きたいけど環境がない場合は、書きたい言語を小野に伝えてくれれば、サーバーに環境を用意します。ただ、時期によっては死んでいる可能性があるので、その際は別の鯖管と連絡をとってもらう可能性があります(4月こわい)。

## チェックポイント
進捗状況を確認しますので、以下のタイミングで小野にSlackに報告を送ってください(研究室にいるときには直接呼びつけてもらって構いません)。

1. Practice 1 終了時
    このときは完了報告だけでいいです。

2. Practice 2 終了時
    章末課題【6-4-1】【6-4-2】の両方について、実行している様子がわかる画像を添付してください。【6-4-2】について、拡張はやってもやらなくても良いです。
    
3. Practice 3 終了時
    章末課題【9-4-1】【9-4-2】のどちらか一方について、実行している様子がわかる画像を添付してください。ただし、【9-4-1】の場合は、拡張の「フォトフレーム」までやる必要はありません。【9-4-2】の場合は、拡張の「SDカードからの表示」までやってください。
    
4. Excercise 終了時
    元画像と、課題を実行している様子がわかる画像を添付してください。このときのみ、先生を交えた状態でDMをください。
    加えて、Vivadoのプロジェクト(SDKのソースコードを含めたもの)をShareで共有してください(きちんとZynq上で処理していることを確認するため)。これらは小野にのみ共有してくれればOKです。
    
5. Excercise (Advanced) 終了時
    完了報告とともに、入力画像データと出力画像データ、Vivadoのプロジェクト(SDKのソースコードを含めたもの)をShareで共有してください。

## スケジュール(目安)
本当に超適当ですが、一応このくらいで終わると良いのかなあという目安だけ示しておきます。
就活やらインターンやらコロナやらいろいろあって難しい部分があると思います。厳しかったら必ず相談するようにしてください。

| 時期 | 内容 | ひとこと |
| --- | --- | --- |
| 3/11~3/22 | Practice 1 | ここはサクッと終わらせちゃって良いと思います。 |
| 3/23~4/6 | Practice 2 |  |
| 4/7~4/25 | Practice 3 | Practice 1, 2が遅れたとき用のマージンとして、少し長めの期間です。ただ、単純にPractice 3が一番理解に時間がかかる気がするので、そういう意味でも長めです。 |
| 4/26~GW前後  | Excercise | GW前に先生に見せられればベストですが、GW後でも全然大丈夫です。 |
| GW明け~6月中旬 | Excercise (Advanced) | オプションです。この頃には研究のサーベイを行ったり、進捗発表に向けた準備をしたりと少しずつ研究が始まってくると思うので、無理はせず。|

### 進捗確認(保険)
順調に進めば問題はないのですが、正直あまりにも適当なスケジュールだし、初めて実施する演習なので、一応保険として最初のうちはこちらからも進捗を聞くつもりでいます。
順調に回るまでは1~2週間に1回くらいSlackでメッセージを飛ばす(はず、こっちにキャパがなければやらない)つもりなので、そのときはどこまで進んだか軽く教えて下さい。厳しいと判断したらリスケします。
ただ、チェックポイントの到達次第で、別にこれは問題なさそうだなーと思ったらやりません。
