Statements 1 Statements Concurrent Statement Concurrent Signal Assignment






![Sequential – Variable & signal assignment statements target_signal <= expression [ after time] target Sequential – Variable & signal assignment statements target_signal <= expression [ after time] target](https://slidetodoc.com/presentation_image_h2/3486340ed424e7d067880048cc7baa53/image-7.jpg)
![Sequential – Wait Statement wait on signal [, signal] wait until boolean_expression wait for Sequential – Wait Statement wait on signal [, signal] wait until boolean_expression wait for](https://slidetodoc.com/presentation_image_h2/3486340ed424e7d067880048cc7baa53/image-8.jpg)




- Slides: 12
Statements 1
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
Concurrent - Signal Assignment, Simple signal_name <= expression; y <= b; 1) b에 변화가 생길 때마다 b의 값이 y에 출력됨 2) Sensitivity List : b y <= a or b; 1) a 나 b에 변화가 생길 때마다 a or b의 값이 y에 출력됨. 2) Sensitivity List : a, b ◈ 실습 34 : 4 bit parallel binary adder(pp. 521) 3
Concurrent - Signal Assignment, Conditional signal <= expression 1 WHEN boolean_expression 1 ELSE expression 2 WHEN boolean_expression 2 ELSE expression 3; 1) boolean_expression 1= 참(True)이면 signal <= expression 1이 실행되며, 2) boolean_expression 2= 참(True) 이면 signal <= expression 2이 실행되며, 3) 위의 2가지 조건이 모두 성립하지않으면 signal <= expression 3이 실행된다. ◈ 실습 35 : Priority Encoder(pp. 523) 4
Concurrent - Signal Assignment, Selected WITH expression SELECT signal <= expression 1 WHEN constant_value 1, expression 2 WHEN constant_value 2, expression 3 WHEN constant_value 3; 1) expression = constant_value 1 이면 signal <= expression 1이 실행되며, 2) expresion 1 = constant_value 2 이면 signal <= expression 2이 실행되며, 3) expresion 1 = constant_value 3 이면 signal <= expression 3이 실행된다. ◈ 실습 37 : Decoder(pp. 528) 5
Concurrent – Process Statement ▣ Process문은 하드웨어 모듈을 기술. ▣ Process문의 내부는 순차처리. ▣ 복잡한 알고리즘의 구현 시 편리 ◈ Declaration syntax : [Label: ] process [( Sensitivity List)] begin Sensitivity List에 적혀있는 신호에 변화생길 때 Sequential statements; begin과 end process내의 문장을 실행 end process [Label]; 6
Sequential – Variable & signal assignment statements target_signal <= expression [ after time] target variable : = expression; signal y 1, y 2 : std_logic; signal x : std_logic; ~ process(a, b, c, x) begin ~ process(a, b, c) variable x : std_logic; begin x <= a; x : = a; y 1 <= b and x; x <= c; x : = c; y 2 <= b or x; end process; end behav; ◈ 실습 25 : 4 bit magnitude ◈ 실습 26 : decoder(pp. 483) comparator(pp. 481) end process; end behav; 7
Sequential – Wait Statement wait on signal [, signal] wait until boolean_expression wait for time_expression Suspends the sequential execution of a process or subprogram (1) wait on a, b; (1) a, b에 변화가 생길 때까지 기다린다. (2) wait until ( x < 100 ); (2) X<100일 때까지 기다린다. (3) wait for 10 ns; (3) 10 ns동안 기다린다. ◈ 실습 24 : D f/f with reset input (pp. 478) 8
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문을 사용하는 두가 지 방식 : 모두 가능함. process (a, b) begin y <= a and b; end process; 9
Sequential – IF Statement IF expression 1 THEN statement 1 -1; statement 1 -2; ELSIF expression 2 THEN statement 2 -1; statement 2 -2; ELSE statement 3 -1; 1) expression 1 = 참(True)이면 statement 1 -1, state 1 -2가 실행, 2) expression 2 = 참(True) 이면 statement 2 -1, state 2 -2가 실행, 3) 위의 2가지 조건 모두 성립하지않으면 statement 3 -1, state 3 -2가 실행, statement 3 -2; END IF; ◈ 실습 28 : 4 X 1 Mux (pp. 496) 10
Sequential – Case Statement CASE expression IS WHEN constant_value 1 => statement 1 -1; statement 1 -2; WHEN constant_value 2 => statement 2 -1; statement 2 -2; WHEN OTHERS => statement 3 -1; 1) expression 1 = constant_value 1 이면 statement 1 -1, state 1 -2가 실행, 2) expression 1 = constant_value 1 이면 statement 2 -1, state 2 -2가 실행, 3) 위의 2가지 조건 모두 성립하지않으면 statement 3 -1, state 3 -2가 실행, statement 3 -2; END CASE; ◈ 실습 31 : Encoder (pp. 505) 11
Sequential – For Statement loop_label: index_variable 의 값을 변해 FOR index_variable IN range LOOP statement 1; statement 2; END LOOP loop_label; 가면서 statement 1, statement 2를 반복적으로 실 행. 아래의 (a), (b)는 모두 같은 표현임. Range는 downto, to의 2가지 형태임. loop_Start: y(0) <= a(0) and b(0); FOR i IN 0 to 3 LOOP y(1) <= a(1) and b(1); y(i) <= a(i) and b(i); y(2) <= a(2) and b(2); END LOOP loop_Start; y(3) <= a(3) and b(3); (a) (b) ◈ 실습 32 : n-input NAND gate (pp. 510) 12