20
ハハハハハハハハハハ ハハ ハハ ハハハハハハハハハハハ / ハハハハハハハハ ハハハハハハハハハハ

Hardware Design Exercises

Embed Size (px)

Citation preview

Page 1: Hardware Design Exercises

ハードウエア設計演習小山 幸伸新領域融合研究センター / 国立情報学研究所大分工業高等専門学校

Page 2: Hardware Design Exercises

「ハードウエア記述言語」ハードウェア記述言語Hardware Description Language (HDL) とは、デジタル集積回路を設計するためのコンピュータ言語です。

Page 3: Hardware Design Exercises

電子回路の復習様々な論理回路A B Z

L L LL H LH L LH H H

A B ZL L LL H HH L HH H H

A B Z

L L LL H HH L HH H L

A Z

L HH L

(1) Z=AB (2) Z=A+B

(3) Z=A’

(4) Z=A’B+AB’

Page 4: Hardware Design Exercises

基礎演習 , 工学実験の復習74?? シリーズや 14??? シリーズなどのロジック IC の動作確認をブレッドボード上でした(はず)。回路が大規模になると、配線 , デバッグ , 仕様変更が大変。

7400

Page 5: Hardware Design Exercises

プログラマブル・デバイスの利用

XILINX CoolRunner-IIXC2C32A6VQ44C

XILINX SPARTAN-6LXXC6SLX9-2TQG144C

• CPLD(Complex Programmable Logic Device)

FPGA(Field-programmable gate array)

2000 円くらい300 円くらい

Page 6: Hardware Design Exercises

プログラマブルデバイスの利用例いずれも、入力信号の処理に、XILINX の FPGA を利用している。

約 10,000アンテナ

66アンテナ

Page 7: Hardware Design Exercises

ハードウェア記述言語の色々Verilog HDL VHDL (VHSIC HDL,     Very High Speed Integrated Circuits

HDL) SystemC など

Page 8: Hardware Design Exercises

NOT 回路(not_gate.vhdl)  ①

1: library IEEE; 2: use IEEE.STD_LOGIC_1164.all; 3: 4: entity NOT_GATE is 5: port( 6: A : in std_logic; 7: Z : out std_logic); 8: end NOT_GATE; 9:

ライブラリ名

パッケージ名

エンティティ部は、1つの設計単位を表現し、回路名 ( エンティティ名 ) と外部のインターフェイスを定義します。

Page 9: Hardware Design Exercises

NOT 回路(not_gate.vhdl)  ②

10: architecture NOT_GATE_A of NOT_GATE is11: begin12: Z <=   not A;13: end NOT_GATE_A;

アーキテクチャーは、エンティティ定義された回路の内部動作を定義する。アーキテチャー名

エンティティ名

ここまでは、 A と Z の関係を定義したのみ。動作確認には、 A に入力する必要あり。

Page 10: Hardware Design Exercises

シミュレーターを用いたシミュレーション GHDL: VHDL のコンパイラの実装のひとつ。

GTKWave: 入出力波形の可視化。

Page 11: Hardware Design Exercises

動作確認のための、 Testbench の作成 ①(not_gate_tb.vhdl)

1: library IEEE; 2: use IEEE.STD_LOGIC_1164.all; 3: 4: entity NOT_GATE_TB is 5: end NOT_GATE_TB; 6: 7: architecture SIM of NOT_GATE_TB

is 8: signal A : std_logic; 9: signal Z : std_logic;

空のエンティティ

シミュレーション用のアーキテクチャー名 SIM を定義する。信号名とデータ・タイプを指定する。

Page 12: Hardware Design Exercises

続:動作確認のための、 Testbench の作成 ②(not_gate_tb.vhdl)

10: component NOT_GATE11: port(12: A : in std_logic;13: Z : out std_logic14: );15: end component;16:

ポートを定義する。

Page 13: Hardware Design Exercises

続:動作確認のための、 Testbench の作成 ③(not_gate_tb.vhdl)

17: begin18: not_gate0: NOT_GATE port map(A, Z);19:20: process begin21: A <= ‘0’; wait for 10 us;22: A <=‘1’; wait for 10 us;23: A <=‘0’; wait for 10 us;24: assert (false) report

“Simulation End!” severity failure;

25: end process;26: end SIM;

ポート A に信号を与える。テストベンチを停止するコマンド。

Page 14: Hardware Design Exercises

GHDL の実行方法 $ gdhl --clean

$ ghdl –a not_gate.vhdl $ ghdl –a

not_gate_tb.vhdl      $ ghdl –e not_gate $ ghdl –e not_gate_tb        $ ghdl –r not_gate_tb

–vcd=hoge.vcd          $ gtkwave hoge.vcd        

以前の実行時の設定をクリアする。vhdl ファイルを解析する。

実行ファイルを作る。

実行する。可視化する。

Page 15: Hardware Design Exercises

NOT 回路の入出力の可視化

Page 16: Hardware Design Exercises

付録

Page 17: Hardware Design Exercises

演習問題1 下記のプログラミングを行い、動作確認せよ。

1. AND 回路2. OR 回路3. NAND 回路4. NOR 回路5. XOR 回路6. 3 入力 NAND 回路

AND と NOT によって構成される、下記の回路をプログラムし、動作確認せよ。

Page 18: Hardware Design Exercises

演習問題2 半加算器をプログラムし、動作確認せよ。 全加算器をプログラムし、動作確認せよ (Component 使用 )

A B C S

L L L LL H L HH L L HH H H L

A B X C SL L L L LL L H L HL H L L HL H H H LH L L L HH L H H LH H L H LH H H H H

定義した半加算器を使い回す。

Page 19: Hardware Design Exercises

AND 回路 (and.vhdl)library IEEE;use

IEEE.STD_LOGICc_1164.all;

entity AND isport(A : in std_logic;B : in std_logic;Z : out std_logic);end and_or;

architecture AND_A of AND is

beginZ <= A and B;end AND_A;

タイムチャート

Page 20: Hardware Design Exercises

AND 回路の入出力の可視化