多功能数字钟设计实验报告ilinEDABasys2华中科技大学HUST.docx

上传人:1564****418 文档编号:96721077 上传时间:2024-03-16 格式:DOCX 页数:15 大小:229.73KB
返回 下载 相关 举报
多功能数字钟设计实验报告ilinEDABasys2华中科技大学HUST.docx_第1页
第1页 / 共15页
多功能数字钟设计实验报告ilinEDABasys2华中科技大学HUST.docx_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《多功能数字钟设计实验报告ilinEDABasys2华中科技大学HUST.docx》由会员分享,可在线阅读,更多相关《多功能数字钟设计实验报告ilinEDABasys2华中科技大学HUST.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、多功能数字钟设计试验报告院系:电子与通信工程学院姓名:班级:1301 学号:U指导教师:一、试验目标 把握可编程规律器件的应用开发技术设计输入、编译、仿真和器件编程 生疏 EDA 软件使用 把握 Verilog HDL 设计方法 分模块、分层次数字系统设计二、试验内容要求 根本功能 能显示小时、分钟、秒钟时、分用显示器,秒用 LED 能调整小时、分钟的时间 提高要求 任意闹钟;1 分 小时为 12/24 进制可切换1 分 报正点数几点钟 LED 闪耀几下1 分 三、试验条件Xilinx 工程环境,win7 操作系统,BASYS2 试验板。四、试验设计1. 设计分析数字钟大体上由 2 个 60

2、进制计数器,1 个 24 进制计数器构成,中间有数据选择器进展连接。为实现提高功能,还需 12 进制计数和整点推断模块。以下图为数字钟层次构造图。2. 试验原理振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满 60 后向分计数器进位,分计数器满 60后向小时计数器进位,小时计数器按 24 或 12 进制规律计数。计数器的输送译码显示电路,即可显示出数码即时间。计时消灭误差时可以用校时电路进展校时和校分。小时显示1224切换电路、仿电台报时、定时闹钟为扩展电路,只有在计时主体电路正常运行的状况下才能进展功能扩展。本试验承受 Verilog HDL 进展描

3、述,然后用 FPGA/CPLD 实现, 使用内部 50MHz 晶振作为时钟电路。3. 规律设计实现上述功能的 Verilog HDL 程序如下。实现根本功能的程序分为两层次四个模块,底层有 3 个模块构成,即 6 进制计数器模块,10 进制计数器模块和 24 进制计数器模块,顶层有一个模块,他调用底层的 3 个模块完成数字中的计时功能。module timeclock(Hour,Minute,Second,CP,nCR,EN,Adj_Min,Adj_Hour,number,Light,clk,t emp,change,AMTM,dingdong);output 7:0 Hour,Minute,

4、Second;output 3:0 Light,temp;output 6:0 number;output clk,AMTM,dingdong;/clk 为分频之后的时钟信号,频率为 1Hz, AMTM 为 24 进制转换 12 进制时说明上下午的变量,dingdong 为整点报时时的闪耀信号。input CP;/输入的时钟信号,需分频后才能正常使用。input nCR;/清零input EN,change;/EN 为使能信号,change 为 12/24 进制转换开关。input Adj_Min;/校分掌握input Adj_Hour; /校时掌握wire 7:0 Hour,Minute,S

5、econd;reg clk;reg 29:0 count,count1;/分频需要的计数器reg 1:0 scan;/扫描时需要的计数器reg 3:0 Light,temp;/4Bit 变量 Light 代表四个数码管,temp 表示数码管需要显示的数字reg 6:0 number;/number 代表 7 个发光二极管reg clk1;/为分频后的扫描频率supply1 Vdd;wire MinL_EN,MinH_EN,Hour_EN;/中间变量/ Hour,Minute,Second counter/60 进制秒计数器counter10 U1(Second3:0,nCR,EN,clk);/

6、个位counter6 U2(Second7:4,nCR,(Second3:0=4”h9),clk);/十位/产生分钟计数器使能信号。Adj_Min=1,校正分钟;Adj_Min=0,分钟正常计时assign MinL_EN=Adj_Min?Vdd:(Second=8”h59);assign MinH_EN=(Adj_Min&(Minute3:0=4”h9)|(Minute3:0=4”h9)&(Secon d=8”h59);/60 进制分钟计数器counter10 U3(Minute3:0,nCR,MinL_EN,clk);counter6 U4(Minute7:4,nCR,MinH_EN,cl

7、k);/产生小时计数器使能信号。Adj_Hour=1,校正小时;Adj_Hour=0,小时正常计时assign Hour_EN=Adj_Hour?Vdd:(Minute=8”h59)&(Second=8”h59);/24 进制和 12 进制可切换的小时计数器counter24 U5(Hour7:4,Hour3:0,nCR,Hour_EN,clk,change,AMTM);/整点报时模块dingdong U6(clk,nCR,Minute7:4,Minute3:0,Hour7:4,Hour3:0,dingdong);/分频always (posedge CP)beginif(nCR) count

8、=30”d00;endelse if(count=30”d25000000) begin count=30”d00; clk=clk;else count=count+1”b1;end /产生 1Hz 的频率always (posedge CP)beginif(nCR) count1=30”d00;endelse if(count1=30”d100000) begin count1=30”d00; clk1=clk1;else count1=count1+1”b1;end /产生扫描用的频率/扫描计数器always (posedge clk1)beginif(nCR) scan=2”b00;e

9、lse if(scan=2”b11) scan=2”b00;else scan=scan+1”b1;end/扫描always (scan1:0)begincase(scan1:0)2”b00: Light=4”b0111;2”b01: Light=4”b1011;2”b10: Light=4”b1101;2”b11: Light=4”b1110;endcaseend/显示数字always (scan1:0)begincase(scan1:0)2”b00: temp=Hour7:4;2”b01: temp=Hour3:0;2”b10: temp=Minute7:4;2”b11: temp=Min

10、ute3:0;endcaseendalways (temp)begincase(temp)4”d0:number=7”b0000001; /04”d1:number=7”b1001111; /14”d2:number=7”b0010010; /24”d3:number=7”b0000110; /34”d4:number=7”b1001100; /44”d5:number=7”b0100100; /54”d6:number=7”b0100000; /64”d7:number=7”b0001111; /74”d8:number=7”b0000000; /84”d9:number=7”b000010

11、0; /9default:number=7”b0000001;endcaseendendmodulemodule dingdong(clk,ncr,minuteh,minutel,hourh,hourl,dingdong);input ncr;input clk;input 3:0 minuteh,minutel;input 3:0 hourh,hourl;output reg dingdong;integer i=0;reg en;always(posedge clk or negedge ncr)beginif(ncr)begindingdong=0;endelse if(minuteh=

12、4”d5)&(minutel=4”d9)begini=0;en=1;endelse if(i(hourh*20+hourl*2)&(en)begindingdong=dingdong;i=i+1;endelse if(i=(hourh*20+hourl*2)en=0;elsedingdong=0;endendmodulemodule counter10(Q,nCR,EN,CP);output 3:0 Q;input CP;input nCR;input EN;reg 3:0 Q;always (posedge CP or negedge nCR)beginif(nCR) Q=4”b0000;/

13、nCR=0,计数器被异步清零else if(EN) Q=Q;/EN=0,暂停计数else if(Q=4”b1001) Q=4”b0000;else Q=Q+1”b1;/计数器增加 1endendmodulemodule counter6(Q,nCR,EN,CP);output 3:0 Q;input CP;input nCR;input EN;reg 3:0 Q;always (posedge CP or negedge nCR)beginif(nCR) Q=4”b0000;else if(EN) Q=Q;else if(Q=4”b0101) Q=4”b0000;else Q=Q+1”b1;e

14、ndendmodulemodule counter24(CntH,CntL,nCR,EN,CP,change,AMTM);output 3:0 CntH;output 3:0 CntL;output AMTM;input nCR;input EN;input CP,change;reg 3:0 CntH,CntL;reg AMTM;always (posedge CP or negedge nCR)beginif(nCR) CntH,CntL=8”h00;/清零else if(change=0)/推断 12 或者 24 小时进制。change=0 时为 24 进制,change=1 时为 12

15、 进制begin AMTM=0;/上下午显示关闭if(EN) CntH,CntL4”b0010)|(CntL4”b1001)|(CntH=4”b0010)&(CntL=4”b 0011)CntH,CntL=8”h00;else if(CntH=4”b0010)&(CntL4”b0011)begin CntH=CntH; CntL=CntL+1”b1; endelse if(CntL=4”b1001)begin CntH=CntH+1”b1; CntL=4”b0000; endelsebegin CntH=CntH; CntL=4”b0001&CntL4”b0010) begin CntH=Cn

16、tH-1”b1; CntL=CntL-2”b10; AMTM=1; end/AMTM=1.,表示为下午else if(EN) CntH,CntL4”b0001)|(CntL4”b1001)|(CntH=4”b0001)&(CntL=4”b0010)begin CntH,CntL=8”h01; AMTM=AMTM; end/完成一次 12 小时计数,AMTM 翻转一次,表示上下午的转换else if(CntH=4”b0001)&(CntL4”b0001)begin CntH=CntH; CntL=CntL+1”b1; endelse if(CntL=4”b1001)begin CntH=CntH

17、+1”b1; CntL=4”b0000; endelsebegin CntH=CntH; CntL=CntL+1”b1; endendend/12 进制小时计数完成endendmodule4.仿真波形Counter10:Counter24:24 进制时:12 进制时:总体波形:注:number,temp 等没有显示,change=0,即仿真波形为 24 进制。五、调试过程1. 调试步骤首先设置引脚接口,其代码如下: 引脚代码:NET “Light0“ LOC = F12; NET “Light1“ LOC = J12; NET “Light2“ LOC = M13; NET “Light3“

18、LOC = K14; NET “number6“ LOC = L14; NET “number5“ LOC = H12; NET “number4“ LOC = N14; NET “number3“ LOC = N11; NET “number2“ LOC = P12; NET “number1“ LOC = L13; NET “number0“ LOC = M12; NET “Second0“ LOC = M5; NET “CP“ LOC = B8;NET “nCR“ LOC = L3; NET “EN“ LOC = P11;NET “Adj_Hour“ LOC = B4; NET “Adj

19、_Min“ LOC = K3;NET “change“ LOC = G3; NET “AMTM“ LOC = M11;NET “dingdong“ LOC = P7;接着连接 BASYS2 试验板,将程序下载到板子上,观看结果。2. 调试过程中遇到的问题及解决方法在调试过程中,观看到四个数码管都显示为 8,通过检查确定缘由为扫描频率过高,将扫描频率降低,结果正常显示。3. 试验结果在 BASYS2 试验板上观看到时钟运行正常,清零功能以及暂停功能可以正确实现,可以正常校正时间以及切换 12/24 小时进制,整点报时功能也能正确实现。六、 试验总结本次试验需要使用 Xilinx 进展软件编译,通过这次试验,加深了对verilog 语句的了解,了解了数字钟的工作原理以及对拓展功能如整点报时的原理。试验中几乎完全为软件编译代码,需要有一个格外准确的布局观念以及一个正确的流程认知,这就运用到了分层次设计的方法,这种方法对我们以后的硬件设计有着格外大的帮助。变异过程格外简洁出错,所以要有急躁、细心以及毅力才能完成整个试验,正确进展仿真, 然后下载软件到板子上进展结果观看。总而言之,通过这次试验我收获颇丰。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁