欢迎来到天天文库
浏览记录
ID:37710099
大小:17.69 KB
页数:8页
时间:2019-05-29
《FPGA数字时钟——详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、moduleclock04(//注:本次调试会出现黄色叹号警告,但不影响功能完美实现。inputwireclk,//系统50MHz时钟inputwireclr,//清零开关inputwiresettime,//调时开关inputwiremyclock,//设置我的闹钟开关inputwirecloseclock,//关掉闹钟开关inputbtn0,//四个调时按钮inputbtn1,inputbtn2,inputbtn3,outputsled,//秒闪烁LED灯outputregcled,//闹钟
2、闪烁LED灯outputreg[6:0]duanxuan,//数码管段选outputreg[3:0]weixuan//数码管位选);reg[1:0]p;//位选数码管位置reg[3:0]digit;//指代数码管将要显示的数字reg[16:0]clktime;//位选刷新用reg[26:0]cnt;//分频用regclk_out;//分频所得时钟信号reg[3:0]ml;//以下为时钟:时分秒reg[3:0]hl;reg[3:0]mh;reg[3:0]hh;reg[5:0]s;reg[3:0]c
3、ml;//以下为闹钟时分reg[3:0]cmh;reg[3:0]chl;reg[3:0]chh;initial//初始时间全部为12:30:00beginhh=1;hl=2;mh=3;ml=0;chh=1;chl=2;cmh=3;cml=0;s=0;endalways@(posedgeclk)//定义位选刷新时间参数beginclktime<=clktime+1;endalways@(*)beginweixuan=4'b1111;//初始位选,数码管全暗p<=clktime[16:15];//定
4、义位置代数p为参数最高两位weixuan[p]=0;//选中的p位低电平点亮数码管if(myclock==1)//ifelse语句决定位选状态为闹钟时间or时钟时间begincase(p)//p有4种情况0:digit<=chh[3:0];//定义digit指代所要显示的数字1:digit<=chl[3:0];2:digit<=cmh[3:0];3:digit<=cml[3:0];default:digit<=cml[3:0];endcaseendelsebegincase(p)//p有4种情况
5、0:digit<=hh[3:0];//定义digit指代所要显示的数字1:digit<=hl[3:0];2:digit<=mh[3:0];3:digit<=ml[3:0];default:digit<=ml[3:0];endcaseendcase(digit)//十六进制数字段选编码0:duanxuan=7'b0000001;1:duanxuan=7'b1001111;2:duanxuan=7'b0010010;3:duanxuan=7'b0000110;4:duanxuan=7'b100110
6、0;5:duanxuan=7'b0100100;6:duanxuan=7'b0100000;7:duanxuan=7'b0001111;8:duanxuan=7'b0000000;9:duanxuan=7'b0000100;'hA:duanxuan=7'b0001000;'hB:duanxuan=7'b1100000;'hC:duanxuan=7'b1100001;'hD:duanxuan=7'b1000010;'hE:duanxuan=7'b0110000;'hF:duanxuan=7'b01
7、11000;default:duanxuan=7'b0000001;endcaseendalways@(posedgeclkorposedgeclr)//对系统50MHz时钟进行分频,期间进行调时、计时beginif(clr==1)//首先判断是否清零begincnt<=0;ml<=0;mh<=0;hl<=0;hh<=0;chh<=0;chl<=0;cmh<=0;cml<=0;s<=0;endelseif(cnt==24999999)//分频中间步骤beginclk_out=~clk_out;/
8、/定义分频所要得到的1Hz(1秒)时钟信号cnt<=cnt+1;endelseif(cnt==1
9、
10、cnt==25000001)//在所得时钟信号翻转后(每0.5秒)判断是否进行调时操作begin//定义四个调时按键cnt<=cnt+1;if(settime==1)beginif(btn0)//分钟-beginml<=ml-1;if(ml==0)beginml<=9;mh<=mh-1;endif(mh==0&&ml==0)//分钟从00减到59,小时减1beginml<=9;mh<=5;hl<=
此文档下载收益归作者所有