Verilog 시계

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
>

상세정보

소개글

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

목차

1. 프로젝트 목적
1.1. Alarm Clock Module 설계
1.2. Stopwatch Module 설계
1.3. Clock Generator Module 설계
1.4. Top Module 설계

2. 설계 및 분석
2.1. Alarm Clock Module
2.1.1. Alarm Clock Module 설계방법 및 추가기능
2.1.2. Alarm Clock Module Simulation Analysis
2.2. Stopwatch Module
2.2.1. Stopwatch Module 추가기능
2.2.2. Stopwatch Module Simulation Analysis
2.3. Clock Generator Module
2.3.1. Clock Generator Module 주기 설정방법
2.3.2. Clock Generator Module testbench & Simulation Analysis
2.4. Top Module
2.4.1. Top Module Simulation Analysis

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

4. 결론 및 고찰

5. 참고 문헌

본문내용

1. 프로젝트 목적
1.1. Alarm Clock Module 설계

Alarm Clock Module 설계는 프로젝트의 핵심 부분이다. Alarm Clock Module은 시간, 분, 초를 표시하고 사용자가 원하는 알람 시간을 설정할 수 있도록 한다. 이를 위해 시간, 분, 초를 각각 표현할 수 있는 레지스터와 알람 시간을 설정할 수 있는 레지스터를 선언하였다.

요일 표현을 위해 날짜를 나타내는 date 출력포트와 요일을 변경할 수 있는 daydate 레지스터를 선언하였다. 오후 12시가 되면 daydate 값을 1 증가시켜 월요일부터 일요일까지 7일을 표현할 수 있게 하였다. 또한 시뮬레이션 상에서 날짜 변화 시점을 명시적으로 보여주기 위해 $monitor와 $time을 활용하였다.

알람 시간과 현재 시간의 차이를 계산하여 표현하는 기능도 추가하였다. 이를 위해 5가지 서로 다른 상황을 고려하여 조건문을 사용해 시간 차이를 계산하는 gapHours 변수를 선언하였다. 정각일 때와 정각이 아닐 때, AM/PM이 같은 경우와 다른 경우 등의 상황을 나누어 시간 차이를 계산하였다.

Reset, Loadtime, LoadAlm 신호에 따른 동작도 구현하였다. Reset이 0일 때는 시, 분, 초가 unknown 상태에서 0으로 초기화되고, Loadtime이 1일 때는 SetSecs, SetMins, SetHours의 값이 각각 현재 Secs_C, Mins_C, Hours_C에 저장된다. LoadAlm이 1일 때는 AlarmMinsIn, AlarmHoursIn, Alarm_AM_PM_In의 값이 각각 Alarm_Mins, Alarm_Hours, Alarm_AM_PM 레지스터에 저장된다.

초, 분, 시간의 계산과 AM/PM의 변경 등 Alarm Clock Module의 핵심 기능이 정상적으로 구현되도록 하였다. 초 카운트가 60이 되면 분이 1 증가하고, 분 카운트가 60이 되면 시간이 1 증가하며, 시간 카운트가 12가 되면 AM/PM이 바뀌도록 설계하였다. 또한 시간 카운트가 12이고 PM일 때는 하루가 지났음을 의미하므로 요일 표현 기능도 함께 구현하였다.

마지막으로 알람 기능을 구현하였다. 알람 시간과 현재 시간이 일치하고 AM/PM도 일치할 경우 1분간 알람이 울리도록 하였다. 이때 알람이 울리는 시간은 Alarm이 0에서 1로 변경되는 시점부터 1분 후 다시 0으로 변경되는 시점까지이다.

Alarm Clock Module 설계에서 가장 핵심적인 부분은 시간, 분, 초의 계산과 AM/PM의 변경, 요일 표현, 알람 시간과 현재 시간의 차이 계산, 그리고 알람 기능 구현이다. 이러한 기능들을 효과적으로 구현함으로써 Alarm Clock Module의 목적을 달성할 수 있다.


1.2. Stopwatch Module 설계

Stopwatch module은 추가기능으로 Laptime 측정 기능이 설계되었다. 스탑워치의 기록측정기능을 본따 동작을 설계하였는데, laptime이라는 변수를 만들어서 laptime 레지스터의 값이 1이 되면 시, 분, 초, 밀리초를 기록으로 저장하는 Hours_L, Min_L, Secs_L, Msecs_L의 변수에 저장시키도록 하였다. 이때 스탑워치의 시간 카운트는 Clock의 posedge에서 발생하는데 증가한 이후 labtime이 1이라면 바로 그 값을 저장시키기 위해서 다른 always문에 event를 negedge Clock으로 지정해서 따로 동작을 선언해주었다.

이는 Start_S가 1이 되었을때 Msecs_S가 클럭이 따라 증가하고 있음을 확인할 수 있고 Start_S가 0이되면 클럭에 따라 카운트를 정지하는것을 통해 확인할 수 있다. 또한 Stop_S가 1일때 스탑워치가 정지되어 Stop_S가 1이 아니라면 정상적으로 증가하지만, Stop_S가 1이되어 카운트 동작이 멈춘것도 확인할 수 있다.

Stop_S가 기존에 1이었다가 0이 되고 Start_S가 1임에도 불구하고 동작하지 않는것도 확인하였는데, 이는 Stop_S가 한번 1이 되면 이후 Stop_S가 0이 되고 Start_S가 1로 바뀌어도 동작하지 않도록 설계한 것이다. 이를 위해 Stop_S가 1이 된 이후 이를 Check할수있는 변수인 Check 레지스터를 1로 만들어서 Check + Stop의 값이 0보다 커지면 계속 멈춰있는 동작을 설정하였고, Reset_S가 1이 되었을때만 Check값을 0으로 만들어 빠져나갈 수 있게 하였다.

또한 Msecs_S가 0부터 카운트하기 시작해서 999까지 카운트 한 뒤 0이 될 때 Secs_S의 카운트를 하나 증가시키고 Msecs_S는 0으로 변하는것, Secs_S가 0부터 카운트하기 시작해서 59까지 카운트 한 뒤 0이 될 때 Mins_S의 카운트를 하나 증가시키고 Secs_S는 0으로 변하는 것, Mins_S가 0부터 카운트하기 시작해서 59까지 카운트 한 뒤 0이 될 때 Hours_S의 카운트를 하나 증가시키고 Mins_S는 0으로 변하는 것, Hours_S가 0부터 카운트하기 시작해서 11까지 카운트 한 뒤 12에 0이 되는 것을 확인할 수 있다.

마지막으로 laptime 기록측정 동작을 확인한 결과, laptime이라는 레지스터를 통해 1이 되었을때 현재기록을 담을수 있는 각 시분초의 기록측정 레지스터에 negedge Clock마다 저장되고 있음을 확인할 수 있었다.


1.3. Clock Generator Module 설계

Clock Generator Module 설계는 시계의 정확한 동작을 위해 매우 중요한 부분이다. 이를 위해 1ms와 1초의 주기를 정밀하게 생성하는 방법이 제안되었다.

Clock_5K는 1초에 5000번 진동하므로, 한 주기는 1/5000초인 0.2ms가 된다. 이를 바탕으로 1ms를 생성하기 위해서는 5번의 상승엣지가 필요하다. 구체적으로는 먼저 0.4ms와 0.6ms로 구분하여 절반씩 나누고, 이후 다시 Clock_5K의 상승엣지가 3번 더 발생하면 1ms가 되도록 설계하였다.

이를 위해 sec_cnt1이라는 레지스터를 선언하여 2회의 상승엣지 발생시 Clock_1Msec를 반전시키고, 이후 3번의 추가 상승엣지 발생시 다시 반전시켜 1ms 주기를 생성하였다.

1초는 0.2ms*5...


참고 자료

ADM1602K-NSW-FBS-3.3v.pdf
전전컴실험2 교안

주의사항

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

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

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