基于EPM240T可编程逻辑器件的计时倒计时器的设计毕业设计论文.docx_第1页
基于EPM240T可编程逻辑器件的计时倒计时器的设计毕业设计论文.docx_第2页
基于EPM240T可编程逻辑器件的计时倒计时器的设计毕业设计论文.docx_第3页
基于EPM240T可编程逻辑器件的计时倒计时器的设计毕业设计论文.docx_第4页
基于EPM240T可编程逻辑器件的计时倒计时器的设计毕业设计论文.docx_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CPLD的EPM240的计时与倒计时的设计本科生毕业论文(设计)题 目:基于EPM240T可编程逻辑器件的计时/倒计时器的设计姓 名分院、系:机电工程系专 业:电气工程及其自动化年 级:2012学 号:指导教师: 职称:高级工程师2016年 5月 10日原创性声明兹呈交的学位论文(设计),是本人在导师指导下独立完成的研究成果。除文中已经明确标明引用或参考的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写过的研究成果。本人依法享有和承担由此论文而产生的权利和责任。声明人(签名):日期:2016 年 5 月10日基于EPM240T可编程逻辑器件的计时/倒计时器的设计基于EPM240T可编程逻辑器件的计时/倒计时器的设计摘要 在EDA技术,电子技术不断发展的今天,在我国使用CPLD来开发数字系统大多已经利用到了工业控制、航天和电子医疗等方面。CPLD相比过去的落后设计方法具有诸多的优点,例如它的功能更加多元,速度也更快,开发的成本低而且便于一些临时的修改等等。已越来越接近人们的日常生活,所以我们研究CPLD是有意义的。VHDL语言是一种国际上认可的硬件描述语言。它的创立和单片机等语言有类似之处,学习起来并不是十分困难。在我的毕业设计中的文本编辑主要采用VHDL语言编写,并且通过仿真和硬件测试。此题目的毕业设计利用Altera公司推出的Quartus2为设计平台的FPGA/CPLD数字系统设计方法,充分运用了Quartus2进行FPGA/CPLD设计的开发流程。包括设计输入、综合、布局布线、仿真、编程和配置、定义管脚等功能。此次毕业设计主要围绕EPM240T为核心展开,通过Quartus2软件对主芯片编程编译仿真,程序需要实现的功能为计时、计数、分频、定时、产生节拍脉冲和序列脉冲。关键词 CPLD 数码管 VHDL语言 IIDesign of timer / countdown timer based on EPM240T programmable logic deviceAbstract In the EDA technology, the electronic technology is developing today, the use of CPLD in our country to develop digital systems have been mostly used in industrial control, aerospace and electronic medical, etc. CPLD compared to the past behind the design method has many advantages, for example, its function is more diverse, the speed is faster, the development of low cost and easy to some temporary changes, etc. Has become more and more close to peoples daily life, so we study CPLD is meaningful.VHDL language is an internationally recognized hardware description language. Its creation and SCM and other languages are similar, it is not very difficult to learn. In my graduation project, the text editor mainly uses the VHDL language, and through the simulation and the hardware test.This topic is designed to use the Altera company introduced the Quartus2 for the design platform of the FPGA/CPLD digital system design method, the full use of the FPGA/CPLD Quartus2 design development process. Including design input, synthesis, layout and wiring, simulation, programming and configuration, define the function of the foot.The graduation design mainly focuses on epm240t expanded as the core, through software quartus2 programming the main chip compiled simulation, programs need to realize the function for timing, counting, frequency, timing, produce the pulse beat and a pulse sequence.key words CPLD,digital tube,VHDL language1目录引言1第1章 概论21.1 课题研究的背景21.2 系统方案的提出21.3 CPLD简介2第2章 计时、倒计时系统方案的设计32.1 控制芯片的设计方案32.2 六位数码管的动态显示42.3 方案简述4第3章内部电路设计73.1 各基本模块的程序设计73.1.1 1000分频设计程序73.1.2 10分频设计程序83.1.3 计数器的设定93.1.4 时间选择电路的设计153.1.5 七段译码电路的设计163.1.6 倒计时结束报警电路的设计173.2 组合电路的设计193.2.1 六十进制电路的组合方式19组合电路图如图3-17所示。193.2.2 一百进制电路的组合方式203.3顶层电路的管脚分配21第4章外部电路设计234.1 硬件总体框图234.2时钟发生器电路设计234.3 功能切换与控制电路的设计234.3.1 计时倒计时切换电路234.3.2 启动停止电路244.3.3 清零电路244.4 倒计时初值设置电路电路的设计244.4.1 倒计时置数电路254.4.2 拨码开关电路254.5 六位数码管显示驱动电路的设计254.6 报时电路的设计274.6.1 报警电路274.6.2 结束电路274.7 外部电源模块的设计27第5章系统调试295.1 软件调试295.2 硬件调试295.3 系统调试的内容29结论30致谢语31参考文献32附录33IV引言CPLD又称复杂可编程逻辑元件,是一种比PLD更为复杂的逻辑元器件,但与此同时,其用户可以根据不同的需要自行构造不同逻辑功能的数字集成电路。最早的可编程逻辑器件电路板自身面积很大,芯片的数量很多,功耗也很大,可靠性还不高。直到PLD的出现才改变了这一切,但早期的PLD只有可编程只读存储器(PROM)、电可擦除只读存储器(EEPROM)和紫外线可按除只读存储器(EPROM)。由于他们的结构过于简单,因此他们也只能完成规模小的电路。CPLD的问世解决了PLD的部分问题,并且仍在不断发展。其发展趋势有一下四点:1.向更高集成度、更高速方向迈进。截至目前最高集成度已经达到了400万门2.低电压和低功耗:由5V向3.3V、2.5V、1.8V甚至更低发展。3.内嵌了多功能模块:RAM、ROM、FIFO、DSP、CPU等。4.向数字/模拟混合可编程方向发展。但这些还并没有完全普及。CPLD由于相比单片机价格昂贵还没有广泛应用于日常生活领域但在电子信息,通信,自动控制以及计算机应用等领域的重要性已经日益显现出来其优越的性能和高速运行的性能终将被开发彻底而步入人们的日常生活中。第1章 概论1.1 课题研究的背景单片机从20世纪80年代进入我国后收到了广泛的关注和应用,自那之后一直都是电子设计的主心骨,但是这一地位已经受到了CPLD的挑战,单片机虽然性价比很高,且积累了大量资料并拥有了大量工程技术人员,在逻辑运算,智能控制方便具有不可替代的优越性,但是在高速稳定的方面,即使是高速单片机也只能工作在S级别,这和单片机的串行工作方式有关,而此时CPLD无疑是首选。因此在目前的电子设计中,单片机+CPLD将起到事半功倍的效果,6因此我们研究CPLD以及进一步改进社会技术的短板已志在必行。1.2 系统方案的提出CPLD作为计数软件不仅克服了单片机低速、低可靠性的缺点,而且由于可采用VHDL语言编程,进一步打破了软硬件工程师的界限,加速了产品的开发过程,使纯数字电路的设计变得简单。1所以用CPLD进行计时倒计时的设计是对CPLD优势的体现。1.3 CPLD简介CPLD称为复杂可编程逻辑器件,他的密度随着技术的不断发展而不断提高,使得在大型数字器件设计时变得简单而又灵活。7CPLD的结构在一个逻辑中采用1到16个乘积项,因此克服了许多大型复杂设计运行速度不可测的缺点,使得设计运行更有预见性,而且修改方便。不仅如此CPLD在本质上更为灵活、时序简单、路由性能更好,用户可以在改变他们的设计同时保持引脚输出不变。与FPGA和单片机相比,CPLD的I/O更多,大小更小。2第2章 计时、倒计时系统方案的设计2.1 控制芯片的设计方案首先,主芯片EMP240T拥有自己的内部稳压电源和内部固定的晶振频率(位于芯片12脚),在这里我们采用外部接晶振,由于EPM240T的I/O口众多,因此我们可以根据焊接的具体情况来定义不同的管脚来方便焊接,有些CPLD芯片内部已经定义好的管脚不能用,用Quartus2软件对CPLD的各个内部程序进行编译仿真检测各个输入输出是否可以实现功能,最后汇总为大的多功能实物,用实物去检验程序。EPM240T为100引脚4排带座式芯片,其属于闪存式的CPLD类型,外接电源电压为5V内部稳压为3.3V,其拥有80个I/O接口,192个宏单元数,传播延迟时间仅仅5.9ns,整体时钟设定时间为2.7ns,内部频率为201.1MHZ,过高所以我的毕业设计里用外接晶振。虽然价格较高,但是高速运行时稳定性强。3我们选用CPLD设计最主要原因就是他众多I/O口,能连接功能较多,器件较多的复杂电路。主芯片的管脚图如图2-1所示。 图 2-1 主芯片管脚图2.2 六位数码管的动态显示按照工作的方式,数码管的驱动可以分为静态显示和动态显示。所谓的静态显示,就是每一个数码管段码都要独立的引出一条线和主芯片相连接并定义传输到CPU中,CPU之后把要显示的字符送到输出口上,这样就可以使得数码管显示相对应的字符,这种显示方式直到下次CPU送出另一字码前,显示内容不会消失;动态扫描是将所有显示的7个段码的A-dp的各个相同段连在一起,连接到一个公共的输出端口上,数码管的位端分别连在另外的输出端口上(本次毕业设计连在三极管上),再根据动态的程序将其定义使得数码管按照一定的顺序轮流快速闪亮。4只要频率够高,例如我们设计中的1000Hz,由于人眼的“视觉残留”效应,观察到的就是连续稳定显示的数字,9静态显示的优点是亮度大,显示稳定,节约CPU时间,但是占据I/O口的线较多,硬件的成本很高且接线复杂。动态扫描其特点在于显著降低成本,大大减少显示接口的连线结构。对于我们这个焊接量已经不小的CPLD主芯片板时,我们选择动态显示可以很大程度简化连线,节约成本,使得电路板美观。2.3 方案简述针对CPLD上述的优势,用其软件EPM240T做计时倒计时的核心板做计时倒计时的功能模块,首先我来阐述下计时,倒计时的原理:整体的数字跑表是由计数器构成的,由时间脉冲经过分频得到合理的的时间脉冲信号,再通过计数器计数,就可以完成计时功能了。我们通过设置从低位计数向高位的进位,完成计分,记秒的功能。而倒计时则是将其中的updn信号拉低便可反向计数。计数器可以统计出输入脉冲个数,实现计时、计数、分频、定时、产生节拍脉冲和序列脉冲。对于用7位数码管显示的跑表,量程在00分00.00秒-59分59.99秒,可以用四个十进制、两个六进制记数器来实现,这样在顶层原理图(计数部分)中需要六个计数模块。也就是说这样说将把秒的百分位、十分位、个位和分钟数的个位设计成十进制,秒和分钟的十位设计为六进制。这样就完成了跑表的计数部分。数字跑表电路中需要获得精确的1000Hz的计时脉冲,将1MHz的输入频率送入分频器进行1000分频后,得到1000Hz的频率输出。跑表的显示部分,需要把十进制计数器输出的四位二进制数00001001和六进制计数器输出的0000-0101通过译码,能够正确的在显示数码管上显示0-9和0-5;这需要设计7段显示数码管译码电路。进行1000分频后得到1ms的单位脉冲也就是说计数值精确到0.001s,而我们的设计方案里只需要显示0.01s即可,因此我们需要再设计一个10分频的模块完成内部设计。综上所述,内部电路的设计一共包含以下7个模块:(1)1000分频模块(2)10分频模块(3)六进制加减计数器模块(4)十进制加减计数器模块(5)时间选择电路模块(6)7段译码电路模块(7) 倒计时结束报警电路模块 其次我来说下外部电路的设计部分。设置启动、停止、置数、清零四个按钮以及计时倒计时切换的拨码开关,其中启动停止设为互锁开关,也就是说当启动按钮按下时启动输出为1则停止输出一定为0,反之停止按钮按下,停止输出为1时启动输出一定为0。数码管用6位动态显示方式两两相连(之所以选择动态显示后文的方案比较中有说明),每个管脚的a-g都分别与其他数码管a-g管脚相连,只有个、十位的管脚单独引出通过三极管接CPLD的不同管脚和电源。结束电路:由报警蜂鸣器和结束二极管灯构成。各自连接CPLD芯片的不同管脚通过内部模块的硬件语言描述实现功能。外部供电由3.3V稳压电源模块提供,其中输入和输出各并联一个电解电容起到防抖动效果(硬件模块中有详细说明)。倒计时置数拨码开关的设计:由2个8位的拨码开关构成其中每四位表示分和秒的一位。每一位表示一个2进制数,构成8421BCD码。综上所述,此次的毕业设计论文的设计的内容将分为以下两大模块,即CPLD的内部电路设计和CPLD的外围电路设计,后面我们将详细说明。设计总框图如图1-1所示。图 2-2 设计总框图1000HZ脉冲(周期1ms)作为计数频率输入CPLD系统芯片中,由功能切换电路控制该系统计时与倒计时功能选择,由启/停电路控制系统计时的动态显示与静态停止,能够准确实现当前计数观察。由清零电路控制将数码管计数显示清为000000。由显示驱动电路驱动6位LED数码管运行,使6位数码管显示结果。CPLD计时译码显示如图1-2所示。图2-3 CPLD计时译码显示图第3章内部电路设计综述:本次编程采用Altera公司的Quartus2软件,该软件是Altera公司在21世纪新推出的CPLD开发环境,是前一代MAX+Plus2的替代产品,其功能强大,界面友好且使用便捷。该软件集成了CPLD开发流程中所涉及的所有工具和第三方软件接口,通过此开发工具,设计者可以创建、管理和组织自己的设计。8Quartus2软件在此次毕业设计中主要包括以下五大功能:1设计输入:包括模块输入方式、文本输入方式、Core输入方式和EDA设计输入工具等等,同时要使用分配编辑器设定初始约束条件。2综合:将HDL语言原理图等设计输入翻译成由与、或、非门、RAM和触发器等基本逻辑单元组成的逻辑链接。3布局布线:分析布局布线结果,优化布局布线,增量布局布线和反向标注分配等。4时序分析:允许用户分析设计中逻辑单元的时序性能,通过协助引导布局布线满足实际设计中的时序要求。默认情况下,时序分析作为编译的一部分自动运行,它建立时间,保持时间,时钟至输出延时,最大是中评率和设计其他时序性能等。5仿真:仿真分为时序仿真和功能仿真。时序仿真包含延时信息,能较好的反映芯片的工作状况。而功能仿真验证电路功能是否满足设计要求。53.1 各基本模块的程序设计3.1.1 1000分频设计程序10输入的clk为1MHz时钟脉冲,输出newclk为1000Hz时钟脉冲.当clk上升沿到来时,计数值加1,当加到1000时,计数清零,同时输出一个脉冲,完成1000分频。硬件描述语言局部如下:beginprocess(clk)variable temp:integer:=0;变量为tempvariable cl:std_logic;变量为clbeginif rising_edge(clk) thenclk的上升沿来到吗?if temp=999 then当前计数值为999?temp:=0;cl:=1;变量temp置0,cl置1elsetemp:=temp+1;计数值不为999则temp+1cl:=0;计数值不为999,输出cl为0end if;end if;newclk=cl;end process;end architecture active;编译通过。形成div1024.sym图形文件,如图3-1所示。图3-1 1000分频div1024.sym图形文件输出1个脉冲输入1000个脉冲1000分频仿真图形如图3-2所示。图3-2 1000分频仿真图形3.1.2 10分频设计程序输入的clk为1000Hz时钟脉冲,输出newclk为100Hz时钟脉冲.当clk上升沿到来时,计数值加1,当加到100时,计数清零,同时输出一个脉冲,完成10分频。硬件描述语言局部如下:beginprocess(clk)variable temp:integer:=0;变量为temp和clvariable cl:std_logic;beginif rising_edge(clk) thenclk上升沿来到?if temp=9 then当前计数值为9?temp:=0;cl:=1;计数清零,输出置1elsetemp:=temp+1;计数不为9计数值+1输出为0cl:=0;end if;end if;newclk=cl;end process;end architecture active;编译通过。生成div1024.sym图形文件如图3-3所示。图3-3 10分频div1024.sym图形文件10分频仿真图形如图3-4所示。输入10个脉冲输出1个脉冲图3-4 10分频仿真图3.1.3 计数器的设定跑表的设计需要六进制和十进制两种计数器原理相同,以六进制的设计为例。六进制计数器的清零输入端RST,当RST=1时计数器被清零。EN为计时允许信号,当EN=1时,计数器可以进行加或减计数,EN=0时计数暂停。CLK是时钟脉冲输入端,每当时钟CLK上升沿到来时计数器开始工作计数。COUT是进位或借位输出端。Count6是计数输出信号。记数器的部分程序如下:六进制计数器:输入为:时钟clk、清零clr、倒计时置初值ldn、计数允许en、加减计数选择updn、计数初值din;输出为:借位输出bout、cout进位输出、计数输出qoutbeginif(clr=1) then qout=0000;清零为1时计数、借位输出和仅为输出全部置0bout=0;cout=0;elsif (ldn=0 and updn=0) then qout=din;若选择减计数且倒计时置初值elsif clk event and clk=1 then当时钟上升沿信号来到if (en=1) then开始按钮按下if (updn=0) then减计数模式if qout=0000 then qout=0101;bout=1;如果计数值为0,则计数值置5借位输出为1else qout=qout-1;bout=0;当前计数值不为0,计数值减1,借位值不变end if;elsif qout=0101 then qout=0000;cout=1;正计数如果计数值为5,则计数值为0,进位输出+1else qout=qout+1;cout=0;如果加计数不为5则计数值+1,进位不变end if;end if;end if;-end if;-end if;end process;end;编译成功生成图形如图3-5所示。图3-5 六进制计数器div1024.sym图形文件十进制计数器:输入为:时钟clk、清零clr、倒计时置初值ldn、计数允许en、加减计数选择updn、计数初值din;输出为:借位输出bout、cout进位输出、计数输出qoutbeginif(clr=1) then qout=0000;清零为1时计数、借位输出和仅为输出全部置0bout=0;cout=0;else if (ldn=0 and updn=0) then qout=din;若选择减计数且倒计时置初值else if clk event and clk=1 then当时钟上升沿信号来到if (en=1) then开始按钮按下if (updn=0) then减计数模式if qout=0000 then qout=1001;bout=1;如果计数值为0,则计数值置9借位输出为1else qout=qout-1;bout=0;当前计数值不为0,计数值减1,借位值不变end if;elsif qout=1001 then qout=0000;cout=1;正计数如果计数值为9,则计数值为0,进位输出+1else qout=qout+1;cout=0;如果加计数不为9则计数值+1,进位不变end if;end if;end if;end if;end if;end process;end;编译成功生成图形如图3-6所示。图3-6 十进制计数器div1024.sym图形文件六进制加减流程图如下:首先判断清零是否为1,若为1则直接清零并且停止,若不为1则判断时钟信号脉冲是否到来,到来之后判断是否开始(en=1为开始),开始后判断拨码开关位于正计时还是倒计时处。倒计时计数不为0时减1,为零时置5并且借位输出1。正计时时当前不为5时计数置加1,当前为5时置数为0并且进位输出1。程序框图如图3-7所示。程序开始Clr=1? Y输出清0 NClk上升沿到?来? NAA YEn=1? NA YUpdn=0? Y N当前计数=0?当前计数=5? N N 计数值-1计数值置5计数值+1计数值置0 Y Y计数值=0101?计数值=0000? Y Y Bout=1Cout=1Cout=0Bout=0 N N进程结束图图3-7 六进制加减计数器模块流程图六进制计数器仿真波形如图3-8所示。高电平启动低电平停止加法进位强制清零减法借位输出1图3-8 六进制加减计数器仿真图高电平加,低电平减倒计时置数 十进制加减流程图首先判断清零是否为1,若为1则直接清零并且停止,若不为1则判断时钟信号脉冲是否到来,到来之后判断是否开始(en=1为开始),开始后判断拨码开关位于正计时还是倒计时处。倒计时计数不为0时减1,为零时置9并且借位输出1。正计时时当前不为9时计数置加1,当前为9时置数为0并且进位输出1。十进制加减流程图如图3-9所示。图3-9十进制加减流程图十进制仿真波形如图3-10所示。倒计时借位输出1清零倒计时开始置数正计时进位输出1倒计时初值为3启动停止正,倒计时切换图3-10 十进制加减计数器仿真图3.1.4 时间选择电路的设计输入为0.01s、0.1s、1s、10s、1min、10min。输出为显示sel、daoutarchitecture fun of seltime issignal sum:integer range 0 to 6;sum的取值在0-6beginprocess(clk)beginif(clkevent and clk=1)then当时钟信号到来时if(sum=5)thensum=5时置0sum=0;elsesumsel=111110;daoutsel=111101;daoutsel=111011;daoutsel=110111;daoutsel=101111;daoutsel=011111;daoutnull;end case;end process;end fun;时间选择电路仿真图形如图3-11所示。Sel=110111时显示10sSel=111101时显示100msSel=111110时显示10msSel=011111时显示10mimSel=101111时显示1minSel=111011时显示1s图3-11 时间选择电路仿真图3.1.5 七段译码电路的设计led6-led0分别对应数码管管脚的gfedcbabegin-segment encoding- 0- - 5 | | 1- - 6- 4 | | 2- - 3-cathod_common 7_segment ledwith data selectled=0000110 when 0001,1和2亮对应阿拉伯数字1 1011011 when 0010,01346亮对应阿拉伯数字21001111 when 0011,01236亮对应阿拉伯数字31100110 when 0100,1256亮对应阿拉伯数字41101101 when 0101,02356亮对应阿拉伯数字51111101 when 0110,023456亮对应阿拉伯数字60000111 when 0111,012亮对应阿拉伯数字71111111 when 1000,0123456亮对应阿拉伯数字81101111 when 1001,012356亮对应阿拉伯数字90111111 when 0000,012345亮对应阿拉伯数字01111001 when others;-E为其他(error)end arch;编译成功生成图形原件如图3-12所示。图3-12七段译码电路div1024.sym图形文件七段译码电路的仿真图形如图3-13所示。6所对应的数码管亮图3-13 七段译码电路仿真图2位共阳数码管引脚图如图3-14所示。图3-14 共阳数码管引脚图其中1代表亮起(h为点,这里不做焊接和定义)0代表不亮1111101代表b不亮,正好为6的数码显示,以此类推。3.1.6 倒计时结束报警电路的设计输入为d0、d1、d2、d3、d4、d5依次代表10ms、100ms、1s、10s、1min、10min输出为f蜂鸣器,stop停止beginprocess(clk)beginif clkevent and clk=0 then当信号脉冲停止的时候if(d5=0000 and d3=0000 and d2=0101)分位为0,秒位小于5时蜂鸣器输出1then f=1;否则蜂鸣器为0else f=0;end if;end if;if clkevent and clk=0 thenif(d5=0000 and d4=0000 and d3=0000 and d2=0000 and d1=0000 and d0=0000)如果各个位都为0时then stop=0;停止输出为0else stop=1;end if;end if;end process;end behave;编译成功生成图形如图3-15所示。图3-15 倒计时结束报警div1024.sym图形文件倒计时结束报警电路仿真如图3-16所示。倒计时结束停止倒计时结束前五秒报警图3-16 倒计时结束报警电路仿真图3.2 组合电路的设计基本模块完成后需要组合成六十进制模块和一百进制模块以及顶层的最后电路模块完成CPLD内部程序的设计。3.2.1 六十进制电路的组合方式组合电路图如图3-17所示。图3-17 六十进制组合电路图将十进制的进位借位与六进制的时钟信号相连接构成六十进制的计数器,清零、开始、置数和正倒计时切换都连接在一起构成六十进制。六十进制编译成功生成图形文件如图3-18所示。图3-18 六十进制组合电路div1024.sym图形文件六十进制仿真图形如图3-19所示。置数低位值倒计时置数2置数高位值低位显示值高位显示值图3-19 六十进制仿真图形 3.2.2 一百进制电路的组合方式 一百进制组合电路图如图3-20所示。图3-20 一百进制组合电路十进制计数器和十进制计数器相连接,个位的十进制计数器进位借位信号传给十位十进制计数器的时钟信号。其余和六十进制相同,构成一百进制的计数器,用于秒以下的进位。编译成功并生成图形文件如图3-21所示。图3-21 一百进制组合电路div1024.sym图形文件一百进制计数器仿真图形如图3-22所示。 图3-22 100进制组合电路仿真图十进制数在秒的后位所以不需要倒计时的置数,因此少了ldn和置数的初值设置的模块,其他的和六十进制相似只是换了十位的进制。3.3顶层电路的管脚分配管脚定义如图3-23所示。图 3-23 管脚定义图其中红色点表示有定义的I/O口,白色的点表示没有用到的I/O口具体的定义情况除了三角为电源和为地,方块为晶振,圆圈的点均可根据实际的焊接需要进行灵活定义简化焊接量。管脚定义如表3-1所示。表 3-1 管脚定义表名称管脚名称管脚名称管脚clr50Led07Sel218cp14Mseth358Sel117en51Mseth261Sel016end86Mseth167Sseth373endout87Mseth066Sseth272Ldn48Msetl369Sseth175Led61Msetl268Sseth074Led52Msetl171Ssetl377Led43Msetl070Ssetl276Led34Sel521Ssetl181Led25Sel420Ssetl078Led16Sel319updn49第4章外部电路设计4.1 硬件总体框图基于CPLD的计时倒计时设计首先需要EPM240T的核心板控制,另外需要接部分外部的硬件来实现功能,首先需要一个有源晶振产生时钟脉冲成为时钟发生电路;其次要有计时倒计时功能切换,以及开始、停止的控制电路我们成为功能控制与切换电路;第三需要倒计时功能的置初值电路;第四需要数码管以及数码管的显示驱动电路;最后还需要倒计时结束的报警电路和指示灯电路。外部电路总图如图4-1所示。CPLD6位数码管显示驱动电路报时电路时钟发生器电路功能切换与控制电路倒计时初值设置电路电路 图 4-1 外部电路总框图4.2时钟发生器电路设计外接1MHz晶振与CPLD的对应定义管脚直接相连。四脚有源晶振电路如图4-2所示。 VCC 4 3 out 空 1 2 GND图 4-2 晶振管脚图4.3 功能切换与控制电路的设计4.3.1 计时倒计时切换电路切换电路S5闭合时updn为低电平此时计数模式为倒计数,当S5断开时updn为高电平,这时计数模式变为正计数,电路图如图4-3所示。图 4-3 计时倒计时切换电路图4.3.2 启动停止电路此前先引入74HC00芯片:74LS00芯片接启动和停止开关构成双稳态触发器电路,启动、停止为双稳态电路的置1、置0端,双稳态输出接到电路的启动停止控制端,所谓双稳态触发控制其启动停止,就是当按下启动时,自动锁定en始终为高电平保持稳态1,当按下停止时,en始终为低电平,保持稳态0。这便是双稳态的具体内容。这里我们需要双稳态出发只需用到其中的两个与非门电路和电源及地,根据焊接的方便可以灵活选择焊接的管脚。双稳态电路图如图4-5所示。图4-5 启动、停止电路图4.3.3 清零电路当S2按下时clr为低电平此时强制清零,清零的电路图如图4-6所示。图4-6 清零电路图4.4 倒计时初值设置电路电路的设计4.4.1 倒计时置数电路当S1按下时ldn为低电平开始置数,此时数码管将显示拨码开关所对应的数值,并准备开始倒计时,置数电路图如图4-7所示。图4-7 倒计时置数电路图4.4.2 拨码开关电路拨码开关的每一个开关代表一位二进制数,因此用4位二进制数表示一位十进制数,调整分和秒的计数需要用到16位二进制数,由于分和秒的十位最大为5因此只需用到3位二进制数表示,所以实际有效的拨码开关由14个。4位2进制表示一位十进制即是8421BCD码,四位二进制最高位1代表十进制8第二位为1代表4以此类推。其外部接线图如图4-8所示。图4-8 拨码开关电路图4.5 六位数码管显示驱动电路的设计我所用到的是数码管的动态显示,其显示原理是数码管内部将所有位数码管的段选线并联到一起,由数码管位管脚控制哪一个数码管有效。选亮数码管采用动态扫描显示。原理图如图4-9所示。图4-9 共阳数码管动态扫描接线图其中我来介绍下74HC240,74HC240是一款常见的驱动信号芯片,用于各种CPLD与外部电路连接中,CPLD I/O口输出的电流很小而240芯片就是用来放大电流并且反相输出。74HC240放大电流,反向输出为焊接带来了一定的难度,其中19脚和1脚分别控制了所有二极管的输出,这里我们用1脚和19脚接地,来隔开CPLD与数码管的直接连接,而是运用三极管的控制。芯片管脚图如图4-10所示。图4-10 74HC240内部引脚图4.6 报时电路的设计4.6.1 报警电路报警电路原理图如图4-11所示。图4-11 报警电路图蜂鸣器接线图。当endout发出信号时蜂鸣器开始报警。4.6.2 结束电路结束电路原理图如图4-12所示。图4-12 结束灯电路图结束灯接线图。当停止信号发出,停止灯亮。4.7 外部电源模块的设计选择3.3V稳压电源模块是因为CPLD内部稳压是3.3V,即当CPLD通电时,输入5V电源后内部便形成3.3V电源,外接3.3V电源是为了和CPLD内部电源保持一致,其接线图如图4-13所示。图4-13 3.3V稳压电源电路图按键防抖动图如图4-14所示。图4-14 防抖动电路图 SW1未被按下时,CPLD上是高电平,C1右侧是VCC,左侧是0。SW1被按下时,C1两侧会放电延时,C1右侧的正电荷越来越少,直到CPLD上是低电平,SW1抖动,貌似弹起,C1右侧的正电荷会增加一点,但时间很短暂,可以忽略不计,此时CPLD上还是低电平,真到SW1按下稳定,C1放电结束。第5章系统调试5.1 软件调试软件调试主要是由仿真软件对程序的输入部分进行赋值然后查看输出是否为我们所预期的结果,我们逐一对七个编译的基本模块进行了仿真,都可以正常运行后对组合模块六十进制和一百进制进行了仿真。成功后组合成顶层电路用实物进行验证其正确性。调试过程中,我遇到了以下几个问题:七段译码电路中编译不成功,在老师的帮助下,找出了问题所在,我把本该定义为解释说明的文本输入到了程序内容中,导致编译出错。在CPLD内部定义管脚的时候,将晶振的脚接在了CPLD内部晶振的12脚,导致外部晶振没有被用到。5.2 硬件调试由于我的版焊接电路较多,因此有很多焊接的瑕疵。问题一:数码管的管脚对应问题,我从网上查到的和我实际买到的数码管管脚图完全不同,导致第一次调试的时候数码管基本上全不亮,后来大改了数码管的接线图。正确后基本恢复正常。问题二:数码管基本恢复后,g所对应的横杠总是不亮,经查对,是我的74HC240芯片的8-12非门出现了故障,之后换成了9-11的非门才恢复正常。问题三:CPLD主芯片电源为PWIM脚,而我的芯片没有连接,我在接了PWIM于5V电源后CPLD依旧不工作,所以我只能通过外接CPLD电源进行双供电。问题四:起初蜂鸣器一通电就叫,无法控制,但是其实不是蜂鸣器的接线问题所致,由于CPLD管脚众多,在焊接时误将晶振管脚和其他没有用到的管脚焊接在一起导致内部短路,使得endout脚一直为高电平,在更改晶振

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论