Presentation is loading. Please wait.

Presentation is loading. Please wait.

신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호

Similar presentations


Presentation on theme: "신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호"— Presentation transcript:

1 신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
Sa, Sb : 도로 A, B 에 차량이 들어올 때 신호 Ga,Ya,Ra : 도로 A 의 신호등 Gb,Yb,Rb : 도로 B 의 신호등 Y G R 도로 A PAL22V10의 입출력 신호의 배정 도로 B

2 신호등 제어기 신호등의 동작 순서 신호등의 동작 > - A도로가 main 도로 임, clock 의 주기는 =10 sec
Y G R 신호등의 동작 순서 신호등의 동작 > - A도로가 main 도로 임, clock 의 주기는 =10 sec – A가 녹색일 때 B에 차가 오면 B가 녹색이 된다. – 50초 후 : B에 차가 없고, A에 차가 오면 신호등이 바뀜 B에 차가 있고, A에 차가 없으면 B신호 10초 연장 – A가 녹색이 되면 최소 60초 동안은 녹색으로 유지됨

3 신호등 제어기 신호등 제어기의 상태 그래프 Ga 를 60초 동안 유지 Gb 를 50초 동안 유지 초기상태 도로 B에 차량

4 신호등 제어기 begin case (L_stateA) is when s0 => out_light <= “100”;
Key point : Case – when 문을 이용하여 상태에 따른 신호등 제어신호 에 값을 할당 한다. begin case (L_stateA) is when s0 => out_light <= “100”; when s1 => out_light <= “110”; when s2 => out_light <= “001”; when s3 => out_light <= “010”; end case Y G R

5 신호등 제어기 VHDL State 상태변화를 Case-when 로 표현 신호등 제어신호

6 신호등 제어기 신호등 제어기 상태 테이블 S0-S12에 0000 부터 1100까지 2진 address 할당
Ga 60 sec 유지 Gb 50 sec 유지 입력4개 출력4의 D-FF으로 구성 논리설계 프로그램 사용

7 누산기를 가진 병렬 이진 덧셈기 구조 : n bit 의 경우 => n 개의 FA 와 D-FF로 구성
동작 : a(n:1) <= a(n:1) + b(n:1) + c1, <= : 누산기 clear, B에 A값 입력 <= 입력: b(n:1), c1, clk, clear, Ad(덧셈제어신호) : * clk 와 ad를 묶어서 ad 가 1일 때 만 덧셈을 수행 할 수 있다. 출력: a(n:1), c(n+1:2)

8 누산기를 가진 병렬 이진 덧셈기 22V10을 사용한 구현 22V10을 사용한 다른 구현
– 입력 수 = n + 4(clk,cin,clear,ad), – 출력 수 = 2n ≤ 10 (n에 대해 각각 FF 출력과 조합함수C 출력을 가진다) – 입출력 수 = (n+4)+2n = 3n+4 ≤ 22 그러므로 n ≤ 5 (5비트 덧셈기 구현 가능) 22V10을 사용한 다른 구현 – 2-bit adder를 직접 구현하여 carry output 개수를 반으로 줄임 – 출력 수 = 1.5n ≤ 10, 입출력 수 = (n+4) + 1.5n = 2.5n+4 ≤ 22 그러므로 n < 6 (6비트 덧셈기 구현 가능) – 결과적으로 덧셈기의 속도는 증가한다.

9 누산기를 가진 병렬 이진 덧셈기 2 bit adder 의 구성 2 bit adder 의 진리표
13 개의 AND gate 항으로 구성 22V10은 16개의 AND gate 항이 허용 2 bit adder 의 진리표

10 Keypad 스캐너 – 입력: keypad의 눌려진 위치 (행, 열) – 출력: 눌려진 번호에 대한 2진 코드

11 Keypad 스캐너 – 입출력 신호의 배치 입력: 행 위치(R0-R3), 출력: 열 위치(C0-C2), 2진 코드(N3-N0)
키를 누르면 행과 열이 연결되고 해당되는 키 숫자를 2진수로 출력 (5번 : 0101, * : 1010 ) – 스캐닝 과정 1) C0-C2에 1을 공급하고 R0-R3 중 하나가 1이 될 때까지 대기 Key 가 눌려지면 R0,R1,R2,R3 중 하나는 1이 된다. 2) C0=1을 공급하고 C2=0, C3=0 에서 R0-R3 중 하나가 1인지 확인, 1이 있으면 해당하는 2진 코드를 출력, V=1 출력 1이 없으면 C1, C2에 대해서 마찬 가지 과정 반복 수행 3) 코드 출력 후 C0-C2에 1을 공급하고 R0-R3 중 1인 것이 없을 때까지 대기 – 접점에서의 접촉진동을 고려한 설계를 해야 함

12 Keypad 스캐너 접촉 진동 제거 회로 클럭주기 >접촉진동시간 QA -> DB 로 안정된 입력
동기순차회로의 입력 클럭주기 >접촉진동시간 QA -> DB 로 안정된 입력 진동이 제거된 출력. 2열 스캔이 끝날 때까지 QA를 1로 유지시킴

13 Keypad 스캐너 스캐너의 모듈 Keypad : R(3:0) 과 C(2:0) 이 매트릭스로 연결
Debounce : R(3:0) 이 OR-DFF 로 묶임, 키가 눌러지면 K 발생 진동이 가라 앉은 후의 출력은 Kd 가 된다. Keyscan : key를 검색하기 위한 C2, C1, C0 신호의 발생 Decoder : R(3:0)과 C(2:0) 의 입력조합으로 코드를 발생

14 Keypad 스캐너 State Diagram (상태도) - 초기상태 So
- So 에서 K=1 이 입력 되면 S1 상태로 간다. 출력은 C0,C1,C2. - Kd=1 이 되면 S2 상태로 가고 스캐닝을 위한 신호 C0=1을 내보낸다. - S2 상태에서 K=1 이 입력되면 V=1을 내보내고 코드가 발생되며 S5 상태로 간다. S2 상태에서 K=0 이면 S3로 간다. - S3에서 K=1 이 입력되면 V=1을 내보내고 코드가 발생되며 S4 상태로 간다. S3 상태에서 K=0 이면 S4로 간다. - S5 상태에서 Kd=1 이면 상태를 유지하고, Kd=0 이면 S1의 상태로 간다

15 Keypad 스캐너 Decoder 출력 생성 코드

16 Keypad 스캐너 상태 할당 : Q1,Q2,Q3,Q4 S0 <- 0000, S1 <- 0111, S2 <- 0100, S3 <- 0010, S4 <- 0001, S5 <- 1111 프로그램을 이용한 상태식 Q1+ = Q1 Kd + Q2Q3’K + Q2’Q3K + Q2’Q4 Q2+ = Q2’Q3’+ K + Q4 Q3+ = Q3’ + Q1 + Q4 Kd’ + Q2’K Q4+ = Q2’ + Q1 + Q3 Kd’ + Q3’K V = KQ2Q3’ + KQ2’Q3 + Q2’Q4 K = R0 + R1 + R2 + R3

17 Keypad 스캐너 VHDL C0에 변수이름 Q2를 사용 QA와 Kd 사이에 FF이 있는 것으로 설정됨

18 Keypad 스캐너 보정된 State Diagram (상태도) Kd’K Kd’+K

19 Keypad 스캐너 Entity scanner is port (R0, R1, R2, R3, CLK : in bit ;
C0, C1, C2 : inout bit ; N0, N1, N2, N3, V : out bit ); end scanner; Architecture behavior of scanner is signal QA, K, Kd: bit ; signal state, nextstate : integer range 0 to 5 ; begin K <= R0 or R1 or R2 or R3 ; this is decoder section N3 <= (R2 and not C0) or (R3 and not C1) ; N2 <= R1 or (R2and C0) ; N1 <= (R0 and not C0) or (not R2 and C2) or (not R1 and not R0 and C0) ; N0 <= (R1 and C1) or (not R1 and C2) or (not R3 and not R1 and not C1) ; Process (state, R0, R1, R2, R3, C0, C1, C2, K ,Kd, QA) C0 <=‘0’; C1 <=‘0’, C2 <=‘0’, V <=‘0’ ;

20 Keypad 스캐너 Case state is when 0 => nextstate <=1 ;
when 1 => C0 <= ‘1’; C1 <=‘1’; C2 <=‘1’; if (Kd and K) = ‘1’ then nextstate <=2; else next state <=1 ; end if; when 2 => C0 <= ‘1’; if (Kd and K) = ‘1’ then V <=‘1’ ; nextstate <=5; else if K=‘0’ then next state <=3 ; else nextstate <=2; when 3 => C1 <= ‘1’; else if K=‘0’ then next state <=4 ; else nextstate <=3; when 4 => C2 <= ‘1’; else nextstate <=4; when 5 => C0 <= ‘1’; C1 <=‘1’ ; C2 <=‘1’ ; if Kd = ‘0’ then nextstate <= 1; else nextstate <=5; end case;

21 Keypad 스캐너 end process; process (CLK) begin
if CLK=‘1’ and CLK’event then state <= nextstate; QA <= K ; Kd <=QA ; end if; end behavior

22 Keypad 스캐너 Test 용 VHDL code : VHDL test bench 를 사용
스캔 테스트는 스캐너로 부터 C 신호에 응답하여 적절한 R 신호를 제공 하여 키가 눌러 졌음을 시뮬레이션 한다. 스캔 테스트가 스캐너로부터 V=1 의 신호를 받으면, 눌려진 키와 N의 수가 일치하는 지 확인한다.

23 Keypad 스캐너 테스트 과정 Scantest용 VHDL
1> 눌려진 키를 시뮬레이션 하기 위해 배열로부터 키 숫자를 읽는다 2> V=1 이고 클럭의 상승이 발생할 때 까지 기다린다. 3> 스캐너로 부터의 N 출력과 키 숫자가 일치하는지 검증한다. 4> 키가 눌려지는 것을 시뮬레이션 하기 위해 KN=15를 설정한다. 5> 새로운 키가 선택되기 전에, kd=0 일 때 까지 기다린다. Scantest용 VHDL

24 Keypad 스캐너

25 ASSERT 문 -합성불가, 시뮬레이션이나 합성시에 참조적문으로 사용 -형식 assert condition
{report string } {severity severity-level}; * condition이 false이면 assertion violation 발생 Severity-level 의 종류 NOTE –시뮬레이션에서 메시지전달 WARNING -unusual situation, 시뮬레이션 계속 ERROR –시뮬레이션 계속 실행결과가 적합해가 아님 FAILURE -fatal error, 시뮬레이션 중단 assert boolean-expression report “all is well" severity WARNING; assert Op_code = "1111" report "Invalid Op Code " severity FAILURE;

26 BCD to seven segment decoder

27 BCD to seven segment decoder
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY seven_seg IS PORT( dataIn : IN std_logic_vector(3 DOWNTO 0); segments : OUT std_logic_vector(7 DOWNTO 0) ); END seven_seg; ARCHITECTURE synthesis1 OF seven_seg IS BEGIN WITH dataIn SELECT segments <= “ ” WHEN “0000”, -- 0 “ ” WHEN “0001”, -- 1 “ ” WHEN “0010”, -- 2 “ ” WHEN “0011”, -- 3 “ ” WHEN “0100”, -- 4 “ ” WHEN “0101”, -- 5 “ ” WHEN “0110”, -- 6 “ ” WHEN “0111”, -- 7 “ ” WHEN “1000”, -- 8 “ ” WHEN “1001”, -- 9 “ ” WHEN OTHERS; END synthesis1;

28 BCD to seven segment decoder
VHDL code ?

29 연산자에 대한 VHDL 1. Arithmetic operator

30 연산자에 대한 VHDL 2. relation operator

31 연산자에 대한 VHDL 3. equality operator


Download ppt "신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호"

Similar presentations


Ads by Google