Comments
Description
Transcript
ハードウェア記述言語による FPGA設計の基礎技術の修得
ハー ドウェア記述言語による FPGA設計の基礎技術の修得 松山幸雄 第三技術室システム設計班 1 はじめに ハードウェア記述言語 HDL ( Hardwar eD e s c r i p t i o n Language)の出現によりプログラムによっ てハードウェア回路(論理回路)を設計できるようになった また PLD ( Progra皿 mable1 ρ g ' c Device) の出現により,プログラムにより容易にデジタル IC回路を専用のオリジナノレ 1Cに創る ことができるようになり , 民生品や特殊品などの組み込み機器で使用されている 本研修では, FP G A上 で VH D L言語による回路作成方法を修得l.-,応用として 8 ピット C P Uソフトマクロ PicoBlaze (KCPSM3) を使用して風速計を作成した 2. F PG Aについて 大規模な回路が 1つの PLD PL_D (frogramm~bl_e _ L o g i cq ~v!ce) 内に作成できるものに CPLD と FPGAがあり,その位置づ けは図 1のようになっている PLD. . ~.. A ND-OAアレイ構造 ・ S i m p l ePLD ・ ・ ヒューズ ( P A L, GAL'・ ) " _ G _ o m p l e x_PJD (C ~LD ) ・ ・ ・ EEPROMセJレ . .a l 1 e l aネ 土 FPGA . . SRAMペースの lUTによる基本論理ブロックのアレイ構造 SRAMセル フラフンユメモリ。アンチヒュ ズ ・ . . . .x i l i n x従 軍Z 裏切断跨プログラム消去ーコンフィグ ROMに.込み I [ 図 Il C P L Dと F P G Aの位置づけ FPGA(FieldProgrammable GateArray)は SRAMベースの LUT(LookUpT a b l e )による基本給理プロックのアレイ構造セルになっており,例えば LUTに AND ゲー トの真理値を書込むことによりセノレを ANDゲート化する 高機能,高集積、大規脱化するに つれユーザの設計開発が長期化すため,その短縮手段として標準回路機能をコアと Lてベンダより 提供され,それにはプログラムによるソフトマクロ ( USB,小規模 CPU(PicoBlaze( 8 b i t) . MicroB l a z e( 32biりなど)と FPGA内臓のハー ドマクロ (DCM( D i g i t a lCl o ckModule),乗算器, DSP,大規 模 CPU(PowerPC(32凶)など)がある 3. V H D L言語について H D Lでよく使われている言語には,記述能力は高くないが記述が簡単な V e r i l o gHDLと記述分 野が広く品刊、記述能力を持つ VH D L( V e r yHighSpeed ICDHL)があり,また V H DLにはゲー ト記述を表すゲ ートレベノレ,回路生成を表すレジスタトランスフアレベ A B s ノ レ( RTL ) , 状態遷移を査すピへイピアレベル,システ c ム全体を表すアーキテクチャレベルの 4つの記述レベノレ がある 研修では VH DLでロジック回路設計のために l 図2 1 半加算器回路 R T L記述で行った 3- 1.VHDLプログラム記述 − 33 − VHDL言語でのプログラム記述方法を )を例として図 3に示す 半加算器回路(図 2 記述は基本的なデザインデータの集まりで ユーザや IEEE標準のパッケージや算術演 算パッケージ等を呼出すためのライブラリ 宣言,データの方向,データ型やパス幅等 ーフイブラリ宣言 l i b r a r yIEEE; useI E E E . s t d _ l o g i c _ 1 1 6 4 . a l l ; ーエンティティ宣言 ・ ・ ・ 外部とのイン告ーフェース部 e n t i t yHallAdderi s po同( A, B: i ns t d ーl o g i c ; S, C outstd_logic); endHalfAdder; 目 外部との接続を表すエンティティ宣言,内 ーアーキテクチャ宣言・・・内部の動作 a r c h i t e c t u r eH a l lAd der_body0 1HallAdderi s s i g n a lD, E:s t d _ l o g i c ; 部処理,内部接続や階層間接続など内部動 begin 作を表すアーキテクチャ宣言より構成され る.エンティティ宣言の port文で,入力信 号 A, B と出力信号(和信号 S,桁上げ信号 C ) ; D <= AorB E<= AnandB ; ; S<= D andE C<= notE ; der_body; endH a I IAd [ 図3 J Vト m Lプログラム の方向,型を指定する.アーキテクチャ宣 Eのデータ型,幅等を 言では,内部信号 D, 指定し, begin文では演算を行いその結果を出力 D, E, S, C に代入する signal文は同時に処理される. またこの半加算器回路をコンポーネント化し全加算器回路の階層下として使用できる . 4. 開発ツーノレ F P G Aの設計の手順は,図 4に示した様に回路入力,論理合成やデザイン変換,マップ,配置 配線を行うインプリメンテーション,各種シミュレーションで検証しながら完成させる これらを ・ n . -kJ>鍋u dco , " " " ' . . , " " , “ 一 I l c Y < no , 5 : __ ‘<1.01 - " 'Ie ~ u. <.o 4 7 . _ 山 一 一u .8 }. 初出.勾=, 恒 一 四 回 目 出 江 川 中 “ 一 ・ 町抱 A. . . ' a . U _ .n . “ パ 山 給量 一 町岡 田町 田田 町一山・. " 23 J--"",,-..,~ "'" .0U"""'" … 即 日 一 一 0 ' 0嶋 胤 日噛 回 ι ", _ " " . . . . . , . " ,, 鑑 定 .. ・' c, , ・ " " . 2e H . . . .制 1 '' . 3 40<1.. 1 1 u t ,"",_L DGIC , n'II.国 ICj 即 時z " “ 世 田 山 山 山 明 日 剛 山u U [ 図 4 1 ' ) , ..~I P, ! ,n : P . 一 回 ' " " . , 1 > <. . 楓 "山 T< .‘, o .. ;, 37 E< _ _ 8 開発手順 " 伺 行う開発ツールは, Xilinx社の統合 副 , j " _ H 回 E 働巴 " 四 九 町 デ ザ イ ンウ インドウ一一一 IntegratedSoftware 開発環境 ISE( Environment)を 使 用 し た こ れ に は DHL(回路)入力,論理合成,シミュレ ーション,デノ〈イスへの回路データ 書 込 等 の 機 能 が あ る 図 5は ISE画 [ 図 5] 1SEウインドウ 面でデザインプログラム構成を示す ソースウインドウ,開発手順を表すプロセスウインドウ,各種レポートやソースプログラム表示を するデザインウインドウ,各種ログ表示するコンソー/ レウインドウから構成されている. 5 . KCPSM3 − 34 − KCPSM3(( K)c o n s t a n tCodedProgrammableS t a t eMachine}は,ソフトマクロ P i c o B l az eの一 つで Xi l i n x祉の FPGA(Spartan, V e r t ex2 )に適したシンプルな 8B i tMicroContro l 1e rでる 構成 KCPSM3A r c h i t e c t u r e 再 開 _" 7 勾 "RaE 震乏1<> π ' S T I 也芸廷 掬 懇切 w匂 OUT _FO 夜 刷"'"苛7 匂 - 四 回 出 回 8bitdat 却諭 ・ 圃 _ ・ ・ ・ 圃 旬 瞬 時 8 bi1: port~蜘閉樋 10b 旬甲田曲四 ..OORESS{"" 島6刊現K汀鷲,","湖 RESεT ClJ( [ 図 61KCPSM3構 成 図 componentkcpsm3 P o r t( address:o u ts t d _ l o g i c _ v e c t o r ( gdownto0 ) ; C l7downto0 ) ; i n s t r u c t i o n:i ns t d _ l o g i c _ v e c t o r porCid:o u ts t d _ l o g i c _ v e c t o r ( 7downto0 ); w r i t c _ s t r o b e:o u ts t d _ l o g i c ; o u t _ p o r t: outs t d_l o g i c _v e c t o r ( 7downto0 ); read _ s tr o b e:o u ts t d _ l o g i c ; i n _p o r t:i ns t d _ l o g i c _ v e c t o r ( 7downto0 ) ; i n t e r r u p t:i ns t d _l ogi c; i n t c r r u p t _ack:o u ts t d _ l o g i c ; r e s e t:i ns t d _ l o g i c ; c l k:i ns t d_l o g i c }; en t ; endc o皿 pon [ 図 7I KCPS闘のコンポーネント定義 (VHDL ) は図 6のようになっており,命令 長 1 8 b i t l w o r d,命令数 令,プログラムメモリ レジスタ数 2 1命 1024wod, 16( 8 b i t ),入・出 カポー ト 数 各 256,スクラッチ・ ノぐッド・メモリ 域) , 64b y t e ( 変数領 1重'剖込み等の仕様で,ソ フトウェア言語はアセンプラを使 用し, DOSでコンパイルする KCPSM3マクロは VHDLソース (kcpsm3, vhd)で供給されており, c o皿 ponentc o n t r o l Por t( address:i ns t d _ l o g i c _ v e c t o r ( gdownto0 ) ; i n s t r u c t i o n: o u ts t d _l o g i c _ v e c t o r ( ] 7downto0 ) ; p r o c _r e s e t: o u ts t d _ l o g i c > ; c l k:i ns t d _ l o g iC endc omponent; ユーザ VHDLソースには KCPSM3のコンポーネントを定 義( 図りすれば良い グラム RO M のコンポーネント定 義である [ 図 81プログラム ROM のコンポーネント定義 − 35 − 図 8はプロ 5. 1 "'7イクロプログラムの書込み プログラム メモリへのマ ROMf O n l l . v h d f 四百主V ROMo P o r tBIodl縦割nory 。 伊明閣前} p r o c _ 噂s o t 3 叩眠附 ー問 mmmm 印刷 I N S T R u c no 村( 1 7: 0 ) K C P S M 3 刷Y ORT [ 7 : 0 ) I N T E R R U P T R E S E T C L K イクロプログ 。 υ T _ P O R7 T (町 ラム書き込み 1 0 [ 7: 0 ) R E A DS T R O B E W R I T ES T R O B E I N T E R R U P TA C K I N S T R U C T I O N [ 1 7: 0 1 A O O R E S S I 9 : 0 1 同町一 は 1)論理合 成時での組込 み 2)プログ AODREs s r , l : l 耳 ラムメモ リへ CLK の直接書き込 みの 2とおり があり.1) e>. v h d <p r o g n a m l U 1 l e > .v <p r o g n <p r o 伊 国n e >. p 盟 1 の場合,アセ ンブ リコンパ [ 図 81 JTAGプログラムローダー イル後作成さ ー」 • kc ps m3吋 *.psm . . . .compile * * . s v f. . . .s e r i a lv e c t o rf ormat • hex2svf付 官 hex* 2xsvf***. s v f* * *. x s v f・ . .x i l i n xs vf • svf •s e tModebscan 1 ・s etCable-pauto • addDevi c e-posi t i o n1f i l e会 * 合 xsvf ruSB •p lay • qUlt れる VHDL(orVerilogHDL)ファイノレ を FPGAの論理合成時に組み込まれ る 2)の場合,プログラムメモリ ROM はデュアノレポー ト RAMを使用してい るので,書込みポートから直接書き込 みことができる 凶 9はコンパイル, 直接書き 込むためのファイノレ変換,オ [ 図 91コンパイノレ,ファイノレ変換 US B書込み ンボー ドの US Bインタフェースを使 用して JTAGを介して FPGAに書き込む ためのパッチファイノレで,論理合成する時間が省略される 6 風速計の製作 応用として風速計を製作した これは平成 14年度専門研修で行った風速計で P ICを F P G A . FPGA: S p a r t a n 3 EXC3S500E . CPLD: CoolRunnerXC2C64A . ConfigPROM: XCF04S '64MbyteDDRSRAM ' 1 0 / 100E t h e r n e t . PS/ 2mouseo rk e y b o a r d . VGAd i s p l a ypo吋 •9 p i nRS-232p o r t s -周波数 50MHz -プログラムダウンロ ド USB ・ 2行 x16文字 LCD ' 8LEDs 4スライドスイッチ l 図1 0 ) ス告一台キットボードの主な仕線 L C D $W. [ 図 1 1 1Spartan3Eスタータキットボード − 36 − に置き換えて行った 使用 Lた評価ボードは X i l i n x社 の Spartan3Eスタータキットボードで FPGA(Spartan3EXC3S500E), CPLD(CoolRunnerXC2C64A)を核としたメモリ ,VGAポート, RS232ポート, LCDなど図 1 0に示した仕 様のものが格載され演習, 実 験のみならず,簡易なパソ コンを構築することもできるようになって い る なおピットストリームファイノレは USBを とおし て , FPGA又はフラッシュメモリヘダウンロードする ボードの概観を図 1 1に示す , ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ーー ー ー ー 一 一ーーーーーーーーー一一一一一一, R O圃 r 一 一 一 ー 一 一 一 F P G AS p a r t a n 3X C目 5 凹E +5Y I , , , , , 11.. ・ 3 . 3 ‘ 02 C P U "時 側 ,~, "" .抑制 i o ! l 山 1 耐 U ・ O M E -360-2 M C A , . , . . . ・ " 例 , . , . " . . , " " ・ 除 " 一 一 一 一 一 一 一 一 一 一 一 一一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 」 S p a r t a n 3 ES t a r t e rK i t l 図 1 21 風 速 計 の構 成図 風速計の構成図は図 12のようになっており,風速計ロータのパルスをカウンタに入力 L,一 秒自主 に CPUに割り込みをかけ, CPUからカウンタの値を読込み, Anemometer製 品で更正した風速値 に換算し , カウンタ値1:共に LCDに出力した また風速計ロータは大和科学教材研究所の理科教 材 で , そ れ に MEMICON社 の ロ ー タ リ エ ン コ ー ダ OME-360を装着し,ロータ出力をパルス出力す るように改良した エンコ ー ダ電源は 5V であるが, FPGA評 価 ボー ドの信号入力端子が LVTTL のため,エンコーダのオープンコ RL:丁目 レクタ 出 力 に は 3.3V を 抵 抗 で プノレアップした .-d< 評 価 ボー ドでは 風速ロータ出力信号にノイズが合 まれるとカウンタに誤差が生じる ため f カウンタの前{図 12の FILTER)に図 13のようなノイ ズを除去するフィノレタ回路を設け た [ 図 13J ノイズ除去回路 フィルタは 4ピ ットのシフ} レジスタと ANDゲー ト , SRレジ スタより 構 成され,シフトレジス − 37 − タに 1 00kHzのクロックを入力することにより 40μsまでのノイズを除去した 風速計の概観は 下図のようになっており, 1秒間隔で風速値が認識できるように 8個 の LEDで左右 4個を交互(:[ 秒毎)に点灯するようにした。 l 軍l i ま 百 十 7 まとめ HDLの出現により論理回路がプログラムで記述できライブラリ,マクロ化されるようになってき た FPGAは高機能,大規模化され使用困難に見えたが高機能な開発ツールや IPマ ク ロ の 充 実 で 使 い 晶 く な っ た 今 回 の 研 修 で は VHDLや FPGAを十分使い切ることは不可能であったが,モ れらを使用するための基礎技術は修得できた最後にこの研修の機会を与えてくださった情報メデ ィア工学科森虞一 郎 先 生 に 深 く 感 謝 し ま す {参考文献1 1)長谷川裕恭 2) 益田 A喜 改訂 rVHDLによるハードウェア設計入門 JCQ出版社 rFPGA活用チュートりアル J 2006/2007年 版 3) Sparlan'3E スタータキットボードユーザガイド CQ出 版 社 X i l i n xLtd 4) P i c oB la z eKCPSM3品 rS b i tMicroC o n t r o l 1e rf o rS p a r t a n S, V i r t e x ' 2andV i r t e x ' 2PRO 5) P i c oB la z eJTAGLoaderQuickUserGuide X i l i n xLtd − 38 −