디지털 시스템 설계 (2)

Post on 05-Jan-2016

131 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

디지털 시스템 설계 (2). VHDL 의 Data Type. 숫자형 (Scaler Type) 열거형 (Enumeration Type) 정수형 (Integer Type) 실수형 (Floating Point Type) 물리형 (Physical type) 혼합형 (Composite Type) 배열형 (Array Type) 제한형 (Constraint Type) 무제한형 (Unconstraint Type) 뭉침형 (Record Type) 연결형 (Access Type) -- 사용 않함 - PowerPoint PPT Presentation

Transcript

디지털 시스템 설계 (2)

VHDL 의 Data Type

숫자형 (Scaler Type) 열거형 (Enumeration Type) 정수형 (Integer Type) 실수형 (Floating Point Type) 물리형 (Physical type)

혼합형 (Composite Type) 배열형 (Array Type)

제한형 (Constraint Type) 무제한형 (Unconstraint Type)

뭉침형 (Record Type) 연결형 (Access Type) -- 사용 않함 File Type -- 사용않함

VHDL 의 Data Type(Scalar Type)

정수형 (Integer Type) - 231 -1 ~ 231 -1 까지의 모든 정수 정의 가능

실수형 (Floating Point Type) -1E38 ~ 1E38

VHDL 의 Data Type(Scalar Type)

물리형 (Physical Type) 시간 , 거리 , 전류 등의 물리적인 단위 기본적인 단위를 가지고 그것을 중심으로 다른 단위를

나타냄

VHDL 의 Data Type(Scalar Type)

Floating Point Type

열거형 (Enumeration Type) 문자열을 하나의 데이터로 묶어 선언한 것으로 , BOOLE

AN, BIT 등이 여기에 속함

VHDL 의 Data Type(Composite Type)

Array Type bit_vector, std_ulogic_vector 가 이 종류라 할 수

있으며 같은 종류의 데이터를 하나로 엮은 형 다차원 배열도 가능 무제한형 (Unconstraint Type)

이미 선언된 Type 을 또 하나의 변형된 새로운 Type으로 다시 만든 것

제한형 (Constraint Type) 이미 선언된 Type 을 정해진 범위에서 열거 일종의 Bus Type 으로 만든 것

VHDL 의 Data Type(Composite Type)

type array_name is array(range_name range <> ) of type_name; range_name

Integer, Natural, Positive

type array_name is array(integer range <> ) of type_name;

type std_ulogic_vector is array(NATURAL ranve <>) of std_ulogic; -- 무제한형type byte is array(7 downto 0) of bit; -- 제한형

VHDL 의 Data Type(Composite Type)

다차원 배열 Multi Dimensional Array

type memory1 is array(0 to 4, 3 downto 0) of bit constant ROM1 : memory1 := ((‘0’,’0’,’0’,’0’), (‘0’,’0’,’0’,’1’),

(‘0’,’0’,’1’,’0’), (‘0’,’0’,’1’,’1’), (‘0’,’1’,’0’,’0’));

Array of Array type word is array (3 downto 0) of BIT; type memory2 is array(0 to 4) of wordtype memory1 is array(0 to 4, 3 downto 0) of bit constant ROM2 : memory2 := ((“0000”),

(“0001”), (“0010”),

(“0011”), (“0100”));

VHDL 의 Data Type(Composite Type)

뭉침형 (Record Type) 배열이 같은 종류의 숫자형을 묶어서 사용과 반면 다른

종류의 숫자형이나 배열형 (field) 을 묶어 사용 단 , 각 field 에 배열형을 사용 할 때는 제한형 만이 가능

Type command is (add, sub, mul, …)Type instruction is record OPCODE : COMMAND; SRC : BIT_VECTOR(7 downto 0); PC : INTEGER; end record;

Case OP_CND is when ADD INST.opcode := OP_CMD;

INST.src := X”F1”; INST.pc := 2;

when SUB INST.opcode := OP_CMD; INST.src := B”1111_0011”; INST.pc := 2;

VHDL 의 Data Type(Composite Type)

File type 외부와의 입출력이나 특정 File 의 변수를 선언 VHDL Package 의 TEXTIO 부분에 선언 회로에 대한 검증단계에서 많이 사용됨 type TEXT is file of STRING

VHDL 의 Operator

Operator Priority

Logical and, or, nand, nor, xor, xnor Low

High

Relational =, /=, <=, <, >, >=

Shift sll, srl, sla, sra, rol, ror

ADD +, -, &

Sign +, -

Multiplier *, /, mod, rem

Etc **, abs, not

VHDL 의 Operator

Logical Operator 피연산자의 type 은 BIT 또는 boolean

VHDL 의 Operator

Relational Operator “=“, “/=“ 는 file type 을 제외한 모든 type 의

피연산자에 적용가능 숫자형 또는 1 차원 배열형 (Bus) 만이 가능 길이가 다른 두 수를 비교시 왼쪽부터 순차적으로 비교

“101011” 과 “ 1011” 비교시 ??? “110” 과 “ 11000” 비교시 ???

VHDL 의 Operator

Shift 1 차원 배열형에서만 사용가능

SLL --- shift left logical SRL --- shift right logical SLA --- shift left arithmetic SRA --- shift right Arithmetic SOL --- rotate left logical SOR --- rotate right logical

A_Sig := “11110101” sll 2; B_Sig := “01011111” sll 2;C_Sig := “11110001” sll 2;

VHDL 의 Operator

Add +, -

같은 numeric type(integer, floating point, physical type)이어야함

&(Concatenation) 피연산자는 1 차원 array 또는 array element 이어야

VHDL 의 Operator

Sign numeric type 에서 사용 ‘-’ 는 단순 음수가 아닌 , MSB 를 sign 비트로 사용 A1 -B 는 B 의 2 의 보수를 입력

VHDL 의 Operator

Multiplying poerator *, / 는 integer type, floating point type 의 피연산자에

대하여 정의 되며 두 피연산자의 type 은 같아야 함 다음과 같은 physical type 에서도 연산가능

rem, mod 의 피연산자는 integer type

VHDL 의 Operator

Etc operator abs 피연산자는 nemeric type 이어야 함 ** 는 모든 integer type 과 floating poing type 에

대하여 정의 됨 ** 의 오른쪽 연산자는 Integer 만 가능

2.4 ** 3

Data Flow Description

Concurrent Signal Assignment Statement 주어진 값 , 입력 signal, 또는 이에 대한연산의 결과

등을 delay 에 대한 정보와 함께 출력 signal 에 전달 각 concurrent signal assignment statement 는 하나의

독립된 concurrent process 로서 동작하며 sensitive signal 에 변화가 있을 때마다 반복 수행됨

Conditional signal assignment, selected signal assignment

Data Flow Description

Conditional Signal Assignment

Data Flow Description

Selected Signal Assignment

Concurrent(Block)

Block 회로상의 내부 회로를 표현 회로설계시에 계층구조를 갖는데 , Top 회로는

Design Block 들을 서로 연결하는 성격을 띄게 되고 , 각 Design Block 은 그 안에 또 다른 Design Block 이나 회로를 갖는다 VHDL 에서 Top VHDL 파일에서 Design Block 으로 표시 할 수 있는 가장 쉬운방법

Netlist 형식이 아닌 일반 Compiler 언어와 같은 표현으로 전체회로의 동작을 표현 할 수 있다

Concurrent(Block) Syntex

block_name : block ( 동작 제한식 )[generic (generic_list);][port (port_list);]

beginConcurrent 문

end block[Block_name]

Ex)B1: block(EMB = ‘0’)

signal S : bit;begin

S <= A and B;B2: block

signal S:bit;begin

S <= C or D;out1 <= S;

end block B2;

out2 <= S;end block B1;

Behavioral Description

Sequential statement Behavioral description 은 실질적으로 사용되는 문장이 Sequential 문 Process 문 또는 Subprogram 문 에서만 사용가능 sequential

statement 로 구성 내부의 sequential statement 들을 순서대로 wait statement 를 만날

때까지 반복 수행함 Sensitivity list 가 있는 경우에는 그 list 에 포함되어 있는 signal 의 값이

변해야만 sequential statement 들이 반복 수행됨 Sensitivity list 도 없고 wait statement 도 없는 process statement

는 무한히 반복 수행되어 시뮬레이션이 끝날 수 없게 되므로 주의해야 함 명령어

wait, assertion, signal assignment, variable assignment, procedure call, if, case, loop, next, exit, return, null

Behavioral Description

Behavioral Description

Wait Process 문이나 , procedure 의 수행을 일시 정지시킴

Behavioral Description

Signal entity 선언에서 port 로 선언된 것들 또는 그

밖에서 Signal 로 선언된 것에 신호를 전달 할 때 사용

out <= in;

Variable process 또는 subprogram 내에서 variable

로 선언된 임시변수에 값을 전달 temp := in;

Behavioral Description

Signal & veriable

entity Test isport(in_data:in bit; out_sig:out bit);

end;

architecture Behave of Test isbeginprocess(in_data)

variable out_var :bit;begin

out_var := in_data;out_sig <= in_data;

end process;end

Behavioral Description

IF

Behavioral Description

Case

Behavioral Description

Loop Loop, for, while loop 문을 사용할 때 exit, wait 등을 사용하여

loop 의 진행을 종료 하지 않도록 사용할 것

Logic Synthesis 가 되지 않음

Behavioral Description

Next, Exit Loop 문 안에서 조건문을 이용하여 조건에 만족했을 때

loop 를 빠저나오는것이 exit, next 다음을 실행하지 않고 , loop 의 처음으로 돌아가는것을 의미

loop label 이 있는 exit, next 는 해당 loop 에 적용 loop label 이 없는 exit, next 는 각문장이 포함되어있는

loop 중 가장 내부의 loop

Behavioral Description

Null 다음 실행문으로 수행순서를 넘겨주는것 외에는 아무

일도 하지 않음

top related