授業でFPGAを使った程度の大学生による振り返りを含めた紹介記事
(すみません!いつの間にか12月1日になってました…。論文書いたりで思ったより時間が取れなくて想定以上の悪い記事になってしまいました.申し訳ございません。)
初めまして!2022年の12月1日,こんにちは,おはようございます。たまたまメールを見ていたら,Qiitaに記事書いて豪華景品!みたいな感じに流れてきたので,カレンダー一覧を眺めていたら『FPGA』という単語が目に入りました。ちょっとだけ触ったことがあるので,AirPodsPro欲しさに記事を投稿します。
きっと間違ったことを書いていたらアドカレの明日以降のすごい方々が指摘してくださると思います…。(間違い過ぎててやばかったら消えるかもしれません…)
- 本記事に含まれないこと
- 技術的な詳細
- 技術的な知見
- 本記事に含まれること
- 経験談
技術的な凄みのあることは書けないので,あえて1日目をもらって,FPGAってなんなの?みたいな話をざっくりと書きます。
そうして,FPGA知らない人が2日目以降の記事を読むときにちょっとでも役に立てばいいな~と思います。
自己紹介とか,FPGAにあんまり関わらない内容も挟んでいるんで読みたいところだけ読んでくれたらうれしいです。
自己紹介(FPGAとの出会いとか)
- なまえ
名前は「にぼし」とか「nibosea」とか「瑞々しぃにぼし」とか,『にぼし』っぽい名前で活動しています。Twitterは変なことしか書いてないので,ブログのリンク張っておきます…
https://iloveconviniboshi.hatenablog.com/entry/2019/11/24/012952
(ちなみに,リンクって形にすると,URL見えなくて嫌いな人いるっぽいのでURL直接貼ってます) - 何している人?
- 卒業研究で苦しんでいる人。
- 論文投稿締め切りとアドカレを同時進行させられています。つらいです。
- 競技プログラミングをしている人。
- PCで銃撃つゲーム(CS:GOとかValorantとかApeXとかOverwatchとか)をしている人(プロではない)
- 卒業研究で苦しんでいる人。
- 職業
情報系の大学の学部4年生です.もうすぐ卒業します。
FPGAは,大学3年の後期(つまり去年の今頃)の授業で触りました。『実験ちょめ』という名称の授業で,パワハラ・アカハラで一時期話題になっていた(らしい)授業です。うちの学部学科の一番大きな闇と言われています。(言われていました)。
ちなみに,この授業では,FPGAを使ってCPUを作る!みたいな趣旨でした。内容としては面白いと思うんですよね。実際,結構面白かったし。
何が良くないって,闇の印象を学生が植えつけられ過ぎていて,それが周りにも伝染してたのが良くなかった。
FPGAって何?
『FPGA(英: field-programmable gate array)は、製造後に購入者や設計者が構成を設定できる集積回路であり、広義にはPLD(プログラマブルロジックデバイス)の一種である。現場でプログラム可能なゲートアレイであることから、このように呼ばれている。』(https://ja.wikipedia.org/wiki/FPGA より)
- アルバム漁ってたんですけど当時使ってたFPGAボードが見つからなかったので,適当なFPGAボードの画像貼ります
- こんな感じで,スイッチとか,LED表示する場所とか,ボタンが付いているやつです!
-
- 画像は秋月電子通商さんからお借りしました.(https://akizukidenshi.com/catalog/g/gM-08634/)
自分としての理解を述べます。
要は,回路図を好き勝手書き換えられるもの。みたいな感じでとらえています.
- ソフトウェア(例えばQuartus)で回路図Aを作ります。その回路図AをFPGAにインストールします。これで,回路図AがFPGAに書き込まれました。
- 実際にFPGAを動かしてみます。うまく動きません。
- ソフトウェアで回路図Bを作ります。回路図BをFPGAにインストールします。これで回路図BがFPGAに書き込まれました。
- さて,もう一度FPGAを動かしてみます。うまく動きました!
こんな感じで,自由に書き換えられるから,プログラマがコード書くときみたいに自由に実験出来ていいね!とかそんな感じです。
もっとハードっぽいものだと,回路作る=半田付けとかする,みたいな感じで,一回はんだつけたら作り直すの大変だけど,FPGAなら作り直しが簡単!っていうイメージです。
Quartusって何?
- 回路を製作するソフトウェアです
- Quartusで回路を作成 → FPGAに流し込む(インストールする)
FPGAはものによってはスイッチが付いているのですが、QuartusでFPGAの型番を指定することで、FPGAの物理的にここのスイッチを上(On)にしたら「1」(電気信号0/1の1です)を流すようにする。みたいなことも設定できます。
同時に、FPGAのLEDライトをQuartus内で指定してあげることで、回路の演算結果が1ならこのLEDライトを光らせる!みたいなこともできます。
CPU作るって何???
- FPGAでCPUを作るってなんなんだ!?って感じですが,うちの大学でやっていたこととしては,
- ALU(算術論理ユニット)を作る
- 命令セットを用意して,命令デコーダを作る
- レジスタとか,メモリアクセスの制御の仕方とかを頑張る
こんな感じです(もっと色々とやってたと思う).
命令セットって何かというと,MOVとか,ADDとかそういう.
ADD R1 R2
見たいな命令を入れたときに,(実際にはADD R1,R2を入れるのではなく,それを01に変換した機械語を入れていました)どういう挙動をするのかっていうのを回路に落とし込んでいきます.
クロックを入れたら,プログラムカウンタを+1するとか,メモリをReadモードにするとか,そういうこまごまとしたことをします.
そんな感じで(めちゃくちゃ大変な作業を乗り越えたら)なんか完成します…。
FPGA,Quartusについて周りの人に聞いてみ(たかっ)た
FPGAやQuartusに対するヘイトとか,授業通じてここ面白かったな~みたいなこと,聞いてみました。
- すみません,卒論で忙しいのであまり聞いている余裕がありませんでした.