1 statements. 2 statements - 강의순서 ▣ 병행 (concurrent) statement ◈ concurrent signal...

12
1 Statements

Upload: micaela-duford

Post on 14-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

1

Statements

Page 2: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

2

Statements - 강의순서

▣ 병행 (Concurrent) Statement

◈ Concurrent Signal Assignment, Simple

◈ Concurrent Signal Assignment, Conditional

◈ Concurrent Signal Assignment, Selected

◈ Process Statement

▣ 순차 (Sequential Statements)

◈ Variable Assignment & Signal Assignment Statement

◈ Wait Statement

◈ If Statement

◈ Case Statement

◈ For Loop Statement

Page 3: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

3

Concurrent - Signal Assignment, Simple

signal_name <= expression;

1) b 에 변화가 생길 때마다 b 의 값이 y 에 출력됨

2) Sensitivity List : b

1) b 에 변화가 생길 때마다 b 의 값이 y 에 출력됨

2) Sensitivity List : b

y <= b;

y <= a or b;

1) a 나 b 에 변화가 생길 때마다 a or b 의 값이 y 에 출력됨 .

2) Sensitivity List : a,b

1) a 나 b 에 변화가 생길 때마다 a or b 의 값이 y 에 출력됨 .

2) Sensitivity List : a,b◈ 실습 34 : 4bit parallel binary adder(pp.521)

Page 4: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

4

Concurrent - Signal Assignment, Conditional

signal <= expression1 WHEN boolean_expression1 ELSE

expression2 WHEN boolean_expression2 ELSE

expression3;

1) boolean_expression1= 참 (True) 이면

signal <= expression1 이 실행되며 ,

2) boolean_expression2= 참 (True) 이면

signal <= expression2 이 실행되며 ,

3) 위의 2 가지 조건이 모두 성립하지않으면

signal <= expression3 이 실행된다 .

1) boolean_expression1= 참 (True) 이면

signal <= expression1 이 실행되며 ,

2) boolean_expression2= 참 (True) 이면

signal <= expression2 이 실행되며 ,

3) 위의 2 가지 조건이 모두 성립하지않으면

signal <= expression3 이 실행된다 .

◈ 실습 35 : Priority Encoder(pp.523)

Page 5: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

5

Concurrent - Signal Assignment, Selected

WITH expression SELECTsignal <= expression1 WHEN constant_value1,

expression2 WHEN constant_value2, expression3 WHEN constant_value3;

1) expression = constant_value1 이면

signal <= expression1 이 실행되며 ,

2) expresion1 = constant_value2 이면

signal <= expression2 이 실행되며 ,

3) expresion1 = constant_value3 이면

signal <= expression3 이 실행된다 .

1) expression = constant_value1 이면

signal <= expression1 이 실행되며 ,

2) expresion1 = constant_value2 이면

signal <= expression2 이 실행되며 ,

3) expresion1 = constant_value3 이면

signal <= expression3 이 실행된다 .

◈ 실습 37 : Decoder(pp.528)

Page 6: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

6

Concurrent – Process Statement

▣ Process 문은 하드웨어 모듈을 기술 .

▣ Process 문의 내부는 순차처리 .

▣ 복잡한 알고리즘의 구현 시 편리

◈ Declaration syntax :

[Label:] process [( Sensitivity List)]

begin

Sequential statements;

end process [Label];

Sensitivity List 에 적혀있는

신호에 변화생길 때

begin 과 end process 내의

문장을 실행

Page 7: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

7

Sequential – Variable & signal assignment statements

target_signal <= expression [ after time]

signal y1, y2 : std_logic;

signal x : std_logic;

~

process(a, b, c, x)

begin

x <= a;

y1 <= b and x;

x <= c;

y2 <= b or x;

end process;

end behav;

target variable := expression;

signal y1, y2 : std_logic;

~

process(a, b, c)

variable x : std_logic;

begin

x := a;

y1 <= b and x;

x := c;

y2 <= b or x;

end process;

end behav;

◈ 실습 25 : 4bit magnitude comparator(pp.481)◈ 실습 26 : decoder(pp.483)

Page 8: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

8

Sequential – Wait Statement

wait on signal [, signal]

wait until boolean_expression

wait for time_expression

(1) wait on a, b;

(2) wait until ( x < 100 );

(3) wait for 10 ns;

(1) a,b 에 변화가 생길 때까지 기다린다 .

(2) X<100 일 때까지 기다린다 .

(3) 10ns 동안 기다린다 .

(1) a,b 에 변화가 생길 때까지 기다린다 .

(2) X<100 일 때까지 기다린다 .

(3) 10ns 동안 기다린다 .

Suspends the sequential execution of a process or subprogram

◈ 실습 24 : D f/f with reset input (pp.478)

Page 9: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

9

Sequential – Wait on vs. explicit sensitivity list

wait on statement

process begin y <= a and b; wait on a, b; end process;

explicit sensitivity list

process (a, b) begin y <= a and b; end process;

Process 문을 사용하는 두가지 방식 : 모두 가능함 .

Page 10: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

10

Sequential – IF Statement

IF expression1 THEN

statement1-1;

statement1-2;

ELSIF expression2 THEN

statement2-1;

statement2-2;

ELSE

statement3-1;

statement3-2;

END IF;

1) expression1 = 참 (True) 이면

statement1-1, state1-2 가 실행 ,

2) expression2 = 참 (True) 이면

statement2-1, state2-2 가 실행 ,

3) 위의 2 가지 조건 모두 성립하지않으면

statement3-1, state3-2 가 실행 ,

1) expression1 = 참 (True) 이면

statement1-1, state1-2 가 실행 ,

2) expression2 = 참 (True) 이면

statement2-1, state2-2 가 실행 ,

3) 위의 2 가지 조건 모두 성립하지않으면

statement3-1, state3-2 가 실행 ,

◈ 실습 28 : 4X1 Mux (pp.496)

Page 11: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

11

Sequential – Case Statement

CASE expression IS

WHEN constant_value1 =>

statement1-1;

statement1-2;

WHEN constant_value2 =>

statement2-1;

statement2-2;

WHEN OTHERS =>

statement3-1;

statement3-2;

END CASE;

1) expression1 = constant_value1 이면

statement1-1, state1-2 가 실행 ,

2) expression1 = constant_value1 이면

statement2-1, state2-2 가 실행 ,

3) 위의 2 가지 조건 모두 성립하지않으면

statement3-1, state3-2 가 실행 ,

1) expression1 = constant_value1 이면

statement1-1, state1-2 가 실행 ,

2) expression1 = constant_value1 이면

statement2-1, state2-2 가 실행 ,

3) 위의 2 가지 조건 모두 성립하지않으면

statement3-1, state3-2 가 실행 ,

◈ 실습 31 : Encoder (pp.505)

Page 12: 1 Statements. 2 Statements - 강의순서 ▣ 병행 (Concurrent) Statement ◈ Concurrent Signal Assignment, Simple ◈ Concurrent Signal Assignment, Conditional ◈ Concurrent

12

Sequential – For Statement

loop_label:

FOR index_variable IN range LOOP

statement1;

statement2;

END LOOP loop_label;

index_variable 의 값을 변해가면서 statement1, statement2 를 반복적으로 실행 .

아래의 (a), (b) 는 모두 같은 표현임 .

Range 는 downto, to 의 2 가지형태임 .

index_variable 의 값을 변해가면서 statement1, statement2 를 반복적으로 실행 .

아래의 (a), (b) 는 모두 같은 표현임 .

Range 는 downto, to 의 2 가지형태임 .

loop_Start:

FOR i IN 0 to 3 LOOP

y(i) <= a(i) and b(i);

END LOOP loop_Start;

(a)

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);

(b)

◈ 실습 32 : n-input NAND gate (pp.510)