资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于基于 FPGA 的多功能时钟的多功能时钟 设计报告设计报告专业:电子与信息工程系专业:电子与信息工程系班级:通信班级:通信 11 级级 01 班班学号学号:u201113247电 子 与 信 息 工 程 系2012 年 8 月 4 日- 1 -目录设计目的.2设计内容及要求.2设计(代码)分析.3实验过程及步骤.4实验结果的测试及仿真10实验总结.13参考文- 2 -献.13附录(原代码).141 设计目的在学习 verilog 语言及数电的相关知识后,运用所学知识及查阅资料完成对多功能时钟的设计,以巩固以前所学知识,提高解决和分析问题的能力以及掌握稍复杂逻辑电路的设计方法;深刻理解verilog语言的思路,并进一步掌握操作 BASYS2 板的使用;掌握计数器的设计方法,模块之间的协调方式,了解电路设计层次。2 设计内容及要求多功能时钟设计分为基本电路部分和拓展功能部分和特色部分。 基本电路部分 以数字形式显示时、分、秒的时间;(要求可切换显示) 小时计数器为同步 24 进制;(同步计数器)- 3 - 可精确手动校时,包括小时,分钟,秒;设有按钮,每按一次相应按钮可使对应的时间循环改变,以校时用 手动校时时,长按按钮可加速校时速度手动校时时,长按按钮可加速校时速度。 拓展部分 可设定 24 小时任意时刻闹钟(精确到秒),设定按钮与校时按钮共用。设有闹钟开关键 整点报时 59 分 51 秒 59 分 53 秒 59 分 55 秒 59 分 57 秒 led7:4流水灯式依次点亮以模仿电台播音流水灯式依次点亮以模仿电台播音 (频率为 1HZ) 59 分 59 秒时 led 灯 led3点亮 频率为 10HZ 特色部分 stopwatchstopwatch可储存记忆 10 组 59 分 59 秒 99 内时间数据的秒表。可显示记录的数据个数和对应顺序精确到 1/100 秒设有 swo(秒表模式开启键) K3swp(暂停键) L3scrl(数据控制键)B4Ncr(清零复位键) A7 counter(记录数据键) M4 - (数据加键) C11+ (数据减键)G12- 4 -Switch (显示切换键)-P113 代码分析 top_clock总共分为顶层和底层 顶层 top.v计时部分:调用底层模块 10 位计数器 6 位计数器 3 位计器4*6=24 位寄存器 cnt23:0 Cnt3:0 second0 cnt7:4 second1 Cnt11:8 minute0 cnt15:12 minute1 Cnt19:16 hour0 cnt23:20 hour1校时部分:设计为信号选择器 ad=1 时为计时模式,信号为校时信号ad =0 时 为正常计时模式 数据显示部分: 设有切换 switch 端 数码管扫描自动扫描 1KHZ 4*8=32 位寄存器 Temp31:0 分为校时模式显示 ad=1 set=0 swo=0 - cnt 闹钟设置模式显示 ad=0 set=1 swo=0- cnt1 秒表计时模式显示 ad=0 set=0 swo=1- cnt2 正常走时模式显示 其余- cnt底层部分 计数器 counter10.v counter6.v counter3.v/ counter10.v(09)module counter10(en,ncr,clk,q);input en,ncr,clk;output 3:0 q;reg 3:0 q;always(posedge clk )beginif(ncr) q闹铃(led 灯 )开关 闹铃响时 M11 M5 亮灯以 10MHZ 闪 烁闹铃设定 ad=0 set=1 swo=0设置方法和校时方法共用键(A7 M4 C11 G12)方法相同 (4) 秒表模式 ad=0 set=0 swo=1 (swp) 暂停键 低电平有效 A7 清零键 (包括数据清零) M4 记录数据键 每按一次 记录一个时间数据(59 分 59 秒 99 以内) 可记录 10 组数据 并可显示当前数据的序号 Switch=0 时 显示 C 数据序号 分 分Switch=1 时 秒 秒 0.1 秒 0.01 秒 C11 () 数据减键 序号循环减一 最小为 1 G12(+) 数据加键 序号循环加一 最大为 9 序号即为数据记录 的顺序 (5) 其他按法 皆为正常走时模式6 实验总结通过多功能时钟的设计过程,我深刻的感觉到复杂电路设计的思路和方法 特别重要,好的方法不仅省时省力,也可使程序运行更稳定快速高效。此次的 多功能时钟分为好几个大的模块, 怎样能恰当好处的连接这些模块是需要经验的,通过这次试验我也初步积 累到了一些经验:端口尽量不要太多,能调用模块尽量调用,可省时省力,模 块与模块之间尽量独立,但又要设置好端口之间的连接,中间变量不宜过多, 但适当的中间变量省下不好麻烦。例如我就设置啦显示的中间变量temp【31:0】 通过不同的模式转换将不同的值赋给 temp 变量,这样显示的代码就可重复使用。 与此同时,在设计中也还有值得改进的地方,就是按钮使用过多,操作方法显 得有些复杂,可以进一步优化改进。遇到的最主要的问题:秒表设计模块中的 1/100 秒在数码管上无法正常快速 显示(由于 led 灯的余辉效应造成) 记录数据时的准确度也就下降 ,人们正常按键时间或大于 0.01 秒 所以秒表的 十分位为准确位 百分位不准确- 14 -7 参考文献【1】Verilog hdl 与数字 asic 设计基础8.4 和 8.5(罗杰主编)(8)附录(源代码)module top(set,ad,swo,swp,switch,bcrl,rcrl,scrl,clk,adj,segs,a,led );input ad,set,swo,bcrl,rcrl,scrl,swp,switch,clk;/定义输入端口input 3:0 adj;output 6:0 segs;/数码管output 3:0 a;/扫描输出output 7:0 led;/led 灯reg 3:0 a;reg 6:0 segs;/shu ma guanreg 31:0 temp;wire 23:0 cnt;/走时模式和校时模式临时变量wire 23:0 cnt1;/闹钟模式临时变量wire 31:0 cnt2;/ 秒表模式临时变量/使能信号initial begina=4b1110;end /chu shi huawire eno,enp1,enp2,enp3,enp4,enp5;in50MHz_out1Hz u0(clk,cp1);/输出频率 1HZin50MHz_out1kHz u7(clk,cp2);/输出频率 1kHZ 扫描信号in50MHz_out10Hz u8(clk,cp3);/输出频率 10HZin50MHz_out100Hz u12(clk,cp4);/100Hzcounter10 u1(en0,0,cp,cnt3:0); /second 个位计数counter6 u2(enp1,0,cp,cnt7:4);/second 十位计数counter10 u3(enp2,0,cp,cnt11:8);/minutes 个位计数counter6 u4(enp3,0,cp,cnt15:12);/minutes 十位计数counter10 u5(enp4,0,cp,cnt19:16);/hours 个位计数counter3 u6(enp5,0,cp,cnt23:20); /hours 十位计数bell u9(switch,set,bcrl,adj,cp3,cnt,cnt1,led1:0);/闹钟模块radio u10(rcrl,cnt15:0,cp1,cp3,led7:3);/仿真报时模块stopwatch u11(swo,scrl,swp,adj,cp4,cp3,cnt2);/秒表模块assign cp= ad?cp3:cp1,en0=(ad)|(switchalways(ad or set or swo) /显示模式选择if(ad)else cl=0;always(negedge clk)if (cl)led4d1) ii) i=i+1d1;else i=i;enddefault i=i;endcaseend else if(enp0 else if(enp0 case(i)4h0: temp1=cnt;4h1: temp2=cnt;4h2: temp3=cnt;4h3: temp4=cnt;4h4: temp5=cnt;4h5: temp6=cnt;4h6: temp7=cnt;4h7: temp8=cnt;4h8: temp9=cnt; endcaseendelse i=i; endmodule- 25 -
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号