Society5.0に対応した高度技術人材育成

enPiT everi 社会人向け「人工知能・ロボット・IoT」に関する短期講義・演習プログラム

MENU

活動紹介

  • 活動紹介

【enPiT-everi 科目紹介】ハードウェア記述言語入門の受講体験録 ~ プログラミング感覚で回路を設計 ~

5月11日(土)、12日(日)の両日、2019年度の「enPiT-everi ハードウェア記述言語入門」が熊本大学のベンチャービジネスラボラトリーにて実施されました。

【ハードウェア記述言語とは?】

本講座は、集積回路(ICやLSI)の設計上必要な「部品の配置」や「部品・端子間の配線」を行うためのハードウェア記述言語について学習するものです。現在の集積回路では、この「部品」に相当するトランジスタの数は数十億個という膨大なものであり、これを手作業で配置・配線することは大変困難あるため、このような集積回路に行わせたい動作を「ハードウェア記述言語」という特別なコンピュータ言語で表現し、その記述に沿った部品配置・配線設計をコンピュータに行わせます。

今回の講座では、FPGAと呼ばれる「書き換え可能な集積回路」を用いて、各自で設計したハードウェア記述言語で表現された回路をパソコン上で設計し、それに基づいてFPGAを書き換えて、それが設計どおりに動作するかを確かめるという方法で、ハードウェア記述言語の基本的な文法と設計手法について学習しました。

現在では、この「ハードウェア記述言語」は「Verilog HDL」と「VHDL」という2種類が主流であり、世界中ではこれらがほぼ五分五分で利用されています。今回は「Verilog HDL」の方を取り扱いました。それは、日本の半導体設計においてはVerilog HDLが主流であることと、これがプログラミング言語でよく使用されているC言語に近い記述が可能であることからです。

 

【講義からプログラミング演習、そして回路実装】

本講座は、主に3つのパートに分かれています。

まず最初に、ハードウェア記述言語の基本的な記述方法と幾つかの回路実装例について、熊本大学の久我先生より解説していただきました。見た目はC言語のように見えるものでも、実際のハードウェア上で動作する場合には様々な違いや注意点があり、それらを一つ一つ例を挙げて分かりやすく解説していただきました。

次に、簡単な回路合成を行うため8bitの加算器の設計とFPGA上への実装を行いました。
設計とはいえ、必要なソースファイルは1つのみという簡素なものであり、比較的簡単に記述することができます。これをFPGA上で部品配置を行うと、下の写真の水色部分のように全体のほんの一部分だけで実装されていました。

これをFPGA上に書き込むと、ボードが2進数8ビット同士の加算器となり、それぞれの入力に対応するスイッチを入れ切りすることで得られた加算値を表現するLEDが変化することを確認することができました。

最後に、より本格的な課題として24時間動作対応のデジタル時計を設計しました。これは、時間2桁、分2桁、秒2桁と1/10秒、1/100秒各1桁の合計10進数8桁の7セグLEDを用いた時刻表示を行うことが可能な時計で、表示のリセット、時分の調整などを行うスイッチにも対応するという複雑なものです。

この時計を実装するためのソースファイルは8個に分かれており、それぞれが複雑に絡んでいるため動作不具合を起こした場合の対処方法も加算器の場合とは比べ物にならないほど難易度が上がります。また、時間を計測するためのシステムクロックと呼ばれている信号の周期は100MHzと高速であるため、動作をテストするのも容易には行えなえません。この時計の実装は、1日目の夕方から2日目終日と通して行われました。

 

↑FPGAで7セグ時計を実装

最後に、早く課題を終わらせた参加者に向けて、更に高度なものとしてFPGA上にMicroblazeと呼ばれるCPUとその周辺機器、そしてこのCPU上で動作するプログラムなどの全てをハードウェア記述言語上で表現し、これをFPGA上に書き込むことで様々なプログラムを動作させる追加課題が出されました。

この追加課題では、回路規模もこれまでのものとは比べ物にならない程度の大きさとなり、それに伴い部品構成や配線も複雑となるため、ノートPC上で動作する制作ツールでも数分から十数分程度かかるため時間内に課題が終わるのか(動作画面を見ることができるのか)時間に追われながらのギリギリの攻防となりました。

↑FPGAで動く「ライフゲーム」

↑FPGAで動く「スカッシュ」

最終的には、上の動画のとおり全ての回路を正しく合成し、それをFPGA上で動作させることができました。

(みやざき)

 

【おわりに】

電子回路技術は、コンピュータを中心とした電子情報機器のみならず、家電製品から工業製品に至るまでそれを制御するために欠かすことのできない技術です。電子回路を実現するためには論理回路設計を行う必要がありますが、集積回路の大規模実装が可能になった今日、この『ハードウェア記述言語』を用いた論理回路設計は大変重要な設計技術となっています。近年普及してきたIoTのデバイスを開発するのにも基礎から応用まで幅広く活用できる技術ですので、そういった設計・開発に携わるアーキテクトやエンジニアの方、またはそれを目指す方にお勧めです。

(しばかわ)

 

カテゴリー