HDLを利用した回路設計基礎技術の修得
著者 岡井 善四郎, 松山 幸雄, 篠 競, 白井 治彦, 水野 広治
雑誌名 技術部活動報告集
巻 16 (2010年度)
ページ 13‑18
発行年 2011‑03
URL http://hdl.handle.net/10098/7329
1.はじめに
HD しを利用した回路設計基礎技術の修得
岡井善四郎,松山幸雄,篠 競,白井治彦, 水野広治
( 第三技術室)
私たちの身の回りを見てみると、現在ディジタノレL SIは、テレビ、 DVDレコーダ、携帯電話を はじめとして家電製品の分野に広く使用されており、これらの製品の中で制御中枢としての主要な 働きをしている。また、半導体集積化技術の進歩により、大規模化、複雑化の一途を辿ってきてお り、一昔前の入手による回路図作成による設計は不可能に近くなってきた。そのため近年、ハード ウェア記述言語 (HD L : hardware description language)による設計が主流になってきている。 この設許の特徴と して製品の変更によるリスクが少なく、すばやく対応できることである。
2. FPGA
、
CPLDとその開発方法C P L D/F P GAを使用するためには、これらの素子に回路構成を決めるデータを書き込むこと が必要である。その前にデータを作ることが先決で、データを作るにはパソコンのソフトウェアに 頼ることになる。電子工作者にとって大変ありがたいことに、ザイ リンクス社より無償でC PL D、
F P G A開発ツールが提供されている。
そのひとつが、 WebPACKISE(ISE: Integrated Synthesis Enviroment)である。ザイリンクス社の XC9500またはCoolRunner:ンリーズC P L D、また最新のFP G AであるSpartanやVirtexファミリ に
も対応するモジーノレも追加されている。操作画面もProjectNavigatorにより統合された構成で使い やすくなっている。 本研修ではVersion 10.0、11.5を使用した。
3 .
研修方法、内容研修は参考文献I)に沿ってVHDLによる開発方法を学習した。また、 VHDL文法の補足は参 考文献幻を用いた。 研修では最初にザイリンクス社のH D L開発環境である ISEWebPack (ライセ ンスフ リー)のインス トーノレを行い、同社のSpartan‑3Aスタータキットボード(以下スタータキッ ト)について学習した。さらにHDLのひとつであるVH D L、F PG A、1S
E
やスタータキッ トを使った設計から実装までの一連の流れについての輪読と平行して、いくつかの簡単なデ、ィジタ ル回路を設計 ・製作する実習を行った。以下では、 NAN Dゲート回路を例として、 ISEWebPack (以後、 ISEと略)を使用した回路作成 の流れと、実習の総まとめとして全員が設計製作したス トップウォッチ回路について述べる。
3.1 ハードウェア設計の流れ
library IEEE; .... ISEでは最初、プロジェクトの設定
を行い、次にVHDLソースのスケルト ン(骨格)が作られ、回路設計はその スケルトンを編集して作成していく。
図1は、 NANDゲートの VHDLソー ス で、 ライブラリ部、 entity部、
architecture部から構成する。 entity
use !~~~.~!~~1?~!~_~~6.'!.:~.L~l. ~
I
ライブラリ部 use TEEE.STDJ,OGIC‑^RITH.ALL;r
luse IEEE.STDJ.OGlC̲UNSIGNED.ALL; ..J
entity nanda is i
一 一 ー ー 一 一 『
Port ( X : in STDムOGIC; L I ̲ 山ー却│
Y : in
s r o I . O G I c " ; r ド山
t,部│Z : out S'I'DJ.OGIC); ‑.J cnd nanda:
architecturc Behavioral of nanda
・
8bcgin
} I
mh;'"tu, " 1lII
Z <= not (X and y); end Behavioral;
部は設計する回路プロックの名称と信号 図 1NANDゲートの VHDLソース を定義し、 arcbitecture部は設計する回路の
具体的な動作を記述する。
次に論理合成(SynthesIze)によってソース から回路に変換(ネットリスト変換)される。
これにより"ViewRTL Schematic"でNAND ゲートの論理回路が表示可能になる。
また、ISEでは、入力する信号を作成して
iシミュレーシヨンにより設計回路を検証することがで きる。図2はシミュレーションにより作成されたタイ ミングチャートで、
Z
出カが入力X
,Y
のNAND論 理 出力になっているのが確認できる。UCF(制約)ファイノレはソースファイルentity部の入 出力信号を、スタータキット上の使用するスイッチ、
LED等外部パーツが FPGAに接続されているピン番 号に割当てるもので、実習ではSpar回n3EStarter Kit の入力 X,Yをスライドスイッチ、出力を LEDで使 用した。
次に作成した回路を実現するために必要なパーツ を、使用する FPGAのどこに置いてどう接続するか を行う I皿plementDesign(配置配線)、 FPGAに書 き込むためのデータ生成をする"GenerateProgram File"(ピットファイノレ)のプロセスがあるが、 i盈初 に"GenerateProgram File"を実行することにより こ れ ら の プ ロ セ ス は 自 動 的 に 実 行 す る。FPGA、 Flash PROMへの書込みは、 USB仕様の書込み環 境がスタータキットに含まれており、 iMPACTソフ
トを使用して行う。
3.2 ストップウォッチ回路
図2 '>イミンゲチャート
スタ トボタノ リセシトボタノ共に押されて伝い
パ
⑮
ストヮプ別代タノ リセットポタノ共に仰されて伝い
図3ストップウォッチ白状態遷移図
図4 ストップウォッチ
他の実習として、組合せ回路としてセレクタ一、順序回路として3ピットカウンタなどを、そし
てステートマシン(幾つかの状態で状態遷移するプログラム)としてストップウォッチを作成した。
図3はストップウォッチの状態遷移図を示す。状態は初期化、動作中、停止中の3状態から成り、
リセット、スタート、ストップの各スイッチで状態遷移する.図4はスタータキット上に動作させ たストップウォッチを示す.本ボードの発振器出力、 50M Hzを1Hzにダウンカウントし、秒カウ ンタのクロックとしている。秒表示には、 2桁 の7セグメント LED(オプションモジューノレ)を使 用し、発恒
i
排出カを分周して作った 500Hzの信号でダイナミジク駆動してフリッカレスの表示を実 現している。4 .
H D L言 筒修 得 の た め の 応 用 回 路 の 製 作輪日韓及び実習した内容に基づき研修受講者各自が
V
I‑IDLをJ1H
、た応用回路の製作を行った。こ こではその応用回路を紹介する。4. 1 電子サイコロの製作
図5 電子サイコ口 4.2 スロットマシン
汎用のロジジク IC、CP U、専用 IC、CP L 01
FPGA
を使用する方法がある。この程度の回路では、どれが良いか優劣は付け難い.研修ということで、
CPLDを使用した電子をサイコロ製作した。
CPLD/FI'
GA
内部にはたくさんのゲート回路 や配線用機能が備わっており、ユーザが内部のディジ タノレ回路を自由に股計できる.すなわち目的に応じた 回路 (6進カウンタ回路とデコーダ部分)をCPLD/FPGA で、 V/‑IDL雷稀から仕立てあげることができる九 図5に製作した世子サイコロを示す。スタータキシトと格載されている LCD文字表示総とそれに装荷した2個の7セグメ J ト表示器 を主に使用して、 2桁のスロットマシンを実装した。操作はリセット、スタート、左右ストップの 4個のボタンで行い、その結果等は LCDにメッセージ表示した。リセットボタンで回路をリセッ トし、 LCDに スロジトマVン"を表示する.スタートボタンで、左桁カウンタと 7秒後に右桁カ ウンタに
o
から9の数字を 10Hzの速度でシーケンンヤノレ表示(回転表示)し LCDに スタート ーー >"を表示する.各桁のストップボタンで対応するカウンタ回転表示を停止し、 2桁の数字がス タ ト.11待起動
!桁...
特起動
図6桁力ウンタ白状態遷移図 図7 スロットマシシ
一致すれば LCDに オ メ デ ト ウ " を 異なれば"ザンネン
を表示する。図6 は桁カウンタの状態 遜移図を示す。"停止 中 はリセット後又 は桁カウンタの回転
停止、"動作中 はカウンタの回転表示中、"待機中 はスタートボタン押下後、右桁カウンタが回 転開始までの状態を表す。なお、左桁カウンタはスタートボタン押下後、直ちに"動作中 状態に 遷移する。 LCDの文字表示は、 一般にプロセッサを用いてプログラムで行うが、本研修では上記の
4メッセージをHDLで行った。動作写真を図7に示す。
4.3 キーボード入力のLCD表示 回路
本研修で使用したスタータキットには Ethernetや VGAなど、機々なインターフェイスが搭載さ れているが,制御回路の作成が比較的簡単と思われる PS/2ポートと、キャラクタ LCDを利用して キーボード入力を LCDに表示する応用回路を設計製作した。図8に回路モジューノレ構成図を、図
9に 論 理 合 成 の 概 要 (一部)をそれぞれ示す。
作成した回路は3つのモジュールから構成され
る。PS/2キーボードからのスキャンコードを取込 むモジューノレ (KBD̲blk)、LCDの制御モジュー ノレ(LCD̲blk)、そしてこの 2つのそジュールを包 括して、スキャンコードからASCIIコードへの変 換などを行うモジュール(kbd21cd)である。
KBD̲blkでは、キーボードからのスキャンコー ドを直並変換し、パリティチェックを行い、 8ピ ットのパラレノレデータと、ストロープ信号を生成 してし、る。
LCD blkはアドレス/デー夕、制御信号入出力 により、LCD表示器に適切なタイミングで表示デ ータを出力する。
キーボー ドからは、キーの 「押 すJ
r
離 すJの動 作でスキャンコードが出力される。たとえば、キ ー 1"の場合、 「押す」で 16H、「離 すjで FOH、 16Hが出力される。このため、 kbd21cdで適切にSpartan ‑3Aスタータキットボード
図8 回路モジュール構成図
図9 論 理 合 成 の 概 要 ( 部) スキャンコードを選択してASCIIコードに変換し、同時にアドレスや制御信号を生成している。
4.4 スタータキットを用いたディジタノレ時計の設計と製作
本研修で用いた VHDLとスタータキットを利用してディジタノレ時計の設計と製作を行った。時刻 の表示にはボードに備わった 16ケタのキャラクタ LCDを用い、時刻初期設定などの入力設定にはボ ー ド上に用意されている各種押しボタンスイッチ類を利用した。
図 10にその構成図を示す。ディジタノレ時計の動作の中心部であるステートマシンには参考文献
。のストップウォッチの状態遷移図を参考に、午前・午後および 「時」設定状態、 「分J設定状態、
「秒」設定状態を追加し、押しボタンスイッチにより時刻の初期設定を行えるようにした。この時、
プリセットボタンが押されている聞は各設定値がインクリメン卜されるように工夫した。更に通常 のディジタノレ時計に備わっている動作時の秒のゼロ合わせ状態を追加した。また LCD表示のための
制御プログラムには、本キットのマニュアノレを参考に、初期設定や各種信号のためのタイミングを VHDLを用いて記述した。完成したディジタノレ時計の動作写真を図 11に示す。
崎銅盤定期
,イ ヲ 予 胴
島町リ〆
ン相一 レト 情マ
PJ1リ
ι引 町 山
骨イス姐闘
LCD表示部 ク
時刻7リセヲトボタン 図10ディジタル時計の構成 図 11 LCD垂示と各種設定スイッチ
4.5 VHD LによるシンプノレM PUの製作
本研修で基礎学習を行った VHDLを用いて、スタータキットの FPGAに参考文献3)の情報を基 にした非常に簡単な 16ピットの MPU回路を製作した。製作したMPUは、キットボード上の基本 的な入出力であるスライドスイッチ、押しボタンスイッチ、LED、そしてキャラクタ LCDと拡張 コネクタに追加した 7セグメント LEDをメモリマップド 1/0 としてアクセスすることができる。 MPU自体は、命令とデータパスを分慨したハーバードアーキテクチャで 16bitのRISC(命令を 簡略化)型プロセッサ (MPU)となっている。基本的な仕様
を図 12に示す。構成はプロック図 13のように、r.r術積算、 レジス夕、メモリ 、越本クロックなどの回路を VHDLにてコ ンポーネントで定義し、基本動作の流れである、フェッチ、
デコード、実行、ライトパックの各プロックに必要な回路と して記述している。命令セットは 32命令が定義可能だが、 24命令のみとなっている(表 1は主な命令セット)。尚、 プログラムはVHDLの中でROMとして記述しているが、 機械語で作成する必要があるため、簡易クロスアセンプ
ラを作成しニーモニックでの記述を可能とした。
今回、応用回路として単純な構成のMPUをVHDLで 構築したが、CPUの基本的な構成や動作を理解するには VHDLは有効である。課題
としては、入力の割り込み 機 能 や RAM処理の配列化、 外部ファイノレからのプログ
ラム読込みなどの機能追加 や変更が挙げられる。
クロック 12.5MHz データ幅 16bit アドレス幅 8bit
レジスタ 16bitx8
R浪M:16bitx8 命令セット数 24
プログラム ROM
1/0 メモリマップド 1/0 図 12基本仕様
表1主な命令セット 命一石す下一「一一 向容 mv rl r2
Idl rl data add rl r2 cmp rl r2 and rl r2 cal rl addr
rl←r2 rl (0‑7)←data rl‑rl+r2 rl : r2? rl←rl&r2 r 1←PC; goto addr
exec
図 13構成ブロッウ図
5. まとめ
第三技術室の専門研修として CPLDに関する研修を平成 13年に実施した。今回、新たなメンバ ーでハードウェア記述言語による回路設計基礎技術の修得を目的に本研修を実施した。開発環境に はザイリンク社の開発ツールである rISEWebPACKJを用いた。 Ver10、11をインストールし、
rSpartan.3Aスタータキット」による実習を行い、理解を深めた。
研修後半は自己研修として研修を進め、HDLによる簡単な回路製作については受講者全員がほぼ 修得できた。またこれを基に、公開講座等に利用可能ないくつかの簡単な応用回路やその制御プロ グラムを設計・製作した。次年度からは今回得られた成果を生かした地域活動等(一日遊学、公開 講座等)に役立て行く予定である。
6.謝 辞
この研修を行うにあたって実験指導書の使用を快く許可下さった情報メデ、イア工学科講師福間慎治先生 に深く感謝し、たします。
研 修 日 程
専 門 研 修 実 施 日 程
実 施 日 │ 実 施 時 間 主 な 研 修 実 施 内 容 7月 7日 (水) 9: 00~11 : 0
。
本年度専門研修日程および内容等の検討 7月 14日 (水) 9 : 00~11 : 00 参考図書の輪読7月 21日 (水) 9 : 00~11 : 0
。
ザイリンクス社開発環境ISEWebPackインストーノレ 8月 5日 (木) 9 : 00~11 : 00 ザイリンクス社開発環境ISEWebPack再インストーノレ8 月 6 日 ~11 月 9 日 (26時間程度) 自己研修 スタータキットの使用方法 11月 10日 (水) 9 : 00~11 : 00 テキストの輪読
11月 17日 〈水) 9 : 00~11 : 0
。
ハードウェア設計練習 p3~6p I)11月 24日 (水) 9 : 00~11 : 0
。
ハードウェア設計練習 p8~12p I)セレクタ whenelse文 12月 1日 (水) 9 : 00~11 : 0。
内部信号と signal宣言 カウンタの設計演習12月 10日 (水) 9 : 00~11 : 0
。
カウンタの動作確認、ストップウオッチの作成12 月 11 日 ~2 月 15 日 (14時間程度) 自 己 研 修 応 用 回 路 の 設 計 製 作 等
2月 15日 (水) 9:00~10:00 技術発表会に向けて、予稿原稿の方向性等の打ち合わせ
2 月 16 日 ~3 月 14 日 (12時間程度) 自 己 研 修 応 用 回 路 の 設 計 製 作 等
参 考 文 献
1)学生実験指導書「情報工学実験皿J 福井大学工学部 情報メディア工学科
2)図解 V H D L実習 f第2版] ゼロからわかるハードウェア記述言語堀枝太郎 森 北 出 版K K 3)シンプノレな CPUを作ってみよう 井津裕司 http://laputa.cs.shinshu'u.ac.jp/~yizawa/design_cpu/