+ All Categories
Home > Documents > 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1....

集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1....

Date post: 19-Jan-2021
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
22
2007.11.12 集積回路工学 Matsuzawa Lab 1 東京工業大学 大学院理工学研究科 電子物理工学専攻 集積回路工学
Transcript
Page 1: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 1

東京工業大学大学院理工学研究科電子物理工学専攻

集積回路工学

Page 2: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 2

1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

• HDL設計の手順や基本用語を学ぶ

RTLとは?

Register Transfer Level

レジスタ間の転送関係を表現したレベル

慣例的に以下のことを行う

-機能を、代入、if, caseなどで表現したもの

-論理合成できる記述

-クロックを意識した記述

ゲートレベルとは?

ゲート回路やフリップフロップなどの接続関係を示したもの

ネットリストとも言う

Page 3: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 3

Hardware Description Language :ハードウェア記述言語

Hardware Description Language :ハードウェア記述言語

– Digital

• Verilog-HDL, VHDL

Verilog⇔C言語 VHDL⇔PASCALかADA

VHDLは抽象性の高い記述

Verilogは具体的な回路図に近い記述

– Analog

• Verilog-AMS, VHDL AMSなどにより動作記述が行える

トップダウン設計を支援するトップダウン設計においては,アナログ部,デジタル部とも抽

象度の高い設計が必要となる。デジタル部はゲート・レベルだけでなく,RTL(register

transfer level)や動作レベルで設計する。アナログ部はトランジスタ・レベルだけではなく,機能レベル

のモデル(例えばオペアンプのマクロモデルなど),動作レベルのモデル(線形方程式や非線形方程式,信号フロー・グラフ,伝達関数など)を扱う。見た目はソフトウェアのプログラムに似ているが似て非なるもの

Page 4: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 4

なぜ動作記述による設計なの?なぜ動作記述による設計なの?

接続記述 動作記述

1cm2程度のシリコンチップ上に、数百万から1億のトランジスタを集積している。そのため接続情報を記述している回路図エントリでは限界があり、設計者は設計そのものよりも接続間違いによるケアレスミスを修正することに時間がかかる。しかし動作記述を用いれば回路の表現に抽象度が与えられ、さらに上位の設計を可能とするばかりでなく、設計のスピードが格段に向上する。

回路図エントリ HDL記述module nand(Q,A,B,CK)inputA,B,CK;output Q.....endmodule

Page 5: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 5

HDL設計の手順HDL設計の手順

論理設計

論理合成

論理素子へのゲートの割り当て

物理レイアウト

回路図エントリ HDL記述

ネットリストmodule nand_DFF (Q,A,B,CK)inputA,B,CK;output Q.....endmodule

module nand(Q,A,B,CK)inputA,B,CK;output Q.....endmodule

仕様設計

RTL設計

RTL検証

OK?

論理合成

ゲートレベル検証

OK?

物理設計

回路動作をHDLで記述

テストベンチをHDLで記述

動作確認

HDLからゲートレベルに変換

タイミング(遅延)確認

Page 6: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 6

VHDL文法体系VHDL文法体系

VHDLの文法

回路記述 テストベンチ

ライブラリ記述

回路記述 論理合成に適した記述をする

回路の種類ごとに適した記述スタイルがある

テストベンチ 文法を満たしていれば、どんな記述でもよい

記述のテクニックを駆使できる

Page 7: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 7

組み合わせ回路組み合わせ回路

Page 8: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 8

順序回路順序回路

順序回路は必ずクロックで同期させること。もし非同期で作ると伝播遅延から予期しないパルス(ハザード)が発生す

る。

Page 9: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 9

RTL設計例RTL設計例

コンポーネント宣言

下位コンポーネントの接続

std_logicのベクタ型(ビット幅のあるデータタイプ)

接続する下位コンポーネントの入出力信号を定義したもの

4ビット(ビット3~ビット0)

Page 10: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 10

RTL設計例RTL設計例

センシティビティリスト(基本的に入力信号はすべてここに記述する)

条件式

if文はアーキテクチャ内に記述できず、process文内に記述する

定数表現1ビット ‘0’複数ビット “0101”

バスとワイヤーでは囲む物が違うことに注意すること。

Page 11: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 11

4ビット(16進)同期式カウンタ4ビット(16進)同期式カウンタ

Q0

Q1

Q2

Q3

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

0 0 1 0 1 11 0 0 0 1 0 1 11 0

0 0 10 1 110 0 0 10 1 110

0 0 10 1 110 1 1 110 0 0 0

4 5 96 10870 1 2 3 11 12 13 14 15

Page 12: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 12

4ビット(16進)同期式カウンタ4ビット(16進)同期式カウンタ

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;

算術演算パッケージを呼び出し

パッケージの呼び出し

パッケージとは?

定数、演算子、データタイプなどの定義をまとめたもの

おまじないのようなのであるが、これを指定しないとデフォルトの物が設定されてしまうので、ここはちゃんと設定すること

Page 13: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 13

4ビット(16進)同期式カウンタ4ビット(16進)同期式カウンタ

ibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;

モジュールの入出力ポート及びその属性を定義

entity COUNT4 isport (

CLK, RESET : in std_logic;COUNT : out std_logic_vector( 3 downto 0 )

);end COUNT4;

エンティティ宣言(入出力の定義) エンティティ名

方向

ポート宣言

データタイプstd_logicのベクタ型

(ビット幅のあるデータタイプ)

回路のインターフェース部分を定義 接続する下位コンポーネントの入出力信号を定義したもの

Page 14: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 14

architecture RTL of COUNT4 issignal COUNT_IN : std_logic_vector ( 3 downto 0 );begin

COUNT <= COUNT_IN;process ( CLK, RESET ) begin

if ( RESET = '1' ) thenCOUNT_IN <= "0000";

elsif ( CLK'event and CLK = '1' ) thenCOUNT_IN <= COUNT_IN + '1';

end if;end process;

end RTL;

4ビット(16進)同期式カウンタ4ビット(16進)同期式カウンタ

ibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity COUNT4 is

port (CLK, RESET : in std_logic;COUNT : out std_logic_vector( 3 downto 0 )

);end COUNT4;

同時処理文 アーキテクチャ内に記述する文記述の順序に関係なく、同時に処理される

順次処理文 プロセス文やプロシージャ内に記述する文記述順に処理される

Page 15: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 15

RTL設計例RTL設計例

architecture ~ of ~ is

begin

同時処理文下位コンポーネント接続プロセス文信号代入文条件付き信号代入文(when~else)プロシージャ呼び出しジェネレート文など

end ~;

process….begin

順次処理文信号代入文変数代入文ifcasewait文ループ文プロシージャ呼び出しなど

end process;

同時処理文 アーキテクチャ内に記述する文記述の順序に関係なく、同時に処理される

順次処理文 プロセス文やプロシージャ内に記述する文記述順に処理される

Page 16: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 16

4ビット(16進)同期式カウンタ4ビット(16進)同期式カウンタ

ibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity COUNT4 is

port (CLK, RESET : in std_logic;COUNT : out std_logic_vector( 3 downto 0 )

);end COUNT4;

4ビットは0から3と書くことに注意

内部変数を外部変数に代入

VHDLでは”OUT”の属性の信号はエンティティ内部で再びその値を使用できない

architecture RTL of COUNT4 issignal COUNT_IN : std_logic_vector ( 3 downto 0 );begin

COUNT <= COUNT_IN;process ( CLK, RESET ) begin

if ( RESET = '1' ) thenCOUNT_IN <= "0000";

elsif ( CLK'event and CLK = '1' ) thenCOUNT_IN <= COUNT_IN + '1';

end if;end process;

end RTL;

アーキテクチャ名

信号代入文

エンティティ名アーキティクチャ

(構造、動作の記述)

回路の構造や動作を記述

1つのエンティティに対して、複数のアーキテクチャを定義できる

Page 17: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 17

ibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity COUNT4 is

port (CLK, RESET : in std_logic;COUNT : out std_logic_vector( 3 downto 0 )

);end COUNT4;architecture RTL of COUNT4 issignal COUNT_IN : std_logic_vector ( 3 downto 0 );begin

COUNT <= COUNT_IN;process ( CLK, RESET ) begin

if ( RESET = '1' ) thenCOUNT_IN <= "0000";

elsif ( CLK'event and CLK = '1' ) thenCOUNT_IN <= COUNT_IN + '1';

end if;end process;

end RTL;

4ビット(16進)同期式カウンタ4ビット(16進)同期式カウンタ

process文CLKもしくはRESETが変化したときに活性化され記述の上から順に実行される。

If文、case文などの順次処理文はこのプロセス文の中で記述する。それに対してプロセス文の外の記述では値が変化すれば、常に再代入されて動作する。この回路記述ではCOUNT_INが変化すればCOUNTは変化後の値がいつでも再代入される。

CLK’ event and CLK=’1’

CLK信号の立ち上がり時を検出

センシティビティリスト(基本的に入力信号はすべてここに記述する)

条件式

定数表現1ビット ‘0’複数ビット “0101”

Page 18: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 18

データ・タイプデータ・タイプ

信号や定数にはデータタイプ(型)がある。

データタイプによって、取り得る値の種類が決まる。

データタイプが異なる信号や定数間での直接代入は出来ない。(変換が必要)データタイプはパッケージの中で定義されている。

A: std_logic B: integer

A<=3;

A <=‘11’;

B<=“1011”;

B<=11;○○

××3 “11”; “1011”;11 ××

Page 19: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 19

ADDERADDER

Half Adder

Half Adder

A

B

S

COCIN

Full Adder

Page 20: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 20

コンポーネント宣言

下位コンポーネントの接続

接続する下位コンポーネントの入出力信号を定義したもの

インスタンス名:コンポーネント名 port map (ポートリスト)

コンポーネント化コンポーネント化

Page 21: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 21

下位コンポーネントの接続下位コンポーネントの接続

順番によるポート接続

名前によるポート接続

名前によるポート接続: 定義側信号名 => 接続信号名

Page 22: 集積回路工学 - 東京工業大学...2007.11.12 集積回路工学Matsuzawa Lab 2 1. ハードウェア記述言語(VHDLで回路を設計)1. ハードウェア記述言語(VHDLで回路を設計)

2007.11.12 集積回路工学 Matsuzawa Lab 22

参考資料参考資料

• マルチメディアHDL設計教材「HDL Endeavor」株式会社 エッチ・ディー・ラボ 製

• 桜井 至 「Verilog-AMS入門」CQ出版

• 利用ツール– GHDL(VHDLコンパイラ、シミュレーションおよび合成 )– Icarus Verilog( Verilog –HDLコンパイラ、シミュレーションおよび合成 )– GTKWave(波形表示ツール)


Recommended