verilog 시계

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
>
새로운 AI자료
생성
다운로드

상세정보

소개글

"verilog 시계"에 대한 내용입니다.

목차

1. 프로젝트 목적

2. 설계 및 분석
2.1. Alarm Clock Module
2.2. Alarm Clock Module Simulation Analysis
2.3. Stopwatch Module
2.4. Stopwatch Module Simulation Analysis
2.5. Clock Generator Module
2.6. Clock Generator Module Simulation Analysis
2.7. Top Module
2.8. Top Module Simulation Analysis

3. Testbench
3.1. Alarm Clock Module testbench
3.2. Stopwatch Module testbench
3.3. Clock Generator Module testbench
3.4. Top Module testbench

4. 결론 및 고찰

본문내용

1. 프로젝트 목적

Verilog를 이용하여 알람 기능과 스톱워치 기능이 탑재된 디지털 시계를 설계하는 것이 이 프로젝트의 목적이다. 요일 표현, 알람 시간과 현재 시간의 차이 계산 등의 추가 기능도 구현할 것이다.

Alarm Clock Module은 시간, 분, 초 및 AM/PM을 나타내는 레지스터와 알람 시간을 설정하는 레지스터로 구성된다. 시간이 증가할 때마다 초가 60이 되면 분이 1 증가하고, 분이 60이 되면 시간이 1 증가하는 방식으로 동작한다. 12시를 기준으로 AM/PM이 전환되며, AM/PM이 바뀔 때 요일도 1 증가한다. 또한 현재 시간과 알람 시간의 차이를 계산하여 출력하는 기능을 구현하였다. [1]

Stopwatch Module은 시간, 분, 초, 밀리초를 나타내는 레지스터로 구성되며, 스톱워치의 시작, 정지, 초기화 기능을 수행한다. 밀리초가 999가 되면 초가 1 증가하고, 초가 59가 되면 분이 1 증가하며, 분이 59가 되면 시간이 1 증가하는 방식으로 동작한다. 또한 랩타임 측정 기능을 추가로 구현하였다. [1]

Clock Generator Module은 1초와 1밀리초 주기의 클록 신호를 생성한다. 5kHz 클록 신호를 기반으로 1밀리초 클록 신호를 만들고, 이를 이용하여 1초 클록 신호를 생성한다. [1]

Top Module은 Control 신호에 따라 Alarm Clock Module과 Stopwatch Module 중 하나를 선택하여 동작시킨다. Control 신호가 1이면 Alarm Clock Module이 동작하고, 0이면 Stopwatch Module이 동작한다. [1]

Testbench를 통해 각 모듈의 동작을 시뮬레이션하고 검증하였다. Alarm Clock Module, Stopwatch Module, Clock Generator Module, Top Module 각각에 대한 testbench를 작성하여 모듈의 기능이 올바르게 구현되었음을 확인하였다. [1]


2. 설계 및 분석
2.1. Alarm Clock Module

Alarm Clock module은 디지털 시계의 기본적인 시간 표시 기능과 알람 기능을 제공한다. 시, 분, 초를 나타내는 출력 포트를 선언하고 시간을 변경할 수 있는 레지스터를 선언하였다. 초와 분은 0부터 59까지의 범위이므로 60이 되면 각각 +1분, +1시간으로 시간을 증가시켜 주었다. 시간은 0부터 12까지의 범위이므로 13이 되면 1로 변경하였다. 또한 12시를 기준으로 오전과 오후를 구분하는 AM_PM 레지스터를 두어 12시가 되면 오전에서 오후로 바뀌도록 하였다.[1]

요일을 나타내는 date 출력 포트와 daydate 레지스터를 추가하여 요일을 표현할 수 있게 하였다. 오후 12시가 되면 daydate 값을 1 증가시켜 총 7일(월화수목금토일)을 나타낼 수 있도록 하였다. 이를 시뮬레이션 파형에 명시적으로 표현하기 위해 $monitor와 $time을 활용하였다.[1]

알람 기능을 위해 AlarmHoursIn, AlarmMinsIn, Alarm_AM_PM_In 입력 포트를 두어 사용자가 알람 시간을 설정할 수 있게 하였다. LoadAlm이 1이 되면 이 입력값들이 각각의 레지스터에 저장되도록 설계하였다. 알람은 현재 시간과 알람 시간이 일치하고 현재 AM_PM과 알람 AM_PM이 같으며 AlarmEnable이 1일 때에만 동작하도록 하였다. 알람은 1분간 울리게 설계하였다.[1]

현재 시간과 알람 시간의 차이를 계산하여 gapHours 레지스터에 저장하는 기능을 추가하였다. 이를 위해 5가지 서로 다른 경우의 수를 고려하여 시간 차이를 계산하였다. 정각일 때와 그렇지 않을 때, 알람 시간과 현재 시간의 AM_PM이 같을 때와 다를 때, 현재 시간이 알람 시간보다 클 때와 작을 때 등을 구분하여 정확한 시간 차이를 산출하였다.[1]


2.2. Alarm Clock Module Simulation Analysis

《 Alarm Clock Module Simulation Analysis 》

Reset이 0일 때 시간이 알려지지 않은 상태(unknown)였다가 0이 되는 순간 시간이 초기화되는 것을 확인할 수 있다. 이는 모듈의 동작이 비동기식으로 설계되어 Reset과 클럭이 별개로 작동하기 때문이다. [1]

Loadtime이 1이 되면 SetSecs, SetMins, SetHours에 저장된 값이 각각 현재 Hours_C, Mins_C, Secs_C에 반영되는 것을 확인할 수 있다. [1]

마찬가지로 LoadAlm이 1이 되면 AlarmMinsIn, AlarmHoursIn, Alarm_AM_PM_In에 설정된 값이 해당 레지스터에 저장되는 것을 확인할 수 있다. [1]

Secs_C가 59에서 0으로 넘어가면서 Mins_C가 30에서 31로 증가하는 것을 확인할 수 있다. 이처럼 초 단위 카운트가 60이 되면 분 단위가 증가하는 것이 정상적으로 동작하고 있음을 알 수 있다. [1]

Mins_C가 59에서 0으로 넘어가면서 Hours_C가 7에서 8로 증가하는 것을 확인할 수 있다. 이를 통해 분 단위...


참고 자료

주의사항

저작권 EasyAI로 생성된 자료입니다.
EasyAI 자료는 참고 자료로 활용하시고, 추가 검증을 권장 드립니다. 결과물 사용에 대한 책임은 사용자에게 있습니다.
AI자료의 경우 별도의 저작권이 없으므로 구매하신 회원님에게도 저작권이 없습니다.
다른 해피캠퍼스 판매 자료와 마찬가지로 개인적 용도로만 이용해 주셔야 하며, 수정 후 재판매 하시는 등의 상업적인 용도로는 활용 불가합니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우