ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:143.59KB ,
资源ID:6402201      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6402201.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多功能数字钟设计实验报告 Xilinx EDA Basys2 华中科技大学 HUST.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、多功能数字钟设计实验报告 Xilinx EDA Basys2 华中科技大学 HUST 多功能数字钟设计实验报告 院系:电子与通信工程学院 姓名:* 班级:1301 学号:U* 指导教师:*一、实验目标掌握可编程逻辑器件的应用开发技术 设计输入、编译、仿真和器件编程熟悉EDA软件使用掌握Verilog HDL设计方法 分模块、分层次数字系统设计 二、实验内容要求基本功能能显示小时、分钟、秒钟(时、分用显示器,秒用LED)能调整小时、分钟的时间提高要求任意闹钟;(1分)小时为12/24进制可切换(1分)报正点数(几点钟LED闪烁几下)(1分)三、实验条件Xilinx工程环境,win7操作系统,BA

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

3、扩展。本实验采用Verilog HDL进行描述,然后用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,temp,change,AMTM,dingdong); output 7:0 Hou

4、r,Minute,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,Min

5、ute,Second; 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

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

7、MinH_EN,clk); /产生小时计数器使能信号。Adj_Hour=1,校正小时;Adj_Hour=0,小时正常计时 assign Hour_EN=Adj_Hour?Vdd:(Minute=8h59)&(Second=8h59);/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) begin

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

9、nCR) scan=2b00; else if(scan=2b11) scan=2b00; else scan=scan+1b1; end /扫描 always (scan1:0) begin case(scan1:0) 2b00: Light=4b0111; 2b01: Light=4b1011; 2b10: Light=4b1101; 2b11: Light=4b1110; endcase end/显示数字 always (scan1:0) begin case(scan1:0) 2b00: temp=Hour7:4; 2b01: temp=Hour3:0; 2b10: temp=Minu

10、te7:4; 2b11: temp=Minute3:0; endcase end always (temp) begin case(temp) 4d0:number=7b0000001; /0 4d1:number=7b1001111; /1 4d2:number=7b0010010; /2 4d3:number=7b0000110; /3 4d4:number=7b1001100; /4 4d5:number=7b0100100; /5 4d6:number=7b0100000; /6 4d7:number=7b0001111; /7 4d8:number=7b0000000; /8 4d9

11、:number=7b0000100; /9 default:number=7b0000001; endcase end endmodulemodule 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) begin if(ncr) begin

12、 dingdong=0; end else if(minuteh=4d5)&(minutel=4d9) begin i=0; en=1; end else if(i(hourh*20+hourl*2)&(en) begin dingdong=dingdong; i=i+1; end else if(i=(hourh*20+hourl*2) en=0; else dingdong=0; end endmodulemodule counter10(Q,nCR,EN,CP); output 3:0 Q; input CP; input nCR; input EN; reg 3:0 Q; always

13、 (posedge CP or negedge nCR) begin if(nCR) Q=4b0000;/nCR=0,计数器被异步清零 else if(EN) Q=Q;/EN=0,暂停计数 else if(Q=4b1001) Q=4b0000; else Q=Q+1b1;/计数器增加1 endendmodulemodule 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) begin if(nCR) Q=4b0000;

14、 else if(EN) Q=Q; else if(Q=4b0101) Q=4b0000; else Q=Q+1b1; endendmodulemodule 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) begin if(nCR) CntH,CntL=8h00

15、;/清零 else if(change=0)/判断12或者24小时进制。change=0时为24进制,change=1时为12进制 begin AMTM=0;/上下午显示关闭if(EN) CntH,CntL4b0010)|(CntL4b1001)|(CntH=4b0010)&(CntL=4b0011) CntH,CntL=8h00; else if(CntH=4b0010)&(CntL4b0011) begin CntH=CntH; CntL=CntL+1b1; end else if(CntL=4b1001) begin CntH=CntH+1b1; CntL=4b0000; end els

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

17、tL+1b1; end else if(CntL=4b1001) begin CntH=CntH+1b1; CntL=4b0000; end else begin CntH=CntH; CntL=CntL+1b1; end end end/12进制小时计数完成 end endmodule4.仿真波形Counter10:Counter6:Counter24:24进制时:12进制时:总体波形: 注:number,temp等没有显示,change=0,即仿真波形为24进制。五、调试过程1.调试步骤首先设置引脚接口,其代码如下:引脚代码:NET Light0 LOC = F12;NET Light1

18、LOC = J12;NET Light2 LOC = M13;NET Light3 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;N

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1