课程设计任务书设计题目1:数码管显示数字钟设计院(系)分管领导:教研室主任:指导教师:2017年6月23日目录第1章引言 0第2章电路原理 0第3章程序设计 (1)顶层模块设计 (2)时钟分频模块设计 (2)按键驱动模块设计 (2)时钟计数模块设计 (3)整点报时模块 (4)LED灯花样显示模块 (5)数码管显示模块设计 (5)第4章调试、测试分析及结果 (7)调试 (7)测试分析 (7)结果 (9)第5章小结 (10)参考文献 (11)附录电路图及程序 (11)第1章引言EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL 或者Verilog HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
此次课程设计我们运用QuartusⅡ这个软件,使用Verilog HDL语言进行编程。
数字钟是一种用数字电路技术实现时、分、秒计时的钟表。
与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。
数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。
这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。
本次课程设计要求利用EDA技术,设计一个数码管显示数字钟的样品,数字钟要求具备以下功能:1、具有时、分、秒,计数显示功能,以24小时循环计时;2、具有清零,调节小时、分钟功能;3、具有整点报时功能,整点报时的同时LED花样显示。
第2章电路原理数码管显示数字钟设计,运用到8位数码管,要求其中6位数码管动态显示,分别显示时、分、秒的计数,同时对时间进行设置,数字钟的总体功能按照要求可以分为基本的数字时钟显示(具有时、分、秒,计数显示功能,以24小时循环计时)、手动校准(具有清零,调节小时、分钟功能)、整点报时、LED灯花样显示四大部分。
其总体功能设计框图如图所示:第3章程序设计其中,“时钟分频模块”用于对芯片晶振提供的时钟信号进行分频,然后给其他模块分配需要的时钟频率。
按键输入的信号经过按键去抖后传送给“时钟计数模块”。
正常计数时,“时钟计数模块”将处理好的时、分、秒数据实时传送给“数码管显示模块”,当有来自“按键驱动模块”的信号时,改变相应的时、分、秒计数器中的值,实现调整时间的作用。
“数码管显示模块”实时将“时钟计数模块”的数据转换成数码管动态显示信号进行显示。
最后,加上一个“整点报时”模块和“LED灯花样显示模块”经过时钟分频信号,传递给“数码管显示模块”,实现所需功能。
数字钟设计原理如图所示:3.1 顶层模块设计 顶层模块设计如附录图3所示,其RTL 电路图如附录图4所示。
顶层模块包含四个输入:系统时钟输入“clk ”,秒设置信号“sset ”,分钟设置信号“mmset ”,小时设置信号“hset ”。
一个8位的段选数码管显示值输出“seg ”,一个8位的片选数码管显示哪一个数码管输出“dig ”,将输出给数码管进行动态显示。
“时钟分频模块”电路符号名为“int _ div ”,“按键驱动模块”电路符号名慰“an _ jian ”,“时钟计数模块”内部采用三格计数器级联的方式分别驱动时、分、秒计数,秒计数器和分计数器均为60进制计数器,小时计数器为24进制计数器,电路符号名分别为两个“ji _ shu _ 60”和一个“ji _ shu _ 24”。
3.2 时钟分频模块设计“时钟分频模块”直接使用老师上课所给的分频程序,加入两个分频模块,与“时钟计数模块”和“按键驱动模块”进行连接。
3.3 按键驱动模块设计按键驱动模块使用原理图方法设计,采用在按键信号传输过程中串联触发器实现按键去抖,保证触发器两次触发的间隔远大于按键抖动的时间,而远小于人动作反应的时间。
另外因为实例用独立按键按下后是低电平,所以在触发器后面串联一个非门,使其变为高电平有效。
附录图1所示为按键驱动模块原理图,图所示为按键驱动模块封装而成的电路元件。
该模块包括四个输入,时钟信号clk ,秒时钟分频模块 按键驱动模块 时钟计数模块 整点报时模块 LED 灯花样显示模块 数码管显示模块 图 数字钟设计原理图设置输入s _ in,分钟设置输入m _ in,小时设置输入h _ in;三个输出,秒设置输出s _ out,分钟设置输出m _ out,小时设置输出h _ out。
从该模块的原理图可以看出,时、分、秒三个按键的去抖原理完全一样,这里提取小时输入和输出进行仿真验证,得到的结果如图所示,每一个时钟上升沿h _out的值都保持和h _ in的值相反,该设计能够达到预期设计要求。
3.4 时钟计数模块设计如附录图2所示。
“时钟计数模块”内部采用三个计数器级联的方式分别驱动时、分、秒计数,秒计数器和分钟计数器均为60进制计数器,小时计数器为24进制计数器,为方便驱动数码管,三个计数器的输出均为两位的十进制数据。
秒调整信号通过一个或门和秒进位信号一起驱动分钟计数器;小时调整和分钟调整同理。
60进制计数器主要Verilog HDL代码如下:beginif(!rst) //0beginq1<=0; q2<=0;endelsebegin q1[3:0]=q1[3:0]+1; co<=0;if(q1[3:0]>9) begin q1[3:0]=0;q2[3:0]=q2[3:0]+1;if(q2[3:0]>5) begin q2[3:0]=0; co<=1;endendelse q1=q1;endend24进制计数器主要Verilog HDL代码如下:beginco=0;q1[3:0]=q1[3:0]+1;if(q1[3:0]>9) begin q1[3:0]=0; q2[3:0]=q2[3:0]+1;endif(q1==4)if(q2==2) begin q1=0;q2=0; end end如图所示该模块中60进制模块与24进制模块的仿真波形,60进制模块设置qs0、qs1分别为个位、十位,个位计数到9之后清零,十位计数到5之后清零,24进制模块设置qh0、qh1分别为个位、十位,个位计数到9之后清零,十位计数到2之后清零。
3.5 整点报时模块整点报时模块的设计思路是当数字钟计数到一个整点时间时,蜂鸣器开始响鸣。
蜂鸣器的封装设计如图所示,程序设计为一段乐谱,主要Verilog HDL代码如下:always @(posedge clk_4Hz)begincase(j)'d1:origin='d4916; //low'd2:origin='d6168;'d3:origin='d7281;'d4:origin='d7791;'d5:origin='d8730;'d6:origin='d9565;图蜂鸣器封装模块 'd7:origin='d10310;'d8:origin='d010647; //middle'd9:origin='d011272;'d10:origin='d011831;'d11:origin='d012087;'d12:origin='d012556;'d13:origin='d012974;'d14:origin='d013346;'d15:origin='d13516; //high'd16:origin='d13829;'d17:origin='d14108;'d18:origin='d11535;'d19:origin='d14470;'d20:origin='d14678;'d21:origin='d14864;default:origin='d011111;endcaseendalways @(posedge clk_4Hz) //乐谱beginif(len==63)len=0;elselen=len+1;case(len)0:j=3;1:j=3;2:j=3;3:j=3;4:j=5;5:j=5;6:j=5;7:j=6;8:j=8;9:j=8;10:j=8; 11:j=6;12:j=6;13:j=6;14:j=6;15:j=12;16:j=12;17:j=12;18:j=15;19:j=15;20: j=15;21:j=15;22:j=15;23:j=9;24:j=9;25:j=9;26:j=927:j=9;28:j=9;29:j=9;30 :j=9;31:j=9;32:j=9;33:j=9;34:j=10;35:j=7;36:j=7;37:j=6;38:j=6;39:j=5;40 :j=5;41:j=5;42:j=6;43:j=8;44:j=8;45:j=9;46:j=9;47:j=3;48:j=3;49:j=8;50: j=8;51:j=8;52:j=5;53:j=5;54:j=8;55:j=5;56:j=5;57:j=5;58:j=5;59:j=5;60:j =5;61:j=5;62:j=5;63:j=5;endcaseend3.6 LED灯花样显示模块LED灯花样显示模块是与整点报时模块同时工作,当蜂鸣器响鸣时LED灯闪烁。
该模块设计思路较为简单,只需在时分秒的时钟输出端接入一个以低电平驱动的LED邓即可实现。
3.7 数码管显示模块设计数码管动态显示的原理是利用人眼的视觉停留,依次点亮每个数码管的位选信号,当第一个数码管被点亮时,将段选信号变为第一个数码管要显示的信息,当第二个数码管被点亮时,将段选信号变为第二个数码管要显示的信息,以此类推,循环扫描。