2 VHDL 2 1 2 2 Data Type

  • Slides: 112
Download presentation
2. VHDL 의 이해 2. 1 기본 구성 2. 2 Data Type 과 Object

2. VHDL 의 이해 2. 1 기본 구성 2. 2 Data Type 과 Object 2. 3 Behavioral Representation 2. 4 Dataflow Representation 2. 5 Structural Representation 2. 6 그 밖의 주요 기능 디지털시스템 설계 특론 1

2. 1. 1 Entity 선언 • D Flip-Flop의 Symbol • Entity Unit의 설계 entity

2. 1. 1 Entity 선언 • D Flip-Flop의 Symbol • Entity Unit의 설계 entity DFF is port (D : in std_logic; CLK : in std_logic; CLR : in std_logic; Q : out std_logic; QBAR : out std_logic); end DFF; 디지털시스템 설계 특론 • Generic Decoder의 Symbol • Entity Unit의 설계 entity GENERIC_DECODER is generic (SIZEIN, SIZEOUT : integer); port (EN: in std_logic; A : in std_logic_vector(SIZEIN-1 downto 0); B : out std_logic_vector(SIZEOUT 1 downto 0)); end GENERIC_DECODER; 4

2. 1. 1 Entity 선언 • Buffer 포트 사용 예 • Dataflow 모델링 entity

2. 1. 1 Entity 선언 • Buffer 포트 사용 예 • Dataflow 모델링 entity RS_Latch is port ( S, R : in Bit; Q, Q_bar : buffer Bit); end RS_Latch; architecture Dataflow_RS of RS_Latch is begin Q <= S nand Q_bar; Q_bar <= R nand Q; end Dataflow_RS; 디지털시스템 설계 특론 7

2. 1. 2 Architecture Body 디지털시스템 설계 특론 11

2. 1. 2 Architecture Body 디지털시스템 설계 특론 11

2. 1. 2 Architecture Body 디지털시스템 설계 특론 12

2. 1. 2 Architecture Body 디지털시스템 설계 특론 12

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 13

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 13

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 14

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 14

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 15

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 15

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 16

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 16

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 17

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 17

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 18

2. 1. 3 Subprogram 과 Package 디지털시스템 설계 특론 18

2. 1. 3 Subprogram 과 Package • Package 사용 예 library Base_lib; use Base_lib.

2. 1. 3 Subprogram 과 Package • Package 사용 예 library Base_lib; use Base_lib. Sample. all; entity Level 3_and is port (X, Y : in three_level_logic; Z : out three_level_logic); end Level 3_and; architecture Level 3_and_body of Level 3_and is begin process(X, Y) begin Z <= X and Y after 5 ns; -- 함수 “and” 호출 end process; end Level 3_and_body; 디지털시스템 설계 특론 19

2. 1. 4 Design Library • Design unit의 분석 순서 primary unit secondary unit

2. 1. 4 Design Library • Design unit의 분석 순서 primary unit secondary unit package declaration package body entity declaration architecture body 디지털시스템 설계 특론 20

2. 1. 4 Design Library • • 이미 설계한 것을 공유할 수 있게 저장해

2. 1. 4 Design Library • • 이미 설계한 것을 공유할 수 있게 저장해 둔 장소 STD, WORK: 항상 참조하는 두 개의 Library 1. WORK: 현재 수행하는 design 의 default 작업 라이브러리, design unit 분석 결과를 저장하는 곳 2. STD 1. STANDARD 라는 package 와 TEXTIO 라는 package 만으로 구성 2. STANDARD 는 boolean, bit, character, severity_level, integer, real, time, natural, string 등 같은 미리 정의된 표준 data type 정의 포함 3. TEXTIO 는 ASCII 파일에서 읽고, 쓰기 위한 subprogram 정의 포 함 • Library의 사용 – library 라이브러리_list; • Library내 특정 package 사용 – library WORK, STD; use STD. STANDARD. all; 디지털시스템 설계 특론 21

2. 2 Data Type 과 Object • Object – Signal, variable, constant 등 같이

2. 2 Data Type 과 Object • Object – Signal, variable, constant 등 같이 값을 가지는 것 • Object 는 data type을 가짐 디지털시스템 설계 특론 22

2. 2. 1 Literal • 숫자관련 literal 과 문자관련 literal • Integer literal, real

2. 2. 1 Literal • 숫자관련 literal 과 문자관련 literal • Integer literal, real literal: 숫자 끊어 읽도록 밑줄 ‘_’ 사용 가능 – 예 • 250 • 23. 234 • 2. 56 E+12 245_346 232_122. 111_0 9. 0 E-23 • 2진수, 8진수, 16진수: based literal – 형식 • 기수#숫자#[지수] – 예 • 2#1111_1111# 8#377# 16#FF# • 2#1. 1111_111#E 11 16#F. FF#E+2 디지털시스템 설계 특론 23

2. 2. 1 Literal • character literal, string literal, bit string literal 등 –

2. 2. 1 Literal • character literal, string literal, bit string literal 등 – 예 • ‘ ’, ‘A’, ‘+’, ‘’’ -- character literal 의 예 • “ ”, “A”, “concatenation of characters” -- string literal 의 예 • B“ 1111_1111”, 0“ 377”, X“FF” -- 정수 255의 Bit String literal 디지털시스템 설계 특론 24

2. 2. 2 Data Type • 기본 Data type, 사용자 정의 Data type 등

2. 2. 2 Data Type • 기본 Data type, 사용자 정의 Data type 등 • 주로 package 에 포함시켜 공통으로 사용함 • 종류: scalar type, composite type, access type, file type – Scalar type: 그 값이 더 이상 나누어 질 수 없는 것 • integer, floating, point, enumeration, physical type – Composite type: 그 값을 하나 이상의 element로 나눌 수 있는 data type • record type, array type 2. 2. 2. 1 Integer Type • 예(정의) – Type Byte is range -128 to 127; – Type Bit_position is range 15 downto 0; • 예(Object 선언) – Variable – Signal a: Bit_position; b: Byte; 디지털시스템 설계 특론 25

2. 2. 2. 1 Integer Type • Package STANDARD 에 정의된 integer type –

2. 2. 2. 1 Integer Type • Package STANDARD 에 정의된 integer type – Type integer is range – 2147483647 to 2147483647 -- predefined – Subtype natural is integer range 0 to integer’high; -- predefined – Subtype positive is integer range 1 to integer’high; -- predefined – Subtype은 정의된 data type 의 부분집합 – 같은 data type 에서 나온 두 다른 subtype의 Object 간에는 type conversion이 필요 없다. – 예 process variable a : Natural; variable b, c : Positive; begin c : = a + b; end process; 디지털시스템 설계 특론 26

2. 2 Floating Point Type • 소수점을 가진 수 • 정의(package STANDARD 에 정의됨)

2. 2 Floating Point Type • 소수점을 가진 수 • 정의(package STANDARD 에 정의됨) – Type REAL is range -1. 0 E 38 to 1. 0 E 38; – Type Norm is range 0. 0 to 1. 0; 디지털시스템 설계 특론 27

2. 2. 2. 3 Enumeration Type • 정의되는 data type 이 가질 수 있는

2. 2. 2. 3 Enumeration Type • 정의되는 data type 이 가질 수 있는 값을 순서대로 나열함 • 식별자나 character literal을 나열함 • 예 type type Bit 2 is (‘ 0’, ‘ 1’); Bit 3 is (‘ 0’, ‘ 1’, ‘Z’); Bit 4 is (‘ 0’, ‘ 1’, ‘X’, ‘Z’); Day is (sun, mon, tue, wed, thu, fri, sat); Color is (red, blue, yellow); signal A : Bit 3; signal B : Day; variable C : Color; A <= ‘Z’; B <= wed; C : = yellow; 디지털시스템 설계 특론 28

2. 2. 2. 3 Enumeration Type • Package STANDARD 에 미리 정의된 Enumeration Type

2. 2. 2. 3 Enumeration Type • Package STANDARD 에 미리 정의된 Enumeration Type type Boolean is (TRUE, FALSE); -- predefined type Bit is (‘ 0’, ‘ 1’); -- predefined type Character is ( -- predefined NUL, SOH, STX, EOT, ENQ, ACK, BEL, . . . ‘ ’, ‘!’, ‘”’, ‘#’, ‘$’, ‘%’, ‘&’, ‘’’, . . . ‘ 0’, ‘ 1’, ‘ 2’, ‘ 3’, ‘ 4’, ‘ 5’, ‘ 6’, ‘ 7’, . . . ‘@’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, . . . ‘`’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, . . . ); type Severity_level is -- predefined (Note, Warning, Error, Failure); 디지털시스템 설계 특론 29

2. 2. 2. 4 Physical Type • 저항, 시간, 거리 등과 같은 물리적인 양을

2. 2. 2. 4 Physical Type • 저항, 시간, 거리 등과 같은 물리적인 양을 나타내기 위해 사용되 며, base unit 이 있고, base unit의 정수 배로 표현되는 secondary unit 이 있다. type Resistance is range 1 to 1 E 10 units ohm; -- base unit Kohm = 1000 ohm; -- secondary unit Mohm = 1000 Kohm; end units; sec = 1000 ms; -- second min = 60 sec; -- minute hr = 60 min; -- hour end units; type Length is range 0 to 1 E 10 units type Time is range implementation-defined units A; -- angstrom, base unit nm = 10 A; -- nanometer fs; -- femtosecond, base unit um = 1000 nm; -- micrometer ps = 1000 fs; -- picosecond mm = 1000 um; -- milimeter ns = 1000 ps; -- nanosecond cm = 10 mm; -- centimeter us = 1000 ns; -- microsecond m = 100 cm; -- meter ms = 1000 us; -- milisecond 디지털시스템 설계 특론 end units; 30

2. 2. 2. 4 Physical Type • Time 은 package STANDARD 에 이미 선언되어

2. 2. 2. 4 Physical Type • Time 은 package STANDARD 에 이미 선언되어 있음 • 예 variable i : integer; variable t : Time; variable len : Length; . . . t : = 10 us + i * ns – 25 ps; len : = len * 10 + 30 mm; . . . 디지털시스템 설계 특론 31

2. 2. 2. 5 Composition Type • • 여러 개의 값을 포함함 Record Type:

2. 2. 2. 5 Composition Type • • 여러 개의 값을 포함함 Record Type: 이종의 Data 를 묶어서 하나의 Type 이 됨 Array Type: 동일의 Data 를 묶어서 하나의 Type 이 됨 Record Type의 예(정의 및 사용) type Time is record Op_field : Operation; Hour : Integer range 0 to 23; Operand 1 : Integer; Min : Integer range 0 to 59; Operand 2 : Integer; Sec : Integer range 0 to 59; end record; type Operation is (add, sub, mul, div); type Instruction is 디지털시스템 설계 특론 end record; variable When : Time; variable Com : Instruction; When. Hour : = 10; When. Sec : = 9; Com. Op_field : = sub; Com. Operand 2 : = 2; 32

2. 2. 2. 5 Composition Type • Array Type: constrained 와 unconstrained(범위가 무한)가 있다.

2. 2. 2. 5 Composition Type • Array Type: constrained 와 unconstrained(범위가 무한)가 있다. – 예 type Word is array (15 downto 0) of Bit; type Byte is array (7 downto 0) of Bit; type Memory is array (0 to 1023) of Byte; variable w 1 : Byte; w 1 : = “ 00001100”; – Memory 의 다른 정의 방법 • type Memory is array (0 to 1023, 7 downto 0) of Bit; – Unconstrained array 정의 • type Big. Mem is array (Natural range< >) of Word; – STANDARD에 정의된 unconstrained array type • type Bit_vector is array (Natural range < >) of Bit; • type String is array (Positive range < >) of Character; – 배열에서 subtype은 unconstrained array type에 대해서만 선언 가능 • subtype low_part is (Bit_vector range 0 to 7); • subtype high_part is (Bit_vector range 8 to 15); 디지털시스템 설계 특론 33

2. 2. 2. 5 Composition Type • Array slice(a contiguous part of an array)

2. 2. 2. 5 Composition Type • Array slice(a contiguous part of an array) process type Word is array (0 to 32) of Bit; variable list 1 : word(0 to 32); variable list 2 : data(0 to 7); begin list 2 : = list 1(15 to 22); -- list 1(15 to 22) is an array slice. . . 디지털시스템 설계 특론 34

2. 2. 2. 6 Access Type • • Pointer type 에 해당함(dynamic memory allocation

2. 2. 2. 6 Access Type • • Pointer type 에 해당함(dynamic memory allocation 필요 시) Allocation 1. new type_이름 2. new type_이름’ (초기값_list) • Access type의 type이름 정의(초기값은 null access value) – – type access_type_이름 is access type_이름; 예 type Val is range 0 to 1024; type Val_ptr is access Val; variable Ptr 1 : Val_ptr : = new Val; variable Ptr 2 : Val_ptr : = new Val’ (500); variable Ptr 3 : Val_prt; 디지털시스템 설계 특론 35

2. 2. 2. 6 Access Type • Linked list 정의 위한 불완전 access type

2. 2. 2. 6 Access Type • Linked list 정의 위한 불완전 access type 선언 사용 예 Type node ; Type next is access node; Type node is record data : val; link : next; End record; Variable start : next : = new Node’(10, null); Variable tmp 1 : next : = new Node’(20, null); Start. link : = tmp 1; Tmp 1. link : = new Node’(30, null); Deallocate(tmp 1. link); -- deallocation Deallocate(tmp 1); Deallocate(start); 디지털시스템 설계 특론 36

2. 2. 2. 6 Access Type • Deallocate 프로시져는 access type 선언 시 자동적으로

2. 2. 2. 6 Access Type • Deallocate 프로시져는 access type 선언 시 자동적으로 선언된다. – – procedure Deallocate(access_type_object_이름: inout access_type_이름); deallocate (Tmp 1. Link); deallocate (Tmp 1); deallocate (Start); 디지털시스템 설계 특론 37

2. 2. 2. 7 File Type • 컴퓨터 File을 Object 로 선언하기 위해 사용됨

2. 2. 2. 7 File Type • 컴퓨터 File을 Object 로 선언하기 위해 사용됨 – – type file_type_이름 is Int_file is file of String_file is file Bit_file is file of type_이름; Integer; of String; Bit; • 자동으로 선언되는 Subprogram – procedure Read (F : in FT; Value : out D); – procedure Write (F : out FT; Value : in D); – function Endfile (F : in D) return Boolean; • Unconstrained array type 위한 Read 도 자동으로 선언됨 – procedure Read (F : in FT; Value : out D, Length : out Natural); -- array 길이 값 return에 Length 사용 디지털시스템 설계 특론 38

2. 2. 2. 7 File Type • File 선언(object) – file 식별어 : file_type

2. 2. 2. 7 File Type • File 선언(object) – file 식별어 : file_type is [mode] logical_file_name; • Mode: in(read), out(write), default는 in – 예 • file. A : int_file is in “/users/test. dat”; • Signal 을 disk file “signal. dat” 에 저장하기 위한 선언 type event is record bitval : Bit; delay : Time; end record; type waveform is file of event; 디지털시스템 설계 특론 39

2. 2. 2. 7 File Type • Mypackage에 P. 39 의 선언 가정하의 예제

2. 2. 2. 7 File Type • Mypackage에 P. 39 의 선언 가정하의 예제 프로그램 use Work. Mypackage. all; entity Signal_Store is end Signal_Store; architecture Behav of Signal_Store is file. A : waveform is out “signal. dat”; signal B : Bit : = ‘ 0’; begin B <= ‘ 0’ after 20 ns, ‘ 1’ after 40 ns, ‘ 0’ after 60 ns; process(B) variable E : event; begin E. bitval : = B; E. delay : = Now; Write (file. A, E); end process; end Behav; 디지털시스템 설계 특론 40

2. 2. 2. 8 IEEE 1164 표준 Data Types • 사용 방법 Library IEEE;

2. 2. 2. 8 IEEE 1164 표준 Data Types • 사용 방법 Library IEEE; Use IEEE. std_logic_1164. all; • Bit 대신 std_logic, Bit_vector 대신 std_logic_vector 사용 디지털시스템 설계 특론 42

2. 2. 3 Type 변환 • VHDL의 strongly_type 언어임 • Typemark를 이용한 변환, 사용자

2. 2. 3 Type 변환 • VHDL의 strongly_type 언어임 • Typemark를 이용한 변환, 사용자 정의 함수 이용한 변환 2. 2. 3. 1 Typemark 변환 – type_이름 (object_이름 또는 피 연산자) – 예 process type 1 is integer range 0 to 100; type 2 is real range 0. 0 to 100. 0; variable a : type 1; variable b, c : type 2; begin. . . c : = type 2(a) + b; end process; 디지털시스템 설계 특론 43

2. 2. 3. 2 변환 함수 이용(type conversion function) • 예1: Bit 4_to_Bit function

2. 2. 3. 2 변환 함수 이용(type conversion function) • 예1: Bit 4_to_Bit function Bit 4_to_Bit begin case x is when ‘ 0’ => return when ‘ 1’ => return when ‘Z’ => return when ‘X’ => return end case; end Bit 4_to_Bit; 디지털시스템 설계 특론 (x : Bit 4) return Bit is ‘ 0’; ‘ 1’; ‘ 0’; 44

2. 2. 3. 2 변환 함수 이용(type conversion function) • 예2: Byte to Integer

2. 2. 3. 2 변환 함수 이용(type conversion function) • 예2: Byte to Integer type Byte is array (7 downto 0); function Byte_to_integer(x: Byte) return integer is variable sum : integer : = 0; begin for i in 0 to 7 loop if x(i) = ‘ 1’ then sum : = sum + 2**I; end if; end loop; return sum; end; 디지털시스템 설계 특론 45

2. 2. 5 Attribute * 구문: Signal_or_Type_or_Array_Name’Attribute_Name 디지털시스템 설계 특론 49

2. 2. 5 Attribute * 구문: Signal_or_Type_or_Array_Name’Attribute_Name 디지털시스템 설계 특론 49

Signal Attributes(Signal s : BIT type) 디지털시스템 설계 특론 54

Signal Attributes(Signal s : BIT type) 디지털시스템 설계 특론 54

Results of Signal Attributes(signal s 1: type BIT) 디지털시스템 설계 특론 55

Results of Signal Attributes(signal s 1: type BIT) 디지털시스템 설계 특론 55

Signal Attributes(Examples) Entity brief_d_FF is port (d, c : IN BIT; q : OUT

Signal Attributes(Examples) Entity brief_d_FF is port (d, c : IN BIT; q : OUT BIT); END; ARCHITECTURE falling_edge of brief_d_FF is SIGNAL tmp : BIT; BEGIN tmp <= d WHEN (c = ‘ 0’ AND NOT c’STABLE) ELSE tmp; q <= tmp AFTER 8 NS; -- the use of ’STABLE is recommended in concurrent statements END falling_edge; -------------------------------------------------------ENTITY brief_t_FF IS port(t : IN BIT; q : OUT BIT); END brief_t_FF; ARCHITECTURE toggle of brief_t_FF IS SIGNAL tm : BIT; BEGIN tmp <= NOT tmp WHEN ( (t = ‘ 0’ 0 AND NOT t’STABLE) AND (t’DELAYED’STABLE(20 NS)) ELSE tmp; -- toggles only when a positive pulse longer than 20 NS appears on its t input q <= tmp AFTER 8 NS; END toggle; 디지털시스템 설계 특론 57

Predefined/User-defined Attribute • 사용 예 Signal clock : bit; If(not clock’stable and clock=‘ 1’)

Predefined/User-defined Attribute • 사용 예 Signal clock : bit; If(not clock’stable and clock=‘ 1’) then … If(clock’event and clock = ‘ 0’ ) then … If(d’last_event >= 5 ns) then … If(d’stable(5 ns) then … • User-defined Attribute 구문 – Attribute 선언: attribute의 이름과 type을 정해줌 • Attribute attribute_이름 : type_이름 ; – Attribute 명세(specification): • 어디(entity_name_list)에 사용하고, 특정 값(expression)을 지정함. Attribute attribute_이름 of entity_name_list : entity_class is expression ; Entity_name_list : : = entity_designator {, entity_designator} | others | all Entity_designator : : = identifier | operator_symbol Entity_class : : = entity | architecture| procedure| configuraiton| function| package| type | subtype | constant | signal | variable | component | label 디지털시스템 설계 특론 58

User-defined attribute의 사용 예 Package attributes_util is Type rise_fall is record Rise, fall :

User-defined attribute의 사용 예 Package attributes_util is Type rise_fall is record Rise, fall : time ; End record; Attribute delay: rise_fall; --선언 Attribute location : integer; End attributes_util; … Use work. attributes_util. all; Entity sample is port (a, b : in bit; c : out bit ); attribute delay of c : signal is (10 ns, 20 ns ); --명세 End sample; … 디지털시스템 설계 특론 Architecture Behav of sample is component CPU … end component; signal z : integer; signal s : Bit; attribute location of CPU : component is 120; . . . Begin s <= ‘ 0’, ‘ 1’ after c’delay. rise; z <= CPU’location; End Behav; 59

2. 2. 6 연산자 Concatenation operator 디지털시스템 설계 특론 60

2. 2. 6 연산자 Concatenation operator 디지털시스템 설계 특론 60

2. 3 Behavioral Representation • 동작적 표현, 행위 수준, 알고리즘 수준 2. 3. 1

2. 3 Behavioral Representation • 동작적 표현, 행위 수준, 알고리즘 수준 2. 3. 1 process 문 – 내부는 순차적으로 수행됨 – 구문 [process_레이블: ] process [(sensitivity_list)] {선언문} begin { sequential 문 } end process [process_레이블]; 디지털시스템 설계 특론 63

2. 3. 1 process 문 • 선언문 부분에 포함될 수 있는 것 Subprogram 선언

2. 3. 1 process 문 • 선언문 부분에 포함될 수 있는 것 Subprogram 선언 및 body Type 선언 Subtype 선언 Constant 선언 Variable 선언 File 선언 Alias 선언 Attribute 선언 및 명세(specification) Use clause 디지털시스템 설계 특론 64

2. 3. 1 process 문 • Sequential 문에 오는 것들 Wait 문 Signal 할당문

2. 3. 1 process 문 • Sequential 문에 오는 것들 Wait 문 Signal 할당문 Variable 할당문 Assertion 문 If 문 Case 문 Loop 문 Next 문 Exit 문 Return 문 Null 문 Procedure call 디지털시스템 설계 특론 65

2. 3. 1 process 문 • 예 architecture sample 2 of AND_OR is begin

2. 3. 1 process 문 • 예 architecture sample 2 of AND_OR is begin process begin 01 <= I 1 and I 2 after 5 ns; 02 <= I 1 or I 2 after 5 ns; wait on I 1, I 2; end process; end sample 2; architecture sample 3 of AND_OR is begin 01 <= I 1 and I 2 after 5 ns; 02 <= I 1 or I 2 after 5 ns; end sample 3; 디지털시스템 설계 특론 architecture Behav of clock_generator is signal clock : bit : = ‘ 0’; begin process(clock) begin clock <= not clock after 5 ns; end process; end Behav; 66

2. 3. 2 Sequential 문 • process 문이나 subprogram 내에서 사용되는 문장들로서, wait 문,

2. 3. 2 Sequential 문 • process 문이나 subprogram 내에서 사용되는 문장들로서, wait 문, signal 할당문, assert 문, case 문, exit 문, if 문, loop 문, next 문, null 문등 2. 3. 2. 1 wait 문 – Process문의 수행을 잠시 대기시킴 – 형식 wait on signal_list; wait until 조건; wait for 시간; wait; 디지털시스템 설계 특론 67

2. 3. 2. 1 Wait 문 • Wait 문 사용 예 – – –

2. 3. 2. 1 Wait 문 • Wait 문 사용 예 – – – wait on a, b, c; wait until enable=‘ 1’; wait for 10 ns; wait on a, b, c until enable=‘ 1’ for 10 ns; 2. 3. 2. 2 signal 할당문 – signal_이름 <= 값; – signal 과 변수의 차이는 signal은 <시간, 값> pair로 되어 있다. 디지털시스템 설계 특론 68

2. 3 Variable 할당문 • Variable_이름 : = 수식; • Variable은 수식의 값으로 즉시

2. 3 Variable 할당문 • Variable_이름 : = 수식; • Variable은 수식의 값으로 즉시 변환된다. • Variable 할당문과 signal 할당문의 차이 process variable cnt, hap : integer : = 0; begin wait for 5 ns; cnt : = cnt + 1; hap : = hap + cnt; end process; 시간 0 cnt hap 0 0 5 1 1 5+δ 1 1 10 2 3 10 + δ 2 3 15 3 6 15 + δ 3 6 <Variable 인 경우> 디지털시스템 설계 특론 71

2. 3 Variable 할당문 • Variable 할당문과 signal 할당문의 차이 signal cnt, hap :

2. 3 Variable 할당문 • Variable 할당문과 signal 할당문의 차이 signal cnt, hap : integer : = 0; process begin wait for 5 ns; cnt <= cnt + 1; hap <= hap + cnt; end process; 시간 0 cnt(var) hap(var) 0(0) 0 (0) 5 0 (1) 5+δ 1 (1) 0 (1) 10 1 (2) 0 (3) 10 + δ 2 (2) 1 (3) 15 2 (3) 1 (6) 15 + δ 3 (3) 3 (6) <Signal 인 경우> 디지털시스템 설계 특론 72

2. 3. 2. 4 Assert 문 • 사용 예 entity RS_flipflop is port (S,

2. 3. 2. 4 Assert 문 • 사용 예 entity RS_flipflop is port (S, R : in Bit; Q : out Bit); end RS_flipflop; architecture behavior of RS_flipflop is begin process begin assert not (S = ‘ 1’ and R = ‘ 1’) report “Both S and R are ‘ 1’ ” severity Error; . . . end process; end behavior; 디지털시스템 설계 특론 74

2. 3. 2. 5 조건 제어문: if 문, case 문 • if 문의 형식

2. 3. 2. 5 조건 제어문: if 문, case 문 • if 문의 형식 if 조건 then sequential문 1 end if; if 조건 then sequential문 1 else sequential문 2 end if; 디지털시스템 설계 특론 if 조건 1 then sequential문 1 elsif 조건 2 then sequential문 2. . else sequential문n end if; 75

2. 3. 2. 5 조건 제어문: if 문, case 문 • Case 문의 형식

2. 3. 2. 5 조건 제어문: if 문, case 문 • Case 문의 형식 case 수식 is when 값 1 => sequential 문 1; when 값 21 | 값 22 => sequential 문 2; . . when 값n => sequential 문n; [when others => sequential문; ] end case; 디지털시스템 설계 특론 76

2. 3. 2. 5 조건 제어문: if 문, case 문 • Case 문의 예제

2. 3. 2. 5 조건 제어문: if 문, case 문 • Case 문의 예제 process begin case sel is when “ 00” => z <= in 0 after 5 ns; when “ 01” => z <= in 1 after 5 ns; when “ 10” => z <= in 2 after 5 ns; when others => z <= in 3 after 5 ns; end case; wait on sel, in 0, in 1, in 2, in 3; end process; 디지털시스템 설계 특론 case choice is when 1 | 2 => outz <= ‘ 1’; when 3 => outz <= ‘ 0’; when others => outz <= ‘X’; end case; 77

2. 3. 2. 6 반복 제어문: loop 문 • 형식 – [label]: loop sequential

2. 3. 2. 6 반복 제어문: loop 문 • 형식 – [label]: loop sequential 문 end loop [label]; – [label]: for loop_variable in variable_range loop sequential 문 end loop[label]; – [label]: while 조건 loop sequential 문 end loop[label]; 디지털시스템 설계 특론 78

2. 3. 2. 6 반복 제어문: loop 문 • for 문 예제 loop 1:

2. 3. 2. 6 반복 제어문: loop 문 • for 문 예제 loop 1: for a in 1 to 10 loop b : = b + a; end loop 1; 디지털시스템 설계 특론 • while 문 예제 loop 1: while a <= 10 loop a : = a + 1; b : = b + a; end loop 1; 79

2. 3. 2. 7 기타 제어문: exit 문, next 문, null 문, return 문

2. 3. 2. 7 기타 제어문: exit 문, next 문, null 문, return 문 • Next 문 – loop 에서 나머지 수행 않고 처음부터 다시 시작 – Next [루프_label] [when 조건] – 예 • variable a : integer : = 0; loop 1: for i in 1 to 10 loop 2: for j in 1 to 10 loop if j = 5 then next loop 2; end if; a : = a + 1; end loop 2; end loop 1; – 위의 if 문을 next loop 2 when j = 5; 로 대치 가능 디지털시스템 설계 특론 81

2. 4 Dataflow Representation • Concurrent Signal Assignment 문 사용 2. 4. 1 Concurrent

2. 4 Dataflow Representation • Concurrent Signal Assignment 문 사용 2. 4. 1 Concurrent Signal Assignment – Process 문과 동일한 효과 – Sensitivity list 는 RHS 에 있는 신호들 architecture Example 1 of Concurrent is signal clock 1, clock 2, clock 3 : Bit : = ‘ 0’; begin clock 1 <= not clock 1 after 5 ns; clock 2 <= not clock 2 after 10 ns; clock 3 <= clock 1 and clock 2; end; architecture Example 2 of Concurrent is signal clock 1, clock 2, clock 3 : Bit : = ‘ 0’; begin clock 3 <= clock 1 and clock 2; clock 2 <= not clock 2 after 10 ns; clock 1 <= not clock 1 after 5 ns; end; 디지털시스템 설계 특론 그림 2 -5 concurrent signal 할당문의 수 행 결과 83

2. 4. 1 Concurrent Signal Assignment • Process 문으로 한 동일한 기술 architecture Example

2. 4. 1 Concurrent Signal Assignment • Process 문으로 한 동일한 기술 architecture Example 1 of Concurrent is signal clock 1, clock 2, clock 3 : Bit : = ‘ 0’; begin process(clock 1) begin clock 1 <= not clock 1 after 5 ns; end process; process(clock 2) begin clock 2 <= not clock 2 after 10 ns; end process; process(clock 1, clock 2) begin clock 3 <= clock 1 and clock 2; end process; end; 디지털시스템 설계 특론 84

2. 4. 1. 1 Conditional Concurrent Signal Assignment • 형식 – signal_이름 <= [transport

2. 4. 1. 1 Conditional Concurrent Signal Assignment • 형식 – signal_이름 <= [transport | guarded] 파형 1 when 조건 1 else 파형 2 when 조건 2 else. . 파형n-1 when 조건n-1 else 파형n; • 파형 부분 – 값 [after 지연 시간] 디지털시스템 설계 특론 85

2. 4. 1. 1 Conditional Concurrent Signal Assignment • 등가 process 문 process(signal_list) begin

2. 4. 1. 1 Conditional Concurrent Signal Assignment • 등가 process 문 process(signal_list) begin if 조건 1 then signal_이름 <= [옵션] 파형 1; . . elsif 조건n-1 then signal_이름 <= [옵션] 파형n-1; else signal_이름 <= [옵션] 파형n; end if; end process; 디지털시스템 설계 특론 • 예 architecture Condi_example of Exclusive_OR is begin Z <= transport ‘ 0’ after 5 ns when A = B else ‘ 1’ after 5 ns; end Condi_example; 86

2. 4. 1. 2 Selected Concurrent Signal Assignment • Condition 부분이 일정할 때 –

2. 4. 1. 2 Selected Concurrent Signal Assignment • Condition 부분이 일정할 때 – 형식 • with 수식 select signal_이름 <= [transport | guarded] 파형 1 when 선택 1, . . 파형n when 선택n; – 예 architecture Selected_example of Decoder is begin with sel_vector select dout <= “ 0001” after 5 ns when “ 00”, “ 0010” after 5 ns when “ 01”, “ 0100” after 5 ns when “ 10”, “ 1000” after 5 ns when others; end Selected_example; 디지털시스템 설계 특론 87

2. 4. 2 Concurrent Assert 문 • Concurrent 수행 환경에서 사용되는 assertion 문 •

2. 4. 2 Concurrent Assert 문 • Concurrent 수행 환경에서 사용되는 assertion 문 • Label 을 가질 수 있다. • 형식 – [label : ] assert 조건 [report 수식] [severity 수식]; • 예 entity RS_flipflop is port (S, R : in Bit; Q : out Bit); begin constraint_check: assert not (S = ‘ 1’ and R = ‘ 1’) report “Both S and R are ‘ 1’ ” severity Error; end RS_flipflop; architecture Dataflow of RS_flipflop is. . . end Dataflow; 디지털시스템 설계 특론 88

2. 5 Structural Representation • • Schematic diagram 형식 Component 와 signal로 기술 Component

2. 5 Structural Representation • • Schematic diagram 형식 Component 와 signal로 기술 Component 선언과 component instantiation 문으로 구성 예1 architecture Sample of OR_gate -- component declaration component Or 2 port ( a, b : in Bit; z : out Bit); end component; signal in 1, in 2, O : Bit; begin -- component instantiation statement lab 1 : Or 2 port map (a => In 1, b => In 2, z => O); end Sample; 디지털시스템 설계 특론 89

2. 5 Structural Representation • 예2 component decoder generic (B : positive : =

2. 5 Structural Representation • 예2 component decoder generic (B : positive : = 1); port (Sel : Bit_vector (1 to B); Dout : Bit_vector (1 to 2**B)); end component; . . . -- default generic value B = 1 is used u 1 : decoder port map (Sel(1) => xin, Dout(1) => D 1, Dout(2) => D 2); -- new generic value is given u 2 : decoder generic map (B => 2) port map (Sel(1) => I 1, Sel(2) => I 2, Dout(1) => O 1, Dout(2) => O 2, Dout(3) => O 3, Dout(4) => O 4); 디지털시스템 설계 특론 90

2. 5. 3 Configuration Specification • Component 사용의 특정 entity 의 특징 architecture 로의

2. 5. 3 Configuration Specification • Component 사용의 특정 entity 의 특징 architecture 로의 binding 정의 • Configuration Specification 과 configuration declaration 이 있음 • Configuration 명세의 정의 형식 – for 사례화_list : component_이름 use binding_indication; – 사례화_list : : = 사례화_label {, 사례화_label} | others | all – binding_indication : : = entity_aspect | [generic map (association_list) ] | [port map (association_list) ; ] – entity_aspect : : = entity_이름 [ (architecture_이름) ] | configuration_이름 | open 디지털시스템 설계 특론 91

2. 5. 3 Configuration Specification • 예1 – for C 1, C 2, C

2. 5. 3 Configuration Specification • 예1 – for C 1, C 2, C 3 : Inv use entity Work. inverter (inverter_body); • 예2 – for all : full_adder use entity Work. f_adder(f_adder_beh); • 예3 – Others 사용: 이미(? ) label 이 나타난 것을 제외한 모든 사례화에 적용 – for others : and use entity Work. and_gate(and_body); • 선언된 component 와 사용될 component 간의 port 와 generic 연 결 방법(예 1) -- entity and architecture of a 2 -input or gate a half adder entity Or_G is port (p, q : in Bit; r : out Bit); end Or_G; architecture behav of Or_G is. . . end behav; 디지털시스템 설계 특론 entity Half_A is port (s, t : in Bit; u, v : out Bit); end Half_A; architecture behavior of Half_A is. . . end behavior; 92

2. 5. 3 Configuration Specification • 예2 entity Full_adder is port ( X, Y,

2. 5. 3 Configuration Specification • 예2 entity Full_adder is port ( X, Y, C_in : in Bit; S_out, C_out : out Bit); end Full_adder; architecture Structural_Des of Full_Adder is -- declaration of internal signals signal t_s, t_c 1, t_c 2 : Bit; -- component declarations component OR 2 port (i 1, i 2 : in Bit; O : out Bit); end component; component Half_adder port (A 1, A 2 : in Bit; Sum, Carry : out Bit); end component; 디지털시스템 설계 특론 -- configuration specification for ORG: OR 2 use entity Work. Or_G(behav) port map (p => i 1, q => i 2, r => O); for others: Half_Adder use entity Work. Half_A(behavior) port map (s => A 1, t => A 2, u => Sum, v => Carry); -- component instantiation statements begin HA 1 : Half_Adder port map (A 1 => X, A 2 => Y, Sum => t_s, Carry => t_c 1); HA 2 : Half_Adder port map (A 1 => t_s, A 2 => C_in, Sum => S_out, Carry => t_c 2); ORG : OR 2 port map (i 1 => t_c 1, i 2 => t_c 2, O => C_out); end Structural_Des; 93

2. 5. 3 Configuration Specification • 동일한 configuration specification for HA 1, HA 2

2. 5. 3 Configuration Specification • 동일한 configuration specification for HA 1, HA 2 : Half_Adder use entity Work. Half_A(behavior) port map ( s => A 1, t => A 2, u => Sum, v => Carry); for ORG : OR 2 use entity Work. Or_G(behav) port map ( p => i 1, q => i 2, r => O); 디지털시스템 설계 특론 94

2. 5. 4 Generate 문 • • 규칙적인 구조를 갖는 하드웨어 설계 시 반복적인

2. 5. 4 Generate 문 • • 규칙적인 구조를 갖는 하드웨어 설계 시 반복적인 component 사 용 위해 필요 형식 – • label: generation_scheme generation { concurrent 문 } end generation [label]; Generation scheme 1. For scheme : for 식별어 in discrete_range 2. If scheme : if 조건 디지털시스템 설계 특론 95

2. 5. 4 Generate 문 • Concurrent 문: component 문 이외에 다른 concurrent 문

2. 5. 4 Generate 문 • Concurrent 문: component 문 이외에 다른 concurrent 문 올 수 있 음 • 예: 4개 D-FF 으로 4 bit shift register 기술 entity Shifter is port (si, cp : in bit; so : out bit); end Shifter; architecture No_gen_exam of Shifter is signal p : Bit_vector(0 to 4); component dff port (d, cp : in bit; q : out bit); end component; for all : dff use entity work. dff(behav); begin df 1 : dff port map (si, cp, p(1)); df 2 : dff port map (p(1), cp, p(2)); df 3 : dff port map (p(2), cp, p(3)); df 4 : dff port map (p(3), cp, so); end No_gen_exam; 디지털시스템 설계 특론 DF 1 SI P(0) D DF 2 Q D P(1) CP DF 3 Q D P(2) CP DF 4 Q D Q P(3) CP SO P(4) CP CP 4 개의 D-플립플롭을 직렬로 연결한 시프트 레지스터 96

2. 5. 4 Generate 문 • Generate 문 사용 시 begin p(0) <= si;

2. 5. 4 Generate 문 • Generate 문 사용 시 begin p(0) <= si; g 1 : for i in 0 to 3 generate dfx : dff port map(p(i), cp, p(i+1)); end generate; so <= p(4); end no_gen_exam; • p(0) <= si; s 0 <= p(4) 를 if scheme 사용 대체 g 1 : for i in 0 to 3 generate g 2 : if i = 0 generate dfx : dff port map(si, cp, p(i+1)); end generate g 2; g 3 : if (i > 0) and (i < 3) generate dfx : dff port map(p(i), cp, p(i+1)); end generate g 3; g 4 : if (i = 3) generate dfx : dff port map(p(i), cp, so); end generate g 4; end generate; 디지털시스템 설계 특론 97

2. 6 그 밖의 주요 기능 2. 6. 1 Configuration 선언 – 별도의 unit

2. 6 그 밖의 주요 기능 2. 6. 1 Configuration 선언 – 별도의 unit 으로 정의 – reusable – 형식 • configuration_이름 of entity_이름 is { use_clause | attribute_specification } block_configuration end [ configuration_이름 ]; 디지털시스템 설계 특론 98

2. 6. 1 Configuration 선언 • block configuration block_configuration : : = for block_specification

2. 6. 1 Configuration 선언 • block configuration block_configuration : : = for block_specification {use_clause} {block_configuration | component_configuration} end for; block_specification : : = architecture_이름 | block문_label | generate문_lable[(index_specification)] component_configuration : : = for 사례화_list : component_이름 [use binding_indication; ] [block_configuration] end for; 디지털시스템 설계 특론 99

2. 6. 1 Configuration 선언 • binding indication binding_indication : : = entity aspect

2. 6. 1 Configuration 선언 • binding indication binding_indication : : = entity aspect | [generic map (association_list)] | [port map (association_list) ; ] entity_aspect : : = entity_이름 [(architecture_이름)] | configuration_이름 | open 디지털시스템 설계 특론 100

2. 6. 1 Configuration 선언 • 예 entity System is -- configuration declaration. .

2. 6. 1 Configuration 선언 • 예 entity System is -- configuration declaration. . . configuration System_Conf_1 of System is end System; architecture Struc_Des of System is for Struc_Des -- architecture name. . . for CPU: Processor component Processor generic map (Clock => 30 ns) generic (. . . ); port (. . . ); use entity STD_COMP. SPARCII(SV_496); end component; end for; component Bus_controller port (. . . ); for Bus: Bus_controller end component; use configuration WORK. Conf_comp 1; component Comm_part end for; port (. . . ); end component; for all: Comm_part begin use configuration WORK. Conf_common; CPU: Processor generic map(. . . ) port map(. . . ); end for; Bus: Bus_controller port map(. . . ); end for; part 1: Comm_part port map(. . . ); part 2: Comm_part port map(. . . ); end System_Conf_1; end Struc_Des; 디지털시스템 설계 특론 101

2. 6. 2 Resolution 함수 • • 한 signal 의 driver 가 여럿인 경우

2. 6. 2 Resolution 함수 • • 한 signal 의 driver 가 여럿인 경우 그 값을 결정하는 함수 해당 신호: resolution signal 이라함 Wired-OR 나 Wired-AND 예 package Mypackage is function wired_and(input : Bit_vector) return Bit; end Mypackage; package body Mypackage is function wired_and(input : bit_vector) return bit is begin for i in input’ range loop if input(i) = ‘ 0’ then return ‘ 0’; end if; end loop; return ‘ 1’; end Wired_and; end Mypackage; 디지털시스템 설계 특론 use Work. Mypackage. all; entity Resolution_exam is port (src 1, src 2, src 3 : in Bit; res_sig : out Wired_and bit); end Resolution_exam; architecture Sample_Des of Resolution_exam is begin res_sig <= src 1; res_sig <= src 2; res_sig <= src 3; end Sample_Des; 102

2. 6. 3 Overloading • enumeration type 의 literal, 연산자, 함수, 프로시져의 한 이름에

2. 6. 3 Overloading • enumeration type 의 literal, 연산자, 함수, 프로시져의 한 이름에 중복된 기능이 정의 가능한 overloading 기능 2. 6. 3. 1 Enumeration Overloading – 예 • type color. A is (red, green, blue); type color. B is (red, blue, green); -- red is overloaded type Bit is (‘ 0’, ‘ 1’); type Three_value_logic is (‘ 0’, ‘ 1’, ‘X’); -- ‘ 0’, ‘ 1’ are overloaded 디지털시스템 설계 특론 103

2. 6. 3. 2 Subprogram Overloading • 정의 예 function max (ip, iq :

2. 6. 3. 2 Subprogram Overloading • 정의 예 function max (ip, iq : integer) return integer is begin if ip < iq then return iq; else return ip; end if; end max; • 사용 예 variable a, b, c : integer; variable x, y, z : real; . . . function max(fp, fq : real) return real is begin if fp < fq then return fq; else return fp; end if; end max; 디지털시스템 설계 특론 c : = max(a, b); -- 첫번째 함수 호출 z : = max(x, y); -- 두번째 함수 호출 104

2. 6. 3. 3 연산자(operator) overloading • 정의 – function “연산자” (parameter_list) return type_지정

2. 6. 3. 3 연산자(operator) overloading • 정의 – function “연산자” (parameter_list) return type_지정 is begin. . . end “연산자” ; • 정의 예 – function “and” (X, Y : in bit) return bit is begin. . . end “and” ; • 사용 예 – C : = A and B; C : = “and” (A, B); 디지털시스템 설계 특론 105

2. 6. 4 Block 문과 Guarded Signal 할당문 • Block 문은 회로 설계시에 내부적으로

2. 6. 4 Block 문과 Guarded Signal 할당문 • Block 문은 회로 설계시에 내부적으로 계층 구조 필요 시 사용 – K <= N after 2 ns; A 1 <= B 1 after 10 ns; A 2 <= B 2 after 10 ns; => K <= N after 2 ns; L 1: block begin A 1 <= B 1 after 10 ns; A 2 <= B 2 after 10 ns; end block L 1; • 형식 – label : block [ (guard_expression) ] begin {concurrent 문} end block label; 디지털시스템 설계 특론 106

2. 6. 4 Block 문과 Guarded Signal 할당문 • guard_expression 이 있으면 boolean type

2. 6. 4 Block 문과 Guarded Signal 할당문 • guard_expression 이 있으면 boolean type 의 GUARD 라는 신호 가 block 내에 자동적으로 선언되며, 그 값은 guard_expression 값과 같게 된다. 1. begin-end 사이에 “guarded” option 을 가진 concurrent signal 할당문을 guarded signal 할당문 이라 한다. 다음 두 가지 경우에만 수행됨 – – 이 문장은 GUARD 신호가 거짓에서 참으로 바뀌는 경우 GUARD 신호가 참이고, guarded signal 할당문의 RHS 의 한 signal 에 event 가 발생한 경우 2. 예 architecture Guarded_example of Exa is begin b 1 : block (enable = ‘ 1’) begin C <= guarded ‘ 1’ after 2 ns when A = ‘ 1’ or B = ‘ 1’ else ‘ 0’ after 2 ns; end block b 1; end Guarded_example; 디지털시스템 설계 특론 107

2. 6. 4 Block 문과 Guarded Signal 할당문 • Process 문과 GUARD 신호로 같은

2. 6. 4 Block 문과 Guarded Signal 할당문 • Process 문과 GUARD 신호로 같은 의미 기술 b 1 : block (enable = ‘ 1’) begin process begin if GUARD then if A = ‘ 1’ of B = ‘ 1’ then C <= ‘ 1’ after 2 ns; else C <= ‘ 0’ after 2 ns; end if; wait on GUARD, A, B; end process; end block b 1; 디지털시스템 설계 특론 108

2. 6. 5 Disconnection 명세 • Signal 선언에서 – signal_이름_리스트 : data_type [signal_종류] [:

2. 6. 5 Disconnection 명세 • Signal 선언에서 – signal_이름_리스트 : data_type [signal_종류] [: = 초기 값] ; • Signal 종류가 register 나 bus 로 선언된 신호를 guarded signal 이 라고 함 – guarded signal 에 영향을 주는 것은 guard_expression (GUARD 신호) – GUARD 신호가 false 이면, 해당 driver 로 부터 guarded signal 로의 연 결이 끊어짐 – 이때 disconnection 명세를 통해 끊어지는 시간을 지연 할 수 있다. • 형식 – disconnect guarded_signal_list : data_type after 지연 시간; • 이 명세가 없으면 0 ns 로 assume 됨 – signal t : D register : = 0; disconnect t : D after 0 ns; 디지털시스템 설계 특론 109

2. 6. 6 ALIAS • alias 선언 – object나 indexed object, 그 일부에 다른

2. 6. 6 ALIAS • alias 선언 – object나 indexed object, 그 일부에 다른 이름을 부여함 • 선언 예: indexed object – ALIAS c_flag : BIT IS flag_register(3); – ALIAS v_flag : BIT IS flag_register(2); • 선언 예: slice of object : Fig. 6. 32 – – – instr. adr의 상위 3 bit: page instr. adr의 나머지 8 bit: offset ALIAS page : BIT_VECTOR(2 downto 0) IS instr. adr(10 DOWNTO 8); ALIAS offset : BIT_VECTOR(7 DOWNTO 0) IS instr. adr(7 DOWNTO 0); • 사용 예: – page <= "001"; – offset <= X"F 1"; 디지털시스템 설계 특론 110

2. 6. 6 Alias 선언 예 signal input : Bit_vector (15 downto 0); alias

2. 6. 6 Alias 선언 예 signal input : Bit_vector (15 downto 0); alias MSB : Bit is input (15); alias part 1 : Bit_vector (6 downto 0) is input (14 downto 8); alias part 2 : Bit_vector (7 downto 0) is input (7 downto 0); . . . MSB <= ‘ 1’; part 1 <= “ 0001111”; part 2 <= “ 1010”; . . . 디지털시스템 설계 특론 111

2. 6. 7 Labeling • 반드시 사용해야 하는 경우 – Block 문 – Component

2. 6. 7 Labeling • 반드시 사용해야 하는 경우 – Block 문 – Component Instantiation 문 • 사용할 수 있는 경우 – – – Concurrent Assertion 문 Concurrent Procedure Call Concurrent Signal 할당문 Process 문 Loop 문 디지털시스템 설계 특론 112