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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数字时钟报告.docx

1、数字时钟报告EDA设 计 课 程 实 验 报 告 实 验 题 目: 数字时钟 学 院 名 称: 专 业: 班 级: 姓 名: 高胜 学 号 小 组 成 员: 指 导 教 师: 一、 实验目的学习数字时钟的设计原理。二、 设计任务及要求利用QuartusII软件设计一个数字钟,对设计电路进行功能仿真,并下载到SmartSOPC实验系统中,可以完成00-00-00到23-59-59的计时功能,并在控制电路的作用下具有保持和清零功能,做到能够创新的添加自己能够实现的功能,例如快速校时、快速校分、整点报时等。三、 系统设计1、整体设计方案 一个完整的时钟应由3部分组成:秒脉冲发生电路、计数显示部分和时

2、钟调整部分。一个时钟的准确与否主要取决秒脉冲的准确度。为了保证计时准确,对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。数字计钟是由秒脉冲发生电路、计数显示部分和时钟调整这3个部分基本电路组成的。 数字计钟的系统框图(见图1): 图1 数字计钟的系统框图 2、功能模块电路设计 秒脉冲发生电路将分频后的脉冲输入,时钟调整电路进行响应,使数码管显示*-*-*的时间格式,并且每次脉冲使数码管实现计时功能,从00-00-00计时到23-59-59.(1) 系统模块框图(见图2)图2 系统模块框图(2) 模块逻辑表达数码管选择真值表(见表一): 表一 选择数码管真值表数码管显示位

3、真值表(见表二): 表二 数码管显示位真值表译码真值表(见表三): 表三 译码真值表(3)算法流程图(见图3) N Y 图3 算法流程图(4)Verilog源代码module clock(clk,key,dig,seg); /模块名clockinput clk; /输入时钟input1:0 key; /输入按键output7:0 dig; /数码管选择输出引脚output7:0 seg; /数码管段输出引脚reg7:0 seg_r; /定义数码管输出寄存器reg7:0 dig_r; /定义数码管选择输出寄存器reg3:0 disp_dat; /定义显示数据寄存器reg24:0count; /定

4、义计数寄存器reg23:0hour; /定义现在时刻寄存器reg sec,keyen; /定义标志位reg1:0dout1,dout2,dout3; /寄存器wire1:0key_done; /按键消抖输出assign dig = dig_r; /输出数码管选择assign seg = seg_r; /输出数码管译码结果 /秒信号产生部分always (posedge clk) /定义clock上升沿触发begin count = count + 1b1; if(count = 25d24000000) /0.5S到了吗? begin count = 25d0; /计数器清零 sec = se

5、c; /置位秒标志 endend/按键消抖处理部分assign key_done = (dout1 | dout2 | dout3); /按键消抖输出always (posedge count17)begin dout1 = key; dout2 = dout1; dout3 = dout2; endalways (negedge key_done0)begin keyen = keyen; /将琴键开关转换为乒乓开关end/数码管动态扫描显示部分always (posedge clk) /count17:15大约1ms改变一次begin case(count17:15) /选择扫描显示数据

6、3d0:disp_dat = hour3:0; /秒个位 3d1:disp_dat = hour7:4; /秒十位 3d2:disp_dat = 4ha; /显示- 3d3:disp_dat = hour11:8; /分个位 3d4:disp_dat = hour15:12; /分十位 3d5:disp_dat = 4ha; /显示- 3d6:disp_dat = hour19:16; /时个位 3d7:disp_dat = hour23:20; /时十位 endcase case(count17:15) /选择数码管显示位 3d0:dig_r = 8b11111110; /选择第一个数码管显

7、示 3d1:dig_r = 8b11111101; /选择第二个数码管显示 3d2:dig_r = 8b11111011; /选择第三个数码管显示 3d3:dig_r = 8b11110111; /选择第四个数码管显示 3d4:dig_r = 8b11101111; /选择第五个数码管显示 3d5:dig_r = 8b11011111; /选择第六个数码管显示 3d6:dig_r = 8b10111111; /选择第七个数码管显示 3d7:dig_r = 8b01111111; /选择第八个数码管显示 endcase endalways (posedge clk)begin case(disp

8、_dat) 4h0:seg_r = 8hc0; /显示0 4h1:seg_r = 8hf9; /显示1 4h2:seg_r = 8ha4; /显示2 4h3:seg_r = 8hb0; /显示3 4h4:seg_r = 8h99; /显示4 4h5:seg_r = 8h92; /显示5 4h6:seg_r = 8h82; /显示6 4h7:seg_r = 8hf8; /显示7 4h8:seg_r = 8h80; /显示8 4h9:seg_r = 8h90; /显示9 4ha:seg_r = 8hbf; /显示- default:seg_r = 8hff; /不显示 endcase if(cou

9、nt17:15= 3d2)&sec) seg_r = 8hff;end/计时处理部分always (negedge sec or negedge key_done1)/计时处理begin if(!key_done1) /是清零键吗? begin hour = 24h0; /是,则清零 end else if(!keyen) begin hour3:0 = hour3:0 + 1b1; /秒加1 if(hour3:0 = 4ha) begin hour3:0 = 4h0; hour7:4 = hour7:4 + 1b1; /秒的十位加一 if(hour7:4 = 4h6) begin hour7

10、:4 = 4h0; hour11:8 = hour11:8 + 1b1;/分个位加一 if(hour11:8 = 4ha) begin hour11:8 = 4h0; hour15:12 = hour15:12 + 1b1;/分十位加一 if(hour15:12 = 4h6) begin hour15:12 = 4h0; hour19:16 = hour19:16 + 1b1;/时个位加一 if(hour19:16 = 4ha) begin hour19:16 = 4h0; hour23:20 = hour23:20 + 1b1;/时十位加一 end if(hour23:16 = 8h24)

11、hour23:16 = 8h0; end end end end endendendmodule四、 系统调试1、仿真调试 (1)仿真代码位码代码仿真: timescale 1ns/1ns module smg_tp; /测试模块的名字 reg 2:0 c; /测试输入信号定义为reg型 wire7:0 dig; /测试输出信号定义为wire型 parameter DELY=100; /延时100秒 wei u1(c,dig); /调用测试对象 initial begin /激励波形设定 c=3b0; #DELY c=3b001 ; #DELY c=3b010 ; #DELY c=3b100

12、; #DELY c=3b101 ; #DELY c=3b110 ; #DELY c=3b111 ; #DELY $finish; end initial $monitor($time,dig=%d,c=%b ,dig,c); /输出格式i定义 endmodule module wei(c,dig); /命名模块名字 input2:0 c; output7:0 dig; /定义输入与输出 reg7:0 dig_r; reg2:0 c_r; / 定义dig_r与c_r2个reg型数据 assign dig=dig_r; /将reg型数据转化为wire型数据 always (*) /检测c_r的数据

13、是否变化 begin c_r=c; case (c_r) 3b000:dig_r=8b11111110; /c_r的数据变化而dig_r对于的数据变化 3b001:dig_r=8b11111101; 3b010:dig_r=8b11111011; 3b011:dig_r=8b11110111; 3b100:dig_r=8b11101111; 3b101:dig_r=8b11011111; 3b110:dig_r=8b10111111; 3b111:dig_r=8b01111111; default: dig_r=8b11111111; endcase /结束case语句 end /结束alwa

14、ys语句 endmodule /结束程序译码器代码仿真: timescale 1ns/1ns module duan_tp; /测试模块的名字 reg3:0 a; /测试输入信号定义为reg型 wire7:0 seg; /测试输出信号定义为wire型 parameter DELY=100; /延时100秒 duan u1(a,seg); /调用测试对象 initial begin /激励波形设定 a=4b0; #DELY a=4b0001; #DELY a=4b0010; #DELY a=4b0011; #DELY a=4b0100; #DELY a=4b0101; #DELY a=4b011

15、0; #DELY a=4b0111; #DELY a=4b1000; #DELY a=4b1001; #DELY a=4b1010; #DELY a=4b1011; #DELY a=4b1100; #DELY a=4b1101; #DELY a=4b1110; #DELY a=4b1111; #DELY $finish; end initial $monitor($time,seg=%d,a=%b,seg,a); /输出格式i定义 endmodule module duan(a,seg); /命名模块名字 input3:0 a; output7:0 seg; /定义输入与输出 reg7:0 s

16、eg_r; reg3:0 a_r; / 定义seg_r与a_r2个reg型数据 assign seg=seg_r; /将reg型数据转化为wire型数据 always (*) /检测c_r的数据是否变化 begin a_r=a; case(a_r) /七段译码 4b0000:seg_r = 8hc0; /显示0 4b0001:seg_r = 8hf9; /显示1 4b0010:seg_r = 8ha4; /显示2 4b0011:seg_r = 8hb0; /显示3 4b0100:seg_r = 8h99; /显示4 4b0101:seg_r = 8h92; /显示5 4b0110:seg_r

17、= 8h82; /显示6 4b0111:seg_r = 8hf8; /显示7 4b1000:seg_r = 8h80; /显示8 4b1001:seg_r = 8h90; /显示9 4b1010:seg_r = 8h88; /显示a 4b1011:seg_r = 8h83; /显示b 4b1100:seg_r = 8hc6; /显示c 4b1101:seg_r = 8ha1; /显示d 4b1110:seg_r = 8h86; /显示e 4b1111:seg_r = 8h8e; /显示f endcase /结束case语句 end /结束always语句 endmodule /结束程序(3)仿真波形图位码代码仿真图(见图4) 图4 位码代码仿真波形 译码器代码仿真图(见图5) 图5 译码器代码仿真波形3.波形分析 从仿真图可以看出程序是正确的。2、实际调试(1)测试条件、管脚分配引脚分配(见图6) 图6 管脚分配图(2)测试结果及数据实验箱运行开始运行时数码管显示00-00-00,并且在之后开始计时,同时数码管显示开始变化00-00-01,00-00-02,.。五、 实验感想

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

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