EDA技术设计报告题目:(作品名称)学院:光电与信息工程学院专业:电子信息工程年级:2013级学号:姓名:2015年9月-1-一、作品介绍(描写:作品功能、应用场合、使用说明等)作品功能:可在开发板上以显示分钟——秒的形式显示,每隔1s钟,秒钟加一,当秒钟数达到60式,分钟数自动加一,秒钟数变为00,故秒钟数最大只会显示59,当分钟数达到60时,分钟自动变为00,故分钟时最大值也只会显示到59,整个计时的最大值为1h,按下S1按钮可实现复位重新计时。应用场合:可应用于较短计时(1h)而且对时间精度要求不太大的各种计时场合,比如长跑、工作时间的计时、考试等等。使用说明:(1)计时器能显示1s的时间,故提供给计时器内部定时的时钟脉冲频率应大于10Hz。(2)计时器计时长度为3600秒,在一般计时应用中足够了,设计一个4位LED数码显示“秒表”,显示时间为3600~00秒,每秒自动加一,精度为1。(3)设置复位和中断键,中断键可以停止计时,显示计时长度,复位开关用来使计时器清0,并作好清0准备。复位开关可以在任何情况下使用,在计时过程中,只要按一下复位开关,计时进程就终止,并对计时器清零。二、硬件设计(描写:硬件总框图,工作原理,工作过程等)硬件总框图:EP2C35USBBLASTERUSBDEVICEUSBHOSTFT245ISP1362MAX3128EPCS16SRAMFLASHFLASHSDRAMHEX7SW0SW1HEX6HEX5HEX4HEX7HEX6HEX7HEX6-2-工作原理:1)本设计可分为六个主要模块:(1)键输入消抖模块(2)时钟分频电路模块(3)控制电路模块(4)计时电路模块(5)存储器模块(6)动态扫描译码显示模块各个输入/输出端口的作用如下:(1)CLK为外部时钟信号,CLR为复位信号。(2)SW0为终端按键,按下此按键可停止计数(2)SW1为复位键,用于复位以及从观看记录模式切换回计时模式用。(3)led0,led1,led2,led3,led4,led5,led6,led7数码管输入信号2)消抖模块秒表面板上有2个按键:SW1(复位)键,SW0(启停)键。因为设计采用的是机械式的按键,由于存在机械触动的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开。因而在闭合及断开按键的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5-10ms。按键的闭合稳定时间的长短由操作人员的按键动作决定,一般为零点几秒至数秒。按键抖动会引起被误读多次。为确保FPGA对键的闭合仅作一次处理,必须去除按键抖动。通常在按键较少时可用硬件方法消除抖动,一般采用RS触发器作为常用的消抖电路,如果按键较多时,常用软件消除抖动。在EDA的设计应用中,软件消抖的方法即可使用RS触发器进行消抖,也可通过检测按键按下的时间进行消抖。本模块描述的防抖动电路属于计数器型防抖动电路。其工作原理是,输入一个50MHZ的时钟信号,设置一个模值为4的控制计数器,在人工按键KEY=‘0’时,执行加1计数,如连续4次检测到低电平则JSQ=3,即当JSQ=3时输出低电平,4次以上检测到低电平,JSQ依然等于3,也一直输出低电平,这就确保了当按键信号持续低电平6MS以上按键信号才有效,抖动期间的低电平持续时间不足以输出低电平。如没有连续4次以上检测到低电平,则JSQ清零。如检测到高电平,JSQ也清零,这就导致了在抖动期间不可能输出低电平,唯有在稳定期间才可能输出低电平,因此防抖动得以实现。时钟基准时钟复位计数器动态显示译码显示-3-因为消抖电路后接的是同步设计的控制模块,故需要将输出信号的长度变为两个周期的控制模块同步时钟的长度,因此在输出电路后,再接入一个20MHZ的CLK2信号,当输出从1变为0时,在时钟跳变沿,输出低电平0,在下一个时钟跳变沿则变为1,在当输出为1时,则一直输出1,也就是不论输出为多长的低电平,经过此部分同步变化后,只会输出两个周期CLK2的低电平输出,以供控制模块使用。3)时钟分频电路模块在基于EDA技术的数字电路系统设计中,分频电路应用十分广泛。常常使用分频电路来得到数字系统中各种不同频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号经过适当处理后,产生一个或数个频率较低的数字输出信号。分频电路本质上是加法计数器的变种,其计数值由N=FIN(输入频率)/FOUT(输出频率)决定,其输出不是一般计数器的计数结果,而是根据分频常数对输出信号的高,低电平控制。本设计需要一个计时范围为0——3600秒的秒表,首先需要获得一个比较精确的计时基准信号,这里时周期为1/100s的计时脉冲,采用一个时钟信号源50MHZ经50万倍分频后获得一个精确的100HZ的脉冲来作为计数器的时钟信号CLK100hz,数码管的扫描频率采用经2000倍分频后的10000HZ的脉冲CLK_OUT2,按键消抖电路部分需要采用经4万倍分频后产生的500HZ的脉冲CLK_OUT3作为检测信号。4)控制电路模块为了实现数字秒表的各种相应功能,主控电路对各种输入控制信号进行处理。作出相应的调整,发出一系列的控制输出信号。如对数字秒表实现复位操作,启、停控制,以及记录读取控制,控制模块为同步电路设计,在时钟上升沿才变化,主控电路的功能:(1)实现系统复位:当SW1键按下时,输出CLR=’0’以及Q=’0’信号,实现计时清零并停止功能,当系统(2)启/停控制:用于开始/结束计时操作。数字秒表的启/停是通过控制送给计数器的使能端来实现的。当按下K2键后,输出端Q的状态发生反转。Q=’1’,秒表处于计时状态,当Q=’0’时,计数器暂停计时。5)计数模块计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器有很多作用,在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。计数器的种类:如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。-4-常见的同步计数器有74160系列,74LS190系列,常见的异步计数器有74LS290系列。如果按照技术过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器。另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使人一目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。计数器的原理是将几个触发器按照一定的顺序连接起来,然后根据触发器的状态按照一定的规律随时钟的变化来记忆时钟的个数。掌握了计数器的这个原理后,就很容易采用VHDL语言来对计数器进行描述了。在本次设计中,因为计数器电路非常容易产生毛刺,为了系统精度和稳定可靠性着想,采用了同步计数器设计以及格雷码计数器设计,来最大限度的消除毛刺,系统需要3个模10格雷码计数器以及一个模6格雷码计数器,其中0.01S位计时器由100HZ脉冲作为输入时钟,1S计时器的时钟由0.1S的进位输出作为时钟信号,10S计时器的时钟由1S的进位输出作为时钟信号。毛刺是因为传输信号到达终点时间不一致,电路里的延时不一致所导致的信号跳变时间不一致而出现的一些误差,这些误差会影响系统稳定可靠性,对于对毛刺敏感的控制端可能会出现很严重的错误,毛刺的消除是有必要的。普通计数器因为每次几路信号同时多位跳变,必然会产生计数器型的毛刺,消除的该种毛刺的最好办法就是改用每次只跳变一位信号的格雷码来做计数,普通4位格雷码是到15回0的,但是我们需要到9回0的,所以要在原有格雷码的基础上做些修改,对应的0到9数字。在设计格雷码计数器的时候可以使用状态机,给每个码设定一个状态然后用时钟来控制它在状态间转换,这样就完成了我们需要的功能,但是若是状态比较多,如n=6,这时就会有64个状态,显然再用状态机非常不方便,当然理论上是可以的。或者是设计一个二进制计数器,通过它来计数,然后利用编码转换就可以得到对应的格雷码计数器。我们采用算好哪一位下次时钟沿跳变时需要变化来实现格雷码计数器。计时电路模块输入端有使能端EN,100HZ时钟输入CLK,清零输入CLR,输出端有0.1S位1S位10S位和CO进位端,在10HZ时钟输入给0.1S位并在控制模块输出Q=’1’时开始计时,Q=’0’时暂停计时,控制端按下清零键则Q=’0’,CLR=’0’,使计时器停止计时并全部清零。6)动态扫描译码显示模块在数字电路系统中,人们常常需要将数字电路中表示数字、文字、符号的二进制代码翻译成人们习惯的形式,并且使其直观地显示出来以便直接读数。为了能够直观地显示数字电路系统中的有关数据,人们常常使用七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元多一个小数点显示。七段数码管的的基本原理是将所要显示的数字翻译成构成该电路中可发光二极管的驱动信号,分别用A、B、C、D、E、F、G来表示不同位置的二极管,驱动信号会驱动不同位置的的发光二极管发光来显示出0到9的数字,因此要将二进制数据信号转换为可显示的数字的驱动信号需要特定的译码电路。-5-数码管分共阳和共阴型,共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极COM的数码管,在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮,本次设计使用共阳数码管。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。数码管动态显示接口是应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,d,p的同名端连在一起,另外为每个数码管的公共极增加位选通控制电路,位选通由各自独立的I/O线控制,当系统输出显示码时,所有数码管都接收到相同的显示码,但究竟是那个数码管会显示出数字,取决于系统对位选端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的选通端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功功耗更低。在本次设计中将采用七段共阳型数码管动态显示电路的来设计。三、软件设计(描写:软件总框图,各模块流程图并加以详细说明)程序采用自顶向下分层