41
1 VHDL 의 의의

CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

  • Upload
    volien

  • View
    215

  • Download
    1

Embed Size (px)

Citation preview

Page 1: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

1

VHDL 의 개요

김 인 수

Page 2: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

2

VHDL 이란 ?VHDL(VHSIC Hardware Description Language)

1981 년에 제안 , IEEE1076-1987,1993, 2000, 2002 표준동작수준모델에서 게이트수준모델을 표현

주로 RTL(register-transfer level) 설계에 사용됨(IEEE1076.6-2004, VHDL RTL synthesis std.)

Behavioral design : Algorithms

RTL design : MUX, ALU, FSM, …

Logic design : AND/OR gates, F/Fs

Circuit design : Transistors, …

Layout design : Polygons

Page 3: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

3

VLSI 설계플로우 (Design Flow)

Cell Library

Simulation

RTL design

Gate-level netlist

Chip layout

Design productivity ↑Design quality ↑

Page 4: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

4

RTL(Register-Transfer Level) 설계

디지털회로를 설계하는 방식중의 하나하드웨어 레지스터와 산술논리연산 ( 조합 ) 회로 간의 데이터흐름으로 정의됨공정에 독립적인 모델 (technology-independent model)논리합성도구에 의해 게이트레벨 네트리스트로 추출됨

특정 공정 셀라이브러리 (cell library) 와 설계제약조건 (design constraint) 이 필요

주로 VHDL, Verilog-HDL 이 사용됨

Page 5: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

5

Simulation vs. Synthesis모의 (simulation)

논리합성 (synthesis)

Page 6: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

6

본 강의의 목적

RTL 에서 동시성 (concurrency) 이해논리합성을 위한 RTL 설계VHDL 을 이용한 RTL 설계

실습에서 사용되는 VHDL 의 자세한 문법은 각 이론강의에서 review

Page 7: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

7

VHDL 의 기본구조 (1)Entity-Architecture

VHDL 기능블록 ( 모듈 ) 을 기술하기 위해서 모든 입력 신호와 출력신호를 Entity 안에 선언해야 한다 .Architecture 의 정의부 안에 기능블록의 내부연산을 정의

Ex) Library IEEE; use IEEE.std_logic_1164.all;

entity decoder isport( data_in : in std_logic_vector(1 downto 0) ; dec_out : out std_logic_vector(2 downto 0));

end; architecture behave of decoder is begin process(data_in) begin

case data_in is ....... end behave ;

입출력 신호선언

모듈 동작 설계

decoderdata_in

dec_out2 3

Page 8: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

8

VHDL 의 기본구조 (2)

Entity 의 구조각 entity 선언은 인터페이스 신호들을 포함하고 있고 , 이들은 다른 모듈과 연결을 제공한다 .

여러 entity-architecture 구조쌍은 한 파일에 모두 위치할 수 있고 , 각각의 파일에 위치할 수도 있다 .Entity 이름과 파일 이름이 꼭 동일할 필요는 없지만 컴파일러에 따라 오류를 내보내기도 한다 .하나의 entity 는 여러 개의 architecture 를 가질 수 있다 .

Configuration 사용하여 architecture 를 선택

Entity 엔티티 _ 이름 is[port( 인터페이스 _ 포트 _ 선언 ) ;]

End [entity] [ 엔티티 _ 이름 ] ;

Page 9: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

9

VHDL 의 기본구조 (3)Architecture 의 구조

선언부에서 architecture 안에서 내부적으로 사용할 요소와 신호등을 선언한다 .Architecture 몸체에는 이 모듈의 연산을 지정할 여러 구문들을 작성한다 .

Architecture 구조 _ 이름 of 엔티티 _ 이름 is[ 신호 선언문 리스트 ][ 요소 (component) 선언문 리스트 ][ 함수 선언 및 구현 리스트 ]

Begin구조 본체

End [architecture][ 구조 _ 이름 ] ;

Page 10: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

10

VHDL 의 기본구조 (4)하위 모듈은 고유의 Entity-Architecture 쌍을 가지고 있어야 하고 , 상위 블록 (Top module) 에서 하위모듈을 불러서 연결해야 한다 . (Structural description-port map)

Ex.) ALU = {Adder, Multiplier, Divider}

Page 11: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

11

Port 포트 선언

Entity 선언 안에 위치하고 인터페이스 신호들이 정의됨

entity mux is port( sel : in std_logic_vector(1 downto 0); data_in : in std_logic_vector(3 downto 0); data_out : out std_logic); end mux;

entity latch is port( clk, rst_n : in std_logic; q : buffer std_logic) ;end;

Page 12: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

12

Signal, Constant, Variable (1)신호 (signal), 상수 (constant), 변수 (variable)

신호 (Signal)Architecture 의 begin 전에서 선언되며 선언된 architecture 안에서만 사용될 수 있다 .내부 신호들은 값을 할당받거나 다른 논리회로로 전달 할 수 있다 .신호에 값을 할당하기 위해서 ‘ <=‘ 연산자를 사용한다 .

signal 신호 _ 이름 _ 리스트 : 데이터 _ 형식 [ 지정범위 ][:=초기값 ];

signal internal_sig : std_logic_vector(3 downto 0) := “1111”;

signal internal_sig2 : integer range 0 to 2 := 1;process(temp)begin if temp = ‘1’ then internal_sig <= “0100”; else internal_sig <= “0010”; end if;…

Page 13: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

13

Signal, Constant, Variable (2)신호 (signal), 상수 (constant), 변수 (variable)

상수 (Constant)Architecture 와 begin 사이에서 선언 혹은 패키지에서 선언

constant 상수 _ 이름 : 데이터 _ 형식 [ 지정범위 ] := 상수값 ;

변수 (Variable)Process 문과 function 문 안에서 사용되며 , 순차적인 연산을 위한 작업공간을 제공Process 문과 function 문의 begin 전에서 선언되며 할당 연산자로는 ‘ :=‘ 를 사용

Variable 변수 _ 이름 _ 리스트 : 데이터 _ 형식 [ 지정범위 ] := 초기값 ;

constant MAX_LENGTH : integer := 6;constant MAX_VALUE : std_logic_vector(3 downto 0) := “1110”;

Page 14: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

14

데이터형 (1)데이터 형 (data type)

VHDL 에서 사용하는 대표적인 데이터 형은 아래 표와 같다 .

데이터 형 값 표기법

Bit 0, 1 ‘ ’std_logic U, X, 0, 1, Z, W, L, H,

- ‘ ’

Integer 지정된 범위의 정수 따옴표 없음

Natural 지정된 범위의 양수 따옴표 없음

Bit_vector Bit 형의 나열 “ “std_logic_vector std_logic 형의 나열 “ “

Time ps, ns, us 등의 시간 따옴표 없음

boolean True 혹은 false 따옴표 없음

Page 15: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

15

데이터형 (2)VHDL 에서는 매체에 오직 하나의 값만을 가져야 함

여러 모듈이나 내부 게이트들에서의 출력 신호들이 한 와이어에서 경합하는 경우 아래 신호해석표에 의해서 하나로 결정되어 진다 .

std_logic 의 신호해석표‘U’ ‘X’ ‘0’ ‘1’ ‘Z’ ‘W’ ‘L’ ‘H’ ‘-’

‘U’ ‘U’ ‘U’ ‘U’ ‘U’ ‘U’ ‘U’ ‘U’ ‘U’ ‘U’‘X’ ‘U’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’‘0’ ‘U’ ‘X’ ‘0’ ‘X’ ‘0’ ‘0’ ‘0’ ‘0’ ‘X’‘1’ ‘U’ ‘X’ ‘X’ ‘1’ ‘1’ ‘1’ ‘1’ ‘1’ ‘X’‘Z’ ‘U’ ‘X’ ‘0’ ‘1’ ‘Z’ ‘W’ ‘L’ ‘H’ ‘X’‘W’ ‘U’ ‘X’ ‘0’ ‘1’ ‘W’ ‘W’ ‘W’ ‘W’ ‘X’‘L’ ‘U’ ‘X’ ‘0’ ‘1’ ‘L’ ‘W’ ‘L’ ‘W’ ‘X’ ‘H’ ‘U’ ‘X’ ‘0’ ‘1’ ‘H’ ‘W’ ‘W’ ‘H’ ‘X’‘-’ ‘U’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’ ‘X’

Page 16: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

16

데이터형 (3)Type 키워드의 사용 예

type 배열 _ 형식 _ 이름 is array 인덱스 _ 범위 of 원소 _ 데이터형식 ;

Ex1) type state_type is (idle, start, pulse, read) ; signal state : state_type ;

Ex2) type short_word is array (0 to 15) of std_logic ; signal data_word : short_word ; signal alt_word : short_word := “0101010101010101” ; constant one_word : short_word := (others=> ‘1’) ;

Ex3) type intvec is array (natural range<>) of integer range 0 to 15;

*초기화는 합성되지 않음 초기화 회로를 따로 설계해야함

Page 17: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

17

동시성 (Concurrency)일반적인 S/W

순차적인 방법으로 수행처리 및 결과저장

H/W 설계 (RTL 모델링 )모의 (simulation) 시 동시성 혹은 병렬성을 고려해야함

순차적인 방법으로 병렬성을 흉내냄 (delta 시간 모의 )조합회로와 레지스터 ( 순차회로 ) 의 연결성을 단지 언어로 표현 – 합성가능 /불가능의 경계를 이해

a <= not b ; -- 구문 1c <= not a ; -- 구문 2d <= a or c ; -- 구문 3

조합회로의 표현 ( 구문의 순서가 달라져도 같은 회로를 표현하게됨 )

Page 18: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

18

동시성 (Concurrency)VHDL 의 동시문 (concurrent statement)

회로의 동작 및 연결성을 정의하는 구문은 동시문

architecture concur1 of concur is…begin

temp1 <= temp5 xor a1;…process(temp1, temp3, temp4)

begin temp2 <= temp1 or temp3; temp3 <= temp1 or temp4; end process;

… adder1 : adder port map(a1, a2, a3);

…end concur1;

signal assignment( 신호할당문 )

process

port map

Page 19: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

19

동시문 - 신호할당신호할당문 ( 동작적 모델링 )

신호 할당문의 형식

신호 _ 이름 <= 표현식 [after 절대지연시간 ] ;

after 는 논리합성 불가능Functional simulation 에서 조합회로의 지연시간은 0대신 , 클럭에 동기되는 시간이 각각 구분됨

신호할당의 목적지는 물리적 /논리적인 와이어 (wire) 를 의미 – 논리합성의 결과에 따라 결정됨

temp1 <= a1 xor a2 xor a3; temp2 <= “0010” when temp1=‘1’ else

“0110”;

조합회로

조합회로

a1

a2

a3

temp1 temp2

0 ns

Page 20: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

20

동시문 -process프로세스문 ( 동작적 모델링 )

자체적으로 동시문이지만 내부의 연산들은 순차적으로 실행된다 . functional simulationSensitivity list 에 의해 정해진 신호들이 변할 때에만 실행된다 . functional simulation그러나 , 내부에 신호할당문이 사용되는 경우 역시 병렬성을 갖는다 . 논리합성process 문의 사용형식

[ 레이블 : ]process(sensitivity_list)[ 변수 선언 ;]begin

순차 실행 구문end process [ 레이블 ] ;

process(temp1, temp2, temp4, temp5) begin temp2 <= temp1 or temp5; temp3 <= temp2 or temp4;end process;

조합회로의 표현 ( 구문의 순서가 달라져도 실행순서와 관계없이 같은 회로를 표현하게됨 ), 가상의 모듈로 간주가능

Page 21: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

21

동시문 -port map (1)요소 (Component) 선언 ( 구조적 모델 )

하나의 하드웨어 모듈은 그것을 이루고 있는 다수의 하위 모듈의 연결로 구성되어 있다 . 이때 상위 모듈의 entity-architecture 쌍을 기술하고자 할 때 필요한 하위모듈을 불러내고 그 연결성을 정의하기 위해 component 를 사용한다 .

이때 사용할 하위 모듈은 이미 설계가 끝나고 컴파일되어 있음을 가정한다 .

사용할 모듈 ( 블록 ) 은 architecture 와 begin 사이에 선언한다 .

Page 22: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

22

동시문 -port map (2)Component 의 선언 ( 구조적 모델 )

Component 의 형식

Component 요소 _ 이름port( 인터페이스 _ 신호 _ 리스트와 형식 ) ;End component;

위에서 port 문은 이 component 가 설계되었던 entity 선언의 포트문과 정확히 같아야 한다 .Component 선언의 예

ex) Architecture behave of complex_decoder iscomponent adderport(a, b, cin : in std_logic ;cout, sum : out std_logic);end component ;…begin

Page 23: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

23

동시문 -port map (3)Port map 정의 ( 구조적 모델 )

하위 요소를 선언한 후에는 port map 을 통해 하위 모듈과 연결한다 .

레이블 : 요소 _ 이름 port map ( 내부 _ 신호 _ 리스트 ) ;

내부 신호 리스트는 반드시 component 선언문에서 사용하였던 입출력 포트의 리스트와 일대일 대응이 되어야 한다 .같은 형태의 component 가 여러 개 사용될 수 있기 때문에 레이블 ( 인스턴스명 ) 은 꼭 지정해야 한다 .

Page 24: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

24

동시문 -port map (4)Port map 정의 ( 구조적 모델 )

Port map 의 사용 예

Ex1) Adder0 : adder port map(a0,b0,cin0,cout0,sum0) ;

EX2) Adder1 : adder port map(a=>a1, b=>b1, cin=>cin1, cout=>cout1,

sum=>sum1) ;

위의 예에서 볼 수 있듯이 ‘ =>’ 연산자를 사용하여 포트와 신호를 연결하는 방법도 있고 연산자 없이 내부신호만을 차례대로 열거하여 연결하는 방법이 있다 .

Page 25: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

25

RTL 설계논리합성가능한 RTL 모델의 범위

RTL 설계

동작적 모델

구조적 모델

동작수준 설계(Behavioral-level design)

게이트수준설계(Gate-level design)

Page 26: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

26

VHDL 을 이용한 RTL 설계IF 구문 ( 동작적 모델 )

process 안에서 사용조건의 우선순위를 갖는 회로가 설계됨IF 문을 포함한 모든 조건부 실행문은 의도하지 않은 래치가 발생되지 않도록 모든 조건에 대한 실행방법을 기술해야함

우선순위회로로 인해 지연시간이 증가됨

만약 z<=0 을 삭제하면 래치 발생

Page 27: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

27

VHDL 을 이용한 RTL 설계case 문 ( 동작적 모델 )

case 문은 if 문과 마찬가지로 process 문 안에서 조건부 실행을 만들게 된다 .If 문과는 달리 회로에 우선순위를 부여하지 않는다 .case 문의 사용예 ( 다중화기 , MUX)process(sel, a, b, c, d)begincase sel is when “00” => data_out <= a ; when “01” => data_out <= b ; when “10” => data_out <= c ; when others => data_out <= d ;end case ;end process;

모든 조건에 대한 실행방법을 지정하지 않으면 논리합성시

래치발생(NULL 도 사용하지 않음 )

Page 28: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

28

VHDL 을 이용한 RTL 설계레지스터 모델 ( 동작적 모델 )

플립플롭 ( 주로 D-F/Fs)

래치 ( 특별한 경우이외에 되도록 설계하지 않음 )비동기 리셋 ,

상승클럭에지 동기

process(rst_n, clk)begin if rst_n = ‘0’ then d_out <= “0000”; elsif clk’event and clk=‘1’ then d_out <= d_in; end if;end process;

process(rst_n, clk)begin if clk’event and clk=‘0’ then if rst_n = ‘0’ then d_out <= “0000”; else d_out <= d_in; end if; end if;end process; 동기 리셋 ,

하강클럭에지 동기

process(rst_n, clk)begin if rst_n = ‘0’ then d_out <= “0000”; elsif clk=‘1’ then d_out <= d_in; end if;end process;

clkd_in

d_out(F/F)

d_out(latch)

Page 29: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

29

VHDL 을 이용한 RTL 설계for loop( 동작적 모델 )

process 문 안에 사용루프에 의해 순차적으로 동작되는 회로를 의미하지 않음

반복적인 회로를 동작수준에서 설계할 때 용이함논리합성시 Loop unrolling 됨

루프의 횟수가 가변적인 경우 합성되지 않음 루프변수가 루프 안에서 변하는 경우 합성되기 어려움

For-loop 의 사용형식

for 루프변수 in 변수범위 loop실행구문 ;…

end loop ;

Page 30: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

30

VHDL 을 이용한 RTL 설계For-loop 의 예 ( 쉬프터 )

process (clk)begin if clk’event and clk =‘1’ then if rst =‘1’ then shifted <= “00000000” ; elsif load =‘1’ then shifted(3) <=‘0’ ; for I in 0 to 2 loop shifted(i) <= shifted(i+1) ; end loop ; end if ; end if ;end process ;

shifted(0) <= shifted(1);shifter(1) <= shifted(2);shifted(2) <= shifterd(3)

shifted <= ‘0’ & shifted(3 downto 1) 결합연산자 사용

Loop unrolling

Page 31: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

31

VHDL 을 이용한 RTL 설계for generate( 구조적 모델 )

port map 과 같이 사용한 모듈내에서 같은 요소 (component) 를 여러 번 사용하고 이에 대한 연결성이 규칙적으로 정의되는 경우 하드웨어 기술을 간단하게 만든다 . For 문과 같이 사용된다 .generate 문의 형식

레이블 : for 루프변수 in 변수범위 generate레이블 : 요소 _ 이름

port map ( 내부 _ 신호 _ 리스트 ); …end generate ;첫번째 레이블은 for-generate 문 자체의 인스턴스 이름이며 , 두번째 레이블은 port map 의 인스턴스 이름이 된다 .

Page 32: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

32

VHDL 을 이용한 RTL 설계

For-generate 문의 예 ( 쉬프터 )zero<=‘0’;reg3 : regs port map(rst=>rst, clk=>clk, load=>load, d_in=>zero, d_out=>shifted(3)); shrs : for i in 0 to 2 generate internal_regs : regs port map(rst=>rst, clk=>clk, load=>load, d_in=>shifted(i+1), d_out=>shifted(i)); end generate shrs;    ※ shifted 는 신호임 (std_logic_vector(3 downto 0))※ 루프변수는 일반적인 신호가 아니고 선언부가 필요없으며 for-generate

문 내에서만 유효하다 .

Page 33: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

33

VHDL 을 이용한 RTL 설계함수 ( 동작적 모델 , 조합회로 )

자주 쓰이는 논리 회로를 함수의 형태로 설계할 수 있다 . 함수는 구조 정의부의 architecture 와 begin 사이에 명시될 수 있다 . ( 혹은 패키지로 구성가능 )

function 함수 _ 이름 ( 함수 _ 인자 1 : 데이터 형 ;함수 _ 인자 2 : 데이터 형 ;…함수 _ 인자 n : 데이터 형 )

return 데이터 형 is변수 _ 선언 _ 리스트

begin순차 _ 실행 _ 구문

return 변수 _ 이름 ;end [ 함수 _ 이름 ] ;

Page 34: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

34

VHDL 을 이용한 RTL 설계

함수 Architecture behave of decoder is

function xor_reduce4(a : std_logic_vector(3 downto 0))return std_logic isvariable tmp : std_logic ;begin

tmp := a(3) xor a(2) xor a(1) xor a(0) ;return tmp ;

end xor_reduce4 ;…

begin

‘return is’ 구문에는 함수에서 반환될 데이터형을 정의begin 전에 함수 내부에서 사용할 변수들을 선언한다 .함수 내부는 순차적인 형태로 실행되므로 VHDL 의 순차 실행 구문들을 사용하여 작성한다 .‘Return’ 구문에서는 값을 반환할 변수명을 지정한다 .

Page 35: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

35

다중연결 (Multiple Assignment)일반적인 RTL 에서의 다중연결

한 개의 process 문 안에서 다중할당 ( 마지막 할당이 유효 )다수의 동시문에서 같은 신호로의 다중할당 ( 잘못된 설계 )

예외 ) 버스 모델 (three-state buffer)

조합회로 1

조합회로 2 Ex.) ‘1’ , ‘0’ 을 resolve 하면 ‘ X’

comb1 <= temp2;

comb1 <= temp1;comb1

조합회로 1

조합회로 2

comb1comb1 <= temp2 when ld=‘0’ else ‘Z’;

comb1 <= temp1 when ld=‘1’ else ‘Z’;

inout 포트를 가진 모듈에서도 고려

Page 36: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

36

Simulation/Synthesis MismatchSensitivity list

Process 문의 sensitivity list 를 모두 작성하지 않으면 X논리합성결과는 sensitivity list 와 무관 ( 경고메세지를 내보낼 수는 있음 )따라서 sensitive signal 이 없으면 합성전과 후의 모의결과가 다를 수 있음 process(a)

begin c <= a or b; end process; process(rst_n) begin if clk’event and clk=‘1’ then if rst_n = ‘0’ then d_out <= ‘0’; elsif load = ‘1’ then d_out <= d_in; end if; end if; end process;

Page 37: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

37

Signal vs. Variable(1)변수

process 문에서만 사용할당방법이 다름 (:= 사용 )순차적인 특징

신호는 병렬성 구현 (process 문 내에서도 )대체로 물리적으로 구현되지 않음

예외도 존재함 ( 변수를 사용한 계수기 )신호 또한 물리적으로 구현되지 않을 수 있으나 , 변수보다는 구현성이 높음

Page 38: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

38

Signal vs. Variable(2)Ex.) process(clk) variable a : std_logic; begin if clk’event and clk=‘1’ then if rst_n = ‘0’ then d_out <= ‘0’; elsif load = ‘1’ then d_out <= d_in; variable := d_in; end if; if variable = ‘1’ then state <= “0001”; else state <= “1111”; end if; end if; end process;

process(clk)

begin if clk’event and clk=‘1’ then if rst_n = ‘0’ then d_out <= ‘0’; elsif load = ‘1’ then d_out <= d_in; sig <= d_in; end if; if sig = ‘1’ then state <= “0001”; else state <= “1111”; end if; end if; end process;

Page 39: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

39

테스트벤치RTL 설계의 평가 (non-synthesizable subset)

기능성 검증 - 기능성모의타이밍 /기능성 검증 – 게이트수준모의

Entity test isEnd;

Architecture behave of test is…Begin process clk <= ‘0’; wait for 10 ns; clk <= ‘1’; wait for 10 ns; end process;rst_n <= ‘0’ , ‘1’ after 100 ns;d_in <= “0000”, “1110” after 120 ns, “1101” after 140 ns;DUT : regport map(clk, rst_n, d_in, d_out);…

신호 발생

DUT(design under test)

일반적인 테스트벤치의 구조

동작 평가

순차특성고려

Page 40: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

40

다루지 않은 구문

기타 논리 /산술 연산자 (+, -, *, /, sll, srl, ror, rol, sla, sra, …)기타 신호 attribute조건부 신호 할당문 (with-select)ConfigurationPackageGenericWhile loopProcedure

Page 41: CH1. VHDL의 소개 - 성균관대학교 정보통신대학icc.skku.ac.kr/~vlsitest/logic_lab/download… · PPT file · Web view · 2009-03-02VHDL의 개요 김 인 수 VHDL을

41

질문