hardware design exercises
TRANSCRIPT
ハードウエア設計演習小山 幸伸新領域融合研究センター / 国立情報学研究所大分工業高等専門学校
「ハードウエア記述言語」ハードウェア記述言語Hardware Description Language (HDL) とは、デジタル集積回路を設計するためのコンピュータ言語です。
電子回路の復習様々な論理回路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’
基礎演習 , 工学実験の復習74?? シリーズや 14??? シリーズなどのロジック IC の動作確認をブレッドボード上でした(はず)。回路が大規模になると、配線 , デバッグ , 仕様変更が大変。
7400
プログラマブル・デバイスの利用
XILINX CoolRunner-IIXC2C32A6VQ44C
XILINX SPARTAN-6LXXC6SLX9-2TQG144C
• CPLD(Complex Programmable Logic Device)
FPGA(Field-programmable gate array)
2000 円くらい300 円くらい
プログラマブルデバイスの利用例いずれも、入力信号の処理に、XILINX の FPGA を利用している。
約 10,000アンテナ
66アンテナ
ハードウェア記述言語の色々Verilog HDL VHDL (VHSIC HDL, Very High Speed Integrated Circuits
HDL) SystemC など
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つの設計単位を表現し、回路名 ( エンティティ名 ) と外部のインターフェイスを定義します。
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 に入力する必要あり。
シミュレーターを用いたシミュレーション GHDL: VHDL のコンパイラの実装のひとつ。
GTKWave: 入出力波形の可視化。
動作確認のための、 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 を定義する。信号名とデータ・タイプを指定する。
続:動作確認のための、 Testbench の作成 ②(not_gate_tb.vhdl)
10: component NOT_GATE11: port(12: A : in std_logic;13: Z : out std_logic14: );15: end component;16:
ポートを定義する。
続:動作確認のための、 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 に信号を与える。テストベンチを停止するコマンド。
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 ファイルを解析する。
実行ファイルを作る。
実行する。可視化する。
NOT 回路の入出力の可視化
付録
演習問題1 下記のプログラミングを行い、動作確認せよ。
1. AND 回路2. OR 回路3. NAND 回路4. NOR 回路5. XOR 回路6. 3 入力 NAND 回路
AND と NOT によって構成される、下記の回路をプログラムし、動作確認せよ。
演習問題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
定義した半加算器を使い回す。
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;
タイムチャート
AND 回路の入出力の可視化