ハードウェア記述言語による 論理回路設計とFPGAへの実装 1 ハードウェア記述言語による 論理回路設計とFPGAへの実装 1 SPP 2009.8.24 高知大学 高知大学理学部 本田理恵、三好康夫
はじめに FPGAとハードウェア記述言語HDLを用いると、自分の目的にあった専用の論理回路を手軽に実装できる あたかもコンピュータを使ってソフトウェアをプログラミングする感覚でできる(書き換え可能) 現在では数千円ぐらいの安価なものも 専用の論理回路を試作したい HDL記述 module test(A,B,C) …… Endmodule 論理合成, シミュレーション、 書き込み FPGA 書き換え可能
論理回路の実装形式 IC, LSIに実装されるが、通常は書き換えできない フィールドプログラマブルゲートアレイ
ASIC、ゲートアレイ ASIC(Application Specific Integrated Circuit) セルベース (cell base): 設計済みの機能ブロックを配置し、それ以外のロジック回路とこれらの間の配線層を用途に応じて追加。 ゲートアレイ (gate array) 汎用的な回路素子を基板上に配置しておき、顧客の注文を受けてから用途や要望に応じて配線(メーカー側で実施)
FPGAとは FPGA: Field Programmable Gate Array あらかじめ論理素子が配置されたLSI 配線をプログラムして論理回路を実装 書き換えも可能 これらの操作がコンピュータで簡単 にできる→自由設計、試行錯誤可能 書き込み可能な回路規模 >約1,000ロジックエレメント(約20,000 ゲート)以上 Xilinx(ザイリンクス)社、Altera社など 現在では安価に(1個30—100ドル)
歴史 1985年 Xilinx(ザイリンクス)社「XC2000」が世界初のFPGA マイコン、ASIC(組み込み回路)の設計シミュレーションに使用 当初は、コストや使い勝手の問題から一般には普及せず 最近では低価格化し、操作性も向上 マイコンやASICを置き換えることが期待される
FPGA、カスタムIC、ゲートアレイ比較 ASIC (セミカスタムIC) FPGA ゲートアレイ 実装方式 ロジックエレメント+配線 ロジックエレメント+配線用チャネル (顧客の要望に応じてメタル配線) ロジックエレメント+配線用チャネル(ユーザーがコンピュータで配線を書き込める) 書き換え 不可 困難 容易 パフォーマンス 小型、省電力、高集積度、高速 いずれもやや劣る 劣る 開発期間 長 やや短い(ただしベンダー側で製作) 短(ユーザーが試行錯誤できる) 開発単位 多 1個から カスタマイズ性 ◎ ○ △ 市場のシェア 大 普及しつつある
HDLとは HDL (Hardware Description Language):ハードウェア記述言語 論理回路の機能を記述する言語 回路の動作を記述するシステム仕様書のようなものと考えてもよい ゲート化された回路を意識することなく、より高い機能に応じたレベルでの設計を行うことができる C言語に似た部分もある。 Verilog-HDL, VHDLの2つが主流 今回はVerilog-HDL
HDL記述例
HDLによる論理回路実装の流れ この過程は、PCと 専用のソフトウェア でできる。 あたかも、 ソフトウェアを プログラムする 感覚でできる。 書き込み
本授業の目的 HDLによる論理回路の記述法の基礎を学ぶ PCとソフトウェアを用いて、記述したHDLをFPGA開発キットに書き込む過程を体験する 簡単なデジタル回路の実装の練習問題と自由課題を実施する
予定 1 8/24 13:00−13:50 FPGAとHDL(講義) 2 8/24 14:00−14:50 8/24 13:00−13:50 FPGAとHDL(講義) 2 8/24 14:00−14:50 Quartus II 利用方法の説明 3 8/24 15:00−15:50 課題 組み合わせ回路の作成 4 8/27 13:00−13:50 フリップフロップ 5 8/27 14:00−14:50 メッセージの表示 6 8/27 15:00−15:50 自由課題
実験 使用機器 準備 ノートPC(windows XP, パラレルポートつき) RS232Cケーブル1本 PowerMedusa “電源OFFの状態で“PCとPowerMedusaをRS232Cケーブルで接続する。 PCの電源を入れる。 実験室のPCの場合 adminでログインする。 Quatusを起動する(画面デスクトップにあるQuatusのアイコンをダブルクリックする)。 PowerMedusaは、使用する際に電源を入れる(電源用スイッチはないので、電源アダプタコードを接続することが電源を入れることに相当する)。
Power Medusa取扱い注意 落下させたりすることのないよう、慎重に扱う キーやスイッチの操作をするとき以外は、ほこりが入らないようにプラスチックケースのふたを閉める 電源ONのまま、Power Medusaケーブル類の抜き差しを行わない ケーブルの抜き差しを乱暴に行わない 7SEGディスプレイやLEDはスイッチ周辺にあるディップスイッチをONにしないと動かない。動作確認前にONにする(ディップスイッチの位置は口頭で説明します) HDLの変数を7SEGやスイッチなどと関連付けて動作させるには、別途、変数名と実際のFPGAのピンへの割り当て作業が必要(説明する)
Power Medusaブロック図 LED 正論理(1で点灯) SW 負論理(スイッチを押すと0)←注意 7セグ
課題1 次のような条件の回路図を作成する SW1が‘1’の時→ LED1 点灯・LED2 消灯 (LEDは‘1’の時 点灯、 ‘0’の時 消灯とする) //LED module LED(SW1,LED1,LED2); input SW1; output LED1,LED2; assign LED1=SW1; assign LED2=~SW1; endmodule SW1 LED1 LED2 1
実装 設計した回路をQuartusⅡでコンパイル、シミュレー ション、MU200-EC6Sで実機確認する 実機動作では、 SW1はSW_A0 LED1はLED0、LED2はLED7に割り当てることとする ピンアサインはMU200-EC6Sピンアサイン表1.1.xls参照すること。) 資料QuartusⅡで回路設計 参照
課題2 7SEGLEDに学籍番号やメッセージを点灯しよう SW1が‘0’の時、学籍番号が点灯する(1は無表示) SW1はSW_A0 (2番ピン)に割り当てる ヒント 学籍番号「00000000」の場合 7SEGLEDは下図のように表示
ピンアサインメントは アサインメント表 (EXCEL)を参照 A0
表示する番号、メッセージの決定(例) 文字 7SEG表示 2進表示 16進表示 1111 1100 FC
表示する番号、メッセージの決定 文字 7SEG表示 2進表示 16進表示
課題3(余裕のある人) 5者の多数決回路を作成せよ。 5者の意見はSWから入力し、結果はLEDに表示
クロック