6 . vhdl 객체및타입pds4.egloos.com/pds/200704/11/49/ch6.pdf · 2007-04-11 · ii. vhdl...
TRANSCRIPT
II. VHDL 설계부
4장. VHDL 개요
5장 VHDL 설계 구성5장. VHDL 설계 구성
6장. VHDL 객체 및 타입
7장. VHDL 모델링
8장. VHDL 구문과 예제
- 1 -광 운 대 학 교전자정보대학
객체 및 타입
어휘 요소 식별자, 리터럴, 예약어, 구분자로 구분되어 지며, 식별자와 예약어의 경우
(Lexical Elements) , , , ,
대소문자의 구별이 없다.
객체
(Objects)데이터를 저장하기 위한 기억 장소를 나타내며, 상수/변수(파일)/신호의 종류가 있다.(Objects) 류가 있다.
타입
(Type) 객체들의 데이터 유형을 선언하여 값의 종류와 특성을 정의한다.
속성
(Attribute) 객체의 추가 정보 및 상태를 표현한다.정의된 속성과 사용자 정의 속성으로 구분된다.
연산자 연산문에서 사용되는 연산 기호로써 피연산자를 입력으로 결과를 출력하연산자
(Operator) 연산문에서 사용되는 연산 기호로써, 피연산자를 입력으로 결과를 출력하는 함수의 역할을 수행한다.
서브프로그램 반복되는 연산 과정 및 수행 절차를 간소화하기 위한 표현 방법으로써, 연산
(Subprogram) 계산 과정은 함수로 나타내며 수행 절차 과정은 프로시쥬어로 기술한다.
- 2 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
어휘 요소(Lexical Elements)어휘 요소의 종류• 식별자(Identifier) 리터럴(Literal) 예약어(Reserved Word) 구분자(Delimiter)• 식별자(Identifier), 리터럴(Literal), 예약어(Reserved Word), 구분자(Delimiter)
대소문자에 대한 구별이 없다.• VHDL Vhdl vhdl : 모두 동일한 이름으로 간주된다• VHDL, Vhdl, vhdl : 모두 동일한 이름으로 간주된다.• VHDL’93의 경우 Extended_Identifier는 대소문자 구별이 가능하다.
주석(comment)는 Double Dash( )로 표시되며 한 줄을 주석화 한다주석(comment)는 Double Dash(--)로 표시되며, 한 줄을 주석화 한다.
선언/문장 단위는 Semicolon(;)으로 구분된다.
모든 선언들은 지역적(Local) 유효 영역(Scope)을 갖는다.
- 3 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
Identifier ExtendedIdentifier
ReservedWord Delimiter
D FF /VHDL/ ENTITY :=D_FFU123
pentium
/VHDL//vhdl//Vhdl/
ENTITYOF
END
:=<=;
D i l Ch Ph i l B dDecimalLiteral
CharacterLiteral
PhysicalLiteral
BasedLiteral
123 ‘A’ 30 2#1011#E22e-212.34_56
‘#’‘a’
30 ns100 pf
2#1011#E216#EF.0A#
Bit StringBit StringLiteral String Literal
B “1010_0101”X“ABCDEF”
O “7654_3210”“Warning !!”
- 4 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
객체(Objects)데이터를 저장하기 위한 기억 장소
객체의 분류• 상수(Constant)
고정된 데이터를 기록하는 객체로 병행문/순차문에서 사용 가능하다고정된 데이터를 기록하는 객체로 병행문/순차문에서 사용 가능하다.• 변수(Variable)
가변적인 데이터를 기록하는 객체로 순차문에서만 사용 가능하며, 여러
프로세스에서 공유할 수 없다.Shared Variable의 경우 여러 프로세스에서 공유할 수 있으나, 값의 변화에
대한 처리 방법은 정하지 않았다.다수의 프로세스에서 순차적으로 사용하도록 설계해야 한다.
• 파일(File)파일 처리를 위한 변수 객체이다.
신호(Si l)• 신호(Signal)시간에 따른 데이터의 변화를 나타낼 수 있는 객체로 병행문/순차문에서 사용
가능하다.
- 5 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
Object Constant Signal Variable FileObject Constant Signal Variable File
데이터 변경
X O O O변경 X O O O
타이밍 정보
X O X X 정보
Entity Architecture Package Entity
Entity Architecture Package선언
영역
PackagePackage BodyBlock Process
yArchitecture Package Block
Process Subprogram
PackagePackage BodyBlock ProcessProcess
Subprogram ProcessSubprogram
- 6 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
객체
VHDL 표현• 상수 선언(Constant Declaration)• 상수 선언(Constant Declaration)
초기값을 설정해 주어야 한다.
CONSTANT con : bit := ‘0’;
초기값이 없는 상수 선언은 deferred constant로 구분된다.패키지 선언에서만 가능하며, 초기값은 패키지 몸체에서 정의한다.
변수 선언(V i bl D l i )• 변수 선언(Variable Declaration)
VARIABLE var : bit ;
VARIABLE temp reg : integer := 100;
초기값이 없는 경우 default value로 설정된다.
VARIABLE temp, reg : integer : 100;
SHARED VARIABLE stemp, sreg : integer := 100;
Default Value해당 타입의 최소값을 나타낸다. (type_name’LEFT)Shared Variable의 선언 형식은 변수 선언과 동일하다.
- 7 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
• 파일 선언(File Declaration)FILE input : text OPEN read_mode IS “STD_INPUT”;
READ_MODE/WRITE_MODE/APPEND_MODE 형식으로 파일을 처리한다.
• 신호 선언(Signal Declaration)
초기값이 없는 경우 default value로 설정된다.
SIGNAL sig : bit_vector(7 DOWNTO 0) := “00001111”;
- 8 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
포트(Port) 및 신호(Signal) 포트의 특성• 외부와의 연결 통로/핀의 개념을 갖는다• 외부와의 연결 통로/핀의 개념을 갖는다.• 신호 객체로 분류된다.
포트의 방향성(Mode)입출력 방향을 정의한다• 입출력 방향을 정의한다.
IN : 외부에서 포트로 입력된다.OUT : 포트에서 외부로 출력된다.INOUT : 외부에서 포트로 입출력된다INOUT : 외부에서 포트로 입출력된다.BUFFER : 포트에서 외부로 출력되며, 내부에서 포트의 값을 참조할 수 있다.LINKAGE : VHDL 이외의 설계 데이터와 연결할 경우에 사용된다.
입력 모드(IN) 출력 모드(OUT)
- 9 -광 운 대 학 교전자정보대학
입출력 모드(INOUT) 버퍼 모드(BUFFER)
6장. VHDL 객체 및 타입
객체 및 타입
포트 및 신호신호 구동 메커니즘• 구동기(Driver) ( )
시뮬레이션 과정에서 신호 객체를 모델링하기 위하여 도입된 개념
구동기는 지연되는 시간동안 신호의 예상 출력 결과를 유지하기 위한
객체이다.구동기는 신호의 데이터를 갱신하는 프로세스마다 독립적으로 관리되며구동기는 신호의 데이터를 갱신하는 프로세스마다 독립적으로 관리되며,시뮬레이션 관리자(Kernel)가 개별적인 구동기들을 중재하여 신호의
데이터를 변경한다.각각의 프로세스 및 신호에서 발생되는 출력 예정 파형(Projected Output Waveform)이다.
시뮬레이션에서의 신호 구동 메커니즘E tSi lR l ti PP D i
11
EventSignal
SignalResolutionfunction
ProcessesProcesses Drivers
1
• • • •
N MN
St≠St-1
ƒ S E
• •
• •
• •
• •- 10 -광 운 대 학 교
전자정보대학
시뮬레이션 수행 사이클 루틴 @ t스케줄링
6장. VHDL 객체 및 타입
스케쥴링 시뮬레이션 수행 사이클 루틴 @t
객체 및 타입
신호의 종류• 분해 신호(Resolved Signal)
여러 개의 입력 신호들과 연결되어 있을 때 신호의 값을 결정할 수 있는 기능을 갖고 있다.드라이버들에 대한 중재 방법이 정의된 신호
감시 대상 신호(G d d Si l)• 감시 대상 신호(Guarded Signal)GUARD 조건을 만족하는 경우만 감시 대상 신호의 값을 갱신할 수 있으며,조건을 만족하지 못한 경우에는 신호의 값을 갱신할 수 없다. 연결이 해제되었을 경우에 대한 처리 방법이 정의된 신호 블록문에서만 사용가능 하다연결이 해제되었을 경우에 대한 처리 방법이 정의된 신호 블록문에서만 사용가능 하다.
- 11 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
포트 및 신호
분해 신호의 정의• 분해 기능은 분해함수(Resolution Function)을 이용하여 정의한다• 분해 기능은 분해함수(Resolution Function)을 이용하여 정의한다.
신호 선언문에 분해 기능을 정의한다.분해 기능을 타입에 추가한 종속타입으로써 정의된다.
• 분해 함수의 형태분해 함수의 형태
입력 구동기들은 1차원 배열형이며 출력은 배열형의 인자(Element)로 정의
• 분해 신호를 위한 지원 타입은 STD_LOGIC/STD_LOGIC_VECTOR가 있다.
분해 신호의 모델
Driver A
Driver B
Resolved Signal
Driver C
ResolutionFunction
- 12 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
분해 신호의 선언
FUNCTION l d ( td l i t ) RETURN td l iFUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic;-- resolution function 선언
SUBTYPE std_logic IS resolved std_ulogic; -- resolved type 선언-- resolved type 선언
SIGNAL resol1 : resolved std_ulogic; -- resolution function을 이용한 resolved signal 선언이용 g
SIGNAL resol2 : std_logic;-- resolved type을 이용한 resolved signal 선언
- 13 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
포트 및 신호감시 대상 신호의 정의• 신호 선언문에 BUS나 REGISTER로 신호 종류를 정의한다.
감시 대상 신호의 분류• Register
Register 종류 신호의 모든 구동기 리스트들이 연결 해제된 경우에는 분해 함수(Resolution Function)가 호출되지 않는다(Resolution Function)가 호출되지 않는다. 모든 연결이 해제된 경우에 이전 값을 유지하는 레지스터 개념이다.
• BusBus 종류 신호의 모든 구동기 리스트들이 연결 해제된 경우에는 분해함수(Resolution Function)가 호출되어 결정한 값을 신호의 값으로 반영한다.모든 연결이 해제된 경우에 상태를 알 수 없는 3-state 버퍼의 개념이다.Bus의 상태를 알 수 없는 High Impedance를 방지하기 위하여 Pull-up/Pull-down개념을 분해 함수를 통해서 표현한다.
guardedsignal
guardedsignal
resolutionfunction
D Q
resolutionfunction
GUARD
register
GUARD IE
- 14 -광 운 대 학 교전자정보대학
function
BUS signalREGISTER signal
6장. VHDL 객체 및 타입
객체 및 타입
감시 대상 신호의 선언• Port : Bus만 사용할 수 있다.
in1 in2 : IN std logic BUS := ‘0’ ;
• Signal : Bus/Register를 사용할 수 있다.
in1, in2 : IN std_logic BUS := 0 ;
SIGNAL reg1, reg2 : std_logic BUS := ‘0’;
SIGNAL reg3, reg4 : std_logic REGISTER := ‘0’;
- 15 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
타입(Types)모든 객체의 데이터 유형을 엄격하게 선언한다.
값의 종류 및 특성(eg 범위 색인 범위 종속관계) 등을 정의한다값의 종류 및 특성(eg. 범위, 색인 범위, 종속관계) 등을 정의한다.
타입의 종류
basetype subtypeBit
Booleanbasetype(기본타입)
subtype(종속타입)
BooleanSeverity_level
Sidestd_logic
std_logicX01
X01ZUX01
Vit lT iti T
Enumeration
UX01ZVitalTransitionTypeVitalTableSymbolType
Time VitalDelayTypePhysicalScalar
PositiveNatural Width
Integeratu a Width
Universal_integerReal
Universal_real
Array
StringBit_vector
Std_ulogic_vector VitalOutputMapTypeStd_logic_vector
Type
유형 분류Composite VitalDelayArrayType
VitalPeriodDataTypeVitalPathType
RecordTextLine
FileA
유형 분류
내재된 선언
Standard Pkg. 정의
Textio Pkg. 정의
Std_logic_1164 Pkg. 정의
Vital Timing Pkg 정의
- 16 -광 운 대 학 교전자정보대학
LineVitalTimeArrayType
Access Vital_Timing Pkg. 정의
6장. VHDL 객체 및 타입
객체 및 타입
타입의 선언
사용 가능한 선언 지역• 구성 선언(Configuration Declaration)을 제외한 모든 선언 영역• 구성 선언(Configuration Declaration)을 제외한 모든 선언 영역
VHDL 표현정수형 TYPE integer IS RANGE -2147482648 TO 2147483647 ;실수형 TYPE real IS RANGE -1.0E38 TO 1.0E38 ;;열거형 TYPE bit IS (‘0’, ‘1’);물리형 TYPE resistance IS RANGE 1 TO 1E10
UNITSohm;;kohm = 1000 ohm;mohm = 1000 kohm;
END UNITS;레코드형 TYPE date IS RECORD레코드형 TYPE date IS RECORD
hour : integer RANGE 0 TO 23;min : integer RANGE 0 TO 59;sec : integer RANGE 0 TO 59;
END RECORD;END RECORD;배열형 TYPE memory IS ARRAY (0 TO 255, 7 DOWNTO 0) OF bit;
TYPE bit_vector IS ARRAY( natural RANGE <>) OF bit;참조형 TYPE pointer IS ACCESS integer;파일형 TYPE bit file IS FILE OF bit;
- 17 -광 운 대 학 교전자정보대학
파일형 TYPE bit_file IS FILE OF bit;
6장. VHDL 객체 및 타입
객체 및 타입
종속타입(subtype)의 선언이미 선언된 기본타입(basetype)을 이용하여 새로운 타입을 정의한다.
기본타입에 대한 분해 함수(resolution function) 기능을 추가할 수 있다.기본타입에 대한 분해 함수(resolution function) 기능을 추가할 수 있다.• 참조(Access) 타입과 파일(File) 타입은 제외
종속타입의 구분• Unconstrained Subtypeyp
기본타입의 특성을 그대로 유지한다.• Constrained Subtype
기본타입에 대한 제약 정보를 추가한다.
사용 가능한 선언 지역사용 가능한 선언 지역• 구성 선언(Configuration Declaration)을 제외한 모든 선언 영역
VHDL 표현
SUBTYPE int IS integer ; -- unconstrained subtype
SUBTYPE float IS real RANGE -1.0E10 TO 1.0E10 ; -- constrained range
SUBTYPE td l i IS l d td l i l d btSUBTYPE std_logic IS resolved std_ulogic; -- resolved subtype
SUBTYPE eight_bits_vector IS bit_vector(7 DOWNTO 0); -- constrained index-range
- 18 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
타입의 이용
이름 표기법• 단순 이름(simple name)• 단순 이름(simple name)
식별자를 이용한 객체 지칭 방법
VARIABLE simple : integer ;
• 선택 이름(selected name)
simple := 100 ;
( )레코드의 인자를 나타내기 위한 객체 지칭 방법
VARIABLE selected : date ;
l d h 10
• 색인 이름(indexed name)
selected.hour := 10 ;
배열의 인자(element)를 나타내기 위한 객체 지칭 방법
- 19 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
• 슬라이스 이름(slice name)1차원 배열에서 연속된 인자들의 열(sequence)을 나타내기 위한 객체 지칭 방법
SIGNAL indexed slice : bit vector(7 DOWNTO 0 );SIGNAL indexed , slice : bit_vector(7 DOWNTO 0 );
indexed(0) := ‘0’; -- 색인 이름
slice(3 DOWNTO 0) := “0001”; -- 슬라이스 이름
• 속성 이름(attribute name)객체의 속성을 나타내기 위한 지칭 방법
SIGNAL reg : std_logic ;
SIGNAL target : boolean ;
target <= reg’EVENT ;
- 20 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
특별한 타입들 (합성 대상 설계에서는 사용불가!!)
참조형(Access)• 소프트웨어 개발 언어의 포인터와 같은 개념을 표현한다• 소프트웨어 개발 언어의 포인터와 같은 개념을 표현한다.• 동적 메모리 할당을 위하여 할당 함수 new를 사용한다.• 참조 타입을 선언하면 할당된 메모리를 소멸하는 Deallocate 프로시저가 자동적으
로 선언된다로 선언된다.• 합성되지 않는 소프트웨어 모델링 방법이다.
TYPE int IS ACCESS integer ;
VARIABLE start : int := NEW integer’(100); -- start : 100
VARIABLE finish : int = start; -- start : 100, finish : start’s value = 100
Deallocate(start); -- start : null, finish : start’s value = null
- 21 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
파일형(File)
• 외부 환경과의 입출력을 위해서 사용된다외부 환경과의 입출력을 위해서 사용된다.• 합성되지 않는 소프트웨어 모델링 방법이다.• 파일 타입을 선언하면 해당 파일 타입의 FILE_OPEN/FILE_CLOSE/READ/WRITE
프로시저와 ENDFILE 함수가 자동 선언된다. (LRM 정의)시저와 수가 자동 다 ( 정의)• 합성되지 않는 소프트웨어 모델링 방법이다.
시뮬레이션 입력 데이터 및 출력 결과 저장등에 이용된다.
TYPE text IS FILE OF line ;
FILE fptr : text OPEN read_mode IS “stimulus.dat”;
VARIABLE buffer : line; -- 파일의 데이터를 저장하기 위한 변수 선언VARIABLE buffer : line; -- 파일의 데이터를 저장하기 위한 변수 선언
Read(fptr, buffer); -- fptr 파일의 데이터를 읽어서 buffer에 저장함
- 22 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
특별한 타입들 (합성 대상 설계에서는 사용불가!!)
미정의형(Incomplete Type)• 이름만 타입으로 선언 하며 이에 대한 제약 정보(값의 범위/색인 범위 등)는 나중• 이름만 타입으로 선언 하며, 이에 대한 제약 정보(값의 범위/색인 범위 등)는 나중
에 재선언하여 사용한다.• 일반적으로 참조형과 같이 사용된다.
TYPE ll i l t t d l tiTYPE cell ; -- incomplete type declaration
TYPE link IS ACCESS cell;
TYPE cell IS RECORD -- full type declarationyp
val : integer;
suc : link;
pre : link;
END RECORD;
VARIABLE head : link := NEW cell’(0, NULL, NULL);
VARIABLE next node : link := head.suc;
- 23 -광 운 대 학 교전자정보대학
_ ;
6장. VHDL 객체 및 타입
객체 및 타입
속성(Attribute)객체에 대한 추가 정보 및 상태를 표현한다.
속성의 분류속성의 분류• 정의된 속성(Pre-defined Attribute)
상수/변수/범위/함수/타입 유형의 정보를 표현한다.모든 선언들은 정의된 속성을 내부적으로 소유하게 된다모든 선언들은 정의된 속성을 내부적으로 소유하게 된다.
• 사용자 정의 속성(User-defined Attribute)상수 정보를 갖는 속성을 정의할 수 있다.
- 24 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
타입에 대하여 정의된 속성T’BASE T의 base-type을 나타낸다.
T’LEFT T의 왼쪽 경계(left bound)를 나타낸다.
T’RIGHT T의 오른쪽 경계(right bound)를 나타낸다.
T’HIGH T의 가장 큰 값 즉 위쪽 경계(high bound)를 나타낸다.
T’LOW T의 가장 작은 값 즉 아래쪽 경계(low bound)를 나타낸다.( )
T’POS(X) T에서 X의 위치를 값으로 나타낸다.
T’VAL(X) T에서 X로 주어진 위치에 있는 값을 나타낸다.
T’SUCC(X) T에서 X보다 하나 큰 위치에 있는 값을 나타낸다.( )
T’PRED(X) T에서 X보다 하나 작은 위치에 있는 값을 나타낸다.
T’LEFTOF(X) T에서 X보다 하나 왼쪽에 있는 값을 나타낸다.
T’RIGHTOF(X) T에서 X보다 하나 오른쪽에 있는 값을 나타낸다.
타입 속성의 예
TYPE nine IS (‘0’, ‘1’, ‘X’, ‘Z’, ‘-’, ‘H’, ‘L’, ‘T’, ‘F’ );
T RIGHTOF(X) 에서 다 하나 쪽에 있 나타 다
SUBTYPE t IS nine;
t’BASE : nine 타입 t’BASE’LEFT : nine 타입의 ‘0’ 리터럴
타입의 ‘ 리터럴
- 25 -광 운 대 학 교전자정보대학
nine’POS(‘X’) : integer 3 nine’VAL(9) : nine 타입의 ‘F’ 리터럴
6장. VHDL 객체 및 타입
객체 및 타입
속성배열형 객체에 대하여 정의된 속성• 다차원 배열의 경우 합성이 지원되지 않는 툴들이 많다.• 배열형의 상수/신호/변수 모두 배열형에 정의된 속성을 사용할 수 있다.• 가변적인 Bit Size인 경우 LENGTH 속성을 사용하면 재설계의 부담을 덜 수 있다.
A’LEFT[(N)]N은 선택적이며 없을 경우(default)에는 1로 간주
A’LEFT[(N)]( )
이 속성은 N번째 색인의 왼쪽 배열 경계를 표현한다
A’RIGHT[(N)]N은 선택적이며 없을 경우(default)에는 1로 간주
이 속성은 N번째 색인의 오른쪽 배열 경계를 표현한다.
A’HIGH[(N)]N은 선택적이며 없을 경우(default)에는 1로 간주
이 속성은 N번째 색인의 가장 큰 배열 경계를 표현한다.
A’LOW[(N)]N은 선택적이며 없을 경우(default)에는 1로 간주
이 속성은 N번째 색인의 가장 작은 배열 경계를 표현한다( )
이 속성은 N번째 색인의 가장 작은 배열 경계를 표현한다.
A’RANGE[(N)]N은 선택적이며 없을 경우(default)에는 1로 간주
이 속성은 N번째 색인의 범위를 표현한다.
N은 선택적이며 없을 경우(default)에는 1로 간주A’REVERSE_RANGE[(N)]
N은 선택적이며 없을 경우(default)에는 1로 간주
이 속성은 N번째 색인 범위의 역을 표현한다.
A’LENGTH[(N)]N은 선택적이며 없을 경우(default)에는 1로 간주
이 속성은 N번째 색인에 있는 값의 수를 표현한다.
- 26 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
* [(N)] : (N)은 생략 가능함
객체 및 타입
배열 속성의 예
VARIABLE reg : bit_vector(7 DOWNTO 0);
sum’LEFT(1) : 7 -- 1차원 색인의 Left 경계 값
sum’RANGE : 7 DOWNTO 0 -- 1차원 색인 범위
차원 색인 범위의 반전sum’REVERSE_RANGE : 0 TO 7 -- 1차원 색인 범위의 반전
sum’LENGTH : 8 -- 1차원 색인 구간의 길이
- 27 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
속성신호에 대하여 정의된 속성• DELAYED/STABLE/QUIET/TRANSACTION 속성은 신호 객체이다.Q• 나머지 신호 속성은 함수이다.
S’DELAYED[(T)]Time타입을 가지는 T가 없을 경우에는 0ns로 간주
S가 시간 T만큼 지연된 신호가 되도록 나타낸다
S’STABLE[(T)] Time타입을 가지는 T가 없을 경우에는 0ns로 간주Event가 발생한 후 T 시간동안 FALSE가 되고, 이후 시간에는 TRUE를 표시.
S’QUIET[(T)]Time타입을 가지는 T는 경우에는 0ns로 간주
Active가 발생한 후 T 시간동안 FALSE가 되고, 이후 시간에는 TRUE를 표시.
S’TRANSACTION Bit 형으로서 Active가 일어날 때마다 결과가 반전된다.
S’EVENT Event가 있으면 TRUE, 아니면 FALSE를 표시한다.
S’ACTIVE 현재의 시뮬레이션 사이클 동안에 갱신의 유무를 나타낸다.
S’LAST EVENT 마지막으로 Event가 발생한 이후 경과한 시간을 나타낸다._
S’LAST_ACTIVE 마지막으로 트랜잭션이 일어난 이후 경과한 시간을 나타낸다
S’LAST_VALUE S의 값이 마지막으로 변하기 이전 값을 나타낸다.
- 28 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
• Active새로운 값으로 갱신되는 경우를 의미한다.값의 변화가 없어도 해당된다.
Event• Event새로운 값으로 갱신되어 값의 변화가 발생된 경우를 의미한다.
- 29 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
속성
신호에 대하여 정의된 속성• 신호 속성의 예• 신호 속성의 예
10, 30, 50 ns에 새로운 값이 신호 S에 입력된 경우
s <= ‘0’ , ‘0’ AFTER 10 ns, ‘1’ AFTER 30 ns, ‘0’ AFTER 50 ns ;
10 ns 30 ns 50 ns 70 ns
Signal S
S'EVENTS V NT
S'STABLE
S'ACTIVE
S'DELAYED(5 ns)
S'TRANSACTION
S'QUIET(5 ns)
5 1510 20 25 0 0105 15 5 10 15 20
S'LAST_VALUE
S'LAST_EVENT
- 30 -광 운 대 학 교전자정보대학
5 50 15 20 0 0105 15 5 10 15 20S'LAST_ACTIVE
6장. VHDL 객체 및 타입
객체 및 타입
사용자 정의 속성
속성 선언(Attribute Declaration)• 사용자가 새로운 속성을 선언한다• 사용자가 새로운 속성을 선언한다.• 속성의 객체 특성은 상수만 가능하다.
ATTRIBUTE instance : integer ;
속성 명세(Attribute Specification)• 사용자가 정의한 속성을 특정 객체에게 첨가한다.
속성을 부여 받을 수 있는 객체들의 종류• 속성을 부여 받을 수 있는 객체들의 종류
Entity / Architecture / Configuration / PackageProcedure / Function / Type / SubtypeConstant / Signal / Variable / ComponentConstant / Signal / Variable / ComponentLabel / Literal / Units / File / Group
ATTRIBUTE instance OF d_ff : ARCHITECTURE IS 255;
d_ff’instance -- integer 타입의 255를 의미한다.
- 31 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
서브프로그램(Subprogram)절차 함수(Procedure)• 순차적 처리 흐름을 기술한다• 순차적 처리 흐름을 기술한다.• IN 모드의 파라메터는 내부 상수로 간주한다.• BUFFER/INOUT 모드의 파라메터는 내부 변수로 간주한다.
연산 함수(Function)• 연산 과정을 기술한다.
모든 파라메터가 IN 모드로 동작한다• 모든 파라메터가 IN 모드로 동작한다. • 출력 값은 RETURN 문을 통하여 전달된다.
- 32 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
서브프로그램 선언 및 서브프로그램 몸체 선언
FUNCTION "NOT" ( l : std_ulogic ) RETURN ux01;입력은 출력은 타입을 갖는 함수-- 입력은 std_ulogic, 출력은 ux01 타입을 갖는 함수
PROCEDURE proc (l : IN std_uligic ; r : OUT std_ulogic);
-- 서브프로그램 선언
FUNCTION "NOT" ( l : std_ulogic ) RETURN ux01 ISBEGIN
RETURN (not table(l )) ; -- 함수에는Return 문이 있어야 한다.( _ ( )) ; 수에 이 있어야 다END "NOT";
PROCEDURE proc (l : IN std_uligic ; r : OUT std_ulogic ) ISBEGINBEGIN
r := l ;END proc; -- 서브프로그램 몸체 선언
- 33 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
서브프로그램
서브프로그램의 호출• 서브프로그램을 사용하는 경우 정의된 객체 입출력 종류 및 타입 종류에 일치해야• 서브프로그램을 사용하는 경우 정의된 객체, 입출력 종류 및 타입 종류에 일치해야
한다. (signature 정보)• 서브프로그램의 경우는 다중정의가 가능하다.
동일한 이름을 갖으면서 서로 다른 타입의 파라메터를 사용하는 서브프로그램동 이 갖 서 서 다 타 의 파라메터 사용하 서
들이 선언될 수 있다.
서브프로그램의 다중정의(Overloading)• 동일한 이름의 두 서브프로그램을 선언할 수 있다.• 다중정의된 서브프로그램은 서로 다른 signature 정보를 가져야 한다.• 동일한 signature 정보를 갖는 경우는 중복 오류에 해당된다.
타입이 기본타입과 종속타입 관계이면 동일한 타입으로 간주된다.• 연산자(Operator)의 경우도 다중정의가 가능하다.• Signature 정보
파라메터의 갯수 및 위치, 이름
파라메터의 타입
함수의 경우는 결과 타입
- 34 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
다중정의의 예
FUNCTION "NOT" ( l : td l i ) RETURN td l i ; 1FUNCTION "NOT" ( l : std_ulogic ) RETURN std_ulogic ; -- 1FUNCTION "NOT" ( l : bit ) RETURN bit ; -- 2
PROCEDURE (l IN td l i OUT td l i ) 3PROCEDURE proc (l : IN std_ulogic ; r : OUT std_ulogic ) ; -- 3PROCEDURE proc (l : IN bit ; r : OUT bit ) ; -- 4
VARIABLE a, b, c : std_ulogic;b := NOT a; -- 1 연산자 호출
시저 출proc(b, c); -- 3 프로시저 호출
- 35 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
연산자(Operator)기본 연산자 종류
구분 종류 우선순위구분 종류 우선순위
논리 연산자 and, or, nand, nor, xor 6 관계 연산자 =, /=, <, <=, >, >= 5
가감산 연산자 +, -, & 4 부호 + - 3
추가 VHDL 연산자(VHDL’93)
부호 +, - 3승제산 연산자 *, /, mod, rem 2 기타 연산자 **, abs, not 1
추가 VHDL 연산자(VHDL 93)• 논리 연산자
xnor 연산자가 추가되었다.• Shift 연산자
우선 순위는 논리 연산자보다는 높고 관계 연산자보다는 낮다.SLL
SRL
--Shift Left Logical
--Shift Right Logical
SLA
SRA
ROL
ROR
--Shift Left Arithmetic
--Shift Right Arithmetic
--Rotate Left Logical
--Rotate Right Logical
- 36 -광 운 대 학 교전자정보대학
ROR Rotate Right Logical
6장. VHDL 객체 및 타입
객체 및 타입
연산자의 특성
• 우 결합 법칙
같은 순위를 가진 연산자들인 경우 왼쪽에서 오른쪽의 순으로 수행된다.
우선순위를 바꾸고자 하는 경우 괄호를 사용된다
z := a + b + c ; -- (1) a+b (2) (1)의 결과 + c
우선순위를 바꾸고자 하는 경우 괄호를 사용된다.
z := a + (b + c) ; -- (1) b + c (2) a + (1)의 결과
- 37 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
연산자
연산자의 특성
• + - 는 가감산 연산자와 부호로 사용된다• +, 는 가감산 연산자와 부호로 사용된다.
NOT은 논리 연산자이지만 우선순위가 다른 연산자보다 높다
z := (-a) - b ; -- (1) -a : 부호 (2) - b : 가감산 연산자
• NOT은 논리 연산자이지만 우선순위가 다른 연산자보다 높다.
z := a XOR NOT b ; -- (1) not b (2) a xor (1)의 결과
• 논리 연산자의 경우 두 피연산자의 타입이 같아야 하며, 연속적인 사용에 제한이있으므로 괄호를 사용해야 한다.
z := a AND b AND c ; -- illegal; gz := ( a AND b ) AND c ; -- legal
- 38 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
• AND, OR, NAND, NOR는 Short Circuit 연산을 수행한다.
z := a AND b;-- a가 ‘0’ 인 경우 b 값에 상관 없이 결과는 ‘0’이다a가 0 인 경우 b 값에 상관 없이 결과는 0 이다.-- 이와 같이 왼쪽에서 오른쪽 순으로 처리가 진행됨에 따라서-- 왼쪽 피연산자만으로 결과가 결정되는 연산을 Short Circuit -- 연산이라 한다.
a='0' a='0'
AND
z='0' a='0' a='0'
XOR
z='1'a='0'
XOR
b='1'
• 연산자의 다중정의에 따라서 피연산자의 타입에 의한 다른 연산 함수의 호출이
Short Circuit 연산 일반 연산
• 연산자의 다중정의에 따라서 피연산자의 타입에 의한 다른 연산 함수의 호출이발생할 수 있다.
• 입력 b가 ‘X’일 경우 결과가 다르다.
- 39 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
분해 함수(Resolution Function)분해 함수의 특징• 다수의 입력 신호에 대한 결과 값을 결정하기 위하여 정의한다• 다수의 입력 신호에 대한 결과 값을 결정하기 위하여 정의한다.• 입력은 1차원 무제한 배열형만 가능하다. 출력은 배열형 요소(Element)의 타입으로
부터 결정된다.• 시뮬레이션 주기(Cycle)에서 내부적으로 해당 신호가 활성(Active)되면 자동으로시뮬레이션 주기(Cycle)에서 내부적으로 해당 신호가 활성(Active)되면 자동으로
호출되어 신호의 값을 갱신 과정에 사용된다.
- 40 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
분해 함수의 예
FUNCTION wired_or (inputs : bit_vector ) RETURN bit ISCONSTANT floatvalue : bit = ‘0’;CONSTANT floatvalue : bit 0 ;
BEGINIF inputs’LENGTH = 0 THEN
-- THIS IS A BUS WHOSE ALL DRIVERS ARE OFFRETURN floatvalue ;RETURN floatvalue ;
ELSEFOR i IN inputs’RANGE LOOP
IF inputs(i) = ‘1’ THENRETURN ‘1’;RETURN 1 ;
END IF;END LOOP;RETURN ‘0’;
END IF;
• 입력이 존재하지 않을 경우는 floatvalue를 출력한다
END IF;END wired_or ;
• 입력이 존재하지 않을 경우는 floatvalue를 출력한다.• 다수 입력의 경우는 입력 값 중에서 하나만이라도 ‘1’이면 ‘1’을 출력한다.• 모든 입력이 ‘0’인 경우는 ‘0’을 출력한다.
- 41 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
분해 함수의 예
SIGNAL line: wired_or bit;
BEGINP1: PROCESSBEGIN
line <= ‘1’;line < 1 ;END PROCESS;
P2: PROCESSBEGINBEGIN
line <= ‘0’;END PROCESS;
END Example ;
- 42 -광 운 대 학 교전자정보대학
객체 및 타입
단축 이름 달기(Alias Declaration: VHDL’93)객체 단축 이름
VARIABLE d bi ( 0 TO 31)VARIABLE data : bit_vector( 0 TO 31);ALIAS mantissa : bit_vector(23 DOWNTO 0) IS data( 8 TO 31);
mantissa := “000011110000111100001111” ;
비객체 단축 이름
mantissa : 000011110000111100001111 ;-- data(8 TO 31) := “111100001111000011110000” (동일 표현)
축
ALIAS std_bit IS std.standard.bit ;
VARIABLE reg : std bit := ‘1’ ;VARIABLE reg : std_bit : 1 ;-- VARIABLE reg : bit := ‘1’ (동일 표현)
- 43 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
객체 및 타입
그룹(Group : VHDL’93)특성한 객체들의 집합을 간편하게 기술하기 위해서 이용한다.
그룹 예제 선언(Group Template Declaration)• 그룹을 형성 할 수 있는 객체들의 종류
E i / A hi / C fi i / P k / P d / F i /Entity / Architecture / Configuration / Package / Procedure / Function / Type / Subtype / Constant / Signal / Variable / Component Label / Literal / Units / File / Group
그룹 선언(Group Declaration)
GROUP pin2pin IS (SIGNAL, SIGNAL) ;
그룹 선언(Group Declaration)
GROUP c2q : pin2pin (clk, dout ) ;
- 44 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
선언영역 및 가시성
선언 영역(Declarative Region)선언 영역의 종류• 설계 단위(Design Unit)• 설계 단위(Design Unit)• 블록 문/프로세스 문/생성 문
• 컴포넌트 선언/레코드 타입 선언
• 서브프로그램 선언 및 서브프로그램 몸체• 서브프로그램 선언 및 서브프로그램 몸체
• 반복 제어문
선언 영역의 의미선언 영역의 의미• 타입 및 객체, 속성 등의 선언이 가능하다.• 선언된 내용에 대한 유효 범위를 형성하게 된다.
선언 영역은 하위 선언 영역을 내포할 수 있다• 선언 영역은 하위 선언 영역을 내포할 수 있다.
- 45 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
선언영역 및 가시성
Declarative Region
Entity Package Configuration
Architecture body Package body
Block Statement
ProcessStatement
ComponentDeclaration
GenerateStatement
SubprogramDeclaration
SubprogramBody
Use
use entity/configuration
Body
Record TypeDeclarationLoop Statement
hierarchicalRegion
block configuration
- 46 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
선언영역 및 가시성
선언 영역
선언 영역의 확장• Default 확장• Default 확장
상위 선언 영역에 내포된 하위 선언 영역은 유효범위를 상위 선언 영역까지
확장한다.현재 선언 영역을 내포한 모든 상위 선언 영역은 선언 영역으로 확장된다.
• USE 문에 의한 확장
USE 문을 사용한 패키지 확장
USE 문 사용 가능 지역
상위 선언 지역이 이용한 패키지는 자동으로 하위 지역으로도 확장된다.패키지 선언/엔티티 선언/구성 선언/패키지 몸체/아키텍쳐 몸체/블록문/프로세스문프로세스문 .
- 47 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
선언영역 및 가시성
• Binding 문에 의한 확장
USE ENTITY/CONFIGURATION문일 사용한 확장
해당 하위 설계 단위인 엔티티(아키텍쳐) 및 구성 선언의 Port와 Generic을이용할 수 있다.블록 구성문/컴포넌트 구성문을 이용한 확장
구성 선언의 경우 블록 구성문/컴포넌트 구성문을 이용하여 하위 설계 단위의
아키텍쳐 몸체/블록문/생성문들 이용할 수 있다아키텍쳐 몸체/블록문/생성문들 이용할 수 있다.
• Nested된 확장
동일한 구조의 선언 영역이 내재적으로 선언된 경우동일한 구 의 선언 영역이 내재적 선언된 경우
Nested될 수 있는 선언 영역
블록문/생성문/반복문/서브프로그램
- 48 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
선언영역 및 가시성
가시성(Visibility)가시성의 의미• 선언 내용이 참조 가능한 유효 범위 안에 위치하고 있음을 의미한다• 선언 내용이 참조 가능한 유효 범위 안에 위치하고 있음을 의미한다.
• 동형이의어(Homograph) 계층적 선언 영역의 경우 내/ 외부 선언 영역에서 동일한 이름의 선언이
가능하다가능하다.내부 선언 영역의 선언은 직접 참조 가능하며, 외부 선언은 hidden되어 진다.hidden된 선언을 참조하려는 경우는 선택적 이름을 통해서 해결한다.
- 49 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입
선언영역 및 가시성
Visible by selection
선언 지역의
유효범위
-- full adder : behavioral description
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY f dd b h ISENTITY f_addr_beh IS
PORT( in1, in2, carry_in : IN std_logic ;
carry_out, sum_out : OUT std_logic);
END f_addr_beh;
ARCHITECTURE f_addr_beh_a OF f_addr_beh IS
BEGIN
선언 지역
선언 지역
directly visible(프로세스 변수)
BEGIN
p: PROCESS( in1, in2, carry_in )
VARIABLE data_in : std_logic_vector( 2 DOWNTO 0);
VARIABLE cnt : integer;
BEGIN
cnt := 0;
선언 지역
선언 지역
homograph 발생
directly visible(반복문 변수)
visible by selection
(프로세스 변수)
data_in := in1 & in2 & carry_in ;
FOR cnt N 0 TO 2 LOOP
IF data_in(cnt) = '1' THEN
p.cnt := p.cnt + 1;
END IF;
END LOOP;
선언 지역
(프로세스 변수)
homograph 소멸
directly visible
(프로세스 변수)
CASE cnt IS
WHEN 0 => carry_out <= '0';
sum_out <= '0';
WHEN 1 => carry_out <= '0';
sum_out <= '1';
WHEN 2 => carry_out <= '1';
sum_out <= '0';
WHEN OTHERS => carry_out <= '1';
sum_out <= '1';
END CASE;
END PROCESS;
END f_addr_beh_a ;
- 50 -광 운 대 학 교전자정보대학
6장. VHDL 객체 및 타입