Comments
Description
Transcript
HDしを利用した回路設計基礎技術の修得
HDしを利用した回路設計基礎技術の修得 岡井善四郎,松山 幸雄,篠 競 ,白井治彦, 水野広治 ( 第三技術室) 1.はじめに 私たちの身の回りを 見てみると、現在ディジタノレL SIは、テレビ、 DVDレコーダ、携帯電話 を はじめとして家電製品の分野 に広く使用されており、これらの製品の中で制御中枢としての主要な 働きをしている。また、半導体集積化技術の進歩により、大規模化、複雑化の一途を辿ってきてお り、一昔前の入手に よる回路図作成による設計は不可能に近くな ってきた。そのため近年、ハー ド ede s c r i p t i onlanguage) による 設計が主流になってきて いる 。 ウェア記述言語 (HD L :hardwar この設許の特徴と して製品の変更によるリスクが少な く、すばやく対応できることである。 2. FPGA、CPLDとその開発方法 C P L D/F P GA を使用するためには、これらの素子に回路構成を決めるデータを書き込むこと が必要である 。 その前 にデータを作ることが先決で、データを作るにはパソコンのソフトウェアに 頼ることになる。電子 工作者 にとって大変ありがたいことに、ザイ リンクス社より無償で C PL D、 F P G A開発ツールが提供 されている 。 そのひとつが、 W ebPA CKI S E( I SE:IntegratedSynthe s i sEnvi roment )である。ザイリンクス社の XC9500または Cool R u n n e r : ンリ ーズ C P L D、また最新の FP G Aである S partan やV irtexファミリ に roj ectNavigatorに よ り統合された構成で使い も対応するモジーノレも追加されてい る。操作画面も P 0. 0、 11 .5を使用した。 やすくなって い る 。 本研修では Version 1 3.研修方法、内容 研修は参考文献I)に沿って VHD Lによる開発方法を学習した。また、 VHD L文法の補足は参 S EWebP a ck (ライセ 考文献幻を用いた。 研修では最初にザイリンクス社の H D L開発環境である I ンスフ リー)のインス トーノレを行い、同社の Spartan -3Aスタ ー タキットボード(以下スタータキッ ト)について学習 した。さらに H DLのひとつである VH D L、 F PG A、 1SEやスタータキッ トを使った設計から 実装ま での一連の流れについての輪読と 平行 して 、いくつかの簡単なデ、ィジタ ル回路を設計 ・製作する実習 を行った。 SEWe bPac k (以後、 I S Eと略)を使用した回路作成 以下では、 NAN Dゲート回路 を例 として、 I の流れと、実習の総まとめとし て全員が設計製作したス トップウォッ チ回路について述べる。 − 13 − 3 . 1 ハードウェア設計の流れ ISEでは最初、プロジェクトの設定 を行い、次に VHDLソースのスケルト ン(骨格)が作られ、回路設計はその スケルトンを編集して作成していく。 図 1は 、 NANDゲートの VHDLソー ス で 、 ライブラリ部、 en t i t y 部、 l i b r a r yI E E E ; . . ~ I ライブラリ部 u s e!~~~.~!~~1?~!~_~~6.'!.:~.L~l. u s eT E EE .S T DJ , OG IC ^ R ITH.ALL ; r l J.OGlC _ UNSIGNED.ALL ;. . J u s eI E E E . S T D e n t i t yn a n d ai s i 一 一 ー ー 一 一 『 P o r t(X:i n STD ムO G I C ; L I_ 山 ー却│ Y:i ns r o I . O G I c " ; ド山t,部│ Z: o u tS ' I 'D J. O G I C ) ; . J c n dn a n d a : 8 a r c h i t e c t u r cB e h a v i o r a lo fn a n d a・ b c g i n m h; ' " t u, " 1 l I Z<=n o t(Xa n dy ) ; e n dB e h a v i o r a l ; r }I I a r c h i t e c t u r e 部から構成する。 e n t i t y A N Dゲートの V H D Lソース 図 1N 部は設計する回路プロックの名称と信号 r c b i t e c t u r e部は設計する回路の を定義し、 a 具体的な動作を記述する。 次に論理合成 (SynthesI z e )によってソース から回路に変換(ネットリスト変換)される。 これにより "ViewRTLSchematic " で NAND ゲートの論理回路が表示可能になる。 図 2 '>イミンゲチャート また、 I SEでは、入力する信号を作成して i シ ミュレーシヨンにより設計回路を検証することがで きる。図 2はシミュレーションにより作成されたタイ ミングチャートで、 Z出カが入力 X,Yの NAND論 理 スタ トボタノ リセシトボタノ共に押されて伝い パ 出力にな っているのが確認できる。 UCF( 制約)ファイノレはソ ースファイル e n t i t y部の入 出力信号を、スタ ータキット 上の使用するスイッチ、 ⑮ LED等外部パーツが FPGAに接続されているピン番 号に割当てるもので、実習では Spar回n3ES t a r t e rKit の入力 X, Y をスライドスイッチ、出力を LEDで使 ストヮプ別 代 タノ リセットポタノ共に仰されて伝い 図 3 ストップウォッチ白状態遷移図 用した。 次に作成した回路を実現するために必要なパーツ を、使用する FPGAのどこに置いてどう接続するか を行う I 皿p lementDes i gn( 配置配線)、 FPGAに書 き込むためのデータ生成をする " GenerateProgram 盈初 Fil e " (ピットファイノレ)のプロセスがあるが、 i に" GenerateProgram F i l e "を実行することにより こ れ ら の プ ロ セ ス は 自 動 的 に 実 行 す る 。 FPGA、 Flash PROMへの書込みは、 USB仕様の書込み環 境がスタータキットに含まれており、 iMPACTソフ 図 4 ストップウォッチ トを使用して行う 。 3 . 2 ストップウォッチ回路 他の実習として、組合せ回路としてセレクタ一、順序回路として 3ピットカウンタなどを、そし − 14 − てステ ー トマシン(幾つかの状態で状態遷移するプログラム)としてストップウォッチを作成した。 図 3はストップウォッチの状態遷移図を示す。状態は初期化、動作中、停止中の 3状態から成り、 リセット、スタート、ストップの各スイッチで状態遷移する. 図 4はスタータキット 上に動作させ 0 M Hzを 1Hzにダウンカウントし、秒カウ たストップウォッチを示す.本ボードの発振器出力、 5 ンタのクロックとしている。秒表示には、 2桁 の 7セグメント LED(オプションモジュ ーノレ)を使 排出カを分周して作った 500 Hzの信号でダイナミジク駆動してフリッカレスの表示を実 用し、発恒 i 現している。 4 . H D L言 筒修 得 の た め の 応 用 回 路 の 製 作 輪日韓及び実習した内容に基づき研修受講者各自が VI IDLをJ1 H、た応用回路の製作を行った。こ こではその応用回路 を紹介する。 4 .1 電子サイ コロの製作 汎用のロジジク IC、 C P U、専用 IC、 C PL01 FPGAを使用する方法がある。この程度の回路では、 どれが良いか優劣は付け難い.研修ということで、 CPLDを使用した電子をサイコロ製作した。 CPLD/F I 'GA内部にはたくさんのゲート回路 や配線用機能が備わっており、ユーザが内部のディジ タノレ回路を自由に股計できる.すなわち目的に応じた 6 進カウンタ回路とデコーダ部分)を CPL D /F P G A 回路 ( で 、 V/ IDL 雷稀から仕立てあげることができる九 図 5 電子サイコ口 図 5に製作した世子サイコロを示す。 4 . 2 スロットマシン スタ ータキシトと格載されている LCD文字表示総とそれに装荷した 2個の 7セグメ J ト表示器 を主に使用して、 2桁のスロットマシンを実装した。操作はリセット、スタート、左右ストップの 4個のボタンで行い、その結果等は LCDにメッセージ表示した。 リセットボタンで回路をリセッ トし、 LCD に“スロジトマ V ン"を表示する.スタートボタンで、左桁カウンタと 7秒後に右桁カ から 9の数字を 10Hzの速度でシーケンンヤノレ表示(回転表示)し LCDに“スタート ウンタに o ーー >"を表示する.各桁のストップボタンで対応するカウンタ回転表示を停止し、 2桁の数字が 一致すれば LCDに “オメデトウ"を 異なれば"ザンネン スタト “を表示する。 図 6 . 1 1 待起動 は桁カウンタの状態 遜移図を示す。"停止 ! 桁 . . . 中“はリセット後又 特起動 図 6 桁力ウンタ白状態遷移図 図 7 スロットマシシ − 15 − は桁カウンタの回転 停止、"動作中“はカウンタの回転表示中、"待機中“はスタートボタン押下後、右桁カウンタが回 転開始までの状態を表す。 なお、左桁カウンタはスタートボタン押下後、直ちに"動作 中“状態に 遷移する。 LCDの文字表示は、 一般にプロセッサを用いてプログラムで行うが、本研修では上記の 4メッセージを HDLで行った。動作写真を図 7に示す。 4.3 キーボード入力の LC D表示 回路 本研修で使用したスタータキットには E thernetや VGAなど、機々なインターフェイスが搭載さ れているが ,制御回路の作成が比較的簡単と思われる PS / 2ポートと、キャラクタ LCDを利用して キーボード入力を LCDに表示する応用回路を設計製作した。図 8に回路モジューノレ構成図を、図 9に 論 理 合 成 の 概 要 (一部)をそれぞれ示す。 作成した回路は 3つのモジュールから構成され る。PS / 2キー ボードからのスキャンコードを取込 S p ar ta n-3 Aスタータキットボード むモジューノレ ( KBD_b l k) 、LCDの制御モジュー ノ レ (LCD _b l k )、そしてこの 2つのそジュールを包 括して、スキャンコードから ASCIIコードへの変 換などを行うモジュール ( k b d 2 1 c d )である。 KBD _b l kでは、キーボードからのスキャンコー ドを直並変換し、パリティチェックを行い、 8 ピ 図 8 回路モジュール構成図 ットのパラレノレデータと、ストロープ信号を生成 してし、る 。 LCDb l k はアドレス/デー夕、制御信号入出力 により、 LCD表 示器に適切なタイミングで表示デ ー タを出力する。 キー ボー ドからは、キーの 「 押 す Jr 離 す Jの動 作でスキャンコードが出力される。たとえば、キ ー“ 1 "の場合、 「 押す」で 16H、「 離 す j で FOH 、 図 9 論理合成の概要( 部) 16Hが出力される。こ のため、 k b d 2 1 c dで適切に CIIコードに変換し、同時にアドレスや制御信号を生成している。 スキャンコードを選択して AS 4. 4 スタータキットを用いたディジタノレ時計の設計と製作 本研修で用いた VHDL とスタータキットを利用してディジタノレ時計の設計と製作を行った。 時刻 の表示にはボードに備わった 1 6ケタのキャラクタ LCDを用い、時刻初期設定などの入力設定にはボ ー ド上に用意されている各種押しボタンスイッチ類を利用した。 図 10にその構成図を示す。ディジ タノレ時計の動作の中心部であるステートマシンには参考文献 。のストップウォッチの状態遷移図を参考に、午前・午後および 「 時」設定状態、 「 分J設定状態、 「 秒」設定状態を追加し、押しボタンスイッチにより時刻の初期設定を行えるようにした。この時、 プリセットボタンが押されている聞は各設定値がインクリメン卜されるように工夫した。更に通常 のディジタノレ時計に備わっている 動作時の秒のゼロ合わせ状態を追加した。また L C D表示 のための − 16 − 制御プログラムには、本キットのマニュアノレを参考に 、初期設定や各種信号のためのタイミングを VHD Lを用いて記述した。完成したディジタノレ時計の動作写真を図 1 1に示す。 崎銅盤定 期 ,イ ヲ 予 胴 島町リ〆 PJ1リ 情マ レト 相 一ン ι引 町 山 骨 イ 姐 ス 闘 LCD表示部 ク 時刻 7リ セヲト ボタ ン 図1 0ディジタル時計の構成 図 1 1L C D垂示と各種設定スイッチ 4 . 5 VHDLによるシンプノレ M PUの製作 本研修で基礎学習を行った VHDLを用いて 、スタ ー タキットの FPGAに参考文献3)の情報を基 に した非常に簡単な 1 6ピットの MPU回路を製作した。製作した MPUは、キットボード上 の基本 的な入出力であるスラ イ ドスイッチ 、押 しボタンスイッチ、LED、そしてキャラクタ LCDと拡張 / 0 としてアクセスすることができる 。 コネク タに追加した 7セグメント LEDをメモリマップド 1 MPU自体は、命令とデータパスを分慨したハーバードアーキテクチャで 1 6 b i tの RISC (命令を 簡略化)型プロセッサ ( MPU)となっている。基本的な仕様 を図 1 2に示す。構成はプロック 図 1 3のように、r.r術積算 、 レジス夕 、メモリ 、越本クロックなどの回路を VHDLにてコ ンポーネントで定義し、基本動作の流れである 、 フェ ッチ、 デコード、実行 、ラ イ トパックの各プロックに必要な回路と して記述している。命令セットは 32命令が定義可能だが 、 表 1 主な命令セット 命一石す下一「一一 向容 2 r l← r m vr lr 2 l(07 ) ← d a t a I dlr ld a t a r r l r l + r 2 a d dr lr 2 r l: r 2 ? c m pr lr 2 r l← r l & r 2 a n dr lr 2 r1 ←P C ;g o t oa d d r c a lr la d d r 24命令のみとなっている(表 1は主な命令セット)。尚 、 プログラムは VHDLの中で ROMとして記述しているが 、 機械語で作成する必要があるため、簡易クロスアセンプ ラを作成しニーモ ニ ックでの記述を可能とした。 e x e c 今回、応用回路として単純な構成の MPUを VHDLで 構 築したが、 CPUの基本的な構成や動作を理解するには VHDLは有効である。課題 としては、入力の割り込み 機 能 や RAM処理の配列化 、 外部ファイノレからのプログ ラム読込みなどの機能追加 や変更が挙げられる。 クロック 1 2. 5 M Hz データ 幅 1 6 b i t アドレス幅 8 b i t レジスタ 1 6 b i t x 8 R 浪M :1 6 b i t x 8 命令セット数 2 4 プログラム ROM 1 / 0 メモリマップド 1 / 0 図 12 基本仕様 − 17 − 図1 3構成ブロッウ図 5 . まとめ 第三技術室の専門研修として CPLDに関する研修を平成 1 3年に実施した。今回、新たなメンバ ーでハードウェア記述言語による回路設計基礎技術の修得を目的に本研修を実施した。開発環境に はザイリンク社の開発ツールである rISEWebPACKJ を用いた。 Ver10、 1 1をインストールし、 rSpartan.3Aスタータキット」による実習を行い、理解を深めた。 研修後半は自己研修として研修を進め、 HDLによる簡単な回路製作については受講者全員がほぼ 修得できた。またこれを基に、公開講座等に利用可能ないくつかの簡単な応用回路やその制御プロ グラムを設計・製作した。次年度からは今回得られた成果を生かした地域活動等(一日遊学、公開 講座等)に役立て行く予定である。 6 . 謝辞 この研修を行うにあたって実験指導書の使用を快く許可下さった情報メデ、イア工学科講師福間慎治先生 に深く感謝し、たします。 研修日程 専 門 研 修 実 施 日 程 実施日 7月 │実施時間 7 日 (水) 主な研修実施内容 。 。 9:00~11 :0 本年度専門研修日程および内容等の検討 7月 14日 (水) 9:00~11 :00 参考図書の輪読 7月 21日 9:00~11 :0 8月 (水) 5 日 (木) 8 月 6 日 ~11 月 9 日 ザイリンクス社開発環境 ISEWebPackインストーノレ 9:00~11 :00 ザイリンクス社開発環境 ISEWebPack再インストーノレ ( 2 6時間程度) 自己研修 スタータキットの使用方法 1 1月 1 0日 (水) 9:00~11 :00 テキストの輪読 1 1月 1 7日 〈水) 9:00~11 :0 ハードウェア設計練習 1 1月 24日 (水) 9:00~11 :0 ハードウェア設計練習 p8~12p I)セレクタ when 1日 (水) 9:00~11 :0 内部信号と s i g n a l宣言 9:00~11 :0 カウンタの動作確認、ストップウオッチの作成 1 2月 12月 10日 (水) 12 月 11 日 ~2 月 15 日 2月 1 5日 (水) 2 月 16 日 ~3 月 14 日 。 。 。 。 p3~6p I) e l s e文 カウンタの設計演習 ( 14時間程度) 自 己 研 修 応 用 回 路 の 設 計 製 作 等 9:00~10:00 技術発表会に向けて、予稿原稿の方向性等の打ち合わせ ( 1 2時間程度) 自 己 研 修 応 用 回 路 の 設 計 製 作 等 参考文献 1)学生実験指導書「情報工学実験皿 J 2) 図解 V H D L実習 f 第 2版] 3) シンプノレな CPUを作ってみよう 福井大学工学部 情報メディア工学科 ゼロからわかるハードウェア記述言語堀枝太郎 井津裕司 森北出版 K K http://laputa.cs.shinshu'u.ac.jp/~yizawa/design_cpu/ − 18 −