FPGAを使い始めるための基礎知識 ―― 開発フローとやるべき作業を理解する

皆川 翔

 

2.設計の流れ

 FPGAの設計の基本的な流れを図5に示します.開発における仕様策定や検証などは含んでいません.



図5 FPGAの設計の基本的な流れ

 

● デザイン・エントリ(機能の記述)

 FPGAの設計では,所望の動作を定義する必要があります.この際によく用いられているのは,VHDLやVerilog HDLというIEEEで規格化されているハードウェア設計専用の言語(ハードウェア記述言語)です.回路図(ブロック図)を使うこともあります.
 ハードウェア記述言語は,FPGA向けに限らず,CPLDやASICなどのほかの集積回路の設計にも使用できます.
 図6にVHDLによるコードの例を示します.VHDLを勉強したことのない人には何が書いてあるか分からないかもしれませんが,気にする必要はありません.ここでは雰囲気だけを見てください.
 言語による設計では,ソース・コードの序盤でさまざまな定義を行ってから,動作を記述するのが一般的です.
 1~2行目は,VHDLで標準的な定義の記述です.4~7行目は,この機能の入出力ポートを定義しています.
 9~12行目が動作の記述です.4~7行目で定義したポートが,どのようなふるまいをするのかを記述していきます.




図6 ハードウェア記述言語とハードウェアのイメージ

 

● 論理合成

 設計者が所望の動作を記述することは,FPGAを設計する上で一番重要な部分かもしれません.設計者が自力でなんとかしなくてはいけないからです.
 しかし,論理合成以降は,ほとんどの仕事をFPGA開発ツール任せで進めることができます.FPGA開発ツールによっては,論理合成と,次の工程である配置配線をひとまとめにして「コンパイル」と呼ぶこともあります.コンパイル・ボタンを1回クリックするだけで,最終データが得られるツールもあります.
 ハードウェア記述言語による動作の記述は,動作させるべき機能をある程度抽象的に表現したものです.FPGAで動作させるためには,もう少し具体的な情報が必要になります.
 例えば図6で示したリストの11行目は,「Aという信号とは反対の論理をBという信号へ出力する」という意味です.VHDLを知らなくても,なんとなく意味が分かると思います.ハードウェア記述言語によるコードは,人間には理解しやすいものです.しかし,FPGAにとっては解釈できない抽象的な文字の羅列です.
 そこで論理合成という処理を行います.論理合成は,ハードウェア記述言語によるソース・コードを,ハードウェア素子に変換することです(図7).論理合成ツールは,FPGAメーカやFPGAファミリの特徴に合わせながら回路に変換してくれるということです.




図7 論理合成
米国Synopsys社の論理合成ツールSynplifyの画面を示す.左のウィンドウに並ぶのがソース・コード.右のウィンドウに表示されているのが論理合成結果を回路図で表現したもの.

 

● 配置配線

 論理合成によってLSI向けに変換された回路を,FPGA内部で実際にどのように埋め込むかを決める作業が必要です.これを「配置配線」といいます.
 FPGAの内部には,あらかじめ決められた回路が規則正しく並んでいます.また,回路と回路をつなぐための配線も準備されています.論理合成により変換されたFPGA用の回路をどこに置き,回路同士をつなぐための配線をどの経路でつないであげるかを決定します(図8)



図8 配置配線
配置配線後のチップ上のイメージ.明るい部分が使用された個所を示している.

 

 もちろん最終的にはプリント基板に実装されたFPGAを動作させることが目的ですので,配置配線された回路とFPGAのピンをつなぐ作業も必要です(図9).FPGAの種類によって,設計者が自由に割り当てられるユーザI/Oと,電源やグラウンド(GND)などの専用ピンがあります.ピン配置はデータシートやプリント基板上の配線に合わせて行う必要があります.




図9 ピン配置の指定
FPGAの設計では,どの信号をどのI/Oピンに割り当てるかを指定する必要がある

 

● プログラミング

 FPGA開発ツールによって生成された回路情報を,FPGAに送り込むことを,「プログラミング」または「ダウンロード」といいます.専用のケーブルとソフトウェアを使って行います.
 多くのFPGAは,プログラム素子にSRAMを使用しています.SRAMは揮発性メモリのため,電源を一度OFFにしてしまうと回路情報が消えてしまいます.そこで通常は,FPGAに付随して用意されている不揮発性メモリに対してプログラミングを行います.このメモリは,「コンフィグレーションROM」といいます.デバッグ時などでは,FPGAのプログラム素子に対して直接プログラムすることもあります.
 コンフィグレーションROMは,FPGAに内蔵されている場合と,外付けしなければならない場合があります.プログラム素子が不揮発メモリのFPGAでは必要ありません.

 

● まとめ

 本稿では,FPGAに関する基礎中の基礎となる事項を解説しました.FPGA設計を始めるための事前情報ととらえていただければと思います.
 FPGAは設計者が描いたデザインを実現でき,何回でもプログラミングが可能という点においては,ほかのLSIに比べ自由度が極めて高いデバイスといえるでしょう.自由に設計できる反面,FPGAそのものの設計方法やハードウェアの基礎知識が必要になります.
 急にたくさんの知識を身に付けることはできません.本稿で説明した程度の知識で,FPGA設計のはじめの一歩は踏み出せます.段階に応じて知識を増やしていけばよいのです.経験を積めば,自然とFPGA設計の勘どころが身に付いてくると思います.
 最初はあまり難しい代物ととらえず,楽しみながら設計を体験していただければと思います.



 

参考・引用*文献
(1) TOSHIBA SELECTS XILINX SPARTAN-3 GENERATION FPGAS FOR LATEST LCD TVs,http://www.xilinx.com/prs_rls/2007/design_win/0735_toshibalcd.htm

 



みなかわ・しょう

«  1  2
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日