收藏 分享(赏)

西安交大数电数字钟实验报告.doc

上传人:精品资料 文档编号:10639416 上传时间:2019-12-10 格式:DOC 页数:10 大小:103.30KB
下载 相关 举报
西安交大数电数字钟实验报告.doc_第1页
第1页 / 共10页
西安交大数电数字钟实验报告.doc_第2页
第2页 / 共10页
西安交大数电数字钟实验报告.doc_第3页
第3页 / 共10页
西安交大数电数字钟实验报告.doc_第4页
第4页 / 共10页
西安交大数电数字钟实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、0西安交通大学数字电子技术实验报告数字钟设计姓名:*学院:*学院班级:*22学号:212*51一、 实验名称基于 Verilog HDL 设计的多功能数字钟二、 试验任务及要求实验要求以 Verilog HDL 语言为手段,设计多功能数字钟。多功能数字钟应该具有的功能有:显示时分秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在 1Hz 信号的作用下进行,这样每来一个时钟信号,秒增加 1 秒,当秒从 59 秒跳转到 00 秒时,分钟增加 1 分,同时当分钟从 59 分跳转到 00 分时,小时增加 1 小时,小时的范围为 023 时。在实验中为了显示与编写方便,该设计采用一个位 24

2、 位二进制码23:0cnt 记录时间,每四位记录一个数,从高到低分别为时针十位、时针个位、分针十位、分针个位、秒针十位、秒针个位。 实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是 1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的 1Hz 信号,必须对输入的系统时钟 50Mhz 进行分频。关于调整时间功能,该设计采用四个按钮调整对应位的数值,从而调整时间。三、 实验条件该实验以 Verilog HDL 语言为手段,以 Xilinx ISE Design Suite 13.4_1软件实现源程序的综合与仿真,并用 BASYS2 开发板作为目标器件。四、 设计过程1.

3、列写多功能数字钟设计-层次结构图2.拟定数字钟的组成框图,在 Xilinx ISE Design Suite 13.4_1 软件中,使用 Verilog 语言输入,采用分层次分模块的方法设计电路;3.设计各单元电路并进行仿真;4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合;5.下载到 Basys2 实验平台上,实际测试数字钟的逻辑功能。2五、 Verilog 代码module clock(input clk,input en,input key1,input key2,input key3,input key4,output sec,output wire7:0 seg,out

4、put wire3:0 digit);wire3:0 num0,mum1,num2,num3;disp u0(clk,num0,mum1,num2,num3,seg,digit);clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,num3);endmodule/module disp(input clk,input 3:0 num0,input 3:0 num1,input 3:0 num2,input 3:0 num3,output reg7:0 sm_seg,output reg3:0 an);reg1:0 s;reg3:0

5、digit;reg16:0 clkdiv;always(*)beginan=4b1111;s=clkdiv16:15;ans=0;case(s)0:digit=num0;1:digit=num1;2:digit=num2;3:digit=num3;default:digit=num0;3endcasecase(digit)4h0 : sm_seg = 8hc0; / “0“4h1 : sm_seg = 8hf9; / “1“4h2 : sm_seg = 8ha4; / “2“4h3 : sm_seg = 8hb0; / “3“4h4 : sm_seg = 8h99; / “4“4h5 : sm

6、_seg = 8h92; / “5“4h6 : sm_seg = 8h82; / “6“4h7 : sm_seg = 8hf8; / “7“4h8 : sm_seg = 8h80; / “8“4h9 : sm_seg = 8h90; / “9“default : sm_seg = 8hff; / “x“endcaseendalways(posedge clk)clkdiv=clkdiv+17d1;Endmodule/module clk_gen(input clk,input en,input bt0,input bt1,input bt2,input bt3,output reg sec,o

7、utput 3:0 num0,output 3:0 num1,output 3:0 num2,output 3:0 num3);reg25:0 ctr;reg3:0 mytime3:0;reg7:0 s;assign num0=mytime0;assign num1=mytime1;assign num2=mytime2;assign num3=mytime3;always(posedge clk)4beginctr=ctr+26d1;if(ctr=25000000-1)beginctr=0;sec=sec;endend/wire sen;/assign sen=(sec)|(bt0)|(bt

8、1)|(bt2)|(bt3);always(negedge sec)if(!en)beginif(bt0)beginmytime0=mytime0+4d1;if(mytime0=9) mytime0=0;endelse if(bt1)beginmytime1=mytime1+4d1;if(mytime1=5) mytime1=0;endelse if(bt2)beginmytime2=mytime2+4d1;if(mytime2=9) mytime2=0;endelse if(bt3)beginmytime3=mytime3+4d1;if(mytime3=2) mytime3=0;endend

9、elsebegins=s+1;if(s=59)5begins=0;mytime0=mytime0+4d1;if(mytime0=9)beginmytime0=0;mytime1=mytime1+4d1;if(mytime1=5)beginmytime1=0;mytime2=mytime2+4d1;if(mytime3=2 mytime3=0; endif(mytime2=9)beginmytime2=0;mytime3=mytime3+4d1;endendendendendEndmodule约束文件NET “clk“ LOC = “B8“; NET“seg0“ LOC=“L14“;NET“se

10、g1“ LOC=“H12“;NET“seg2“ LOC=“N14“;NET“seg3“ LOC=“N11“;NET“seg4“ LOC=“P12“;NET“seg5“ LOC=“L13“;NET“seg6“ LOC=“M12“;NET“seg7“ LOC=“N13“;NET “digit0“ LOC = “F12“; NET “digit1“ LOC = “J12“; NET “digit2“ LOC = “M13“; 6NET “digit3“ LOC = “K14“;NET “key4“ LOC = “A7“; # Bank = 2, Signal name = BTN3NET “key3

11、“ LOC = “M4“; # Bank = 2, Signal name = BTN2NET “key2“ LOC = “C11“; # Bank = 2, Signal name = BTN1NET “key1“ LOC = “G12“; # Bank = 2, Signal name = BTN0NET “en“ LOC = “P11“; # Bank = 2, Signal name = sw0NET “sec“LOC=“M5“;测试代码module clock(input clk,input en,input key1,input key2,input key3,input key4

12、,output sec,output wire7:0 seg,output wire3:0 digit);wire3:0 num0,mum1,num2,num3;disp u0(clk,num0,mum1,num2,num3,seg,digit);clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,num3);endmodule/module disp(input clk,input 3:0 num0,input 3:0 num1,input 3:0 num2,input 3:0 num3,output reg7:0 sm_seg,

13、output reg3:0 an);reg1:0 s;reg3:0 digit;reg16:0 clkdiv;always(*)begin7an=4b1111;s=clkdiv16:15;ans=0;case(s)0:digit=num0;1:digit=num1;2:digit=num2;3:digit=num3;default:digit=num0;endcasecase(digit)4h0 : sm_seg = 8hc0; / “0“4h1 : sm_seg = 8hf9; / “1“4h2 : sm_seg = 8ha4; / “2“4h3 : sm_seg = 8hb0; / “3“

14、4h4 : sm_seg = 8h99; / “4“4h5 : sm_seg = 8h92; / “5“4h6 : sm_seg = 8h82; / “6“4h7 : sm_seg = 8hf8; / “7“4h8 : sm_seg = 8h80; / “8“4h9 : sm_seg = 8h90; / “9“default : sm_seg = 8hff; / “x“endcaseendalways(posedge clk)clkdiv=clkdiv+17d1;Endmodule/module clk_gen(input clk,input en,input bt0,input bt1,in

15、put bt2,input bt3,output reg sec,output 3:0 num0,output 3:0 num1,output 3:0 num2,output 3:0 num3);8reg25:0 ctr;reg3:0 mytime3:0;reg7:0 s;assign num0=mytime0;assign num1=mytime1;assign num2=mytime2;assign num3=mytime3;always(posedge clk)beginctr=ctr+26d1;if(ctr=25000000-1)beginctr=0;sec=sec;endend/wi

16、re sen;/assign sen=(sec)|(bt0)|(bt1)|(bt2)|(bt3);always(negedge sec)if(!en)beginif(bt0)beginmytime0=mytime0+4d1;if(mytime0=9) mytime0=0;endelse if(bt1)beginmytime1=mytime1+4d1;if(mytime1=5) mytime1=0;endelse if(bt2)beginmytime2=mytime2+4d1;if(mytime2=9) mytime2=0;endelse if(bt3)beginmytime3=mytime3+

17、4d1;if(mytime3=2) mytime3=0;9endendelsebegins=s+1;if(s=59)begins=0;mytime0=mytime0+4d1;if(mytime0=9)beginmytime0=0;mytime1=mytime1+4d1;if(mytime1=5)beginmytime1=0;mytime2=mytime2+4d1;if(mytime3=2 mytime3=0; endif(mytime2=9)beginmytime2=0;mytime3=mytime3+4d1;endendendendendendmodule六、 实验总结:将程序下载到 BASYS2 板子上后,能够实现简易数字钟的功能,可以看到 LED 灯闪一下,4 个数码管实现了数字钟小时和分钟的显示,而且通过开关控制可以将六位二进制数赋值给小时或分钟位,实现校表的功能。本次多功能数字钟设计实验,从刚开始对 Verilog 语言非常陌生,到最后接近熟练地掌握 Verilog 语言的程度,期间花费不少时间和精力,同时也收获了很多,学会了使用 Verilog语言编程仿真电路实验,熟悉了 Verilog 语言中的模块化设计方法,对于设计一个简单的数字系统有了初步的了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报