FPGAによるハードウェアの開発の手順について解説します。FPGA(Field Programmable Gate Array)は,ユーザが自分で内部の構成をプログラムできる集積回路です。プログラムは,多くの場合,ハードウェア記述言語(HDL)を使って行われます。
<注意を読む>
注意:
この投稿は,未完成のシステムの開発過程の備忘録として書かれたものです。紹介されているコードにはバグや冗長な部分が含まれています。コードやピン配置を参考にする場合は注意をお願いします。また,解説の文章などに誤りや意味不明の箇所が含まれていることにも配慮してください。
<閉じる>
FPGAと開発環境
使用するFPGAと開発環境は,以下のとおりです。
- FPGA:Lattice Semiconductor社のMachXO2
評価基板:MachXO2 Breakout Board - 開発ソフトウェア:Lattice Diamond
- その他:ピン配置割り当て作業のサポートにMicrosoft Excelを使う
FPGA
Lattice Semiconductor社 LCMXO2-7000HE (Mach XO2)
LUT数:6864
分散SRAMサイズ:54 kb
EBR SRAMサイズ:240 kb (EBR : Embedded Block RAM)
EBR SRAMブロック:2 kb×26
UFMサイズ:256 kb(UFM : User Flash Memory)
PLL:2個
データシート:https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataSheets/MachXO23/MachXO2FamilyDataSheetJapaneseLanguageVersion.ashx?document_id=38834
FPGA搭載基板Mach XO2 Breakout Boardを使用
データシート:https://www.latticesemi.com/-/media/LatticeSemi/Documents/UserManuals/MQ/FPGA-EB-02051-2-3-MachXO2-Breakout-Board-Evaluation-Kit.ashx?document_id=43937
開発ソフトウェア
Lattice Diamond
日本語公式サイト:https://www.latticesemi.com/ja-JP/Products/DesignSoftwareAndIP/FPGAandLDS/LatticeDiamond
日本語ドキュメント:https://www.macnica.co.jp/business/semiconductor/articles/lattice/131999/
株式会社マクニカさんのサイト内のページで,PDFファイルをダウンロードできます。
解説(ダイジェスト版):PDFを開く
「ヤじるし」作成の解説です。印刷して使うことを前提としています。
サポートソフトウェア
合成したハードウェアのFPGAのピン割り当ての作業をサポートするため,自作のMicrosoft Excelファイル(マクロ使用)を利用しています。
MachXO2BB_PinAssign.xlsm:ダウンロード
マクロ付きのExcelファイルです。起動する際,マクロを有効にする必要があります。
使い方の覚え書き:PDFを開く
備忘録なのでわかりにくいと思います。
ハードウェア設計の手順
デジタルでもアナログでも,電子回路のハードウェア設計にはソフトウェアが使われるようになりました。ソフトウェア化されたハードウェア設計の流れは,図のようになっています。

ハードウェア設計の流れを大雑把にとらえると,次のようになるでしょう。
- 仕様の検討
- 回路記述の入力・編集
- シミュレーション
- 回路合成
仕様の検討・策定は「どんなものを作るか,よーく考えよう」ということです。この段階では「紙と鉛筆」というアナログツールが主流になると思います。でも,最近は,デジタルツールを使う人もいるのかもしれません。
<注意を読む>
「この段階できちんとしておかないと,設計プロセスの下流の方,例えば実装が終わった段階で仕様変更することになり,納期に間に合わないとか余計なコストが発生するという羽目になります。」
と公式には言っているのですが・・・。私の場合は,仕様も明確にしないまま開発をスタートすることが多いのです。作っているうちに,ああしたらよいこうしたらどうだろうと,仕様を変えながら進めていき,開発の終了と仕様の最終的な決定の時期が同時になるということが多いです。しかも,「開発の終了」といってもそれは常に暫定的なものです。システム開発といっても,売り物を作るのと研究用に作るのでは,やり方が違うということだと思います。
<閉じる>
回路記述の入力・編集から回路合成までの過程でソフトウェアツールが使われます。以下で,解説します。
回路記述の入力
回路図やハードウェア記述言語,ブロック線図などで回路記述を入力し編集します。
HDLによる回路記述
デジタル回路の場合は,ハードウェア記述言語(Hardware Description Language, HDL )を使うことができます。
「ハードウェア設計のソフトウェア化」にHDLは大きな役割を果たしています。HDLは特定のIC製造技術に依存しないため,動作検証されたハードウェア記述を異なるメーカのデバイスに対応させるのは容易です。またHDLコードはテキストファイルの形で扱われるため,誰でも回路の仕様を検討することができます。
現在主流になっているHDLは,VHDLとVerilogがあります。本サイトのHDLにはVHDLを使っています。
<続きを読む>
学部の講義科目で,HDLの一つであるVHDLを取り入れていました。VHDLを採用した理由は,そのとき入手できる処理系や技術文書がVHDL関連のものだったからです。Verilogは企業で採用されていることが多いようです。また,高専出身の学生さんも,皆,Verilogを習得していました。
- VHDLはシステム記述言語のAdaをベースにしている
文法的には厳密,だそうです。 - VerilogはC言語がベース
VHDLより記述が短くなるそうです。C/C++言語を学んでいる方にはとっつきがよいかもしれません。
講義では,VHDLを「ハードウェアを記述する疑似コード」として使いました。講義の到達目標は「コードを読んで理解できる」ところまでです。試験の問題も,コードを示して回路図やタイミングチャートを描かせることしかしていませんでした。
<閉じる>
シミュレーション
実装せずに回路の動作を確認するシミュレーションが,設計の様々な段階で使われます。デジタル回路の設計の場合は,論理的な動作検証のためのシミュレーションと,配置配線の後に,タイミングや消費電力などを考慮した,より詳細なシミュレーションとがあります。
論理シミュレーションは,回路記述の入力・編集に含めて考えてもよいと思います。経験上,回路記述入力の初期段階から動作チェックをしながら作業を進めた方が効率がよいようです。
なお,アナログ回路の分野でも回路動作のシミュレーションのためのSPICE系のソフトウェアがあります。すでにアナログ回路の開発には必須のツールになったと言ってもよいでしょう。
回路合成
シミュレーションがOKとなったら,回路記述から実際の回路を合成する作業が可能になります。この作業は,部品をどこに配置しどう接続するのか,という配置配線の作業が含まれます。昔の回路作製であれば,74シリーズのICなどを基板に配置してリード線とハンダごてで配線する作業になります。
ピン割り当て
FPGAを使ってハードウェア設計をする場合,ピン割り当て(pin assignment)の作業が必要となることがあります。回路記述で設定した入出力信号を実装の対象となる(“ターゲット”となる)FPGAのピンに割り当てます。
ピン割り当ては何も指定しなければソフトウェアツールが自動的に行います。入出力信号の総ビット数が少ない場合はソフトウェアツールにおまかせでも問題ないでしょう。しかし,FPGAと他の回路を接続するときなど信号とピンの関係を固定しておきたい場合もあります。また,信号の総ビット数が多くなった場合は,ソフトウェアツールおまかせのピン割り当てでは,関連のある信号がバラバラに配置されてしまい,作業が面倒になります。
そこで,入出力信号とFPGAのピンの対応関係をユーザが明示的に設定するための作業として,ピン割り当てが必要となります。
この作業は,ターゲットとなるFPGAの内部構造に依存します。ユーザが設定した割り当てが物理的に不可能なこともあります。また,ピン割り当てを優先すると,信号の遅延などが当初の仕様を満たさなくなってしまうこともあります。そうなると,回路合成まで戻って最適化のパラメータを設定するなどの作業が必要になります。
基板の設計・作製
一般にFPGAのピン数は非常に多くなります。144ピンとか484ボール(Ball Grid Array, BGAの場合)などです。信号をFPGAの外部と接続するためには,基板に実装する必要があり,基板を設計し,さらにその上にFPGAを実装することは,個人レベルでは大変な作業になります。そこで,FPGAを搭載したプリント基板,例えば秋月電子通商の製品などが市販されています。
さらに,FPGAを基板に実装してあるだけでは不十分で,回路の合成データをFPGA内部や外部のメモリに書き込むための回路も必要となります。
このため,必要最小限の周辺回路も搭載したFPGAの性能評価用の基板(Evaluation BoardやBreakout Boardなどと呼ばれる)が入手可能です。大量生産を目的としない研究室での用途やアマチュアの電子工作レベルでは,これを使うとよいでしょう。
コメント