本科学生EDA课程设计论文
题 目: 基于CPLD的数字时钟设计
院 (系) 工程与设计学院
专业、年级 19级电子信息工程
2021年 7 月 8 日
目录
第1章 绪 论
1.1 时钟的发展现状
从古自今,时间一直伴随在我们身边,它无处不在,渐渐的人们越来越重视时间的准确性。原始人凭天空颜色的变化,太阳光的角度来分辨时间。然后随着社会的发展出现了水流计时,水流计时,机械时钟、石英时钟,数字时钟,原子时钟。在中国历史上也有留下很多相关的记载,有四代计时器其分别为:日晷、沙漏、机械钟、石英钟。 现在而言虽然原子时钟是最新的计时工具,而且计数误差非常小——是七个国际标准量中误差最小的量。但在如今生活中,数字和石英钟表在现实生活中使用最为广泛。其中,数字钟表的功能最为强大,因为涉及到电子技术等领域,它的功能和存在方式多种多样,例如可调时的数字钟表、LED显示数字钟表,带投影功能的数字钟表等。数字钟表具有走时误差小,显示直观的特点,且数字时钟的附加功能强大,于是便被应用于生活中各种场所,成为最为广泛的时间工具,陪伴着人们的日常生活。
1.2可编程逻辑器件—CPLD的现状
20世纪70年代,最早的可编程逻辑器件--PLD诞生了。其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成,因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件--CPLD。此应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。
1.3 选题意义
数字钟生活中处处可见,形势多样,现在大多数都是通过程序对其控制,实现走时和数字显示,另外它扩展性大,可以根据自己的要求设计属于自己的独特时钟,如果采用模块化电子元器件来实现电路的话,能锻炼自己的动手能力,以及对各元器件的了解和对理论与实际的正确认识。对于电子专业的学生来说熟悉元件的功能以及组接元件,焊接元件等都是很宝贵的经验。从中锻炼的不仅仅是你的专业技能,更是一个人的耐心与细心;如果采用CPLD可编程逻辑器件进行编程来实现数字钟的走时,调时,报时的话,难度肯定比分立元件实现低,但是可以锻炼自己的编程能力和逻辑思维能力。还有芯片与电路的组接。综合方面都会得到锻炼。不管怎样数字时钟设计都能通过所学的专业知识锻炼自身动手能力,将课堂学到的知识在实际生活中得以运用。并且作为一个完整品真实的体现出来。
1.4 本设计的工作流程
本设计流程分为四个阶段:
第一阶段完成设计题目分析、文献查阅和课程咨询,时间为一周。
第二阶段完成元器件的采购和电路的设计,时间为一到两周。
第三阶段完成电路的组装、焊接和调试,时间为三到四周。
第四阶段完成论文撰写及PPT准备,时间为一到二周。
第2章 硬件简介及方案讨论
2.1 具体方案论证与设计
方案1:
外围电路采用硬件采用分立元件,主控采用EPM570T100C5N,且软件采用二进制码计数再转成8421BCD码显示。
利用石英晶体振荡器和电容构建一个1hz脉冲信号作为电路的基础脉冲信号,可以充当秒钟的计时脉冲。蜂鸣器和八段数码显示管通过9013三极管来驱动。采用按钮开关产生输入信号来校准数字时钟的计数值和设置闹钟值。同时整个硬件电路部分通过万能板焊接来实现。
软件部分采用二进制计数即86400(一天为86400秒)进制计数器。然后通过公式转换8421BCD码表示时分秒,再通过译码显示模块驱动八段数码显示管。
初想编程框图如下:
方案2:
外围电路采用硬件尽量采用集成器件,主控采用EPM570T100C5N,且软件采用8421BCD做60进制计数器。这样就不用再转成8421BCD码。
用于显示的八段数码管直接由集成芯片74hc245来驱动,蜂鸣器还是通过9013三极管来驱动,输入信号还是用按钮开关来产生。
软件部分直接采用60进制计数器得到时分秒的计数值。计数的基础时钟1Hz直接通过芯片的基础时钟50MHz分频来得到,而且可以轻松得到不同频率的时钟,方便进制秒表模块的拓展。
初想编程框图如下:
通过与老师的交流和相关质料的阅读,对比之下我们最后选着了方案二。方案一中,我是采取的86400进制计数再把计数值换成8421BCD码译码显示,这样设计虽然计数部分非常简单,但是把计数值转成8421BCD码会消耗很多支援。而且方案一硬件采取分立元件在万能板焊接实现,这样如果布局和焊接技术不好,可能会存在很多问题,导致调试困难。方案二中,软件部分采取元件例化的概念,我们把设计要求分为很多各部分。这样设计思路清晰方便程序的编写。硬件采取PCB 板设进行设计,这种方法抗干扰能力较强而且焊接简单。因此对比之下我们选着方案二。
2.2 主控芯片的简介
EPM570T100C5N芯片是Intel Altera公司MAX II系列高性价比的CPLD芯片,该芯片资源远大于EPM240,该芯片有100个引脚、76个IO口、570个逻辑的单元(EPM240的2.38倍)能很好的满足一般用户的使用要求,尤其非常适合入门客户、参加各类比赛、课程设计、毕业设计的人士使用。
产品特点:
■低成本,低功耗CPLD
■即时启动,非易失性架构
■待机电流低至25µA
■提供快速传播延迟和时钟到输出时间
■提供四个全局时钟,每个逻辑阵列块(LAB)有两个时钟可用
■UFM可阻止高达8Kbits的非易失性存储
■MultiVolt内核可为设备提供外部电源电压3.3V/2.5V或1.8V
■MultiVoltI/O接口,支持3.3V,2.5V,1.8V和1.5V电平
■总线友好型架构,包括可编程摆率,驱动强度,总线保持和可编程上拉电阻
■施密特触发启用噪声容限输入(每个引脚可编程)
■支持热插拔
■内置联合测试行动组(JTAG)边界扫描测试(BST)电路
第3章 数字钟设计原理
3.1基于CPLD的数字时钟硬件电路设计
硬件电路包括CPLD芯片EPM570T100C5N、2位共阳数码管3个、按钮开关4个、9013三极管、蜂鸣器、缓冲芯片SN74HC245、排针、电阻若干。
除CPLD芯片EPM570T100C5N的外电路原理图:
本次设计选用CPLD芯片EPM570T100C5N作为主控芯片,6位数码管作为实时时钟的显示,蜂鸣器进行报时,SN74HC245作为驱动芯片用来驱动数码管,三极管构成共射极放大电路来驱动蜂鸣器。按键开关作为输入信号来控制时钟的显示,模式转换和调时功能。然后根据课程要求通过Quartus II编写好程序,最后通过下载装置将程序写入EPM570T100C5N芯片内。
主控芯片EPM570T100C5N的i/o接口通过杜邦线连接到排针JP1和JP2,达到用程序来控制硬件电路。
其实物连接图和显示电路如下:
3.2控制部分基于VHDL语言的程序设计
此系统的设计全部采取元件例化的概念。采取元件例化的设计方法将一个复杂的系统逐渐分解成若干功能模块来单独实现,最后在主程序中对实现各功能的元件例化部分进行调用来达到总的设计要求的目的。这样的设计方法思路清晰,而且调试方便。
程序功能模块框图:
程序在Quartus软件上框图:
程序分为三个工作模式分别位常规的时分秒模式、秒表模式、闹钟模式。
时分秒模式:
在常规的时分秒模式下,clr键用于计数值的清零,Key1_up键用于调整位的值加一(Key1_up单击调整位的值加一),key0用于调整位的选着(选着到的调整位会闪烁)。key0单击调整小时的十位,key0再单击调整小时的个位,key0再单击调整分钟的十位,key0再单击调整分钟的个位,key0再单击调整秒钟的十位,key0再单击调整秒钟的个位,key0再单击退出位调整并正常显示,key0再单击又调整小时的十位并以此循环下去。
闹钟模式:
在常规的时分秒正常显示模式下,Key2_set单击进入或退出闹钟设置模式。进入闹钟设置模式后,key0用于设置位的选着,clr键用于设置值的清零,Key1_up键用于设置位的值加一(Key1_up单击设置位的值加一)。开始进入闹钟设置模式后,首先默认设置小时的十位,这时如单击key0键则设置小时的个位,如再单击key0键则设置分钟的十位,如再单击key0键则设置分钟的个位,如再单击key0键则退出位设置,如再单击key0键则又设置小时的十位以此循环。选着到的调整位会闪烁。
秒表模式:
在常规的时分秒正常显示模式下,Key2_set长按1秒钟进入或退出秒表模式。进入秒表模式后,Key1_up用于秒表的停止或开始计时,clr键用于计数值的清零。
注意:只有常规的时分秒正常显示模式下,Key2_set按键才有效,否则Key2_set单击或长按都无效。如果程序在闹钟模式下,要进入秒表模式则必须线返回时分秒正常显示模式,同样如果程序在秒表模式下,要进入闹钟模式也必须线返回时分秒正常显示模式。清零按键,clr键只用于当前模式的值清零,对其他模式的值清零无效。调整模式下,如在小时的个位的值大于3的情况下,小时的十位的值原为1进行加一变为2时则小时的个位的值清零。这样是为了防止出现小时两位出现大于23的数值出错。
在设计完成显示电路后,通过AD软件进行PCB文件的创建,在软件使用中出现对于其工具栏使用不熟练,规则分布不会更改的现象,通过在网上搜集资料看视频学习。边动手实践边学习理论知识的情况下,逐渐掌握AD软件的使用
在软件使用渐渐熟练的情况下按照原理图的设计,进行PCB文件的绘制,先创建一个PCB库文件,绘制PCB原理图文件,在配置完成的情况下对于PCB进行封装库管理删去不用的封装,保留下唯一要用的封装,在PCB图文件页面进行元器件导入,导入的元器件之间会有线连接起来,这时候我们需要进行布线,其整体的布线思路
框图如下:
先创建类,然后对于约束及规则进行设置,设置完成之后再PCB扇孔,然后布线,布线完成之后等长及敷铜进行处理,最好进行PCB布线评审,一切完成之后就可以看到PCB文件图中完整的设计方案,
这里展示出3D示图和底层,顶层的文件:
顶层:
底层:
PCB文件图可以发给PCB生产厂家进行打板,选择合适的尺寸和适合的各个参数规则进行定制打板,因为捷配PCB最近活动每月两次免费打板,这里我采用捷配PCB打板,第一次打板由于设计的疏忽导致文件上面出现孔距过小的现象,PCB生产过程中其负责的相关中级工程师发现改问题并予以指正图中插线孔的间距补偿后出现成品孔的间距不足导致线路中焊盘连在一起,造成短路现象,并给出了建议修改的方案:
按照他的建议将成品孔缩小0.1mm进行制作,进行修改后进行第二次打板,其打板产生的元器件及捷配封装的产品展示 如下:
捷配PCB原装盒:
PCB板:
第5章 结论
5.1总结:
由于此课程设计主要以CPLD--EPM570T100C5N芯片为主,通过Quartus II编程软件进行编程,能实现以了时间24小时为一个周期的计时和显示(时,分,秒共6个数码管显示);本设计还拓展了闹钟模块和秒表模块。有校时功能,可以分别对时,分,秒的值单独校时,使其校正到标准时间(即可以对时间进行预值);计时过程具有报时功能,当时间到达整点进行5S蜂鸣或指示灯亮报时。在各种模块中的操作不会影响其他两个模块。
在本次课程设计过程中,遇到了很多麻烦,也收获了很多宝贵的经验,这次的设计不仅提高了自己的动手能力,也锻炼了自己的编程能力和逻辑思维能力,从而激发了自己对课设的兴趣,在选择方案时,极大的增强了自己的分析、解决问题的能力,以及自己的创新能力。
通过AD软件的学习丰富了个人对于软件上手学习的经验,过程的探索都成为以后硬件相关的软件学习的宝贵经验,在对于AD软件中PCB的设计也让我对于硬件的相关原理图和封装有了更加深入的了解,在库文件的添加和模型的设计方面也有了一定的了解,在一点点的设计和修改中也磨练了自己的耐心,规范了自己的走线更趋于标准化,规范化,收获颇丰,回味课设过程感觉充满艰辛同样收获也同硕果累累般丰厚,希望以后的设计中也能脚踏实地,一分耕耘,一分收获,做的更好。
5.2本设计中的不足与改进建议:
(1)由于采用的是CPLD--EPM570T100C5N芯片,本次课程设计存在的缺点是断电后电路不具备记忆功能,因此,在以后的实验中,会采用具有掉电报时功能的芯片或者具有记忆功能的时钟芯片继续尝试。
(2)相比生活中的数字钟表,此作品不具备普遍性,硬件的成本相对较高。因此,在实际生活中要充分了解硬件的特性,采用价格较低的硬件。
(3)本设计存在的PCB设计虽然可以实现功能,但是布局布线还不算最合理,打了很多过孔存在信号之间的相互干扰。而且本设计的控制芯片是通过杜邦线和排针与外围电路相连存在接触不良的情况。因此,在以后的设计中要注意PCB板的布局布线,使其能够尽量减少过孔的使用,并且通过布局方面的设计尽量少用杜邦线。
(4)本设计的控制程序还是存在一些bug,资源的利用还不到最合理情况,如闹钟不可设计到秒钟值,程序还需要更多的设计来调试改进
参考文献
[1]杜坤梅,李铁才.机控制技术[M].哈尔滨:哈尔滨工业大学出版社.2000
[2]谭建成.电机控制专用集成电路[M].北京:机械工业出版社.1999
[3]李仁定.电机的微机控制[M].北京.机械工业出版社.1999
[4]李晶皎.嵌入式语音技术及凌阳16位单片机应用[M].北京:北京航空航天大学出版社.2003
[5]薛钧义,张彦斌,虞鹤凇,樊波.凌阳十六位单片机原理及应用[M].北京:北京航空航天大学出版社.2003
[6]易克初,田斌,付强.语音信号处理[M].北京:国防工业出版社.2000
[7]胡航.语音信号处理[M].哈尔滨:哈尔滨工业大学出版社.2000
[8]林焘,王理嘉.语音学教程[M].北京:北京大学出版社.1992
[9]L.R.拉宾钠,R.W谢弗.朱雪龙等译.语音信号数字处理[M].北京:科学出版社.1983
[10]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社.2001
[11]Kris Jamsa,Lars Klander.张春晖译.C/C++程序员大全[M].北京:中国水利水电出版社.1999
[16]索炜达电子-方案分享、项目设计分享、毕业设计分析、课程设计分享网站。 - 索炜达电子
实物图:
第一次由于芯片购买错误导致其输出电流过低而使数码管无法被正常点亮:
实物焊接完成调试成功显示那一时刻的时间:18.35.36
增加功能里面秒表的显示(0.14s):