Presentation is loading. Please wait.

Presentation is loading. Please wait.

Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.

Similar presentations


Presentation on theme: "Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음."— Presentation transcript:

1 Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
데이터 할당 및 연산을 수행하지 못한다. 이런 경우 데이터 변환 함수를 이용하여 신호의 데이터 형을 일치 시킬 수 있다. 즉 데이터 변환함수는 자료형의 변환을 위한 함수 이다. 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음. 따라서 본 함수의 사용을 위해서는 사전의 다음 구문을 지정해야 한다. Library ieee: use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; 변환 함수의 종류> Conv_목적자료형 (대상신호, 대상신호간 연산) Conv_integer, Conv_unsigned, Conv_signed, Conv_std_logic_vector 사용 예> signal A, B : unsigned(7 downto 0); signal Y : integer; Y <= conv_integer (A + B);

2 Attribute (속성) Attribute (속성) : 신호 대한 동작이나 상태 표현을 위한 특성으로 미리 정의된 속성(predefined attribute)과 사용자 정의 속성(user-defined attribute) 이 있다. 표현형식 : 신호이름’ 속성이름 종류 : low, high, left, right, pos, val, succ, pred, leftof, rightof, active, last_active, event, last_event, last_value, delayed, quit, stable, transaction… 사용 예> Event 속성: CLK’EVENT 로 표현, CLK에 EVENT가 발생하면 참값 clk’event and clk=‘1’ 클럭이 상승엣지인 경우… clk’event and clk=‘0’ 클럭이 하강엣지인 경우…

3 =, /=, <, <=, >, >=
Operator (연산자) Operator : 구문에서의 논리나 관계, 계산의 표현을 위해서 사용하는 기호. 구분 종류 우선 순위 논리 연산자 and, or, nor, xor, xnor 6 관계 연산자 =, /=, <, <=, >, >= 5 덧셈 연산자 +, - 4 연결 연산자 & 부호 3 곱셈 연산자 *, /, mod, rem 2 기타 연산자 **, abs, not 1 ** : exponetiation 승, abs : 절대값, mod : 몫, rem : 나머지,

4 Statement (1) 1. 병행 문장(Concurrent Statements)
1.1 Signal Assignment, Simple 1.2 Signal Assignment, Conditional 1.3 Signal Assignment, Selected 1.4 Process Statement 2. 순차 문장(Sequential Statements) 2.1 Wait Statement 2.2 If Statement 2.3 Case Statement 2.4For Loop Statement

5 Statement (1) 병행 문장(Concurrent Statements)
1.1 Signal Assignment (simple) signal에 산술식 혹은 논리식의 결과를 할당 표현형식> 신호_이름 <= 산술식 신호_이름 <= 논리식 표현 예 > signal A, B, C, F, G, H : std_logic; signal X, Y, K : std_logic_vector(7 downto 0); F <= A and B ; G <= A or B ; H <= A nand B ; K <= X + Y; * 우변에서 A, B, X, Y 의 변화가 있는 경우 <= 실행

6 Statement (1) 1.2 Signal Assignment (conditional)
조건에 부합되는 표현(expression)을 signal 에 할당 (표현은 산술식, 논리식이거나 임의의 객체일 수 있다.) 표현형식1. > 신호_이름 <= 표현 when 조건 표현형식2. > 신호이름 <= 표현1 when 조건1 else 표현2 when 조건2 else 표현3 when 조건3 else 표현4 ; 표현 예 > 4:1 Multiplex 의 표현 F <= I0 WHEN sel = “00” ELSE I1 WHEN sel =“01” ELSE I2 WHEN sel = “10” ELSE I3;

7 Statement (1) 1.3 Signal Assignment (selected)
표현(expression) = 주어진 조건과 같은 경우 표현(값)을 signal에 할당. 표현형식> WITH expression SELECT signal <= expression1 WHEN constant_value1, expression2 WHEN constant_value2, expression3 WHEN constant_value3; 표현 예> DATA <= A & B & C; concatenate A, B, C with DATA select Y <= ‘0’ when “000”, ‘1’ when “001”, ‘-’ when others;

8 Statement (1) 1.4 Process statement
표현형식> [레이블:] process (SENSITIVITY_LIST) {선언문} begin {순차처리문}; end process [레이블]; * Sensitivity_list의 값들이 변할 때 동작 시작 선언문 : Subprogram declaration and body Data type declaration Constant & variable declaration

9 Statement (1) 대기열값 현재값 A 표현 예> t=0 t=∆ t=5 t=10 t=10+∆ t=15 B
* A, B 초기값은 0 대기열값 현재값 A 표현 예> entity simulation_example is end simulation_example ; architecture test1 of simulation_example is signal A, B: bit ; begin P1: process (B) A <= ‘1’; A <= transport ‘0’ after 5 ns; end process P1; P2: process (A) if A =‘1’ then B <= not B after 10 ns; end if ; end process P2; end test1; t=0 (초기화후) t=∆ t=5 t=10 t=10+∆ t=15 ‘0’ B 0 at 5 1 at ∆ ‘0’ 0 at 5 ‘1’ 1 at 10 ‘0’ ‘0’ 1 at 10 0 at 15 1 at10+∆ ‘0’ ‘1’ 0 at 15 ‘1’ 0 at 20 ‘0’ 0 at 15 ‘1’

10 Statement (1) 다음의 문장 구조를 읽고 설명하시요.
예1) ARCHITECTURE archlist OF list IS BEGIN nand: PROCESS (a,b) c <= NOT (a AND b); END PROCESS nand; END archlist; 예2) Architecture select_1 OF list1 IS mu: PROCESS (a, b, s) IF s = '0' THEN x <= a; ELSE x <= b; END IF; END PROCESS mu;

11 Statement (1) 순차 문장(Concurrent Statements) 2.1 Wait statement
프로세스문의 수행 중단시키고 대기시키는 문장으로 중지와 재활동의 변화를 제어하는 문이다. 표현 예 ) wait on a, b, c; -- signal a, b, c 에 변화가 있을 때까지 대기 wait until clk=‘1’; --if (clk=‘1’ and clk’event) 문장과 동일 wait for 10 ns; --10 ns 동안 대기 wait until ( x < 100 ); --x 가 100 이하일 때 까지 기다린다.

12 Statement (1) Library ieee; Use ieee.std_logic_1164.all; Entity DFF is
port( D, CL : in std_logic; Q : out std_logic ); End DFF; Architecture beh_wait of DFF is Begin process begin wait until CL=‘1’; Q <= D; end process; End beh_wait;

13 Statement (1) 2.2 IF statement 주어진 조건에 따라 문장을 실행을 시키는 문
표현형식1> IF 조건 then 문장 조건하에서 문장을 실행 END IF IF 문 완료 표현형식2> IF 조건 then 문장 조건하에서 문장1 수행 ELSE 문장 조건이 안 맞으면 문장2 수행 END IF 표현형식3> IF 조건1 then 문장 조건1에서 문장1 수행 ELSE IF 조건 2 then 문장 조건2에서 문장 2 수행 ELSE 문장 조건2가 아닌 경우 문장3 수행 END IF ELSE IF 문 종료 END IF IF 문 종료

14 Statement (1) IF 문 JK-FF Q+= JQ’ + K’Q 표현 예) entity JKFF is
port (SN, RN, J, K, CLK : in bit; Q:inout bit; QN :out :=‘1’ ); end JKFF Architecture JKFF1 of JKFF is begin process (SN, RN, CLK) if RN=‘1’ then Q <=‘0’ after 10 ns ; elseif SN=‘1’ then Q <=‘1’ after 10 ns ; elseif CLK =‘0’ and CLK’event then Q <= (J and not Q) or (not K and Q) after 10ns endif end process QN <= not Q; END JKFF1

15 Statement (1) 2.3 Case statement IF 의 조건이 아닌 Case 다음의 논리식에서의 논리값에 따라
문장을 실행한다. 표현형식> case 논리식 is when 논리값1 => 문장1; when 논리값2 => 문장2; when others => 문장3; end case; 표현 예> 4:1 Multiplex 의 표현 SEL <= A&B Case sel is WHEN “00” => F <= I0 WHEN “01” => F <= I1 WHEN “10” => F <= I2 WHEN “11” => F <= I3 END Case MUX I0 I1 I2 I3 A B F

16 Statement (1) 2.4 For loop statement 임의의 동작 (문장으로 기술) 을 반복적으로 수행 할 때 사용한다. 표현형식> 단순 loop statement [label:] loop -- 반복적인 실행으로 탈출을 위해서는 exit, next문 필요 {sequential statement} end loop [label]; For loop statement [label:] for 루프_변수 in 변수_범위 loop -- 변수값이 범위 내에서 {sequential statement} 변하면서 반복 실행 While loop statement [label:] while 조건 loop -- 조건이 참이면 실행 거짓이면 loop 탈출

17 Statement (1) For loop statement 표현 예> loopA: FOR i in 0 to 7 loop
y(i) <= a(i) and b(i); END LOOP loopA; 결과값 > y(0) <= a(0) and b(0); y(1) <= a(1) and b(1); y(2) <= a(2) and b(2); y(3) <= a(3) and b(3); ….. Exit 와 Next는 loop 문 내에서 한번 밖에 사용할 수 없다. 예> if C>100 then exit loop1;


Download ppt "Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음."

Similar presentations


Ads by Google