FPGA闹钟代码Verilog.docx
- 文档编号:27733327
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:7
- 大小:15.57KB
FPGA闹钟代码Verilog.docx
《FPGA闹钟代码Verilog.docx》由会员分享,可在线阅读,更多相关《FPGA闹钟代码Verilog.docx(7页珍藏版)》请在冰豆网上搜索。
FPGA闹钟代码Verilog
闹表使用说明
一、闹表基本功能
è可设置时间
è可设置闹铃
二、功能与接口
è可设置闹表功能与接口
è平时时、分、秒依次自加一跳变;
è设置时间时,可独立控制小时或者分钟自加一跳变;
è设置闹铃时,可独立控制小时或者分钟自加一跳变;
è需要有时钟驱动;
è需要有LED显示;
è需要闹表开关、设置小时开关、设置分钟开关;
三、功能及控制键(输入)
èSW17为SET_TIME用于设置时间(上端设置);
èSW16为ALARM用于设置闹表时间(上端设置);
èSW0为TOGGLE_SWITCH闹表开关(上端打开);
èKEY1为HRS设置小时(按一次加一个值);
èKEY0为MIN设置分钟(按一次加一个值);
è时钟(CLK_50)接入50M时钟;
四、功能及控制键(输出)
èDISP1显示小时,连接到HEX3、HEX2;
èDISP2显示分钟,连接到HEX1、HEX0;
èAM_PM_DISPLAY显示上/下午,连接到LEDG8;
èSPEAKER闹铃,连接到LEDR17;
五、解决方案
1.总体模块划分
2.各模块实现
1)计数模块(显示模块)
DE-2提供了50MHZ钟,本实验需要的1s加1的跳变,所以需要将时钟进行分频为1HZ的时钟来达到计数的要求。
代码清单:
always@(posedgeCLK_50)
begin
if(count<25000000)
begin
count<=count+1'b1;
end
else
begin
count<=1'b0;
clk_odd<=~clk_odd;
end
end
完成时钟分频以后,将得到的1HZ的时钟输入到
计数模块,实现上述要求。
代码清单:
always@(posedgeclk_odd)
begin
if(!
RESET)//ifreset,clearallthedata
begin
second<=0;
minute<=0;
hour<=0;
end
elseif(RESET)//ifthereisnoreset
begin
if(!
SET_TIME)//ifyoudonotsettime
begin
if(second>=0&&second<59)
begin
second<=second+1;
end
elseif(second==59&&minute<59)//second
begin
minute<=minute+1;
second<=0;
end
elseif(minute==59&&second==59&&hour<23)//minute
begin
hour<=hour+1;
minute<=0;
end
elseif(hour==23&&minute==59&&second==59)//hour
hour<=0;
end
elseif(SET_TIME)//whenyousettime,thedatacanbesentto'hour'and'minute'
begin
hour<=hour_set_time;
minute<=minute_set_time;
end
end
if(!
ALARM)
begin
HEX5<=Seg(high_hur);
HEX4<=Seg(low_hur);
HEX3<=Seg(high_min);
HEX2<=Seg(low_min);
HEX1<=Seg(high_sec);
HEX0<=Seg(low_sec);
end
elseif(ALARM)
begin
HEX5<=Seg(alarm_high_hur);
HEX4<=Seg(alarm_low_hur);
HEX3<=Seg(alarm_high_min);
HEX2<=Seg(alarm_low_min);
HEX1<=7'b11111_111;
HEX0<=7'b11111_111;
end
end
本模块问题:
起初对模块划分认识不清即下手写程序,导致显示模块被集成到了计数模块。
2)校对模块
原理:
在计数模块中通过将SW17键推到上部来使能校对功能。
通过对KEY1键的操作(检测该键的上升沿)来达到调小时的功能;通过对KEY0键的操作(检测该键的上升沿)来达到调分钟的功能。
通过上述操作将在时钟的激励下将设定的时间数据传入计数模块,达到设置时间的目的。
代码清单:
moduleset_time(SET_TIME,HRS,MIN,minute,hour);
inputSET_TIME;//usedtosettheclock's//time,theclockcanbesetted//whentheSWturnedon
inputHRS;//thekeytochanghour
inputMIN;//thekeytochangminute
output[7:
0]minute,hour;
reg[7:
0]minute,hour;
always@(posedgeHRS)//whenSET_TIME=1,//pressHRStocountthe//hour
begin
if(SET_TIME)
begin
if(hour>=0&&hour<23)
hour=hour+1;
else
hour=0;
end
end
always@(posedgeMIN)//whenSET_TIME=1,//pressHRStocount//theminute
begin
if(SET_TIME)
begin
if(minute>=0&&minute<59)
minute=minute+1;
else
minute=0;
end
end
endmodule
3)闹钟模块
闹钟模块的设计类似校对模块。
不同之处是在于设计闹钟模块的时候通过将SW16推到上部来达到是能的目的。
然后将得到的数据与计数模块的时间进行比较,如果相等,并且闹表使用SW0被推到了上部,即可以实现闹表功能。
代码清单:
moduleset_alarm(HRS,MIN,ALARM,minute,hour);
inputHRS;
inputMIN;
inputALARM;//onceALARMisswithedon,thealarmtimecanbesetted
output[7:
0]hour;
output[7:
0]minute;
reg[7:
0]hour;
reg[7:
0]minute;
always@(posedgeHRS)
begin
if(ALARM)
begin
if(hour>=0&&hour<23)
hour=hour+1;
else
hour=0;
end
end
always@(posedgeMIN)
begin
if(ALARM)
begin
if(minute>=0&&minute<59)
minute=minute+1;
else
minute=0;
end
end
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 闹钟 代码 Verilog