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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

FPGA设计多功能数字闹钟Word文件下载.docx

1、 begin Count = 0; clk_1Hz = clk_1Hz; end else= Count+1b1;endendmodule -测频控制器,使得频率计能自动测频module testctl(clkk,cnt_en,rst_cnt,load); input clkk; / 1HZ output cnt_en; output rst_cnt; output load; reg div2clk; wire cnt_en; reg rst_cnt; wire load; always(posedge clkk) div2clk=div2clk; always (clkk or div2c

2、lk) begin if(!clkk & !div2clk) rst_cnt=1 else rst_cntb0; end assign load = div2clk; assign cnt_en = div2clk; endmodule(参考FPGA实验5,仿真见实验5中)2、功能选择模块当mode0为0时,选择校时模块;当mode0为1时,选择计时和闹铃模块。module mode(mode0,m); input mode0; output 1:0m; reg 1: always (mode0) begin case(mode0) 1b0:m=2b00; /选择校时功能b1:b11; /选择

3、计时和闹铃功能 default: endcaseendmodule仿真波形图3、60进制计数模块当秒脉冲clk1_1作为控制信号时,进行计时功能;当手动按键生成的方波信号clk1作为控制信号时,进行校时功能。当计数满60时进位,并重新开始计数。module jishu_60(sel1,clk1,clk1_1,rst,out1,co); input clk1,clk1_1,rst; input sel1; output7:0out1; output co;reg7: reg co; wire clk0; /*选择控制信号是秒脉冲信号clk1_1还是手动按键生成的方波信号clk1*/ assign

4、 clk0=(sel1=0)?clk1:clk1_1; always (posedge clk0 or negedge rst) rst) out1=8 /清零 else begin if(out1=8h59) begin out1 /满60后清零,让其重新计数 co /进位 end else begin if(out13:0=4b1001) begin out13:0=4b0000; out17:4=out17:4+1 /高位计数 end else out13:=out13:0+1 /低位计数 end 4、24进制计数模块当分的进位clk2_2作为控制信号时,进行计时功能;当手动按键生成的方

5、波信号clk2作为控制信号时,进行校时功能。当计数满24时清零,并重新开始计数。module jishu_24 (sel2,clk2,clk2_2,rst,out2); input sel2,rst; input clk2,clk2_2; output 7:0out2; reg 7: /*选择控制信号是分进位信号clk2_2还是手动按键生成的方波信号clk2*/ assign clk0=(sel2=0)?clk2:clk2_2; always (posedge clk0 or negedge rst) out2=0; if(out2=8h23) out2 else if(out23: out2

6、3: out27:=out27:4+1; /时高位计数 end=out23:0+1; /时低位计数 end5、锁存模块 当sel4为0时,选择clk3信号(手动按键取反产生);否则选择clk4信号(秒脉冲取反产生)。当控制信号的上升沿时,将计数器的值进行锁存。module reg3(sel4,clk3,clk4,cq,led); input sel4; input clk3,clk4; input 7:0cq;0led; /*选择控制信号是秒脉冲取反产生的clk4还是手动按键取反生成的方波信号clk3*/ assign clk0=(sel4=0)?clk3:clk4; always(posed

7、ge clk0) led=cq; /锁存6校时模块 拨动电平开关mode1,选择对时、分、秒进行校时。当手动进行按键时产生方波信号key1作为校时时计数器的输入信号,使计数器计数,从而达到校时的目的。源程序module check(mode1,key1,Q1,Q2); input 2:0mode1; input key1; output 2:0Q1,Q2; reg 2: always (mode1 or key1) /当mode1或key1任意一个改变时,触发always模块 case(mode1) 3b001: begin /产生秒校时的控制信号 if(key1=1) Q10=1; else

8、 endb010: begin /产生分校时的控制信号 Q11 end b100: begin /产生时校时的控制信号 Q12 default:Q1=3 end always (Q1) Q2=Q1; /对Q1取反,产生锁存器的控制信号7、定时模块 当手动产生的控制信号key2上升沿时,若sel3为0,对时、分清零;否则进行定时。当mode2为0时,使分定时;当mode2为1时,使时定时。module clk(mode2,key2,sel3,min,hour,nclk); input mode2,key2,sel3;0min,hour; output nclk; reg7: reg nclk;

9、always (posedge key2 or negedge sel3)sel3) min /分清零 hour /时清零 case(mode2) 1 if(min=8 min begin if(min3: min3: min7:=min7: /定时分的高位 min3:=min3: /定时分的低位 if(hour=8 hour if(hour3: hour3: hour7:=hour7: /定时时的高位=hour3: /定时时的低位hour,min=16 endcase always (key2) nclk=key2; /对key2进行取反8、闹铃模块 当定时的时间和计数的时间相等时,c为1,

10、否则c为0。当c为1时,若clk_2H(即500ms的信号)为1时,spkt为高电平;否则spkt为低电平。设定时间到来时发出声音。module songer(clk_2H,A1,A2,B1,B2,spkt); input clk_2H; input7:0A1,A2,B1,B2; output spkt; reg spkt; wire m; assign c=(A1=B1)&(A2=B2); /检查设定时间是否到来always (c) if(c=1) if(clk_2H=1) spkt /将1赋值给spkt,扬声器发出声音 /将0赋值给spkt,扬声器不发声音 spkt9、显示模块 当mode

11、3为2b01时,显示校时和计时的时间;当mode3为2b10时,显示定时的时间。module decl7s(mode3,led1,led2,LD1,LD2); input1:0mode3;0led1,led2; output6:0LD1,LD2; wire6: wire7:0a; parameter i0=4b0000,i1=4b0001,i2=4b0010,i3=4b0011,i4=4b0100, i5=4b0101,i6=4b0110,i7=4b0111,i8=4b1000,i9=4b1001;paramete m0=7b1000000,m1=7b1111001,m2=7b0100100,

12、m3=7b0110000,m4=7b0011001,m5=7b0010010,m6=7b0000010,m7=7b1111100,m8=7b0000000,m9=7b0010000; /*是选择显示校时或计时的时间,还是选择对闹钟进行定时的时间*/ assign a=(mode3=2b01)?led1:(mode3=2b10)?led2:8 assign LD1=(a3:0=i0)?m0:(a3:0=i1)?m1:0=i2)?m2:0=i3)?m3:0=i4)?m4:0=i5)?m5:0=i6)?m6:0=i7)?m7: (a3:0=i8)?m8:0=i9)?m9:m0; assign LD2=(a7:4=i0)?(a7:4=i1)?4=i2)? (a7:4=i3)?4=i4)?4=i5)? 实验心得:这次综合性的实验大部分是在查阅资料和在别人的讲解下完成的,虽然有些方法很不好,不过大部分的原理和应该怎样去编写硬件程序有了很深的认识。让自己增长了很多知识,希望在以后的学习过程中能够更加深入理解,在每个模块之间的使用和连接是很重要的这次实验最后原理图综合没有通过,存在一些问题,可能是在顶层模块中出现了问题,只有每个模块都能正常工作,在顶层模块调用中才比较好的使用,这次优化方面也没有去考虑,这次实验只是一个起点,以后将不断改进。

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

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