Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

디논 프로젝트

No description
by

진홍 김

on 21 October 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 디논 프로젝트

메인 모듈
테스트벤치
추가 모듈
AlarmOn
알람 모듈
디지털
시계

With
AM/PM 기능
,
요일 표기 기능
,
알람 기능

verilog로 구현한
AM
09:29:59
AlarmOn
AM
09:29:59
AlarmOn
개요 & 설계
1.무엇을 구현할 것인가?
2.어떻게 구현할 것인가?
3.결과는 어떻게 보여 줄 것인가?
[ 시계 부분]
24시간을 초 단위까지 7-segment로 표현하는 디지털시계
[ 추가 기능]
알람, AM/PM 표시, 요일 표시
빤짝거리는
[ 시계 자체 기능]
Clock Pulse 와 시계의 초 값을 연동시킴으로서 구현,
[ 추가 기능]
If문 조건을 시간값과의 대조를 하는 방식으로 시작
[ 시계 구현 결과]
파형(WaveForm) 시연을 통한 검증
[ 추가기능 구현 결과]
조건을 만족시키는 값으로 시간을 설정한 후 파형 시연을 통한 검증
[기능 연동]
기능들을 각각 다른 module 로 만든 후 main module 에서 호출
모듈 및 변수 선언
module
DigitalClock

(
H10,H1,
M10,M1,
S10,S1,
Q,
M_out,
clk,reset,
A_sec,A_secMax
AlarmOn,
LG,LY,LR,
day,day_seg
);
시간 올림 처리
if( 0의 자리 초==9)
0의자리 초 = 0;
10의자리 초+=1;
if( 59초 )
10의 자리 초=0;
1의 자리 초 =0;
1의 자리 분+=1;
if( 23시 59분 59초)
10의 자리 시 =0;
1의 자리 시=0;
10의 자리 분=0;
1의 자리 분=0;
10의자리 초=0;
1의자리 초=0;
추가기능 모듈 호출
segdecoder
s1_seg
(S1, s1);
segdecoder
s10_seg
(S10, s10);
segdecoder
m1_seg
(M1, m1);
segdecoder
m10_seg
(M10, m10);
segdecoder
h1_seg
(H1, h1);
segdecoder
h10_seg
(H10, h10);
ampm
gg
(M_out,Q,h10,h1);
days
ggd
(h10,h1,m10,m1,s10,s1,day,day_seg,clk);
alram
ggs
(h10,h1,m10,m1,A_sec,A_secMax,AlarmOn,clk,LG,LY,LR);
AM / PM 모듈
날짜 모듈
세그먼트 모듈
제라의 공식
( (21*YY/4) + (5*yy/4) + (26*(mm+1)/10) + dd - 1 )%7
윤년 계산 공식
( (21*YY/4) + (5*yy/4) + (26*(mm+1)/10) + dd - 1 )%7
누차의 공식
N = 365Y + ([Y]4 - [Y]100 + [Y]400) + [153M - 1987]5 + D
always #30 clk = ~clk;

clk=0;
reset=0;
If(지정된 시간&&알람시간<최대알람시간)








Case(알람On)
1:
if(알람시간==최대알람시간)
알람시간 값 초기화
else
알람시간++
0:
알람시간 값 초기화
if(LG==1)

LG=0;
LY=1;
LR=0;
else if(LY==1)

LR=1;
LG=0;
LY=0;
else if(LR==1)

LR=0;
LG=1;
LY=0;
else

LG=1;
초록불
이 켜있으면
노랑불
만 켜 두고



노랑불
이 켜있으면
빨강불
만 켜 두고



빨강불
이 켜있으면
초록불
만 켜 두고


아무것도 안 켜져 있으면
초록불
을 켠다!
추가모듈 [ 날짜 ]
if( ( h_10==0 && h_1<=9 ) || (h_10==1 && h_1<=1) )

out=7'b1110111;





else if( ( h_10==1 && h_1 >=2) || (h_10==2) )

out=7'b1100111;





M_out=7'b1111001;
if(dh_10==2 && dh_1==3 && dm_10==5 && dm_1==9 && dsec_10==5 && dsec_1==9)


begin
day=day+1;

if(day==7)
day=0;
if( in==0 )
out =7'b0111111;
else if ( in==1 ) out =7'b0000110;
else if ( in==2 ) out = 7'b1011011;
else if ( in==3 ) out = 7'b1001111;
else if ( in==4 ) out = 7'b1100110;
else if ( in==5 ) out = 7'b1101101;
else if ( in==6 ) out = 7'b1111101;
else if ( in==7 ) out = 7'b0000111;
else if ( in==8 ) out =7'b1111111;
else if ( in==9 ) out =7'b1101111;
SUN
SUN
요일 확인 모듈
if 평일
진행 과정
메인 모듈(Clock)
초기화
리셋 확인
시계 작동 시작
if 일요일
AM,PM 확인 모듈
0시~11시
알람 모듈
알람시간
알람종료
12시~23시
알람시간 카운터 시작
알람시간 카운터 초기화
불빛 시작
day ++
day=0;
5x7

display
Full transcript