【初心者】HDLってなに?【FPGA入門】
普段は YouTube で機械学習について発信しています。お時間ある方は覗いていただけると喜びます。
YouTubeのvideoIDが不正です
Created by NekoAllergy
はじめに
FPGA を使うことで、自分だけの IC を作ることができます。今回は、FPGA で回路設計をする際に使う、HDL について解説します。
「厳密さ」よりも、「分かりやすさ」を重視しています。ご了承ください。
分かること
- FPGA と HDL ってなに?
- プログラミング言語と違うの?
- ネットリストって?
誰に向けて?
FPGA についてあまり詳しくない方を想定して書きました。
今回の内容は、下記の記事を見てからの方が、理解が深まります。
まず、FPGA ってなに?
FPGA とは、プログラムすることによって、中の回路構成が変えられる IC です。CPU などの普通の IC は、後から回路構成を変えることはできません。しかし、FPGA を使うことで、中のハードウェア(電子回路)を自分で自由に設計することができます。すごい。
たとえるなら、CPU は中身が書き込まれた「教科書」、FPGA は自由に書き込める「ノート」のようなものです。どちらも工場で作られて、印刷という工程がありますが、ノートには中身の印刷がされません。
そのため、ユーザーが書きこむ内容によってノートは、メモ帳にも教科書にも変わることができます。FPGA はノートのように、書き方によっては CPU にも GPU にもメモリにもなることができる、とても優秀な IC です。便利。
コードを使って回路が書けるよ
FPGA 内の電子回路(ハードウェア)の構成は、ハードウェア記述言語を使って書くことができます。ハードウェア記述言語は、Hardware Description Language の頭文字をとって、HDL(エイチ ディー エル)と略されます。
初めはプログラミング言語と思ったら OK ですが、プログラミング言語とハードウェア記述言語は全く違うものなので、注意してください。
HDL は 2 種類ある。2 種類しかない。
HDL は、VHDL と VerilogHDL の 2 種類が使えます。Python とか Javascript などプログラミング言語に種類があるのと同じです。ハードウェア既述言語(HDL)では、基本的にこの 2 つしかありません。
- VHDL :ブイ エイチ ディー エル
- VerilogHDL :ヴェリログ エイチ ディー エル
どちらを使っても、FPGA 上にハードウェアを作ることができます。この 2 つに優劣はあまりないので、どちらを使うかは好みです。
プログラミング言語とは違うよ
HDL の考え方は、普通のプログラミング言語とかなり違っています。if 文や for 文などは HDL にもあるので、書き方については似ている点もところどころあります。しかし、そもそもの考え方が違うので、プログラミング経験者でも、理解するのに時間がかかります。
個人的には、高級言語(C 言語など)と、低級言語(機械語など)の間くらいの難しさだと思っています。慣れれば早いし楽しいです。自分だけのオリジナル IC が作れます。
プログラミング言語とハードウェア記述言語(HDL)は、そもそも目的が違います。
最終的な目的は、
- プログラミング言語 :理想通りに動いてくれるプログラムを書くこと。
- ハードウェア記述言語(HDL) :想像通りの動きをしてくれる電子回路を作ること。
そして、いちばん大きな違いは、
- プログラミング言語:上から順に処理されていく
- ハードウェア記述言語(HDL):全部が同時に処理される
ここが一番のポイントです。プログラミング経験者は、かなり頭が混乱します。全部同時なので、いろんなことを同時に考えなければいけません。たいへん。
ネットリストって?
ネットリストとは、回路ブロックの接続関係を示したコードのことです。HDL を変換することで、ネットリストを作ることができます。
HDL をネットリストに変換することを、「論理合成」とよびます。わかりにくいですね。最終的に FPGA に書き込むのは、HDL のプログラムファイルではなく、このネットリストです。
FPGA 回路設計の流れ
HDL を使った FPGA 回路設計の流れは、ざっくり下記のような感じです。
- どんな回路にするか考える
- HDL を書いて回路を設計する
- シミュレーションをして HDL で書いたとおりに動くか確認する
- ネットリストを FPGA に書き込んで、実機でいい感じに動けば OK
HDL の最終的な目標は、想像通りの動きをしてくれる電子回路を作ることです。一般的なプログラミング言語は、CPU で処理するので、PC 内で完結します。一方で HDL は、FPGA という IC に書き込みをするので、PC に加えて実機(FPGA そのもの)が必要になります。
FPGA キットは Amazon とかで買えます。PC 内でシミュレーションをすることもできます。HDL で書いた内容が、FPGA 内でどのように動くかを、FPGA に書き込む前に確認することが一般的です。
今回のまとめ
今回は以上です。興味を持たれた方は、ぜひもっと調べて見てください 🐱
機械学習をもっと詳しく
ねこアレルギーの AI
普段は YouTube で機械学習について発信しています。お時間ある方は覗いていただけると喜びます。
YouTubeのvideoIDが不正です
Created by NekoAllergy
Discussion