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

Slides:



Advertisements
Similar presentations

Advertisements

어서와 Java는 처음이지! 제3장선택과 반복.
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
Introduction 2007년 2학기.
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
자동제어 개념2 1 1.
마이크로프로세서 메모리 및 입출력장치 인터페이스
Design of Digital Clock (디지털 시계의 설계)
Computer System Architecture
7 조합논리회로 IT CookBook, 디지털 논리회로.
VHDL, FPGA를 이용한 소리인식 스위치 (Matched Filter 사용)
Sequential logic circuit
순차로직 개요.
32비트 캐리 예측 덧셈기(CLA) RCA(Ripple Carry Adder)
디지털 산술과 연산회로.
1. VHDL과 합성 설계 1.1 HDL: Hardware Description Language 집적회로의 설계환경의 변화
가산기 설계.
Multiplexer 설계.
VHDL의 기본 Lecture #5.
Verilog HDL 이론.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
제 6 장 프로세스 동기화 (Process Synchronization)
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
공학실험.
Computer System Architecture
COMPUTER ARCHITECTIRE
PXA255-FPGA 장비 계요 및 실습 Lecture #9.
VHDL Package and Sub program
Stop Watch 구현 Lecture #12.
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
순차회로 모델링 Sun, Hye-Seung.
II. VHDL 설계부 4장. VHDL 개요 5장. VHDL 설계 구성 6장. VHDL 객체 및 타입 7장. VHDL 모델링
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
하드웨어 구현 - A/D 변환기(A/D converter) - 샘플링 주파수(Sampling frequency)
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
순차 회로 설계 및 검증 Sun, Hye-Seung.
FSM 설계.
Flip-Flop 설계.
Unit 1 Number Systems and Conversion (수의 체계와 변환)
Section 02 덧셈 회로 BCD 덧셈 회로 BCD 코드에서 십진수 (16)BCD =
반도체 신입 Operator 채용 안내 ㈜ 하이닉스반도체에서는 2011년도 신입 Operator 사원을 모집합니다.
오브젝트 하드웨어 기술 언어 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Programmable Logic Device
Chapter 4 The Von Neumann Model.
VHDL Mealy and Moore model
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
제 6 장 프로세스 동기화 (Process Synchronization)
논리회로 설계 및 실험 3주차.
VHDL 디지털시계 2.
가산기 설계.
루프와 카운트 Looping and counting
디 지 털 공 학 한국폴리텍V대학.
4. 어휘 분석(Lexical analysis)
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
디지털회로설계_강의안5 7. 가산기와 감산기 회로.
LCD.
주간 콜센터 운영현황 보고 주간 인입콜 동향 주간 주요 Focus 고객민원 (콜+게시판) 요청사항 금주 진행 사항 차주 계획
논리회로 설계실험 ICE ICE 담당교수 : 김 인 수.
국어지도 유아교육과 권수연 김아람 중등특수교육과 박수진 양한솔
VHDL 응용 Lecture #10.
매스펀 문제 2.
Presentation transcript:

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

신호등 제어기 신호등의 동작 순서 신호등의 동작 > - 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초 동안은 녹색으로 유지됨

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

신호등 제어기 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

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

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

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

누산기를 가진 병렬 이진 덧셈기 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비트 덧셈기 구현 가능) – 결과적으로 덧셈기의 속도는 증가한다.

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

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

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인 것이 없을 때까지 대기 – 접점에서의 접촉진동을 고려한 설계를 해야 함

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

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) 의 입력조합으로 코드를 발생

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의 상태로 간다

Keypad 스캐너 Decoder 출력 생성 코드

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

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

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

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

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;

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

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

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

Keypad 스캐너

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;

BCD to seven segment decoder

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 <= “01111110 ” WHEN “0000”, -- 0 “00110000 ” WHEN “0001”, -- 1 “01101101 ” WHEN “0010”, -- 2 “01111001 ” WHEN “0011”, -- 3 “00110011 ” WHEN “0100”, -- 4 “01011011 ” WHEN “0101”, -- 5 “01011111 ” WHEN “0110”, -- 6 “01110000 ” WHEN “0111”, -- 7 “01111111 ” WHEN “1000”, -- 8 “01111011 ” WHEN “1001”, -- 9 “00000000 ” WHEN OTHERS; END synthesis1;

BCD to seven segment decoder VHDL code ?

연산자에 대한 VHDL 1. Arithmetic operator

연산자에 대한 VHDL 2. relation operator

연산자에 대한 VHDL 3. equality operator