1、摘要:本作品以Alter公司的CPLDEPM1270为开发平台,通过扩展必要的外围显示电路,从而完成了基于SOPC的倒计时牌的设计。该倒计时牌的倒计时时间可在1秒到1000天之间任意设定。除倒计时的功能之外,还增加了万年历的功能,可正确显示20002099年的日期和时间。关键词: SOPC CPLD 倒计时牌 万年历 Abstract: This work is developed on the CPLD-EPM1270 which is the production of Alter companly. We completed this Count Down Board based on
2、the chip except some necessary peripheral circuits such as display circuit. The time started can be set at any value between 1 second and 1000days.This Count Down Board also has the function of calendar, which can show the date and time between the year of2000 and 2099 correctly.Keyword: SOPC CPLD C
3、ount Down Board Calendar1 方案论证与比较42 系统设计52.1 总体设计52.2 硬件单元电路设计52.2.1 数码管显示电路设计62.2.2 按键电路设计62.2.3 声讯提示电路设计62.2.4 备用电源电路设计73 软件设计与仿真结果83.1 60进制BCD加计数器83.1 日期BCD加计数器83.2 60进制BCD减计数器93.3 按键消抖103.4 动态扫描显示103.5 显示译码113.6 声讯提示114系统测试115 小结12参考文献:13附录:14附1:元器件13附2:电路图图纸14附3:EDA设计文件141. 方案论证与比较方案一:使用分立器件实现该
4、方法要使用的器件主要是计数器,如CD4518(双BCD同步加计数器)、CD4017(十进制计数/分配器)、CD4029(可预置可逆计数器),CD4060(14级二进制串行计数/分频器);译码器,CD4511(BCD锁存,7段译码,驱动器)以及门电路,如74LS00等常用数字器件。该方案虽然电路结构不是很复杂(针对于此题来说),但实现起来也是比较困难和麻烦的。在连接电路过程中需要认真仔细,以防出错,即便连接无误,但由于存在外界大量接线,也会使系统不稳定,容易出现问题。而且电路一旦连接完毕,想要在功能上再做修改非常不便。该方案为不常用方案,现已几乎无人使用,但可以作为学习常规数字器件功能的手段。方
5、案二:使用单片机实现单片机在控制方面有自己的特长,通过编写程序,控制定时器的定时时间,即可以在单片机上实现倒计时牌的功能。但由于单片机在执行每条指令时,存在时间误差,经过长时间积累,容易造成走时误差,从而需要不断校时。为提高走时精度,很多时候使用专门的时钟芯片,而使用单片机进行管理,从而达到设计目的。但这里的时钟芯片属于专用IC,某种程度上说,是属于方案三的实现方法。方案三:使用CPLD或FPGA实现该方法通过使用专用的设计软件QuartusII和PC机,在一块芯片上实现倒计时牌的核心电路,可以说是使用一块CPLD芯片,自己设计出一款具有特定功能的IC。至于设计方法,可以采用自顶向下的设计方法
6、,也可以先设计底层元件,再设计顶层电路的自底向上的设计方法,或者两种方法相结合。我们在完成此题时就是采用了自底向上的设计方法。在设计过程中可以轻松实现各种功能模块,并且通过时序仿真可以精确的知道功能是否实现以及实现效果如何。如果时序仿真没有问题,就可以下载到CPLD芯片中,并且基本上就可以正常运行了。对于设计好的电路,如果需要再增加或修改某些功能,可以很方便的用语言或图形描述出新的系统,然后再进行下载,即可以方便快捷的更改芯片内部电路结构。用该方案实现倒计时牌不仅方便简捷,而且由于其主频很高,使其走时精度很高。所以本次设计选用方案三。2. 系统设计2.1 总体设计倒计时牌最基本的元件是不同模值
7、的计数器,如倒计时部分有分和秒的60进制减计数器,时的24进制减计数器,天的10进制减计数器。又如万年历部分有分和秒的60进制加计数器,时的24进制加计数器,日期的28、29、30和31进制(由年计数器和月计数器反馈的数值自动选择模值)的加计数器,月的12进制加计数器,年的10进制加计数器。但考虑到按键校时功能,计数器还需要加入按键的控制信号。再次,需要提供系统中用到的各种时钟信号源,这里由开发板上的50MHz晶振,经过多级分频计数器后,输出1Hz及其它频率的信号时钟。最后,在顶层原理图文件中,调入仿真正确的底层元件,并连接成一个完整的电路系统。此倒计时牌系统,采用LED数码管显示输出结果,因
8、此必需制作外围的数码管显示电路。下图是基于SOPC倒计时牌的总体框图。2.2 硬件单元电路设计2.2.1 数码管显示电路设计:此外围显示电路由于使用了21个数码管,故制作起来稍显麻烦,而且要解决好驱动问题。需要特别注意的是数码管的位选不能直接将CPLD输出的位选信号接在数码管位选选通三极管(PNP)的基极上,因为CPLD端口最大输出3.3V,这样接在PNP三极管基极上(发射极接5V电源电压),三极管仍会导通,从而失去选通的作用,故需将端口输出电平进行3.3V到5V的转换。在这里我们使用了OC门的集成电路7407。2.2.2 按键电路设计:Key1Key5按键输出。平时输出高电平,当有按键按下时
9、,输出低电平。2.2.3 声讯提示电路:当CLK_IN加入1KHz音频信号源时,蜂鸣器即可以发出提示音。2.2.4 备用电源设计:倒计时牌在主电源突然掉电的情况下,计时信息会丢失,从而需要重新设置当前时间和倒计时时间,考虑到这种情况,故加入此备用电源方案。当有主电源时,主电源通过电阻和二极管对备用电源(充电电池)充电,直到电压相等。此时由于电池电压低于主电源电压,供电二极管D1反向截止。当主电源突然掉电时,电池通过此二极管,向此系统供电,维持系统信息。3. 软件设计与仿真结果该作品采用自底向上的设计方法,先用VHDL语言描述出底层各个元件,再用原理图输入法调用底层生成的元器件,连接成系统电路,
10、编译、综合之后下载到CPLD中。3.1 60进制BCD加计数器:上图中c是计数器输出的进位信号;clk_auto为计数器输入的计数脉冲;clk_Key为按键脉冲信号;doutH和doutL为计数器输出BCD码的高、低四位;Flag_set为校时标志,0表示正常走时,1表示处于校时状态。由仿真可知此,此计数器处于正常走时状态时,计数正确,并在在59时输出进位脉冲。此图是计数器处于校时状态的计数仿真波形。当Flag_set为高电平时,计数器值不受clk_auto脉冲影响,而是对按键脉冲进行计数,从而达到了按键校时功能。对于小时计数的24进制BCD加计数器和对于月计数的12进制BCD加计数器各信号定
11、义与功能同60进制BCD计数器,只是计数器模值不同而已,在此不再赘述。3.2 日期BCD加计数器:c、clk_auto 、clk_key 、Flag_Set信号定义同60进制BCD中定义。Month与Year为月计数器与年计数器反馈给日期计数器的信号。由仿真波形可知,输入年为2000年(0)2月,此月有29天。从仿真波形可知与实际相符。当输入为2001年(1)2月时,此月有28天,仿真正确。当输入为2001年(1)3月时,此月有31天,仿真正确。当输入为2001年(1)4月时,此月有30天,仿真正确。3.3 60进制BCD减计数器:上图中b是计数器输出的借位信号;clk_auto为计数器输入的
12、计数脉冲;dinH和dinL为预置数值信号;doutH和doutL为计数器输出BCD码的高、低四位;load为预置使能信号,当其出现上升沿时,置入预置值;set_sub为校时标志,0表示正常走时,1表示处于设定倒计时状态。由仿真可知此,此计数器处于正常走时状态时,load键无效,当处于校时状态时,计数器暂停对clk_auto计数,此时若load有上升沿,即将预置数置入计数器。当set_sub为低电平时,从预置数开始正常计数。对于小时计数的24进制BCD减计数器和对于天计数的10进制BCD减计数器各信号定义与功能同60进制BCD减计数器,只是计数器模值不同而已,在此不再赘述。3.4 按键消抖电路
13、:KEY_IN为5个按键输入,KEY_OUT为相应按键输出。仿真波形中模拟KEY_IN 4 输入,并伴有机械抖动,从按键输出波形上看,只输出了一个有效按键脉冲,由此可知消抖成功。3.5 显示译码:DB为输入的显示数据,SEG为输出送给数码管的信号数据。当输入0000B1001B时,正常译码;当输入1010B1111B时,译码输出全部为低电平,数码管此时熄灭。3.6 声讯提示:实际clk_Hz为输入的1Hz信号;clk_Hz为输出给倒计时计数器的计数脉冲。din1din9分别对应倒计时计数器秒、分、时、天输出的计数数值。Flag_Set_Sub为设定倒计时间信号,当其为低电平时,处于正常走时,为
14、高电平时,处于校时状态。speaker_clk实际为1KHz的信号;speaker_out为送给蜂鸣器的的信号。当din1din9不全为0时,clk_Hz信号传递给clk,此时speaker_out无脉冲信号输出,蜂鸣器不发声。当倒计时计数器数值减少到0时,speaker_out得到信号,此时蜂鸣器发出定时到提示音,同时倒计时计数器输入脉冲信号clk为固定电平,计数始终停止在计数为0的状态,若按下设定倒计时间按键,蜂鸣器停止发出声音,从而开始新的一轮倒计时过程。4. 系统测试作品最终完成后,通过进行实际硬件测试,已达到设计要求。当使用的晶振为稳定的50MHz时,该系统走时精度,一年累计误差小于
15、1秒。一、 倒计时牌部分1. 秒计数到0时变为59,分减一;2. 分计数到0时变为59,时减一;3. 时计数到0时变为23,天减一;4. 天由三位十进制计数器组合而成,减到0变为999。5. 当天、时、分、秒都减到0时,蜂鸣器发出固定频率的提示音,按下重新设定键,蜂鸣声停止;当设定好定时时间,按下load键时,再按下设定键,倒计时牌从新设定的时间开始新一轮的倒计时计数。二、 万年历部分1. 秒计数到59时变为0,分加一;2. 分计数到59时变为0,时加一;3. 时计数到23时变为0,天加一;4. 天计数可根据不同的年份和月份实现不同的进制的计数,当记满后,月加一,天变为1;5. 月计数到12时
16、,年加一,月回到1;6. 按下设定时间按键,年显示闪烁,此时按下加“1”键,年加1;当按下切换键时,依次在年、月、日、时、分、秒之间循环切换,当前闪烁的部分即是加“1”键可以修改的部分。修改完之后,再次按下设定键,万年历即从设定的时间基础上开始计时。功能正常。5. 小结本制作使用了可编程CPLD芯片,达到了所有设计要求,体现出了SOPC设计系统的方便与可靠性。实际运行时,系统稳定,走时精度高,操作便捷。参考文献EDA技术使用教程(第三版),潘松 黄继业编著,北京:科学出版社,2007年;附录附1. 元器件1、 EMP1270C5114开发板2、 数码管3、 三极管4、 7407(OC门)5、
17、电阻、排针等附2. 电路图图纸附3. EDA设计文件一、底层VHDL文件Count60_Calendar.VHDCount24_Calendar.VHDDate_Calendar.VHDCount12_Calendar.VHDCount100_Calendar.VHDCount4_Calendar.VHDCalendar_choice.VHDCount60_Sub.VHDC60_Sub.VHDCount24_Sub.VHDC24_Sub.VHDCount10_Sub.VHDC10_Sub.VHDSub_choice.VHDClk_Resource.VHDDecoder.VHDDisplay.VHDSpeaker.VHDDeal_Key.VHDChange.VHD二、顶层原理图文件 .
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922