




免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西 南 科 技 大 学电工学,电子技术学生实验报告课程名称 FPGA技术课程设计 实验课题 定 时 闹 钟 班 级 电子0902 指导老师 龙 惠 民 评 分 实验小组 2012年4月25日实验课题: 定时闹钟实验时间:2012年4月16日4月30日实验小组成员: 一 设计要求设计一个具有系统时间设置和带闹钟功能的24小时计时器中的应用。电子钟要求如下:()计时功能:4位LED数字时钟对当前时间的小时和分钟进行显示,显示的最长时间为23小时59分。()设置并显示新的闹钟时间:用户先按“set”键,再用数字键“0”“9”输入时间,然后按“alarm”键确认。在正常计时显示状态下,用户直接按下“alarm”键,则已设置的闹钟时间显示在显示屏上。()设置新的计时器时间:用户先按“set”键,再用数字键“0”“9”输入新的时间,然后按“time”键确认。在输入过程中;输入的数字在显示屏上从右到左依次显示。例如,用户要设置新的时间 12:00,则按顺序输入“l”,“2”,“0”,“0”键,与之对应,显示屏上依次显示的信息为:“1”,“12”;“120”,“1200”。如果用户在输入任意几个数字后较长时间内,例如5秒,没有按任何键,则计时器恢复到正常的计时显示状态。()闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声;二设计流程1.顶层设计顶层设计结构2.各模块原理根据顶层设计结构,初步将定时闹钟分为分频器,计时模块,显示模块,闹钟模块。(1).计时模块包括秒计时子模块(sec),分计时子模块(min),时计时模块(hour),以及主控子模块(control)。其工作原理:为妙计时子模块送1HZ脉冲,但秒计数达60时,秒计数器清零,秒进位信号为1,并作为分计数器的时钟信号。每产生一个秒进位信号,分计数器加1。同样,分计数达60时,计数器清零,并产生一个分进位信号,作为时的时钟信号,每产生一个分进位信号,时计数器加1,当计数器达24时,计数器清零。如图2图2程序代码:module sec(clk,rst,sec_h,sec_l,co); /秒计数模块;input clk,rst;/时钟信号clk,复位信号rst。output reg3:0sec_h;/计数器的十位output reg3:0sec_l;/计数器的个位output reg co;/进位信号coalways (posedge clk or posedge rst)beginif(rst)begin sec_h=0;sec_l=0;endelse if(clk)begin if(sec_l=4d9)begin sec_l=0;if(sec_h=4d5)sec_h=0;else sec_h=sec_h+4d1;endelse sec_l=sec_l+4d1;endendalways (sec_h or sec_l)begin if(sec_h=4d0 & sec_l=4d0)co=1b1;else co=1b0;endendmodule功能仿真结果时序仿真结果module min(rst,sec_co,min_h,min_l,co);/分计时模块input rst,sec_co;/时钟信号sec_co,复位信号rstoutput reg3:0min_h;/计数器十位output reg3:0min_l;/计数器个位output reg co;/进位信号coalways (posedge rst or posedge sec_co)if(rst)begin min_h=0;min_l=0;endelse if(sec_co)begin if(min_l=4d9)beginmin_l=4d0;if(min_h=4d5)min_h=4d0;else min_h=min_h+4d1;endelse min_l=min_l+4d1;endalways (min_h or min_l)begin if(min_h=0 & min_l=0)co=1b1;else co=1b0;endendmodule功能仿真时序仿真结果module hour(rst,min_co,hour_h,hour_l);/时计时模块input rst,min_co;/复位信号rst,时钟信号min_co;output reg3:0hour_h;/计数器的十位output reg3:0hour_l;/计数器的个位always (posedge rst or posedge min_co)if(rst)begin hour_h=0;hour_l=0;endelse if(min_co)begin if(hour_l=4d3 & hour_h=4d2)beginhour_h=4d0;hour_l=4d0;endelse if(hour_l=4d9)begin hour_l=4d0;if(hour_h=4d2)hour_h=4d0;else hour_h=hour_h+4d1;endelse hour_l=hour_l+4d1;endendmodule功能仿真时序仿真设置一个顶层模块,将三个计时模块例化,验证计时模块的功能结果图a图b从图a和图b可以看出,3个计时子模块的功能的正确性,能够满足实验的要求。(2)分频器模块因为FPGA开发板有50MHZ和27MHZ晶振,根据实验要求,首先需要1HZ的时钟信号,其次,闹钟模块,显示模块及主控模块均需要一定的时钟信号。因此将50MHZ时钟信号分割成1KHZ,200HZ,1HZ。如图3图3程序代码:module div50_1k(clk,Q1);/分频器input clk;/输入信号50MHZ时钟信号output reg Q1;reg 14:0count;always (posedge clk)beginif(count=50000)count=0;else count=count+1b1;endalways (count)begin if(count=50000)Q1=1b1;else Q1=1b0;endendmodulemodule div1k_200(clk,Q2);input clk;/输入信号1KHZ时钟信号output reg Q2;reg 14:0count;always (posedge clk)beginif(count=5)count=0;else count=count+1b1;endalways (count)begin if(count=5)Q2=1b1;else Q2=1b0;endendmodulemodule div200_1(clk,Q3);input clk; /输入信号200HZ时钟信号output reg Q3;reg 14:0count;always (posedge clk)beginif(count=199)count=0;else count=count+1b1;endalways (count)begin if(count=199)Q3=1b1;else Q3=1b0;endendmodule(3).显示模块用5位led数码管显示时钟,将分钟和小时分为十位与各位,通过分钟及小时两个计时模块将时间数据送数码管做动态扫描。程序代码:module led_show(rst,clk,min_h,min_l,hour_h,hour_l,selout,segout);/显示子模块input rst,clk;/输入复位信号rst,时钟信号clk为1KHZinput 3:0min_h,min_l,hour_h,hour_l;/时间的输入数据output reg2:0selout;/数码管的位选信号output reg6:0segout;/数码管的段选信号parameter s1=3b000,s2=3b001,s3=3b010,s4=2b011;parameter s5=3b100;reg3:0bcdin;always (posedge clk or posedge rst)beginif(rst)begin bcdin=4b0000;selout=s1;endelse if(clk)case(selout)s1:begin bcdin=min_h;selout=s2;ends2:begin bcdin=4b1010;selout=s3;ends3:begin bcdin=hour_l;selout=s4;ends4:begin bcdin=hour_h;selout=s5;ends5:begin bcdin=min_l;selout=s1;enddefault: begin bcdin=4b0000;selout=s1;endendcaseendalways (bcdin)begincase(bcdin)4b0000 :segout=7b1000000;4b0001:segout=7b1111001;4b0010 :segout=7b0100100;4b0011:segout=7b0110000;4b0100 :segout=7b0011001;4b0101:segout=7b0010010;4b0110 :segout=7b0000010;4b0111:segout=7b1111000;4b1000 :segout=7b0000000;4b1001:segout=7b0011000;4b1010 :segout=7b1111110;default: segout=7b0;endcaseendendmodule显示模块功能仿真分析:从结果可以看到,当输入时间数据为0010 ,0011,0001,0101时,LED数码管显示2317。可以看出显示模块符合设计的要求。(4).校对模块对于时钟,常常需要对时钟的时间进行校对并设置新的计时时间;设计两个控制模块,用于设置时间。利用10个按键分别表示0到9这10个数字,设置使能键set,当set置1时,表示设置时间,time1作为确定键,利用米勒型状态的特点设置control模块。程序代码:module control(clk,set,time1,data_in,min_h,min_l,hour_h,hour_l);input set,time1,clk;/输入信号set,time1,clk时钟信号(200hz)input 3:0 data_in;/4位宽的时间输入数据parameter sth_h=0,sth_l=1,stm_h=2,stm_l=3;output reg3:0min_h;output reg3:0min_l;output reg3:0hour_h;output reg3:0hour_l;reg2:0state,nextstate;always (posedge clk)begin state=nextstate;endalways (state or time1 or set or data_in)beginbeginhour_l=0;hour_h=0;min_h=0;min_l=0;endcase (state)sth_h: beginif(time1=0)nextstate=sth_h;else begin hour_h=data_out(set,data_in);nextstate=sth_l; end endsth_l: beginif(time1=0)nextstate=sth_l;else begin hour_l=data_out(set,data_in); nextstate=stm_h; end endstm_h: beginif(time1=0)nextstate=stm_h;else begin min_h=data_out(set,data_in); nextstate=stm_l; end endstm_l: beginif(time1=0)nextstate=stm_l;else begin min_l=data_out(set,data_in); nextstate=sth_h; end enddefault :nextstate=sth_h;endcaseendfunction3:0data_out; /功能函数data_out,用于将4位宽数据转换为0到9十位数input set;input 3:0data;begin if(set)case(data)4b0000:data_out=4d0;4b0001:data_out=4d1;4b0010:data_out=4d2;4b0011:data_out=4d3;4b0100:data_out=4d4;4b0101:data_out=4d5;4b0110:data_out=4d6;4b0111:data_out=4d7;4b1000:data_out=4d8;4b1001:data_out=4d9;default:data_out=4dx;endcaseelse data_out=4d0;endendfunctionendmodule功能仿真分析:从功能仿真的结果可以看出,当time1置1时,输出信号hour_h,hour_l,min_h,min_l才开始接收数据。同样的,可以设置control1模块,用于设置闹钟时间,alarm键作为输入确定键。(5)闹铃设置模块module control1(clk,set,alarm,data_in,min_h,min_l,hour_h,hour_l);input set,alarm,clk;input 3:0 data_in;parameter sth_h=0,sth_l=1,stm_h=2,stm_l=3;output reg3:0min_h;output reg3:0min_l;output reg3:0hour_h;output reg3:0hour_l;reg2:0state,nextstate;always (posedge clk)begin state=nextstate;endalways (state or alarm or set or data_in)beginbeginhour_l=0;hour_h=0;min_h=0;min_l=0;endcase (state)sth_h: beginif(alarm=0)nextstate=sth_h;else begin hour_h=data_out(set,data_in);nextstate=sth_l; end endsth_l: beginif(alarm=0)nextstate=sth_l;else begin hour_l=data_out(set,data_in); nextstate=stm_h; end endstm_h: beginif(alarm=0)nextstate=stm_h;else begin min_h=data_out(set,data_in); nextstate=stm_l; end endstm_l: beginif(alarm=0)nextstate=stm_l;else begin min_l=data_out(set,data_in); nextstate=sth_h; end enddefault :nextstate=sth_h;endcaseendfunction3:0data_out;input set;input 3:0data;begin if(set)case(data)4b0000:data_out=4d0;4b0001:data_out=4d1;4b0010:data_out=4d2;4b0011:data_out=4d3;4b0100:data_out=4d4;4b0101:data_out=4d5;4b0110:data_out=4d6;4b0111:data_out=4d7;4b1000:data_out=4d8;4b1001:data_out=4d9;default:data_out=4dx;endcaseelse data_out=4d0;endendfunctionendmodule(6)闹铃模块module clock(clk,clk1,hour_h3,hour_l3,min_h3,min_l3,hour_h,hour_l,min_h,min_l,speaker);input clk,clk1;/clk作为时钟信号,clk1作为发声信号200hzinput 3:0hour_h3,hour_l3,min_h3,min_l3; /作为时间输入信号input 3:0hour_h,hour_l,min_h,min_l;/作为闹铃时间零时储存器reg 3:0hour_h_temp,hour_l_temp,min_h_temp,min_l_temp;output reg speaker;/作为发声输出信号接扬声器reg spk;initial beginhour_h_temp=hour_h;hour_l_temp=hour_l;min_h_temp=min_h;min_l_temp=min_l;endalways (posedge clk)begin if(hour_h_temp=hour_h3 & hour_l_temp=hour_l3 & min_h_temp=min_h & min_l_temp )spk=1b1;else spk=0;endalways (spk)beginif(spk=1b1)beginspeaker=clk1;endelse speaker=0;endendmodule(7)主控模块/set_clock 闹钟显示设置使能/led_set 数码管设置使能端/led_count数码管设置调整使能/set_out 时间自动显示使能/s1计时,s2校时,s3闹钟module control3(rst,clk,set,set_clock,led_set,led_count,set_out,led_clock);input set,rst,clk;output reg set_out,set_clock,led_set;output reg led_clock,led_count;reg1:0state;parameter s1=2b00,s2=2b01,s3=2b10;reg set_out_temp,set_clock_temp;always (posedge clk or posedge rst)beginif(rst)begin state =s1;set_out_temp=1;set_clock_temp=0;endelsecase (state)s1:if(set)begin state=s2;set_out_temp=0;set_clock_temp=0;endelsebegin state=s1;set_out_temp=1;set_clock_temp=0;ends2:if(set)begin state=s3;set_out_temp=1;set_clock_temp=1;endelsebegin state=s2;set_out_temp=0;set_clock_temp=0;ends3:if(set)begin state=s1;set_out_temp=1;set_clock_temp=0;endelsebegin state=s3;set_out_temp=1;set_clock_temp=1;enddefault:begin state=s1;set_out_temp=1;set_clock_temp=0;endendcaseset_out=set_out_temp;set_clock=set_clock_temp;led_count=set_out_temp;led_set=set_out_temp;led_clock=set_clock_temp;endendmodule顶层模块:module hour_sec(clk,rst,min_h1,min_l1,hour_h1,hour_l1,segout1,selout1,set,time1,data_in,alarm,speaker,hour_h3,hour_l3,min_h3,min_l3);input clk,rst,set;input time1,alarm;input 3:0data_in;output 3:0min_h1,min_l1,hour_h1,hour_l1;output 3:0hour_h3,hour_l3,min_h3,min_l3;output speaker;output 2:0selout1;output 6:0segout1;wire Q1,Q2,Q3;wire 3:0sec_h1,sec_l1,min_h1,min_l1,hour_h1,hour_l1;wire 3:0sec_h2,sec_l2,min_h2,min_l2,hour_h2,hour_l2;wire 3:0hour_h3,hour_l3,min_h3,min_l3;wire 2:0selout1;wire 6:0segout1;wire s_co,m_co;wire set_clock1,led_set1,led_count1,set_out1,led_clock1;sec u1(.clk(Q3),.rst(rst),.sec_h(sec_h1),.sec_l(sec_l1),.co(s_co);min u2(.rst(rst),.sec_co(s_co),.min_h(min_h1),.min_l(min_l1),.co(m_co);hour u3(.rst(rst),.min_co(m_co),.hour_h(hour_h1),.hour_l(hour_l1);led_showu4(.rst(rst),.clk(Q2),.min_h(min_h1),.min_l(min_l1), .hour_h(hour_h1),.hour_l(hour_l1),.selout(selout1),.segout(segout1);div50_1ku5(.clk(clk),.Q1(Q1);div1k_200 u6(.clk(Q1),.Q2(Q2);div200_1u7(.clk(Q2),.Q3(Q3);controlu8(.clk(Q2),.set(set),.time1(time1),.data_in(data_in), .min_h(min_h2),.min_l(min_l2),.hou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山机械采购及智能化改造项目合同范本
- 真石漆施工进度合同范本(项目进度管理)
- 社保补贴与员工劳动合同签订及解除服务方案
- 监管金融监管总局三连发合规性审查报告合同
- 知识产权质押担保合同模板:促进科技成果转化
- 签订新承揽合同原承揽合同作废及终止协议
- 离婚协议书模板及子女抚养权纠纷解决策略
- 可持续文件存储技术-洞察及研究
- 药物竞赛中医试题及答案
- 服务型政府建构-洞察及研究
- 泥浆护壁旋挖钻孔灌注桩施工技术交底
- 初中地理跨学科学习实践研究
- 幼儿园常见传染病的预防课件
- GB/T 36287.1-2025轨道交通地面装置直流牵引供电能量利用第1部分:储存系统
- TY/T 3501.5-2024高山滑雪板性能测定第5部分:弯曲振动
- DB42∕T 1496-2019 公路边坡监测技术规程
- 塔拉韦斯特弗《你当像鸟飞往你的山》中英互译
- 工勤技能考试职业道德试题
- 全国2024年10月自学考试财务报表分析(一)试题和答案
- 《红色的天空》话剧剧本
- 2025版地热能钻井服务合同范本3篇
评论
0/150
提交评论