본문내용
1. 프로젝트 개요
1.1. 목적
Verilog를 이용하여 Alarm clock, Stopwatch 기능이 탑재되어 있는 디지털 시계를 설계하는 것이 이번 프로젝트의 목적이다. 시계에는 필수 기본 기능인 시/분/초 표현과 시간 조정 기능이 포함되며, 다양한 선택 기능인 알람, 세계시각, 스톱워치, 타이머, 멜로디, AM/PM, 12시간/24시간, 윤달, 윤년 등이 추가로 구현될 예정이다. 이를 통해 디스플레이 동작의 다양성과 확장성을 갖춘 디지털 시계를 개발하는 것이 이 프로젝트의 핵심 목표이다.
1.2. 실험 장비 및 재료
본 실험에 사용되는 주요 장비 및 재료는 다음과 같다.
HBE Combo-II SE는 Xilinx FPGA 보드로, 디지털 시계 설계에 필요한 기본적인 하드웨어 플랫폼을 제공한다. 이 보드에는 다양한 입출력 포트와 스위치, LED 등이 포함되어 있어 디지털 시계의 구현에 활용된다.
Xilinx ISE는 FPGA 설계에 사용되는 대표적인 통합 개발 환경(IDE)이다. Verilog HDL을 이용하여 디지털 시계의 기능 및 동작을 설계하고 구현하는 데 사용된다.
이 외에도 디지털 시계의 다양한 기능 구현을 위해 필요한 다양한 입출력 장치들이 사용될 수 있다. 예를 들어 시간 표시를 위한 LCD, 알람 기능을 위한 스피커, 그리고 사용자 입력을 위한 스위치 등이 활용될 수 있다.
종합적으로 HBE Combo-II SE 보드와 Xilinx ISE 개발 환경을 중심으로 다양한 입출력 장치들이 디지털 시계 설계에 사용된다고 할 수 있다.
2. 디지털 시계 설계
2.1. 기본 기능
2.1.1. 시/분/초 표현
시/분/초 표현은 디지털 시계의 가장 기본적인 기능이다. 시계의 시간을 표현하기 위해서는 시, 분, 초의 값을 정확히 표현해야 한다.
시간을 표현하는 방식에는 12시간제와 24시간제가 있다. 12시간제는 오전(AM)과 오후(PM)로 구분되며, 오전 12시부터 오후 11시까지 표현한다. 반면 24시간제는 0시부터 23시까지 표현한다. 각각의 방식에는 장단점이 있어 사용 목적과 환경에 따라 선택하여 사용한다.
이 프로젝트에서는 시/분/초를 표현하기 위해 다음과 같은 방식을 사용하였다. 우선 시간, 분, 초를 나타내는 레지스터 변수인 Hours_C, Mins_C, Secs_C를 선언하였다. 이 변수들은 항상 현재 시간을 나타내며, 초 단위로 증가하도록 설계하였다.
초가 60이 되면 분이 1 증가하고 초는 0으로 초기화된다. 분이 60이 되면 시가 1 증가하고 분은 0으로 초기화된다. 시가 12가 되면 AM/PM이 바뀌도록 구현하였다.
또한 12시간제와 24시간제를 선택할 수 있는 기능도 추가하였다. 12시간제일 경우 AM/PM 표시를 화면에 출력하고, 24시간제일 경우 0시부터 23시까지 표시하도록 하였다.
이와 같이 시/분/초 표현 기능은 디지털 시계의 핵심 기능이며, 이를 정확히 구현하는 것이 매우 중요하다. 본 프로젝트에서는 시/분/초 표현을 위한 다양한 설계 방법을 적용하여 안정적이고 정확한 시간 표시 기능을 구현하였다.
2.1.2. 시간 조정 기능
'2.1.2. 시간 조정 기능'은 디지털 시계의 설계에서 매우 중요한 부분이다. 시계의 기본적인 기능인 시간 표현 외에도 사용자가 시간을 직접 설정할 수 있는 기능이 필요하기 때문이다.
시간 조정 기능의 구현 방법은 크게 두 가지로 나눌 수 있다. 첫째, 시, 분, 초를 각각 독립적으로 조정할 수 있도록 하는 방법이다. 이를 위해서는 시, 분, 초를 각각의 레지스터에 저장하고, 사용자 입력에 따라 해당 레지스터의 값을 변경할 수 있어야 한다. 둘째, 시간을 통합적으로 조정할 수 있도록 하는 방법이다. 이 경우에는 시, 분, 초를 하나의 통합된 시간 값으로 관리하고, 사용자 입력에 따라 해당 시간 값을 증감시킬 수 있어야 한다.
본 레포트에서는 첫 번째 방식인 시, 분, 초를 독립적으로 조정하는 방법을 설명한다. 시간 조정을 위해서는 다음과 같은 과정이 필요하다.
먼저, 시, 분, 초를 각각의 레지스터에 저장한다. 시간이 흐르면서 이 레지스터의 값이 증가하게 되고, 이를 통해 시간이 표현된다. 다음으로, 사용자 입력을 받아 해당 레지스터의 값을 조정할 수 있어야 한다. 이를 위해서는 별도의 입력 장치(예: 버튼, 스위치 등)가 필요하며, 이 입력 장치에 따라 시, 분, 초 레지스터의 값을 증감시킬 수 있어야 한다.
예를 들어, 사용자가 시간 조정 모드로 전환하면 별도의 입력 장치를 통해 시, 분, 초를 각각 증가시키거나 감소시킬 수 있다. 이때 시 레지스터의 값이 0부터 23 사이의 값을 가지도록 하고, 분 레지스터는 0부터 59, 초 레지스터는 0부터 59까지의 값을 가지도록 설계한다. 또한 시간 조정 모드에서는 현재 시간이 화면에 계속 표시되어야 하므로, 시, 분, 초 레지스터의 값을 실시간으로 업데이트하여 화면에 출력해야 한다.
이와 같은 방식으로 시간 조정 기능을 구현하면, 사용자가 쉽고 직관적으로 시계의 시간을 설정할 수 있다. 이를 통해 디지털 시계의 사용성과 편의성을 높일 수 있다.
2.2. 부가 기능
2.2.1. 알람
알람은 디지털 시계의 주요한 부가 기능 중 하나이다. 알람 기능은 사용자가 원하는 시간에 일어날 수 있도록 알려주는 역할을 한다. 시계에 알람 기능을 구현하기 위해서는 사용자가 알람 시간을 설정할 수 있게 하고, 설정된 시간이 되면 알람이 울리도록 구현해야 한다.
알람 기능을 구현하기 위해서는 사용자가 알람 시간을 설정할 수 있는 입력 장치가 필요하다. 이를 위해 버튼이나 스위치 등을 통해 시, 분, 초를 설정할 수 있도록 한다. 또한 알람이 울리는 시간이 되면 시계에 내장된 부저나 스피커를 통해 알람음이 출력되도록 한다.
알람이 울리는 시간이 되면 LCD 화면에 "ALARM"이라는 표시와 함께 설정된 알람 시간이 표시되도록 한다. 이때 알람을 끄는 버튼을 통해 사용자가 알람을 해제할 수 있게 한다. 또한 알람이 울리는 동안 일정 시간이 지나면 자동으로 알람이 꺼지도록 하여 불편함을 줄일 수 있다.
사용자의 편의성을 높이기 위해 알람 설정 시 AM/PM 모드를 지원하거나 24시간제를 선택할 수 있게 할 수 있다. 또한 알람 모드에서 버튼을 눌러 알람을 켜고 끌 수 있도록 하는 등 사용자 인터페이스를 개선할 수 있다.
알람 기능은 일상생활에서 매우 유용하게 사용될 수 있는 디지털 시계의 중요한 부가 기능이다. 따라서 이를 정확하고 사용자 친화적으로 구현하는 것이 중요하다.
2.2.2. 세계시각
세계시각 기능은 사용자가 자신의 현재 위치와 다른 시간대의 시간 정보를 동시에 확인할 수 있도록 해준다. 이를 통해 사용자는 타 지역과의 시간 차이를 손쉽게 파악할 수 있어 업무나 일상생활에서 유용하게 활용할 수 있다.
본 프로젝트에서 구현한 세계시각 기능은 SW[9]를 통해 선택할 수 있다. 세계시각 모드가 선택되면 LCD에는 "World : New York"과 같이 현재 선택된 도시의 이름과 시간이 표시된다. 사용자는 BUS_SW를 이용하여 다른 도시들의 시간 정보를 확인할 수 있다.
이처럼 세계시각 기능을 통해 사용자는 자신의 현재 시간과 다른 지역의 시간을 동시에 확인할 수 있어 시간대 차이로 인한 혼란을 방지할 수 있다. 이는 국제 업...