PowerPoint 프레젠테이션 - Here is "PLDWorld.com"

Download Report

Transcript PowerPoint 프레젠테이션 - Here is "PLDWorld.com"

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 기본 구성 – VHDL 설계 표현의 단위
•
VHDL 표현에 있어 표현의 기본 단위 : Design Entity
– 기술하고자 하는 Hardware Design 대상체를 의미하는 것
•
Design Entity를 기술하기 위하여 : 5가지의 Design Unit
– Entity Declaration Unit : Design Entity의 Interface에 관한 정보를 기술
– Architecture Body Unit : Design Entity의 내부 동작 또는 구조를 기술
– Configuration Declaration Unit : Entity Declaration Unit에 대하여 Simulation를
수행할 때 결합되는 Architecture Body Unit 및 기타 결합 정보를 기술
– Package Declaration Unit : 서로 다른 Design Entity의 Entity Unit 또는
Architecture Unit에 대한 VHDL 표현에서 공유할 정보를 선언하는 경우 에 사
용
– Package Body Unit : 공유하는 정보 중 Function, Procedure와 같은 Subprogram
에 대한 동작을 기술하는 경우에 사용
•
임의의 Design Entity를 표현하기 위한 최소로 필요로 하는 사항
– Entity Unit + Architecture Unit에 대한 표현은 최소로 요구
•
Package Unit에 대한 정의
– 사용자가 정의 : Library Name을 지정하여 Compile 함
– 표준화 Group 또는 Vendor에서 정의 : (예)STD_LOGIC_1164
• 사용자는 Library에 대한 Path를 설정하면서 사용
디지털시스템 설계 특론
2
2.1.1 Entity 선언
•
Entity Unit에 대한 기본 개념의 표현
Generics (static information: parameters)
 port의 mode에 대한 의미
 in : 오직 읽을 수만 있음.
Ports
Generics
Ports(dynamic
information: signals)
in
•
out
inout
buffer
Subtype constraint checks on generics
(values must belong to range) using
passive process such as assertions
Dynamic checks on ports
(sequence of values must match arbitrary
constraints -- set-up, hold)
 out : 오직 값을 쓸 수만 있음.
 buffer : 값을 읽거나 쓸 수 있음. 오직 하
나의 driver만을 가질 수 있음.
 inout : 값을 읽거나 쓸 수 있음. 여러 개
의 driver를 가질 수 있음.
 가능하면 in, out, inout만을 사용하
도록 modeling 한다.
Entity Unit 표현에 대한 Syntax 정의
entity ENTITY_NAME is
[ generic ( LIST_OF_GENERICS_AND_THEIR_TYPES ) ; ]
[ port ( LIST_OF_PORTS_AND_THEIR_MODE ) ; ]
[ DECLARATIONS ]
[ begin
{ ENTITY_STATEMENT } ]
end [ entity ] [ ENTITY_NAME ] ;
디지털시스템 설계 특론
3
2.1.1 Entity 선언
• D Flip-Flop의 Symbol
D
•
Generic Decoder의 Symbol
SIZEIN
Q
A
SIZEOUT
GENERIC_
DECODER
B
CLK Q
CLR
EN
• 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;
디지털시스템 설계 특론
•
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(SIZEOUT1 downto 0));
end GENERIC_DECODER;
4
2.1.1 Entity 선언
디지털시스템 설계 특론
5
2.1.1 Entity 선언
디지털시스템 설계 특론
6
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.1 Entity 선언
디지털시스템 설계 특론
8
2.1.1 Entity 선언
디지털시스템 설계 특론
9
2.1.1 Entity 선언
디지털시스템 설계 특론
10
2.1.2 Architecture Body
디지털시스템 설계 특론
11
2.1.2 Architecture Body
디지털시스템 설계 특론
12
2.1.3 Subprogram 과 Package
디지털시스템 설계 특론
13
2.1.3 Subprogram 과 Package
디지털시스템 설계 특론
14
2.1.3 Subprogram 과 Package
디지털시스템 설계 특론
15
2.1.3 Subprogram 과 Package
디지털시스템 설계 특론
16
2.1.3 Subprogram 과 Package
디지털시스템 설계 특론
17
2.1.3 Subprogram 과 Package
디지털시스템 설계 특론
18
2.1.3 Subprogram 과 Package
• Package 사용 예
library Base_lib;
use Base_lib.Sample.all;
entity Level3_and is
port (X, Y : in three_level_logic;
Z : out three_level_logic);
end Level3_and;
architecture Level3_and_body of Level3_and is
begin
process(X, Y)
begin
Z <= X and Y after 5 ns; -- 함수 “and” 호출
end process;
end Level3_and_body;
디지털시스템 설계 특론
19
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
•
•
이미 설계한 것을 공유할 수 있게 저장해 둔 장소
STD, WORK: 항상 참조하는 두 개의 Library
1. WORK: 현재 수행하는 design 의 default 작업 라이브러리,
design unit 분석 결과를 저장하는 곳
2. STD
–
–
–
•
STANDARD 라는 package 와 TEXTIO 라는 package 만으로 구성
STANDARD 는 boolean, bit, character, severity_level, integer, real,
time, natural, string 등 같은 미리 정의된 표준 data type 정의 포함
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 등 같이 값을 가지는 것
• Object 는 data type을 가짐
디지털시스템 설계 특론
22
2.2.1 Literal
• 숫자관련 literal 과 문자관련 literal
• Integer literal, real literal: 숫자 끊어 읽도록 밑줄 ‘_’ 사용 가능
– 예
• 250
• 23.234
• 2.56E+12
245_346
232_122.111_0
9.0E-23
• 2진수, 8진수, 16진수: based literal
– 형식
• 기수#숫자#[지수]
– 예
• 2#1111_1111# 8#377# 16#FF#
• 2#1.1111_1111_111#E11 16#F.FF#E+2
디지털시스템 설계 특론
23
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 등
• 주로 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
– 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.2.2 Floating Point Type
• 소수점을 가진 수
• 정의(package STANDARD 에 정의됨)
– Type REAL is range -1.0E38 to 1.0E38;
– Type Norm is range 0.0 to 1.0;
디지털시스템 설계 특론
27
2.2.2.3 Enumeration Type
• 정의되는 data type 이 가질 수 있는 값을 순서대로 나열함
• 식별자나 character literal을 나열함
• 예
type
type
type
type
type
Bit2 is (‘0’, ‘1’);
Bit3 is (‘0’, ‘1’, ‘Z’);
Bit4 is (‘0’, ‘1’, ‘X’, ‘Z’);
Day is (sun, mon, tue, wed, thu, fri, sat);
Color is (red, blue, yellow);
signal
A : Bit3;
signal
B : Day;
variable C : Color;
A <= ‘Z’;
B <= wed;
C := yellow;
디지털시스템 설계 특론
28
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, ETX, 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
• 저항, 시간, 거리 등과 같은 물리적인 양을 나타내기 위해 사용되며,
base unit 이 있고, base unit의 정수 배로 표현되는 secondary unit
이 있다.
type Resistance is range 1 to 1E10
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 1E10
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 에 이미 선언되어 있음
• 예
variable i : integer;
variable t : Time;
variable len : Length;
...
t := 10us + i * ns – 25 ps;
len := len * 10 + 30 mm;
...
디지털시스템 설계 특론
31
2.2.2.5 Composition Type
•
•
•
•
여러 개의 값을 포함함
Record Type: 이종의 Data 를 묶어서 하나의 Type 이 됨
Array Type: 동일의 Data 를 묶어서 하나의 Type 이 됨
Record Type의 예(정의 및 사용)
type Time is
record
record
Op_field : Operation;
Hour : Integer range 0 to 23;
Operand1 : Integer;
Min : Integer range 0 to 59;
Operand2 : 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.Operand2 := 2;
32
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 w1 : Byte;
w1 := “00001100”;
– Memory 의 다른 정의 방법
• type Memory is array (0 to 1023, 7 downto 0) of Bit;
– Unconstrained array 정의
• type BigMem 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)
process
type Word is array (0 to 32) of Bit;
variable list1 : word(0 to 32);
variable list2 : data(0 to 7);
begin
list2 := list1(15 to 22);
-- list1(15 to 22) is an array slice
...
디지털시스템 설계 특론
34
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 Ptr1 : Val_ptr := new Val;
variable Ptr2 : Val_ptr := new Val’ (500);
variable Ptr3 : Val_prt;
디지털시스템 설계 특론
35
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 tmp1 : next := new Node’(20, null);
Start.link := tmp1;
Tmp1.link := new Node’(30,null);
Deallocate(tmp1.link); -- deallocation
Deallocate(tmp1); Deallocate(start);
디지털시스템 설계 특론
36
2.2.2.6 Access Type
• Deallocate 프로시져는 access type 선언 시 자동적으로 선언된다.
–
–
–
–
procedure Deallocate(access_type_object_이름: inout access_type_이름);
deallocate (Tmp1.Link);
deallocate (Tmp1);
deallocate (Start);
디지털시스템 설계 특론
37
2.2.2.7 File Type
• 컴퓨터 File을 Object 로 선언하기 위해 사용됨
–
–
–
–
type
type
type
type
file_type_이름 is
Int_file is file of
String_file is file
Bit_file is file of
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 is [mode] logical_file_name;
• Mode: in(read), out(write), default는 in
– 예
• file fileA : int_file is in “/users/test/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 의 선언 가정하의 예제 프로그램
use Work.Mypackage.all;
entity Signal_Store is
end Signal_Store;
architecture Behav of Signal_Store is
file fileA : 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 (fileA, E);
end process;
end Behav;
디지털시스템 설계 특론
40
2.2.2.8 IEEE 1164 표준 Data Types
디지털시스템 설계 특론
41
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.1 Typemark 변환
–
type_이름 (object_이름 또는 피 연산자)
– 예
process
type type1 is integer range 0 to 100;
type type2 is real range 0.0 to 100.0;
variable a : type1;
variable b, c : type2;
begin
...
c := type2(a) + b;
end process;
디지털시스템 설계 특론
43
2.2.3.2 변환 함수 이용(type conversion function)
• 예1: Bit4_to_Bit
function Bit4_to_Bit
begin
case x is
when ‘0’ =>
return
when ‘1’ =>
return
when ‘Z’ =>
return
when ‘X’ =>
return
end case;
end Bit4_to_Bit;
디지털시스템 설계 특론
(x : Bit4) return Bit is
‘0’;
‘1’;
‘0’;
‘0’;
44
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.4 Object
디지털시스템 설계 특론
46
2.2.4 Object
•
•
information을 기억하는 장소 를 4가지로 분류한 것이다.
– constant, signal, variable, file
Constant
–
–
•
Signal
–
–
•
선언 영역 : process, function, procedure
simulation을 수행할 때 변화(:=)하는 dynamic 기억 장소로, 변화 값이 즉시 변화됨
File
–
•
선언 영역 : entity, architecture, package, block
simulation을 수행할 때 변화(<=)하는 dynamic 기억 장소로, 일정한 delay 후에 변화됨
Variable
–
–
•
선언 영역 : entity, architecture, process, package, function, procedure, block
선언할 때 값이 결정되며 simulation 도중에는 변경이 불가능 : static 기억 장소
library std_logic_textio와 관련된 것으로 simulation의 수행 중 stimulus vector 또는 결과를
위하여 다른 file과 송,수신할 때 사용하기 위하여 정의된 것이다.
object 선언문의 구문 정의 및 초기값 결정
–
–
object_type identifier : data_type [ := initial value ] ;
initial value의 기술이 없으면 data_type에 의하여 포함되는 값 중 left-most value가 초기값
으로 설정된다.
디지털시스템 설계 특론
47
2.2.5 Attribute
• 이미 정의된 것들에 대한 속성을 알고자 할 때 사용
• type_이름’ attribute_이름
• predefined attribute, user-defined attribute
디지털시스템 설계 특론
48
2.2.5 Attribute
* 구문: Signal_or_Type_or_Array_Name’Attribute_Name
디지털시스템 설계 특론
49
2.2.5 Attribute
디지털시스템 설계 특론
50
2.2.5 Attribute
디지털시스템 설계 특론
51
2.2.5 Attribute
디지털시스템 설계 특론
52
2.2.5 Attribute
디지털시스템 설계 특론
53
Signal Attributes(Signal s : BIT type)
디지털시스템 설계 특론
54
Results of Signal Attributes(signal s1: type BIT)
디지털시스템 설계 특론
55
2.2.5 Attribute
디지털시스템 설계 특론
56
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’) 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 : 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 연산자
디지털시스템 설계 특론
61
2.2.6 연산자
• Rem 연산
– A rem B 는 A의 부호를 따르고, |A rem B| < |B| 를 만족하며 다음 식을
만족함
• A = (A / B) * B + (A rem B)
• Mod 연산
– A mod B 는 B의 부호를 따르고 |A mod B| < |B| 를 만족하며 다음 식을
만족함
• A = B * N + (A mod B)
• Rem 과 Mod 계산 비교
A
B
A/B
A rem B
A mod B
11
4
2
3
3
-11
4
-2
-3
1
11
-4
-2
3
-1
-11
-4
2
-3
-3
디지털시스템 설계 특론
62
2.3 Behavioral Representation
• 동작적 표현, 행위 수준, 알고리즘 수준
2.3.1 process 문
– 내부는 순차적으로 수행됨
– 구문
[process_레이블:]
process [(sensitivity_list)]
{선언문}
begin
{ sequential 문 }
end process [process_레이블];
디지털시스템 설계 특론
63
2.3.1 process 문
• 선언문 부분에 포함될 수 있는 것
Subprogram 선언 및 body
Type 선언
Subtype 선언
Constant 선언
Variable 선언
File 선언
Alias 선언
Attribute 선언 및 명세(specification)
Use clause
디지털시스템 설계 특론
64
2.3.1 process 문
• Sequential 문에 오는 것들
Wait 문
Signal 할당문
Variable 할당문
Assertion 문
If 문
Case 문
Loop 문
Next 문
Exit 문
Return 문
Null 문
Procedure call
디지털시스템 설계 특론
65
2.3.1 process 문
• 예
architecture sample2 of AND_OR is
begin
process
begin
01 <= I1 and I2 after 5 ns;
02 <= I1 or I2 after 5 ns;
wait on I1, I2;
end process;
end sample2;
architecture sample3 of AND_OR is
begin
01 <= I1 and I2 after 5 ns;
02 <= I1 or I2 after 5 ns;
end sample3;
디지털시스템 설계 특론
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 문,
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 문 사용 예
–
–
–
–
–
wait on a, b, c;
wait until enable=‘1’;
wait for 10 ns;
wait on a, b, c until enable=‘1’;
wait on a, b, c until enable=‘1’ for 10 ns;
2.3.2.2 signal 할당문
– signal_이름 <= 값;
– signal 과 변수의 차이는 signal은 <시간, 값> pair로 되어 있다.
디지털시스템 설계 특론
68
2.3.2.2 Signal 할당문
디지털시스템 설계 특론
69
2.3.2.2 Signal 할당문
• Delay Model(signal 에 대한)
– LRM(Language Reference Manual)에 정의된 3가지 형태의
delay model
• transport delay : wire path에 의한 delay와 같이 입력에의 변화가 제시된
delay 후에 출력에 반드시 나타난다.
• inertial delay : 제시된 delay 보다 짧은 변화가 입력에 나타나는 경우는
noise로 취급하여 출력에 영향을 주지 않으며, 이외의 경우는 제시된
delay 후에 입력의 변화가 출력에 나타나도록 정의된 delay 이다.
• delta delay : concurrent 하게 수행되는 구문들의 event driven simulation을
행하기 위하여 정의된 delay이다.
– delay model에 대한 예제
B <= transport A after 3 ns;
A
B
C <= A after 3 ns;
C
D <= A;
D
디지털시스템 설계 특론
70
2.3.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;
시간
cnt
hap
0
0
0
5
1
1
5+δ
1
1
10
2
3
10 + δ
2
3
15
3
6
15 + δ
3
6
<Variable 인 경우>
디지털시스템 설계 특론
71
2.3.2.3 Variable 할당문
• Variable 할당문과 signal 할당문의 차이
시간
signal cnt, hap : integer := 0;
process
begin
wait for 5 ns;
cnt <= cnt + 1;
hap <= hap + cnt;
end process;
cnt(var) hap(var)
0
0(0)
0 (0)
5
0 (1)
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 문
• 형식
– assert 조건
[report 메시지]
[severity 레벨];
• Severity 레벨
–
–
–
–
Note: 메시지의 화면 출력
Warning: 메시지 출력, 발생 시간 및 장소 출력, 시뮬레이션 계속
Error: 메시지 출력, 시뮬레이션 중지
Failure: 메시지 출력, 시뮬레이션 상태로부터 빠져나옴
디지털시스템 설계 특론
73
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 문의 형식
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 문의 형식
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 문의 예제
process
begin
case sel is
when “00” =>
z <= in0 after 5ns;
when “01” =>
z <= in1 after 5ns;
when “10” =>
z <= in2 after 5ns;
when others =>
z <= in3 after 5ns;
end case;
wait on sel, in0, in1, in2, in3;
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 문
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 문 예제
loop1:
for a in 1 to 10 loop
b := b + a;
end loop loop1;
디지털시스템 설계 특론
• while 문 예제
loop1:
while a <= 10 loop
a := a + 1;
b := b + a;
end loop loop1;
79
2.3.2.7 기타 제어문: exit 문, next 문, null 문, return 문
• Exit 문- loop 문의 반복 수행 종료
– exit [루프_label] [when 조건];
– 예
• Loop1:
loop
a := a + 1;
b := b + a;
if a > 10 then exit loop1;
end loop;
디지털시스템 설계 특론
80
2.3.2.7 기타 제어문: exit 문, next 문, null 문, return 문
• Next 문 – loop 에서 나머지 수행 않고 처음부터 다시 시
작
– Next [루프_label] [when 조건]
– 예
• variable a : integer := 0;
loop1: for i in 1 to 10 loop
loop2: for j in 1 to 10 loop
if j = 5 then
next loop2;
end if;
a := a + 1;
end loop loop2;
end loop loop1;
– 위의 if 문을 next loop2 when j = 5; 로 대치 가능
디지털시스템 설계 특론
81
2.3.2.7 기타 제어문: exit 문, next 문, null 문, return 문
• Null 문 – 아무것도 수행 않고 다음 문장으로 넘겨주기
위한 목적
– 예
• case sel is
when “00” =>
mout <= in1 after 10 ns;
when “01” =>
mout <= in2 after 10 ns;
when others =>
null;
end case;
• Return 문
– return [리턴 값];
디지털시스템 설계 특론
82
2.4 Dataflow Representation
• Concurrent Signal Assignment 문 사용
2.4.1 Concurrent Signal Assignment
– Process 문과 동일한 효과
– Sensitivity list 는 RHS 에 있는 신호들
architecture Example1 of Concurrent is
signal clock1, clock2, clock3 : Bit := ‘0’;
begin
clock1 <= not clock1 after 5 ns;
clock2 <= not clock2 after 10 ns;
clock3 <= clock1 and clock2;
end;
architecture Example2 of Concurrent is
signal clock1, clock2, clock3 : Bit := ‘0’;
begin
clock3 <= clock1 and clock2;
clock2 <= not clock2 after 10 ns;
clock1 <= not clock1 after 5 ns;
end;
디지털시스템 설계 특론
그림 2-5 concurrent signal 할당문의 수
행 결과
83
2.4.1 Concurrent Signal Assignment
• Process 문으로 한 동일한 기술
architecture Example1 of Concurrent is
signal clock1, clock2, clock3 : Bit := ‘0’;
begin
process(clock1)
begin
clock1 <= not clock1 after 5 ns;
end process;
process(clock2)
begin
clock2 <= not clock2 after 10 ns;
end process;
process(clock1, clock2)
begin
clock3 <= clock1 and clock2;
end process;
end;
디지털시스템 설계 특론
84
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
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 부분이 일정할 때
– 형식
• 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 문
• 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 선언과 component instantiation 문으로 구성
예1
architecture Sample of OR_gate
-- component declaration
component Or2
port ( a, b : in Bit;
z : out Bit);
end component;
signal in1, in2, O : Bit;
begin
-- component instantiation statement
lab1 : Or2 port map (a => In1, b => In2, z => O);
end Sample;
디지털시스템 설계 특론
89
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
u1 : decoder port map (Sel(1) => xin,
Dout(1) => D1, Dout(2) => D2);
-- new generic value is given
u2 : decoder generic map (B => 2)
port map (Sel(1) => I1, Sel(2) => I2,
Dout(1) => O1, Dout(2) => O2,
Dout(3) => O3, Dout(4) => O4);
디지털시스템 설계 특론
90
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 entity_이름 [ (architecture_이름) ]
| configuration configuration_이름
| open
디지털시스템 설계 특론
91
2.5.3 Configuration Specification
• 예1
– for C1, C2, C3 : 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
-- 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, 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_c1, t_c2 : Bit;
-- component declarations
component OR2
port (i1, i2 : in Bit;
O : out Bit);
end component;
component Half_adder
port (A1, A2 : in Bit;
Sum, Carry : out Bit);
end component;
디지털시스템 설계 특론
-- configuration specification
for ORG: OR2 use entity Work.Or_G(behav)
port map (p => i1, q => i2, r => O);
for others: Half_Adder use entity
Work.Half_A(behavior)
port map (s => A1, t => A2, u => Sum,
v => Carry);
-- component instantiation statements
begin
HA1 : Half_Adder
port map (A1 => X, A2 => Y, Sum => t_s,
Carry => t_c1);
HA2 : Half_Adder
port map (A1 => t_s, A2 => C_in,
Sum => S_out, Carry => t_c2);
ORG : OR2
port map (i1 => t_c1, i2 => t_c2,
O => C_out);
end Structural_Des;
93
2.5.3 Configuration Specification
• 동일한 configuration specification
for HA1, HA2 : Half_Adder use entity Work.Half_A(behavior)
port map ( s => A1, t => A2, u => Sum, v => Carry);
for ORG : OR2 use entity Work.Or_G(behav)
port map ( p => i1, q => i2, r => O);
디지털시스템 설계 특론
94
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 문 올 수 있
음
• 예: 4개 D-FF 으로 4bit 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
df1 : dff port map (si, cp, p(1));
df2 : dff port map (p(1), cp, p(2));
df3 : dff port map (p(2), cp, p(3));
df4 : dff port map (p(3), cp, so);
end No_gen_exam;
디지털시스템 설계 특론
DF1
SI
P(0)
D
DF2
Q
D
P(1)
CP
DF3
Q
D
P(2)
CP
DF4
Q
D
Q
P(3)
CP
SO
P(4)
CP
CP
4 개의 D-플립플롭을 직렬로 연결한 시프트 레지스터
96
2.5.4 Generate 문
• Generate 문 사용 시
begin
p(0) <= si;
g1 : 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; s0 <= p(4) 를
if scheme 사용 대체
g1 : for i in 0 to 3 generate
g2 : if i = 0 generate
dfx : dff port map(si, cp, p(i+1));
end generate g2;
g3 : if (i > 0) and (i < 3) generate
dfx : dff port map(p(i), cp, p(i+1));
end generate g3;
g4 : if (i = 3) generate
dfx : dff port map(p(i), cp, so);
end generate g4;
end generate;
디지털시스템 설계 특론
97
2.6 그 밖의 주요 기능
2.6.1 Configuration 선언
– 별도의 unit 으로 정의 – reusable
– 형식
• configuration configuration_이름 of entity_이름 is
{ use_clause | attribute_specification }
block_configuration
end [ configuration_이름 ];
디지털시스템 설계 특론
98
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
| [generic map (association_list)]
| [port map (association_list) ;]
entity_aspect : : =
entity entity_이름 [(architecture_이름)]
| configuration configuration_이름
| open
디지털시스템 설계 특론
100
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_comp1;
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;
part1: Comm_part port map(. . .);
part2: Comm_part port map(. . .);
end System_Conf_1;
end Struc_Des;
디지털시스템 설계 특론
101
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 (src1, src2, src3 : in Bit;
res_sig : out Wired_and bit);
end Resolution_exam;
architecture Sample_Des of Resolution_exam is
begin
res_sig <= src1;
res_sig <= src2;
res_sig <= src3;
end Sample_Des;
102
2.6.3 Overloading
• enumeration type 의 literal, 연산자, 함수, 프로시져의 한 이름에 중
복된 기능이 정의 가능한 overloading 기능
2.6.3.1 Enumeration Overloading
– 예
• type colorA is (red, green, blue);
type colorB 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 : 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_지정 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 문은 회로 설계시에 내부적으로 계층 구조 필요 시 사용
– K <= N after 2 ns;
A1 <= B1 after 10 ns;
A2 <= B2 after 10 ns;
=>
K <= N after 2 ns;
L1: block begin
A1 <= B1 after 10 ns;
A2 <= B2 after 10 ns;
end block L1;
• 형식
– label : block [ (guard_expression) ]
begin
{concurrent 문}
end block label;
디지털시스템 설계 특론
106
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
b1 : block (enable = ‘1’)
begin
C <= guarded
‘1’ after 2 ns when A = ‘1’ or B = ‘1’ else
‘0’ after 2 ns;
end block b1;
end Guarded_example;
디지털시스템 설계 특론
107
2.6.4 Block 문과 Guarded Signal 할당문
• Process 문과 GUARD 신호로 같은 의미 기술
b1 : 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;
end if;
wait on GUARD, A, B;
end process;
end block b1;
디지털시스템 설계 특론
108
2.6.5 Disconnection 명세
• Signal 선언에서
– 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, 그 일부에 다른 이름을 부여함
• 선언 예: 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의 상위 3bit: page
instr.adr의 나머지 8bit: 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"F1";
디지털시스템 설계 특론
110
2.6.6 Alias 선언
예
signal input : Bit_vector (15 downto 0);
alias MSB : Bit is input (15);
alias part1 : Bit_vector (6 downto 0) is input (14 downto 8);
alias part2 : Bit_vector (7 downto 0) is input (7 downto 0);
. . .
MSB <= ‘1’;
part1 <= “0001111”;
part2 <= “10101010”;
...
디지털시스템 설계 특론
111
2.6.7 Labeling
• 반드시 사용해야 하는 경우
– Block 문
– Component Instantiation 문
• 사용할 수 있는 경우
–
–
–
–
–
Concurrent Assertion 문
Concurrent Procedure Call
Concurrent Signal 할당문
Process 문
Loop 문
디지털시스템 설계 특론
112