




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z.课程设计报告任务书理 工 科 类、课程设计报告题目:实时时钟电路的设计、课程设计论文工作内容一、课程设计目标硬件描述语言是一门技术性、应用性很强的学科,实验课教学是它的一个极为重要的环节。不管理论学习还是实际应用,都离不开实验课教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节、学习与应用脱节的局面。HDL工程设计的目的就是让同学们在理论学习的根底上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认
2、识,为今后能够独立进展*些数字应用系统的开发设计工作打下一定的根底。二、课程设计任务与要求1设计一个数码管实时显示时、分、秒的数字时钟24小时显示模式;2为了演示方便,应具有分钟、小时快进功能;3时、分、秒设置功能选作。三、课程设计考核平时20%;验收40%;报告40%摘要数字钟是人们日常生活中经常使用的计时工具,本次的课程设计是基于Verilog HDL的多功能数字钟,完成时、分、秒的显示功能。设计利用Verilog HDL语言自顶向下的设计理念,突出其作为硬件描述语言的良好的可读性、可移植性以及易于理解等优点。通过Quartus II 5.0和ModelSim SE 6.1f软件完成仿真、
3、综合。程序下载到FPGA芯片后,可用于实际的数字钟显示中。此次设计的逻辑构造主要由分频器、计数器和译码显示器三个模块构成。分频模块将50Mhz系统基准时钟分频产生两路时钟信号,一路是1HZ的数字钟计时工作频率,一路是数码管动态显示的扫描频率;计时模块对1HZ的时钟信号进展计时,分为时、分、秒三个局部;译码显示模块采用动态扫描的方式完成数码管的显示。最后通过主模块调用三个子模块函数完成整个设计。【关键词】硬件描述语言 FPGA 数字钟 动态显示ABSTRACTThe digital clock is often used in Peoples Daily life of the course,
4、the timing tool design is based on the multi-function digital clock Verilog HDL, plete, minutes and seconds display function. Design Verilog HDL language using the top-down design concept, the hardware description language as the good readability and portability and easy to understand, etc. Through
5、the Quartus II 5.0 and ModelSim SE 6.1 f software simulation, and prehensive. Download to FPGA chips can be used after the actual, digital clock shows.The design of the logic structure consists mainly of prescaler, counter and decoding display three modules. 50Mhz system frequency module will produc
6、e benchmark clock clock signal, two 1HZ way is the digital clock frequency, dynamic display of digital tube is scanning. Timer modules for 1HZ clock signal timing, when into three parts, minutes and seconds, Decode display module USES dynamic scanning of the digital display. Through the main module
7、calling three modules function plete the whole design.【Key words】Hardware description language FPGA A digital clock Dynamic display目录 TOC o 1-3 h z u HYPERLINK l _Toc271539628 第一章系统设计 PAGEREF _Toc271539628 h 6 HYPERLINK l _Toc271539629 第一节课题目标及总体方案 PAGEREF _Toc271539629 h 6 HYPERLINK l _Toc271539630
8、 第二节系统模块实现方案比照及实现 PAGEREF _Toc271539630 h 7 HYPERLINK l _Toc271539631 一、分频模块实现方案 PAGEREF _Toc271539631 h 7 HYPERLINK l _Toc271539632 二、计时模块实现方案 PAGEREF _Toc271539632 h 9 HYPERLINK l _Toc271539633 三、译码显示模块的实现 PAGEREF _Toc271539633 h 16 HYPERLINK l _Toc271539634 第三节系统及各模块方框图说明 PAGEREF _Toc271539634 h
9、19 HYPERLINK l _Toc271539635 第二章结果与讨论 PAGEREF _Toc271539635 h 22 HYPERLINK l _Toc271539636 第一节调试现象及解决分析 PAGEREF _Toc271539636 h 22 HYPERLINK l _Toc271539637 一、编写程序过程中出现的语法问题 PAGEREF _Toc271539637 h 22 HYPERLINK l _Toc271539638 二、方案实现过程中出现的问题 PAGEREF _Toc271539638 h 22 HYPERLINK l _Toc271539639 第二节相关
10、数据分析 PAGEREF _Toc271539639 h 24 HYPERLINK l _Toc271539640 第三节系统整体实现 PAGEREF _Toc271539640 h 24 HYPERLINK l _Toc271539641 心得体会 PAGEREF _Toc271539641 h 25 HYPERLINK l _Toc271539642 参考文献 PAGEREF _Toc271539642 h 26 HYPERLINK l _Toc271539643 附录 PAGEREF _Toc271539643 h 27第一章 系统设计第一节 课题目标及总体方案目前,电子系统向集成化、大
11、规模和高速度等方向开展,以硬件描述语言和逻辑综合为根底的自顶向下的电路设计方法得到迅猛开展。本次设计课题目标完成是基于Verilog HDL语言的多功能数字钟的设计,通过数码管实时显示时、分、秒,具有小时和分钟快进功能。设计遵循Verilog HDL语言的设计理念,代码具有良好的可读性和易理解性。系统主要分三个模块实现,分别是分频模块、计数模块、译码显示模块。分频模块用来提供计时电路工作时钟1HZ和数码管动态显示的扫描频率200HZ500HZ,计数模块是对1s信号源进展秒、分、时的计时,译码显示模块是通过控制信号控制八个数码管的位选、段选来实现对译码后的计时信号进展动态显示。主函数通过调用三个
12、子模块来实现整体的系统功能。第二节 系统模块实现方案比照及实现一、分频模块实现方案分频模块用于为系统的实现提供稳定的工作频率和计时信号源,要求产生两路不同频率的信号,分频为1HZ频率的信号作为计时模块的信号源,200HZ的信号用于数码管动态显示的扫描频率。方案一:定义变量并根据需要得到的分频信号设定计数值,对该变量进展加或减计数,每到达一次计数值点,将该变量清零或重置,并且对输出信号取一次反,即可以得到所需的分频信号。parameter C_COUNT=25d500_00_000;/定义变量C_COUNT并给该变量设定计数值点always (posedge clock)beginif(coun
13、ter=0)begincounter=C_COUNT;/减计数到0后对该变量进展重置clkdiv=clkdiv; /对输出信号取反一次endelsecounter=counter-1; /对变量减计数end方案二:定义变量并且设定一个上限值,每次加计数到该上限值时,输出该计数值的最高位parameter DIV_SIZE=25;always(posedge clock)counter=counter+1;assign clkdiv=counterDIV_SIZE-1;方案比拟:方案二能够产生准确的1HZ的频率且在程序实现上较为简单,但在产生数码管动态显示的扫描频率时可调度不如方案一,即在调节2
14、00HZ-500HZ*围内的频率时DIV_SIZE变量的值不便于计算;方案一实现分频信号的设计思路简单易懂,且变量值易于计算和调节。故采用方案一。分频模块的实现:module clkgen (clock,clkdiv,clk500);input clock;output clkdiv;output clk500;reg 31:0 counter1;reg clkdiv;reg clk500;reg 31:0 counter0;parameter C_COUNT0=25d500_00_000;/变量0用于产生1HZ的信号parameter C_COUNT1=25d100_000;/变量1用于产生
15、500HZ的信号/*产生1HZ频率的信号*/always (posedge clock)beginif(counter0=0)begincounter0=C_COUNT0;clkdiv=clkdiv;endelsecounte0=counter0-1;end/*产生500HZ频率的信号*/always (posedge clock)beginif(counter1=0)begincounter1=C_COUNT1;clk500=clk500;endelsecounter1=counter1-1;endendmodule在该程序段中,只要更改变量counter的值,就可以改变输出频率。适当调节c
16、ounter1的值,使得数码管动态显示在一个最正确的显示状态。变量counter的计算方法是:所需要的频率,根据公式counter值=系统基准频率/所需频率即可求得变量值。二、计时模块实现方案计时模块是对1s的信号源进展秒计时,计时满后向上进位的设计思想方案一:计时采用十进制数计时,然后分别对时、分、秒三个数进展取余数、取除数,分别得到三个数的高位和低位always(posedge clkdiv or negedge reset)begin if(!reset)/判断是否为复位信号 begin th=8d0; /将小时信号清零 hH=th/10; /取除操作求得小时信号的高位 hL=th%10
17、; /取余操作求得小时信号的低位 tm=8d0; mH=tm/10; mL=tm%10; ts=8d0; sH=ts/10; sL=ts%10; end else begin if(ts=59) /判断秒钟信号是否计满 begin begin ts=8d0; /秒信号清零 sH=ts/10; sL=ts%10; end begin if(tm=59) /判断分信号是否计满 begin begin tm=8d0; /分信号清零 mH=tm/10; mL=tm%10; end begin if(th=23) /判断小时信号是否计满 begin th=8d0; /小时信号清零 hH=th/10; h
18、L=th%10; end else begin th=th+8d1; hH=th/10; hL=th%10; end end end else begin tm=tm+8d1; mH=tm/10; mL=tm%10; end end end else begin ts=ts+1d1; sH=ts/10; sL=ts%10; end endend方案二:计时分每个信号的上下位进展判断及计时if(sL=9) begin sL=0; if(sH=5) begin sH=0; if(mL=9) begin mL=0; if(mH=5) begin mH=0; if(hL=9) begin hL=0;
19、hH=hH+1; end else if(hL=3&hH=2) begin hL=0; hH=0; end else hL=hL+1; end else mH=mH+1; end else mL=mL+1; end else sH=sH+1; end else sL=sL+1; end方案比拟:方案一在思路方面较为通俗易懂,且判断过程简短明了,但在程序中使用的进制数较多,进制转换时容易混乱,在最终的显示时出现毛刺干扰现象,且该方案中不便于增加小时和分钟的调节信号,方案最终失败。方案二虽然判断复杂,但没有进制混杂引起的毛刺现象,在最终的数码管显示时较为稳定。综合考虑,使用方案二。时钟调节模块的实
20、现:module counter(clkdiv,reset,S1,S2,hH,hL,mH,mL,sH,sL); input clkdiv; input reset; input S1; input S2; output hH;output hL;output mH;output mL;output sH;output sL;reg hH;reg hL;reg mH;reg mL;reg sH;reg sL;reg 7:0th;/十进制的小时信号 reg 7:0tm;/十进制的分钟信号 reg 7:0ts;/十进制的秒信号 always(posedge clkdiv or negedge rst
21、)/*判断是否为复位信号*/ if(!rst) begin sL=0; sH=0; mL=0; mH=0; hL=0; hH=0; end/*判断是否为小时调节信号*/ else begin if(!S1) begin if(hL=9) begin hL=0; hH=hH+1; end else if(hL=3&hH=2) begin hL=0; hH=0; end else hL=hL+1; end/*判断是否为分钟调节信号*/ else if(!S2) begin if(mL=9) begin mL=0; if(mH=5) mH=0; else mH=mH+1; end else mL=m
22、L+1; end else if(sL=9) begin sL=0; if(sH=5) begin sH=0; if(mL=9) begin mL=0; if(mH=5) begin mH=0; if(hL=9) begin hL=0; hH=hH+1; end else if(hL=3&hH=2) begin hL=0; hH=0; end else hL=hL+1; end else mH=mH+1; end else mL=mL+1; end else sH=sH+1; end else sL=sL+1; endendmodule三、译码显示模块的实现译码显示模块采用的是数码管的动态扫描
23、方式,定义变量来控制数码管显示的位选信号通过变量Uwei*uan来给数码管的各个位选位送出低电平信号。由于试验箱上的八个数码管是每四个的位选端连接在一起,分为两组数码管,所以定义两个变量show_temp_H和show_temp_L来分别控制两组数码管,该变量决定了哪个数码管显示哪个信号,再根据这两个变量判断显示的是哪一组数码管,确定之后通过送入的数据利用变量HIGH和LOW控制数码管的 段选信号完成译码显示工作。module decode(clk500,reset,hH,hL,mH,mL,sH,sL,HIGH,LOW,); input clk500; input reset; input h
24、H,hL;/小时的高、低位信号 input mH,mL;/分钟的高、低位信号 input sH,sL;/秒的高、低位信号 output 6:0 HIGH,LOW;/分别控制两组数码管的段选信号 output 7:0 ;/控制数码管的位选信号 reg 7:0 show_temp_H,show_temp_L;/定义的内部变量,决定数码管上显示的信号 reg 7:0 ; reg 7:0 Uwei*uan;/通过控制变量给数码管的位选位送出上下电平 reg 2:0 sm;/扫描变量 reg 6:0 HIGH;/控制高四位数码管的段选信号 reg 6:0 LOW;/控制低四位数码管的段选信号 alway
25、s(posedge clk200)beginif(sm=3b111)sm=3b000;elsesm=sm+3b001;Uwei*uan=Uwei*uan1;/通过对变量的左移操作依次给数码管的位选位送高电平if(Uwei*uan=8b0000_0000) Uwei*uan=8b0000_0001;/给Uwei*uan变量设定的初值=Uwei*uan;/共阴极数码管显示的位选信号应为低电平,故对Uwei*uan变量进展取反操作end always(sm) begin case() 8b1111_1110:show_temp_H=sL; /最低位的数码管用于显示秒信号的低位 8b1111_1101
26、:show_temp_H=sH; 8b1111_1011:show_temp_H=4b1010; 8b1111_0111:show_temp_H=mL; 8b1110_1111:show_temp_L=mH; 8b1101_1111:show_temp_L=4b1010; 8b1011_1111:show_temp_L=hL; 8b0111_1111:show_temp_L=hH; /最高位的数码管用于显示小时信号的高位 endcase end always(show_temp_H)/高四位的数码管显示 begin case(show_temp_H)4b0000:HIGH=7b011_1111
27、; 4b0001: HIGH =7b000_0110; 4b0010: HIGH =7b101_1011; 4b0011: HIGH =7b100_1111; 4b0100: HIGH =7b110_0110; 4b0101: HIGH =7b110_1101; 4b0110: HIGH =7b111_1101; 4b0111: HIGH =7b000_0111; 4b1000: HIGH =7b111_1111; 4b1001: HIGH =7b110_1111; 4b1010: HIGH =7b100_0000; default HIGH =7b000_0000;endcase end a
28、lways(show_temp_L)/低四位的数码管显示 begin case(show_temp_L)4b0000:LOW=7b011_1111; 4b0001: LOW =7b000_0110; 4b0010: LOW =7b101_1011; 4b0011: LOW =7b100_1111; 4b0100: LOW =7b110_0110; 4b0101: LOW =7b110_1101; 4b0110: LOW =7b111_1101; 4b0111: LOW =7b000_0111; 4b1000: LOW =7b111_1111; 4b1001: LOW =7b110_1111;
29、4b1010: LOW =7b100_0000; default LOW =7b000_0000; endcase endendmodule第三节 系统及各模块方框图说明分频模块:输入信号为系统基准时钟50MHZ输出为1HZ频率和200HZ-500HZ频率两路信号计时模块:输入信号1s时钟信号clkdiv,复位信号reset,小时调节信号S1,分钟调节信号S2输出信号为小时信号的高、低位hH、hL,分钟信号的高、低位mH、mL,秒信号的高、低位sH、sL译码显示模块:输入信号该模块工作频率500HZ,复位信号reset,小时信号的高、低位hH、hL,分钟信号的高、低位mH、mL,秒信号的高、低
30、位sH、sL输出信号为八个数码管的位选控制信号,高四位数码管显示的段选信号HIGH,低四位数码管显示的段选信号LOW系统功能实现:主函数的输入信号为系统基准时钟信号、复位信号、小时调节信号、分钟调节信号。输出信号为数码管的位选控制信号、高四位数码管的段选控制信号HIGH、低四位数码管的段选控制信号LOW。第二章 结果与讨论第一节 调试现象及解决分析系统方案确定,程序编写完成后进入调试阶段,调试分模块进展。首先是分频模块,在程序编写且编译通过后,加观察窗口观察所得波形,可以判定是否得到所需频率的信号。在调试过程中出现的问题:一、编写程序过程中出现的语法问题1要注意编写程序的过程中begin和en
31、d配对问题,类似于C语言中的括号匹配问题,在编写计数模块时编译不通过,最后检查出是缺少一个end完毕符号,经修改后编译通过。2Verilog HDL语言编写时的语法问题。在最初的计时模块的程序设计中,将小时、分钟的调节信号放在了另外的一个always语句块中,编译无法通过,经查阅资料,在Verilog HDL语言的编写中应该注意不同的always语句块不可以对同一个变量进展操作,即一个变量不可以经过两个always语句块操作。将对小时和分钟调节信号的操作与计时放在同一个语句块中,编译通过。二、方案实现过程中出现的问题1数码管显示高四位、低四位保持一致。在数码管显示时没有到达预计的目标,没有实现
32、动态显示,而是高四位同时显示一个数字,低四位同时显示一个数字,经过对程序的检查调试,是因为对数码管位选端口的控制不正确,初始程序用是通过变量Uwei*uan 给数码管位选端依次送入高电平:Uwei*uan=Uwei*uan1;if(Uwei*uan=8b0000_0000) Uwei*uan=8b0000_0001;=Uwei*uan;分析得知是信号没有正确的送给数码管显示,经修改对后成功显示。修改的程序增加了一个扫描信号:always(posedge clk200)beginif(sm=3b111)sm=3b000;elsesm=sm+3b001;在扫描信号到来时判断信号并给数码管送出位选端
33、控制信号。2数码管计时只显示二进制数。初始程序使用的是十进制数计时,对十进制数进展取除、取余操作,再译码,程序中进制数使用混乱,出现毛刺现象。将计时模块的程序重新修改后实现了计时的译码显示功能。3数码管显示不佳。问题出在对数码管动态显示的扫描频率设置不适当,频率太低时无法八个数码管一起显示,频率太高时数码管显示的亮度降低,需要在200HZ-500HZ*围内调出一个适当的频率。4数码管的显示需要一直按着复位键进展。系统的复位信号为低电平有效,所以在编写程序时注意是复位信号的下降沿有效,应该为:always(posedge clkdiv or negedge rst) if(!rst) begin
34、 sL=0; sH=0; mL=0; mH=0; hL=0; hH=0;end第二节 相关数据分析分频模块的counter变量值计算:系统基准时钟为50MHZ,counter值操作一次所需时间为1/50M,操作到计数值点所需时间则为1/50M*counter,其倒数即为所得到的时钟频率,根据公式求出counter变量值,分别得到计时模块和译码显示模块所需要的时钟频率。第三节 系统整体实现系统使用一个主函数调用各个子模块实现系统功能,通过系统方框图编写主函数:module main(clock,reset,HIGH,LOW,); /parameter DIV_SIZE=25; input clock; inp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市劳务合同范例
- 劳动合同范本在昆明
- 包地合同范本模板
- 出口车牌架采购合同范本
- 临时用房建设合同范本
- 第五课 我是小画家-模块组 教学设计 -2023-2024学年大连版(2015)初中信息技术七年级下册
- 劳动合同范本申请
- 养羊合作合同范本
- 2024年云浮市郁南县河口镇招聘笔试真题
- 2024年日照银行社会招聘考试真题
- 北京市东城区2025年公开招考539名社区工作者高频重点提升(共500题)附带答案详解
- 2025福建福州地铁集团限公司运营分公司校园招聘高频重点提升(共500题)附带答案详解
- 2025至2030年中国电子护眼台灯数据监测研究报告
- 儿童睡眠障碍治疗
- 2025年浙江省温州乐清市融媒体中心招聘4人历年高频重点提升(共500题)附带答案详解
- 2025夏季广东广州期货交易所招聘高频重点提升(共500题)附带答案详解
- 北京市丰台区2024-2025学年高三上学期期末英语试题
- 2025上海市嘉定工业区农村青年干部招聘22人历年高频重点提升(共500题)附带答案详解
- 《兽医基础》练习题及参考答案
- 2025年煤矿探放水证考试题库
- 2024年度个人珠宝首饰分期购买合同范本3篇
评论
0/150
提交评论