VHDL 디지털시계 2.

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
IspLEVER 6.1 을 이용한 회로 설계 (Schematic). Table of Contents ispLEVER ispLEVER 6.1 tool 의 시작프로그램 2.Lattice Device 의 Design 1) 프로그램시작 2) 새로운 Project 만들기.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
D I D (Digital Information Display)

1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
Introduction 2007년 2학기.
VHDL Package & Subprogram
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
커뮤니케이션 스킬 UP -전화매너- ..
Design of Digital Clock (디지털 시계의 설계)
고교평준화의 득과 실 김영주 이지영 최윤영.
VHDL을 이용한 통신 칩 설계 -DS/SS MODEM 설계를 중심으로-
VHDL, FPGA를 이용한 소리인식 스위치 (Matched Filter 사용)
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
순차로직 개요.
디지털 산술과 연산회로.
1. VHDL과 합성 설계 1.1 HDL: Hardware Description Language 집적회로의 설계환경의 변화
가산기 설계.
Multiplexer 설계.
VHDL의 기본 Lecture #5.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
VHDL의 개요 김 인 수.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
제 6 장 프로세스 동기화 (Process Synchronization)
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
MAX+PLUS II 설치 및 디지털 시스템의 설계 방법
VHDL Package and Sub program
Stop Watch 구현 Lecture #12.
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
Watch VHDL을 이용한 다용도 시계 다른 사람의 지적 재산권을 침해 하지 않았다..
순차회로 모델링 Sun, Hye-Seung.
II. VHDL 설계부 4장. VHDL 개요 5장. VHDL 설계 구성 6장. VHDL 객체 및 타입 7장. VHDL 모델링
시퀀스회로.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
IT CookBook, VHDL을 이용한 FPGA 디지털 설계
FSM 설계.
Flip-Flop 설계.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
Section 02 덧셈 회로 BCD 덧셈 회로 BCD 코드에서 십진수 (16)BCD =
오브젝트 하드웨어 기술 언어 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Programmable Logic Device
VHDL Mealy and Moore model
타이머 8051 타이머 타이머 설정 및 모드
GMWIN 화면 구성.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
제 6 장 프로세스 동기화 (Process Synchronization)
D:\win_9X\setup.exe 또는 D:\win_XP\setup.exe 을 클릭하여 설치합니다.
VHDL.
가산기 설계.
디 지 털 공 학 한국폴리텍V대학.
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
LCD.
(제작자: 임현수)모둠:임현수,유시연,유한민
논리회로 설계실험 ICE ICE 담당교수 : 김 인 수.
실습 9 / 부울식 구현(결합 법칙을 이용한 논리회로 구현)
시민이 체감하는 편리한 건축인허가 절차 개선 추진.
시스템 분석 및 설계 2007학년도 2학기 멀티미디어공학과 2학년 대상 담당교수 박태희
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
VHDL 응용 Lecture #10.
Presentation transcript:

VHDL 디지털시계 2

디지털시계 회로 설계 디지털시계 로직 동작 모드 입력 신호 출력 신호 mode 0 : 시 설정 mode 1 : 분 설정 mode 선택 신호 : mode_button 시, 분, 초 증가 신호 : up_button 10Hz 클럭 신호 : clk, 리셋 신호 : rst_n 출력 신호 시 정보 : hour(4 downto 0) 분 정보 : minute(5 downto 0) 초 정보 : second(5 downto 0)

디지털시계 회로 설계 디지털시계 구성 블록 button interface : DC_BI (모드설정) time preset : DC_TP (현재시각설정) clock counter : DC_CC (초,분,시 카운트) display selector : DC_DS (디스플레이) a) button interface : DC_BI (Digital Clock, Button Interface) b) time preset : DC_TP (Digital Clock, Time Preset) c) clock counter : DC_CC (Digital Clock, Clock Counter) d) display selector : DC_DS (Digital Clock, Display Selector)

디지털시계 회로 설계 디지털시계 블록도 Display Selector Button Interface Time Preset mode_button up_button Clock Counter 10Hz clk rst_n Time Preset Display Selector up_pulse mode time_info set_pulse Button Interface

디지털시계 회로 설계 버튼 인터페이스 mode_button 신호를 입력 받아서 2 비트의 mode 신호를 출력 up_button 신호를 입력 받아서 10Hz로 동기되는 펄스 형태의 up 신호를 출력 각 모드에서 시, 분, 초 정보를 조정하는 신호 입력 신호 mode_button, up_button 출력 신호 mode(1 downto 0), up_pulse

디지털시계 회로 설계 버튼 인터페이스부의 VHDL 구현 LIBRARY ieee; USE ieee.std_logic_1164.ALL; --use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity dc_bi is port( mode_button : in std_logic; up_button : in std_logic; mode : out std_logic_vector(1 downto 0); up_pulse : out std_logic; rst_n : in std_logic; clk : in std_logic); end dc_bi; 입출력포트설정

디지털시계 회로 설계 버튼 인터페이스부의 VHDL 구현 architecture behavioral of dc_bi is signal mode_button_1d, mode_button_2d : std_logic; signal mb_rpulse : std_logic; signal up_button_1d , up_button_2d : std_logic; signal dc_mode : std_logic_vector(1 downto 0); begin external_intf_proc: process (rst_n,clk) if (rst_n = '0') then mode_button_1d <= '0'; up_button_1d <= '0'; elsif (clk'event and clk = '1') then mode_button_1d <= mode_button; up_button_1d <= up_button; end if; end process; Reset: rst_n = ‘0’ 일때 모드, 업버튼 동작 없음 상승엣지에서 모드 버튼, 업버튼 입력을 받아 각각의 버튼 1에 저장

디지털시계 회로 설계 버튼 인터페이스의 VHDL 구현 - 펄스출력 begin if (rst_n = '0') then pulse_gen: process (rst_n,clk) begin if (rst_n = '0') then mode_button_2d <= '0'; up_button_2d <= '0'; up_pulse <= '0'; elsif (clk'event and clk = '1') then mode_button_2d <= mode_button_1d; up_button_2d <= up_button_1d; up_pulse <= up_button_1d and (not up_button_2d); end if; end process; mb_rpulse <= mode_button_1d and (not mode_button_2d); Reset: rst_n = ‘0’ 일때 버튼 2와 Up_pulse 출력 없음 버튼 1,2 의 delay 차이를 이용하여 업_펄스 및 모드 체인지용 펄스 생성

디지털시계 회로 설계 버튼 인터페이스의 VHDL 구현 – mode 출력 begin if (rst_n = '0') then digital_clock_mode_gen: process (rst_n,clk) begin if (rst_n = '0') then dc_mode <= (others => '0'); elsif (clk'event and clk = '1') then if mb_rpulse = '1' then dc_mode <= dc_mode + 1; end if; end process; mode(1 downto 0) <= dc_mode(1 downto 0); end behavioral; 모드 체인지를 위한 펄스가 1일때 마다 모드를 하나씩 증가시킴

디지털시계 회로 설계 버튼 인터페이스의 시뮬레이션 파형 예 Mode button 누름 에 따른 모드 업 버튼 변화 UP 버튼 누름에 따른 Up_pulse의 발생

디지털시계 회로 설계 시각 설정부 설정된 현재의 시각(Time)을 제공 현재 시각의 설정값이 유효할 때 시계 회로(카운터)에 인가하기 위한 set_pulse 신호를 제공 입력 신호 mode(1 downto 0) : 4개 모드에 대한 정보신호 up_pulse : 시각설정을 위한 신호(시,분,초를 증가 시키기 위한 펄스) 출력 신호 ps_hour(4 downto 0) : preset hour information ps_minute(5 downto 0 ) : preset minute information ps_second(5 downto 0 ) : preset second information set_pulse : preset current time information (현재의 시간을 알리기 위한 펄스)

디지털시계 회로 설계 시각 설정부의 VHDL 구현 – 엔티티 부분 LIBRARY ieee; USE ieee.std_logic_1164.ALL; --use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity dc_tp is port(mode : in std_logic_vector(1 downto 0); up_pulse : in std_logic; ps_hour : out std_logic_vector(4 downto 0); ps_minute : out std_logic_vector(5 downto 0); ps_second : out std_logic_vector(5 downto 0); set_pulse : out std_logic; rst_n : in std_logic; clk : in std_logic); end dc_tp; 입력신호 설정 출력신호 설정 동기신호(clk) 및 리셋신호 설정

디지털시계 회로 설계 시각 설정부의 VHDL 구현 - 선언부 architecture behavioral of dc_tp is signal adj_hour : std_logic_vector(4 downto 0); signal adj_minute : std_logic_vector(5 downto 0); signal adj_second : std_logic_vector(5 downto 0); signal mode_1d : std_logic_vector(1 downto 0); signal internal_set : std_logic; constant HOUR_MAX: integer := 23; constant MINUTE_MAX: integer := 59; constant SECOND_MAX: integer := 59; begin 내부 설정 신호 시, 분, 초의 최대값 설정

디지털시계 회로 설계 시각 설정부의 VHDL 구현 – hour_gen mode 0 : 시 설정 mode 1 : 분 설정 mode 2 : 초 설정 mode 3 : 시각 디스플레이 (시, 분, 초) 디지털시계 회로 설계 시각 설정부의 VHDL 구현 – hour_gen ps_hour_gen: process (rst_n,clk) begin if (rst_n = '0') then adj_hour <= (others => '0'); elsif (clk'event and clk = '1') then if internal_set = '1' then elsif mode = "00" and up_pulse = '1' then if adj_hour < HOUR_MAX then adj_hour <= adj_hour + 1; else adj_hour <= (others => '0'); end if; end if; end process; ps_hour <= adj_hour; 모드 0에서 시각 설정 up_pulse가 1로 들어오면 시간을 1시간씩 증가시킴 출력

디지털시계 회로 설계 시각 설정부의 VHDL 구현 – minute_gen mode 0 : 시 설정 mode 1 : 분 설정 mode 2 : 초 설정 mode 3 : 시각 디스플레이 (시, 분, 초) 디지털시계 회로 설계 시각 설정부의 VHDL 구현 – minute_gen ps_minute_gen: process (rst_n,clk) begin if (rst_n = '0') then adj_minute <= (others => '0'); elsif (clk'event and clk = '1') then if internal_set = '1' then elsif mode = "01" and up_pulse = '1' then if adj_minute < MINUTE_MAX then adj_minute <= adj_minute + 1; else adj_minute <= (others => '0'); end if; end if; end process; ps_minute <= adj_minute; 모드 1에서 시각 설정 up_pulse가 1로 들어오면 분을 1시간씩 증가시킴 출력

디지털시계 회로 설계 시각 설정부의 VHDL 구현 – second_gen mode 0 : 시 설정 mode 1 : 분 설정 mode 2 : 초 설정 mode 3 : 시각 디스플레이 (시, 분, 초) 디지털시계 회로 설계 시각 설정부의 VHDL 구현 – second_gen ps_second_gen: process (rst_n,clk) begin if (rst_n = '0') then adj_second <= (others => '0'); elsif (clk'event and clk = '1') then if internal_set = '1' then elsif mode = "10" and up_pulse = '1' then if adj_second < MINUTE_MAX then adj_second <= adj_second + 1; else adj_second <= (others => '0'); end if; end if; end process; ps_second <= adj_second; 모드 2에서 시각 설정 up_pulse가 1로 들어오면 초를 1초씩 증가시킴 출력

디지털시계 회로 설계 시각 설정부의 VHDL 구현 – pulse_gen mode 0 : 시 설정 mode 1 : 분 설정 mode 2 : 초 설정 mode 3 : 시각 디스플레이 (시, 분, 초) 디지털시계 회로 설계 시각 설정부의 VHDL 구현 – pulse_gen set_pulse_gen: process (rst_n,clk) begin if (rst_n = '0') then mode_1d <= (others => '0'); internal_set <= '0'; elsif (clk'event and clk = '1') then mode_1d <= mode; if mode = "11" and mode_1d = "10" then internal_set <= '1'; else end if; end process; set_pulse <= internal_set; end behavioral; 모드가 2->3로 변경될 시점 을 체크하여 Internal_set=>set_pulse 값을 1으로 주는 구문 출력

모드2->3 변경시의 set_pulse 생성 디지털시계 회로 설계 모드2->3 변경시의 set_pulse 생성 시각 설정부의 시뮬레이션 파형 예 시간의 변경 분의 변경 초의 변경

디지털시계 회로 설계 시계용 카운터 set_pulse에 의해서 현재 입력되는 시각을 설정 이후 클럭의 증가에 따라 증가되는 계속적인 초,분,시의 시각 정보를 제공 앞절의 분주기/카운터 챕터에서 다루었던 카운터 설계와 시계용 카운터는 기본 로직이 일치 현재값(present) 설정 기능만 추가 필요 내부 블록 초 정보 발생부 분 정보 발생부 시 정보 발생부

디지털시계 회로 설계 기존에 다루었던 초 정보 발생부의 문장 현재값 설정 기능 추가된 초 정보 발생부의 문장 if second_pulse = '1' then if second_count < SECOND_CNT then second_count <= second_count + 1; else second_count <= (others => '0'); end if; end if; if set_pulse = '1' then second_count <= ps_second; elsif second_pulse = '1' then if second_count < SECOND_CNT then second_count <= second_count + 1; else second_count <= (others => '0'); end if; end if; 시각설정부에서 설정된 초의 정보 ps_second값을 second_count에 저장하고 클럭에 따라 카운터 증가 (시계의 초 증가)

디지털시계 회로 설계 기존에 다루었던 분 정보 및 시간 정보 발생부의 문장도 동일하게 수정하면 됨(아래순서대로 분 정보, 시간 정보). if set_pulse = '1' then minute_count <= ps_minute; -- setting the preset time information. elsif min_increase = '1' then if minute_count < MINUTE_MAX then minute_count <= minute_count + 1; else minute_count <= (others => '0'); end if; if set_pulse = '1' then hour_count <= ps_hour; -- setting the preset time information. elsif hour_increase = '1' then if hour_count < HOUR_MAX then hour_count <= hour_count + 1; else hour_count <= (others => '0'); end if;

디지털시계 회로 설계 출력에서 second_count, minute_count, hour_count 는 cur_second, cur_minute, cur_hour로 이름 변경하여 출력 됨에 유의 (실제 예제 코드에서). 즉 cur_second, cur_minute, cur_hour는 카운터에 의해 증가되고 있는 현재의 시각의 초, 분, 시간을 의미함.

디지털시계 회로 설계 디스플레이 선택부 시각 설정부에서 제공하는 시각 설정값(설정시각) 혹은 시계용 카운터부에서 제공하는 현재의 시각 정보를 선택적으로 디스플레이 0 ~ 2번 모드 : 시, 분, 초 시각을 설정 3번 모드 : 현재의 시각(시,분,초)을 디스플레이 입력 신호 mode(1 downto 0) 설정된 초, 분, 시 정보, 현재의 초, 분, 시 정보 출력 신호 hour(4 downto 0) minute(5 downto 0) second(5 downto 0)

디지털시계 회로 설계 디스플레이 선택부의 VHDL 구현 architecture behavior of dc_ds is begin display_selection: process (rst_n,clk) if (rst_n = '0') then hour <= (others => '0'); minute <= (others => '0'); second <= (others => '0'); elsif (clk'event and clk = '1') then if mode = "11" then hour <= cur_hour; minute <= cur_minute; second <= cur_second; else hour <= ps_hour; minute <= ps_minute; second <= ps_second; end if; end process; end behavior; 모드 3에서 현재의 시각 초, 분, 시간을 표시 모드 0-2에서 초, 분, 시간을 표시

디지털시계 회로 설계 디스플레이 선택부의 시뮬레이션 파형 예 모드 0-2에서 초,분,시간 설정 모드 3에서 현재시각 표시

Wave 화면으로의 object 선택 모두선택하여 to wave tb_dc_cc_top 밑의 U_dc_cc_top 선택

소스코드 및 예제 설명 Digitalwatch 폴더를 altera>13.1> 디렉토리에 복사 1) tb_dc_bi : 버튼인터페이스부 구문과 테스트벤치 2) tb_dc_cc_hour : 카운터 시간 발생부 및 테스트벤치 3) tb_dc_cc_min : 카운터 분 발생부 및 테스트벤치 4) tb_dc_cc_sec : 카운터 초 발생부 및 테스트벤치 5) tb_dc_cc_top : 카운터 시,분,초 통합 발생부 및 테스트벤치 (시,분,초 발생부를 콤포넌트문으로 처리) 6) tb_dc_ds : 디스플레이부 및 테스트 벤치 7) tb_dc_tp : 현재시각 설정부 및 테스트 벤치 8) tb_dc_top : 전체시계 통합부 (각부분을 컴포넌트처리) 및 테스트 벤치 예제 : 각 부분의 소스코드를 개별적으로 컴파일 후 시뮬레이션 하여 출력된 시뮬레이션 결과를 보고서로 제출 1), 2), 3), 4), 5), 7), 6), 8)번 순으로 시뮬레이션. 5)번을 할 때는 2),3),4)번 파일을 5)번 파일과 같이 add 하고 같이 컴파일 후 시뮬레이션 8)번을 할 때는 1)~8) 까지의 모든 파일을 같이 add 하고 같이 컴파일 후 시뮬레이션 하세요.

디지털시계 회로 설계 디지털시계 회로의 입출력 타이밍도 (tb_dc_top)