Microsoft PowerPoint - VHDL03.ppt [호환 모드]

Similar documents
歯Chap1-Chap2.PDF

Microsoft PowerPoint - VHDL01_chapter1.ppt [호환 모드]

OCW_C언어 기초

Microsoft PowerPoint - VHDL08.ppt [호환 모드]

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - VHDL06.ppt [호환 모드]

C# Programming Guide - Types

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - lec2.ppt

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_04.pptx

강의 개요

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

chap 5: Trees

1

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - PL_03-04.pptx

슬라이드 1

KNK_C03_Expr_kor

Microsoft PowerPoint - CH6.ppt [호환 모드]

컴파일러

Microsoft PowerPoint - KNK_C03_Expr_kor

Microsoft PowerPoint - Chapter_02.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - a10.ppt [호환 모드]

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

디지털공학 5판 7-8장

PowerPoint Presentation

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

C++ Programming

PowerPoint 프레젠테이션

. 고성능마이크로프로세서 LU 와레지스터 파일의구조 (2.). 직접디지털주파수합성기 (FS) 의구조 3. 고성능마이크로프로세서부동소수점연산기 (Floating-Point Unit) 구조 (2) (2.) (2.) 2. 암호화를위한 VLSI 구조와설계의개요 (2.) 다음참

Microsoft PowerPoint - c2.ppt

PowerPoint Presentation

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Modern Javascript

Microsoft PowerPoint - [2009] 02.pptx

ºÎ·ÏB

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

03-JAVA Syntax(2).PDF

Microsoft PowerPoint - hw8.ppt [호환 모드]

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - VHDL02_full.ppt [호환 모드]

쉽게

슬라이드 1

C++-¿Ïº®Çؼ³10Àå

10주차.key

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

슬라이드 1

11장 포인터

chap x: G입력

JAVA PROGRAMMING 실습 02. 표준 입출력

윈도우즈프로그래밍(1)

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

PowerPoint 프레젠테이션

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Microsoft PowerPoint - Java7.pptx

MAX+plus II Getting Started - 무작정따라하기

PowerPoint 프레젠테이션

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft Word - 제6장 Beyond Simple Logic Gate.doc

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Tcl의 문법

Microsoft PowerPoint - chap-05.pptx

PowerPoint Template

PowerPoint Presentation

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint Presentation

<4D F736F F F696E74202D C31345FB0EDB1DE20BFB5BBF320C8B8B7CE20BCB3B0E82E BC8A3C8AF20B8F0B5E55D>

PowerPoint Template

Microsoft Word - logic2005.doc

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Orcad Capture 9.x

슬라이드 1

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - e pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

2 장수의체계 1. 10진수 2. 2진수 3. 8진수와 16진수 4. 진법변환 5. 2진정수연산과보수 6. 2진부동소수점수의표현 한국기술교육대학교전기전자통신공학부전자전공 1

Chapter 4. LISTS

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Microsoft PowerPoint - o8.pptx

thesis

Microsoft PowerPoint - chap06-2pointer.ppt

Javascript.pages

ABC 2장

Transcription:

VHDL 프로그래밍 3. VHDL 문법기초 한동일 학습목표 VHDL 언어를구성하는문자세트를배운다. VHDL 언어를구성하는문장구성요소를배운다. VHDL 언어의예약어에대해서숙지한다. VHDL언어의식별어를파악할줄알고사용할줄안다. 리터럴 (literal) 의종류를알고구분할수있다. 객체클래스의종류를알고구분할수있다. 형 (type) 의종류와선언방식을알수있다. 연산자의종류와우선순위를이해한다. 형과연산자의관계를이해한다. 2/73

목차 VHDL 문법기초 VHDL 문장구성요소 예약어 (reserved word) 식별어 (identifier) 리터럴 (literal) 주석 (comment) 연산자 (operator) 형 (type) 3/73 VHDL 의문장구성요소 사용가능한문자세트 도형문자 (graphic code) ISO/IEC 8859-1: 1987, Information Processing - 8-bit Single-Byte Coded Graphic Character Sets -- Part 1: Latin Alphabet No. 1. 포맷제어문자 (format effector) 수직탭 (vertical tab) 복귀부호 (carriage return) 줄먹임문자 (line feed) 용지먹임문자 (form feed) 주석부분 -- 기호다음부분 /* */ 기호내부 (2008 버전이후사용가능 ) 컴파일러가무시하므로한글도입력가능 4/73

191 개도형문자들 5/73 제어문자들 6/73

VHDL 의문장구성요소 주문자세트 7/73 VHDL 의문장구성요소 보조문자세트 8/73

VHDL 의문장구성요소 문장구성요소의분류 구분어 (delimiter) 예약어 (reserved word) 식별어 (identifier) 리터럴 (literal) 주석 (comment) 9/73 문장구성요소의분류 분리어 (separator) 공백문자 (space), 포맷제어문자 (format effector), 라인종단문자 (End of line) 로구성됨 분리어사용방법 라인의끝은항상분리어로끝남 분리어의종류는무관 하나이상의분리어가연속되어사용되어도무관 가독성을향상시킬수있도록적절히사용하면됨 10/73

문장구성요소의분류 구분어 (delimiter) it 특수문자를이용하여문자열들을서로다른문장요소로분리하고구분하는역할 구분어의분류 복합구분어 (compound delimiter) 단일구분어의종류및이름 종류이름종류이름종류이름 & ' ( ) * +, Ampersand Apostrophe, tick Lft Left parenthesis Right parenthesis Asterisk, multiply Plus sign Comma -. / : ; < = Hypen, minus sign Dot, point, period Slash, divide, id solidus Colon Semicolon Less-than sign Equals sign > ` [ ]? @ Greater-than sign Grave accent Vertical line(bar) Left square bracket Right square bracket Question mark Commencial at 11/73 구분어 구분어 (delimiter) it 복합구분어의종류및이름 종류이름종류이름 => := >= <>?=?<?> << Arrow Variable assignment Greater than or equal Box Matching equality Matching less than Matching greater than Double less than ** /= <=???/=?<=?>= >> Double star, exponentiation Inequality, not equal Less than or equal, signal assignment Condition conversion Matching inequality Matching less than or equal Mthi Matching greater than or equal Double greater than 12/73

문장구성요소의분류 예약어 (reserved word) 총 115 개 (2008 버전의경우 ) 대소문자구분이없음 다른의미의식별어로사용하면안됨 코딩시숙지하고있어야함 13/73 예약어 : 1076-2008 버전 abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover df default disconnect downto else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property p protected pure range record register reject release rem report restrict_guarantee restrict return rol ror select sequence severity signal shared sla sll sra srl strong subtype then to transport type unaffected units until use variable vmode vprop p vunit wait when while with xnor xor 14/73

문장구성요소의분류 식별어 (identifier) 설계자가명명하는문법구조의이름들 아키텍처이름 신호, 변수이름등등 넓은의미로는예약어도식별어의일종 ( 식별어의명명규칙에의해서생성됨 ) 식별어의분류 기본식별어 (basic identifier) 확장식별어 (extended identifier) 15/73 식별어 식별어의 BNF 명명규칙 identifier ::= basic_identifier extended_identifier basic_identifier ::= letter { [ underline ] letter_or_digit _ } letter_or_digit _ ::= letter digit letter ::= upper_case_letter lower_case_letter extended_identifier ::= \ graphic_character { graphic_character } \ 16/73

식별어 기본식별어의예 정상적인예 COUNT, A, DCT, FrameCount X9, ADD1, Pentium4, P4C1 RST_n, Frame_Count, ADD_A_BA 잘못정의된예 _carry_out : 밑줄이제일앞에올수없음 ADD A_B A : 밑줄이연이어두개올수없음 DCT_ : 밑줄이마지막에올수없음 확장식별어의예 정상적인예 \ ELSE\, \ 200$\, \ ADD A_B\, A \ DCT_\, \ \ 74LS32\ 17/73 문장구성요소의분류 리터럴 (literal) l) constant HTOTAL_WIDTH : integer := 512 ; constant MAX_BIN : string := B"1111_1111_1111"; constant MAX_HEX : BIT_VECTOR := X"FFF"; type VOLTAGE_RANGE is range -15.0 to 15.0; 리터럴 512 B"1111_1111_1111" X"FFF" -15.0 15.0 18/73

문장구성요소의분류 리터럴 (literal) l) 리터럴의분류 decimal literal abstract literal based literal literal character literal string literal real literal integer literal bit string literal 19/73 리터럴 추상리터럴 (abstract t literal) l) 수형에의한분류 정수형리터럴 (integer literal) 진법에의한분류 십진수리터럴 (decimal literal) 진수리터럴 (based literal) l) 추상리터럴의표현 숫자앞부분에 0을추가가능 자리수를일치시키거나가독성을위함 밑줄사용가능 두개이상연이어사용불가 처음과마지막에사용불가 20/73

리터럴 십진수리터럴의 BNF 정의 decimal_literal ::= integer [. integer ] [ exponent ] integer ::= digit { [ underline ] digit } exponent ::= E [ + ] integer E integer 십진수리터럴의예 15, 0, 1E6, 123_456_789 실수형리터럴의예 15.0, 0.0, 1.2e+6, 3.141_592, 1.234E-15 십진수리터럴의사용예 constant HALF_PERIOD : time := 50E3ns 5.0E3 ; 21/73 리터럴 진수리터럴의 BNF 정의 based_literal ::= base # based_integer [. based_integer ] # [ exponent ] base ::= integer based_integer ::= extended_digit { [ underline ] extended_digit } extended_digit ::= digit letter exponent ::= E [ + ] integer E - integer 2진수 ~ 16진수사이의진수표현가능 진수리터럴의예 2#1111_1110#, 2#1.1111_1111_111#E11 16 진수리터럴의예 16#FE#, 16#F.FF#E+2 22/73

리터럴 문자리터럴 (character literal) l) 의 BNF 정의 character_literal ::= 'graphic_character' 두개의작은따옴표사이에하나의문자만올수있음 문자리터럴의예 정상적인예 a, A, @,,, 1 잘못정의된예 a, ab 23/73 리터럴 문자열리터럴 (string literal) l) 의 BNF 정의 string_literal ::= "{graphic_character}" 두개의따옴표사이에임의의개수의도형문자들이옴 내부에따옴표를사용하는경우연속된두개의따옴표를하나의따옴표로계산 두줄이상이필요할경우 & 로두개의문자열을연결 문자열리터럴의예 a,, -- 모두길이가 1 인문자열 imagefolder/sampleimage.txt l i t 24/73

리터럴 비트열리터럴 (bit string literal) l) 의 BNF 정의 bit_string_literal ::= [ integer ] base_specifier "[bit_value]" bit_value ::= graphic_character { [ underline ] graphic_character } base_specifier ::= B O X UB UO UX SB SO SX D 두개의따옴표사이에오는문자열로비트열리터럴생성 올수있는문자열 0~9, A~F, U, X, 0, 1, Z, W, L, H, - ( 대소문자구분없음 ) Integer : 비트열의길이정보를제공가능 base specifier B : 이진수, O : 8 진수, X : 16 진수 U : std_ulogic, S : std_logic, D : 십진수표기를나타냄 25/73 리터럴 비트열리터럴의예 bit string literal length equivalent value B"" B"1111_1111" 1111" X"FF" O"77" X"77" B"XXXX_10HL" X"F-" 12X"F-" 12SX"XXA0" 0 8 8 6 8 8 8 12 12 empty bit string "11111111" B"1111_1111" B"111_111" B"0111_0111" "XXXX10HL" B"1111_ ----" B"0000_1111_---- B"XXXX_1010_0000" 밑줄문자의개수는비트열의길이와무관 가독성을높이기위한용도 26/73

문장구성요소의분류 주석 (comment) VHDL 코드의가독성을증가시키는목적 VHDL 서술과관련된부가정보를문법제한없이서술가능 주석의분류 범위주석 (delimited comment) 한줄주석 두개의연속된하이픈 -- 이용 해당라인내에서 -- 기호이후의대부분의기호는주석으로무시함 주석내부의 -- 기호도무시 한줄주석내에다음문자는사용불가 수직탭 (vertical tab), 복귀부호 (carriage return) 줄먹임문자 (line feed), 용지먹임문자 (form feed) 27/73 주석 범위주석 /* 와 */ 기호사용 /* 와 */ 내부의모든기호는주석으로간주하고무시함 범위주석내부의 범위주석내부의 -- 기호도마찬가지로무시함 한줄주석과마찬가지로내부에한글기호사용가능 수직탭, 복귀부호등도사용가능하며 VHDL 해석기가무시함 주석의사용예 ---- The first two hyphens start the comment. end; -- End of process r_image := 255; /* Comments /* do not nest */ -- 한글주석도가능합니다. 28/73

문장구성요소의분류 VHDL 문장예 S <= A xor B; -- calculate l sum of two input 문장구성요소분류예 식별어, 구분어, 주석, 예약어사이의공백문자는분리어 S : 식별어 <= : 구분어 A : 식별어 xor : 예약어 B: 식별어 ; : 구분어 -- calcu : 주석 29/73 연산자 (operator) 연산자 (operator) 란? 표현식 (expression) 에사용되어식의값을결정하는용도 연산자의분류 8 개의클래스로분류, 우선순위가높은연산자가먼저계산됨 같은우선순위에대해서는왼쪽부터오른쪽순서로계산 operator class operators precedence condition?? low logical relational shift adding sign multiplying py miscellaneous and or nand nor xor xnor = /= < <= > >=?=?/=?<?<=?>?>= sll srl sla sra rol ror + - & + - * / mod rem ** abs not high 30/73

연산자 (operator) 조건연산자 (condition operator) 단항연산자 (unary operator) IEEE Standard 1076-2008 버전부터추가된연산자 조건연산자의정의 function "??" (anonymous: BIT) return BOOLEAN; bit 형을 boolean 형으로변환하는용도 1 인경우 TRUE 를리턴 0 인경우 FALSE 를리턴 31/73 연산자 (operator) 논리연산자 (logical l operator) bit, boolean 형에대해서연산이정의 (standard 패키지 ) nand, nor 연산자가연이어올때는괄호가필요 논리연산자의정의 32/73

논리연산자 (logical operator) 논리연산자의사용예 signal a, b, c, b1, b2, b3, b4, b5, b6, b7, b8 : boolean; -- 중략 b5 <= a nand b nand c; -- 에러를유발하는경우 b6 <= a nor b nor c; -- 에러를유발하는경우 b7 <= a and b or c ; -- 에러를유발하는경우 -- 정상적인경우들 b1 <= a and b and c and d ; b2 <= a or b or c; b3 <= a xor b xor c xor d; b4 <= a xnor b xnor c; b5 <= (a nand b) nand c; b7 <= a and (b or c) ; 33/73 연산자 (operator) 관계연산자 (relational l operator) 두피연산자의동일성여부검출 관계연산자의분류 관계연산자 두피연산자의관계를비교한후 boolean 값을리턴 정합관계연산자 (matching relational operator) 두피연산자의관계를비교한후피연산자와같은형을리턴 IEEE Standard 1076-2008 버전부터추가 relational loperator operators relational = /= < <= > >= matching relational?=?/=?<?<=?>?>= 34/73

관계연산자 관계연산자의기능정의 35/73 연산자 (operator) 자리이동연산자 (shift operator) bit, boolean 형의일차원배열에대해서연산이정의 피연산자의정수부분이음수일경우에는방향이바뀜 자리이동연산자의기능정의 36/73

자리이동연산자 자리이동연산자의동작 sll : shift left logical 제일오른쪽에는배열요소의 LEFT 속성값이입력 srl : shift right logical 정수값만큼배열을오른쪽으로이동 제일왼쪽에는배열요소의 LEFT 속성값이입력 sla : shift left arithmetic 정수값만큼배열을왼쪽으로이동 제일오른쪽에있던배열값이반복해서입력 sra : shift right arithmetic 정수값만큼배열을오른쪽으로이동 제일왼쪽에있던배열값이반복해서입력 37/73 자리이동연산자 자리이동연산자의동작 rol : rotate left logical 정수값만큼배열을왼쪽으로이동 제일왼쪽에있던값이오른쪽으로재입력 ror : rotate right logical 정수값만큼배열을오른쪽으로이동 제일오른쪽에있던값이왼쪽으로재입력 38/73

자리이동연산자 자리이동연산예 operation result remark 01100011 sll 1 "11000110" 배열의오른쪽에 BIT'LEFT 값인 0 이입력됨 01100011 sll 2 01100011 srl 1 01100011 srl 3 "10001100" "00110001" "00001100" 위의동작을 2번반복배열의왼쪽에 BIT'LEFT 값인 0 이입력됨위의동작을 3번반복 01100011 srl -2 01100011 sla 1 01100011 sra 2 01100011 rol 1 01100011 ror 2 01100011 ror 0 "10001100" "11000111" "00011000" "11000110" "11011000" "01100011" 01100011 sll 2 연산과동일한값을출력배열의오른쪽끝값 1 이입력됨배열의왼쪽끝값 0 이반복해서입력됨 배열의왼쪽끝값 0 이오른쪽끝에입력됨배열의오른쪽끝값 1 이연속해서왼쪽끝에입력됨변화없음 39/73 연산자 (operator) 덧셈연산자 (adding operator) +, - : 수학적인산술연산수행 & : 배열형을서로접합하여큰배열형을생성 덧셈연산자의기능정의 40/73

덧셈연산자 (adding operator) 접합연산예 operation result 0110 & 1001 "01101001" 0 & 1001 "01001" 0110 & 1 "01101" 0 & 1 "01" 0 & 1001 & 1 "010011" 41/73 연산자 (operator) 부호연산자 (sign operator) +, - : 수학적인산술연산과같은동작 수치형에대해서정의됨 부호연산자의기능정의 42/73

부호연산자 (sign operator) 부호연산자사용규칙 부호연산보다우선순위가높은다음의연산자들다음에는바로부호연산자가올수없음 곱셈연산자 : *, / 지수연산자 : ** 절대값연산자 : abs 부호연산자사용예 A/+B A**-B A/(+B) A**( (-B) -- An illegal expression. -- An illegal expression. -- A legal expression. -- A legal expression. 43/73 연산자 (operator) 곱셈연산자 (multiplying l i operator) *, / : 수학적인정의와같은동작 mod : 정수형, 물리형에대해서정의됨 rem : 정수형, 물리형에대해서정의됨 곱셈연산자의기능정의 44/73

곱셈연산자 나머지연산자 rem 의정의 정수나눗셈과 rem 연산자와의관계식 A = (A/B)*B + (A rem B) (A rem B) 의절대값은 B 값의절대값보다작은값 계수연산자 mod 의정의 mod 연산자는임의의정수 N 에대해아래의식이성립 A = B*N + (A mod B) (A mod B) 의값은피연산자 B 의부호 (A mod B) 의절대값은 B 값의절대값보다작은값 45/73 곱셈연산자 곱셈연산자의연산예 A 의부호 B 의부호 A B A/B A rem B A mod B 5 3 1 2 2 (-5) 3-1 -2 1 (-5) (-3) 1-2 -2 5 (-3) -1 2-1 5 ns 3 ns 1 2 ns 2 ns (-5 ns) 3 ns -1-2 ns 1 ns 1 ns 300 ps 3 100 ps 100 ps 11 4 2 3 3 11 (-4) -2 3-1 (-11) (-4) 2-3 -3 46/73

연산자 (operator) 기타연산자 (miscellaneous operator) ** : 지수연산자 (exponentiating operator) 정수형, 실수형에대해서만정의, 지수부 (exponent) 에는정수형만옴 지수부가음수일때는지수부가양수일때의값의역수 abs : 절대값연산자 단항연산자, 수치형에대해서정의 not : 단항연산자, bit, boolean 형에대해서정의 47/73 형 (type) VHDL 에서객체 (object) 란? 특정형 (type) 을가지면서이형에의해서정의될수있는범위내의값 (value) 를가지는실체 상수 (constant) : 초기값을배정하면서이값이바뀌지않음 신호 (signal) : 아키텍처선언부에서선언되며신호배정문을이용 변수 (variable) : 프로세스선언부에서선언되며변수배정문을이용 파일 (file) : 파일형태의데이터를처리하는용도로사용 객체들은 4 가지클래스중의하나에속함 48/73

형 (type) 객체 (object) 의정의 객체의정의시객체이름, 객체클래스, 객체의형을동시에정의해야함 상수를정의할경우에는대부분초기값도같이정의 object class constant constant signal signal variable variable file file Object name type value BUS_WIDTH FALL_TIME HACTIVE SUM L data_bus IN_TXT OUT_IMG : integer := 8; : TIME := 20 ns; : bit; : integer range 0 to 255; : line; : bit_vector(3 downto 0); : text open read_mode is "filein.txt"; : char_file open write_mode is "f.bmp"; 8 20 ns '0' or '1' 0 ~ 255 Pointer 값 "0000" ~ "1111" filein.txt f.bmp 49/73 형 (type) 객체의형 (type) Scalar Type Enumeration Type Integer Type Discrete Type Physical Type Floating-point Type Numeric Type Type Composite Type Array Type Access Type Record Type File Type Protected Type 50/73

형 (type) 형선언의 BNF 정의 type_declaration ::= type identifier is type_definition ; type_definition ::= scalar_type_definition composite_type_definition access_type_definition file_type_definition protected_type_definition 형선언의예 type SYNC_WIDHT is range 0 to 1023; 51/73 형 (type) 스칼라형 (scalar type) 열거형 (enumaration type) 정수형 (integer type) 물리형 (physical type) 부동소수점형 (floating-point type) 모든스칼라형들은값의순서를정할수있음 관계연산자 (relational operator) 를이용한대소비교가가능 52/73

스칼라형 (scalar type) 열거형의 BNF 정의 enumeration_type_definition ::= ( enumeration_literal {, enumeration_literal } ) enumeration_literal ::= identifier character_literal 열거형선언에사용된식별어와문자리터럴을열거리터럴 (enumeration literal) 이라고함 열거형선언의예 type BIT is ('0', '1'); type MULTI_LEVEL_LOGIC LEVEL LOGIC is (LOW, WEAK, HIGH); 53/73 스칼라형 (scalar type) 정수형의 BNF 정의 integer_type_definition ::= range_constraint range_constraint ::= range range_info range_info ::= range_attribute_name simple_expression direction simple_expression direction ::= to downto simple_expression 값은컴파일타임에상수값이어야함 direction 에맞게좌우값의크기가지정되어야함 정수형선언의예 type BIT_INDEX is range 7 downto 0; -- 권장하지않음 type CONVERTED_CB CB is range -512 to 511; -- 사용권장 54/73

스칼라형 (scalar type) 물리형의 BNF 정의 physical _ type _ definition ::= range_constraint units primary_unit_declaration { secondary_ unit_ declaration } end units [ physical_type_simple_name ] primary_unit_declaration ::= identifier ; secondary_ unit_ declaration ::= identifier = physical _ literal ; physical_literal ::= [ abstract_literal ] unit_name 시간, 거리, 전압, 전류와같은물리량의표현에사용 55/73 스칼라형 (scalar type) 물리형선언의예 type SIMULATION_TIMETIME is range 0 to 1E+8 units fs; ps= 1000 fs; ns= 1000 ps; us= 1000 ns; ms= 1000 us; end units SIMULATION_TIME ; 수표현과단위사이에는반드시공백문자가와야함 56/73

스칼라형 (scalar type) 부동소수점형의 BNF 정의 floating_type_definition ::= range_constraint range_constraint ::= range range_info range_info ::= range_attribute_name simple_expression direction simple_expression direction ::= to downto simple_expression 값은컴파일타임에상수값이어야함 direction 에맞게좌우값의크기가지정되어야함 부동소수점형선언의예 type LVTTL_VOLTAGE is range 0.0 to 3.6; type FILTER_RANGERANGE is range 255.0 downto -255.0; 57/73 형 (type) 복합형 (composite type) 복합형의종류 배열형 (array type) : 동일한자료형의모임 레코드형 (record type) : 서로다른자료형의모임을서술가능 여러개의내부원소들로이루어지는객체의모임을나타냄 복합형의내부원소로가질수없는형 파일형 (file type) 보호형 (protected type) 58/73

복합형 (composite type) 배열형의 BNF 정의 array_type_definition ::= unbounded_array_definition constrained_array_definition constrained_array_definition ::= array index_constraint of element_subtype_indication index_constraint ::= ( discrete_range {, discrete_range } ) discrete_range ::= discrete_subtype_indication range_info unbounded_array_definition ::= array ( index_subtype_definition {, index_subtype_definition } ) of element_subtype_indication index_subtype_definition ::= type_mark range <> type_mark ::= type_name subtype_name 원소의이름은이산형의인덱스로표현 59/73 복합형 (composite type) 제한배열형 (constrained array) 선언의예 type DATA_WORD is array (7 downto 0) of BIT; type TWO_DIM_WORD is array (0 to 7, 0 to 255) of STD_LOGIC; subtype MemRange is integer range 0 to 255; type StdLogicRange is array (MemRange) of std_logic; 무한배열형 (unconstrained array) 선언의예 type MEM is array (INTEGER range <>) of STD_LOGIC; type MEM_MODULE is array (INTEGER range <>) of DATA_WORD; 60/73

복합형 (composite type) 레코드형의 BNF 정의 record_yp type_ definition ::= record element_ declaration { element_declaration } end record [ record_yp type_ simple _ name ] element_ declaration ::= identifier_list : element_subtype_definition ; identifier_ list ::= identifier {, identifier } element_subtype_definition ::= subtype_indication C 언어에서 struct 선언과같은역할 61/73 복합형 (composite type) 레코드형선언의예 type DATE is record DAY : INTEGER range 1 to 31; MONTH : MONTH_NAME; YEAR : INTEGER range 0 to 4000; end record; type OVERLAY is record ALPHA: std_logic_vector(5 downto 0); RED, GREEN, BLUE : std_logic_vector(7 downto 0); end record; 62/73

형 (type) 접근형 (access type) 할당기 (allocator) 를사용하여생성한객체를접근하기위한용도로사용 할당기 (allocator) new 예약어를이용하여객체를할당 객체할당시객체의형 (type) 과초기값을지정 객체의이름은정의되지않음 deallocate 프로시저를이용하여객체를반환 대부분의논리합성기에서논리합성은불가능하며테스트벤치생성용으로대부분사용 63/73 접근형 (access type) 할당기를이용한객체생성의 BNF 정의 allocator ::= new subtype_indication new qualified_expression subtype_indication ::= type_mark [ constraint ] type _ mark ::= type _ name subtype _ name qualified_expression ::= type_mark ' ( expression ) type_mark ' aggregate 할당기의사용예 new BIT_VECTOR; new BIT_VECTOR'("00110110"); -- qualified expression new STRING (1 to 10); 64/73

접근형 (access type) 접근형의 BNF 정의 access_type_definition _yp _ ::= access subtype_indication subtype_indication ::= type_mark [ constraint ] type_mark ::= type_name subtype_name 접근형의사용 접근형의경우시뮬레이션단계에서객체생성 시스템자원을효과적으로사용하게함 접근형객체는변수로만선언가능 신호로선언불가 65/73 접근형 (access type) 접근형선언의예 type ADDRESS is access MEMORY; type IN_BUFFER is array (0 to 31) of BIT_VECTOR(7 downto 0); type BUFFER_ PTR is access IN_ BUFFER ; 접근형사용예 -- 중략 variable IB_PTR : BUFFER_PTR; -- 중략 IB_PTR := new IN_BUFFER ; IB_PTR 변수는 IN_BUFFER 형을접근할수있는포인터 new 예약어를이용해서생성된객체를가리킴 66/73

접근형 (access type) 접근형사용의실제예 process(a) begin end process; type memory is array (3 downto 0) of bit_vector(7 downto 0); type MEMORY_PTR is access memory ; variable PTR1: MEMORY_PTR; -- 접근형변수만생성 PTR1 := new memory; -- 객체생성및접근형연결 for i in 3 downto 0 loop for j in 7 downto 0 loop PTR1 (i) (j) := '0'; end loop; end loop; 67/73 접근형 (access type) 접근형을사용하지않은예 process(a) type memory is array (3 downto 0) of bit_vector(7 downto 0); variable mem: memory; -- 정교화단계에서메모리생성 begin for i in 3 downto 0 loop for j in 7 downto 0 loop mem (i) (j) := '0'; end loop; end loop; end process; 68/73

형 (type) 파일형 (file type) 호스트컴퓨터내의파일들을다루기위해사용 파일형의 BNF 정의 file_type_definition ::= file of type_mark type_mark ::= type_name subtype_name type_mark : 파일에포함되어있는값의형을나타냄 복합형이올경우원소로접근형이올수없음 배열형이올경우일차원제한배열형이어야함 69/73 파일형 (file type) 파일형선언의예 type text is file of STRING; -- TEXTIO 패키지에정의되어있음 type char_file is file of character; type num_ file is file of natural; 70/73

형 (type) 보호형 (protected t type) 순차문으로이루어진일정영역을여러개의프로세서와공유할때해당영역의독점적인사용을보장하기위해서사용 IEEE Standard 1076-2008 버전부터추가된형 보호형선언과보호형본체로이루어짐 보호형선언이후바로하나의보호형본체가와야함 71/73 보호형 (protected type) 보호형의 BNF 정의 protected_type_definition ::= protected_type_declaration protected_type_body protected_type_declaration ::= protected protected_type_declarative_part end protected [ protected_type_simple_name ] protected_type_declarative_part ::= { protected_type_declarative_item } protected_type_declarative_item ::= subprogram_declaration subprogram_instantiation_declaration attribute_specification use_clause 72/73

보호형 (protected type) 보호형의 BNF 정의 ( 계속 ) protected_type_body ::= protected body protected_type_body_declarative_part end protected body [ protected_type_simple name ] protected_type_body_declarative_part ::= { protected_type_body_declarative_item } protected_type_body_declarative_item ::= type_declaration subprogram_body package_declaration package_body subprogram_declaration subtype_declaration constant_declaration variable_declaration file_declaration alias_declaration attribute_declaration attribute_specification use_clause group_template_declaration group_declaration 73/73