资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计任务书学生:王博弈专业班级:通信gj1OO1指导教师:黄 铮工作单位:理工大学题目:初始条件:要求学生已完成通信专业各主干课程的学习,通过本课设进一步掌握专业课程群的综合原理、操作技能,形成基本的解决实践问题的知识体系,提高学生对现代通信系统的全面认识。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1阅读verilog 语言相关数据2. 完成数字钟功能分析3. 编写各个模块 verilog 代码4. 综合、编译5. 通过仿真波形和 RTL验证功能6. 完成说明书撰写时间安排:2014年1月 6日布置任务;2014年1月 7 日- 10日 查阅资料,确定设计方案;2014年1月11 日- 16日完成仿真、制作实物等;2014年1月17日完成答辩。指导教师签名:系主任(或责任教师)签名:目录摘要 . 4Abstract . 51 综述 62 分频模块设计 62.1 分频模块 verilog 代码 62.2 代码分析 82.2.1 信号定义 82.2.2 功能分析 82.3 仿真 93 校时模块设计 103.1 校时模块代码 103.2 代码分析 103.2.1 信号定义 103.2.2 功能分析 113.3 仿真 114 计时处理模块设计 134.1 计时处理模块代码 134.2 代码分析 144.2.1 信号定义 144.2.2 功能分析 144.3 仿真 155 显示模块设计 165.1 显示模块代码 165.2 代码分析 185.2.1 信号定义 185.2.2 功能分析 185.3 仿真 196 顶层模块设计 206.1 顶层模块代码 206.2 代码分析 206.2.1 信号定义 207 总结 21参考文献 . 21附录 verilog 代码清单 23(一)分频模块. 23(二)校时模块. 24(三)计时处理模块 25(四)显示模块. 26(五)顶层模块. 29摘要本设计运用所学的 verilog 语言设计一个数字钟,实现基本计时、校时功能。Verilog语言是用来进行FPGA项目开发的标准程序语言,不同于c语言的是,verilog 语言是一种硬件编程语言。语句通过综合器综合出来的器件之间的连接关系来实现功能。 运用FPGA进行项目开发,相比于运用传统的数字电子技术开发具有速度快、效率高、容 易修改和调试等优点。故本设计采用了硬件编程语言进行数字钟的设计, 通过设计实现了数字钟的基本功能, 碍于硬件条件限制无法获取FPGA芯片或开发板,本设计在quartus2开发环境下进行仿真 验证功能。AbstractThe use of design verilog language learned to design a digital clock, basic time, school functions.Verilog language is a standard programming language used for FPGAdevelopment projects, unlike the c language is, verilog language is a hardware programming language. Statement to implement the functions by connecting the synthesizer integrated relationship between devices out. Using FPGA project development, compared to the use of traditional digital electronic technology development with high speed, high efficiency, easy to modify and debug advantages.Therefore, the design uses a digital clock hardware programming language design, by designing the basic functions of digital clock, due to hardware constraints can not obtain FPGAchip or board, the design in quartus2 development environment for simulation functions.1 综述一个完整的时钟应该由五部分组成:秒脉冲发生电路、计数处理模块、显示模块、校 时模块和报时模块。由于本设计并没有硬件实现条件(无FPGA芯片或开发板),故省略报时模块的设计。故本设计将围绕分频模块、校时模块、计时处理模块、显示模块和顶层设 计模块来讲述,其中显示模块以 DE2开发板的数码管为硬件连接进行设计,在实际应用中 可根据相应电路进行数码管显示参数微调即可。一个时钟的准确与否主要取决于秒脉冲的精确度,为了保证设计准确,本设计以常用 的24MHz晶振作为时钟源进行分频从而得打1Hz的秒脉冲。分频获得正常即使信号sec_1(1Hz)、校秒信号sec_s、校分信号sec_m和校时信号sec_h。色丁四个键:正常/校 时模式选择键keysel、校秒键key_s、校分键key_m 校时键key_h,通过这四个键可用 于控制时钟的正常计时、校时。除了校时电路以外,还要完成暂停和清零功能。2 分频模块设计2.1 分频模块 verilog 代码module divclk ( clk , sec_1, sec_s, sec_m, sec_h );input clk ;output sec_1, sec_s, sec_m, sec_h ;reg 23: 0 count1 ;reg 22: 0 count2 ;reg 19: 0 count3 ;reg 12: 0 count4 ;reg sec_1, sec_s, sec_m, sec_h;always( negedge clk )begincount1 = count1 + 1;if( count1 = 24d12582912 ) begincount1 = 25h0; sec_1 = sec_1; end end always( negedge clk ) begincount2 = count2 + 1;if( count2 = 23d6291456 ) begincount2 = 24h0; sec_s = sec_s;endend always( negedge clk ) begincount3 = count3 + 1;if( count3 = 20d629146 ) begincount3 = 21h0;sec_m = sec_m;endend always( negedge clk )begincount4 = count4 + 1;if( count4 = 13d6292 ) begin count4 = 16h0; sec_h = sec_h;endend endmodule2.2 代码分析2.2.1 信号定义Clk :基准时钟信号输入Sec_1:周期为1秒的信号输出Sec_s:周期为0.5秒的信号输出Sec_m周期为0.01秒的信号输出Sec_h:周期为0.0005秒的信号输出2.2.2 功能分析分频的关键在于设置不同进位规则的计数器。 模块开始定义了 count1 、count2 、count3 、 count4位宽不同的寄存器,分别用于四种输出信号的计数。以1s信号输出为例,在always 引导的过程语句中设置了 negedge clk 条件,即当时钟下降沿到来时执行 always 块中的 语句,即count1计数器加1,然后通过if语句判断countl是否到达24 d12582912,即 是否达到0.5s。若达到则清零计数器并将sec_1取反。通过上述过程便实现了将24Mz信号分频成1Hz秒信号的目的。另外三种信号的产生机 制与秒信号一样,只是改变了计数器的围2.3仿真由于verilog 硬件编程语言的特性,需要综合出多个计数器和计数过程,对24MHz分频成1Hz的仿真耗时太久,故本设计采用 RTL图方式来分析结果。法器实现加1操作,结果送入一个等号判断器,当判断结果为真时使能寄存器,输出结果。通过RTL图分析设计符合功能要求3 校时模块设计3.1 校时模块代码module modify( clk, keysel, key_s, key_m, key_h, sec_1, sec_s, sec_m, sec_h, sec ); input clk, keysel, key_s, key_m, key_h;input sec_1, sec_s, sec_m, sec_h;output sec;reg sec;always( negedge clk )begin if(!keysel) begin if(!key_s) sec = sec_s;if(!key_m) sec = sec_m;if(!key_h) sec = sec_h;endelsesec = sec_1;end endmodule3.2 代码分析3.2.1 信号定义Clk :基准时钟信号输入Keysel :校时状态 / 正常计时状态选择键输入Key_s:校秒信号选择键输入Key_m校分信号选择键输入Sec_1:周期为1s的信号输入Sec_s:周期为0.5秒的信号输入Sec_m周期为0.01秒的信号输入Sec_h:周期为0.0005秒的信号输入Sec:计时信号输出3.2.2功能分析校时模块有always弓I导的过程块构成,在时钟下降沿到来时执行操作。通过if语句判断按键keysel状态,低电平则进入其,继续判断是否为 key_s,、key_m key_h中的 任何一个,若是则将相应的校时信号赋值给 sec计时信号输出。若keysel为高电平则不 进行校时。通过上述语句块便可以实现校时/正常计时状态切换以及校时输入功能。3.3仿真图3-1仿真结果上图为方正结果图,可以看出sec信号在对应的各个功能按键按下的过程中均进行了 对应的变化。以16us左右key_h被置为低电平,此时sec_h信号被幅值给sec,可以看到 sec在这个时间段的频率和相位与 sec_h 一致,说明校时成功。为了保证设计的严谨性,本设计在时序分析成功的条件下给出RTL图4 计时处理模块设计4.1 计时处理模块代码module counttime( sec, keyclr, keyen, min );input sec;input keyclr, keyen; output23:0 min;reg23:0 min;always(posedge sec)b
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号