




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA技术设计报告题目: (作品名称)学 院: 光电与信息工程学院 专 业: 电子信息工程 年 级: 2013级 学 号: 姓 名: 2015年9月一、 作品介绍(描写:作品功能、应用场合、使用说明等)作品功能:可在开发板上以显示分钟秒的形式显示,每隔1s钟,秒钟加一,当秒钟数达到60式,分钟数自动加一,秒钟数变为00,故秒钟数最大只会显示59,当分钟数达到60时,分钟自动变为00,故分钟时最大值也只会显示到59,整个计时的最大值为1h,按下S1按钮可实现复位重新计时。应用场合:可应用于较短计时(<1h)而且对时间精度要求不太大的各种计时场合,比如长跑、工作时间的计时、考试等等。使用说明
2、:(1)计时器能显示 1s 的时间,故提供给计时器内部定时的时钟脉冲频率应大于10Hz。(2)计时器计时长度为 3600秒,在一般计时应用中足够了,设计一个4位LED数码显示“秒表”,显示时间为360000秒,每秒自动加一,精度为1。(3)设置复位和中断键,中断键可以停止计时,显示计时长度,复位开关用来使计时器清 0,并作好清 0 准备。复位开关可以在任何情况下使用,在计时过程中,只要按一下复位开关,计时进程就终止,并对计时器清零。二、 硬件设计(描写:硬件总框图,工作原理,工作过程等)硬件总框图:EP2C35USBBLASTERUSBDEVICEUSBHOSTFT245ISP1362MAX3
3、128EPCS16SRAMFLASHFLASHSDRAMHEX7SW0SW1HEX6HEX5HEX4HEX7HEX6HEX7HEX6时钟基准时钟复位计数器动态显示译码显示工作原理:1) 本设计可分为六个主要模块:(1)键输入消抖模块(2)时钟分频电路模块(3)控制电路模块(4)计时电路模块(5)存储器模块(6)动态扫描译码显示模块各个输入/输出端口的作用如下:(1) CLK 为外部时钟信号,CLR 为复位信号。(2) SW0为终端按键,按下此按键可停止计数(2)SW1 为复位键,用于复位以及从观看记录模式切换回计时模式用。(3)led0,led1,led2,led3,led4,led5,led
4、6,led7数码管输入信号2) 消抖模块秒表面板上有2个按键:SW1(复位)键,SW0(启停)键。因为设计采用的是机械式的按键,由于存在机械触动的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开。因而在闭合及断开按键的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5-10ms。按键的闭合稳定时间的长短由操作人员的按键动作决定,一般为零点几秒至数秒。按键抖动会引起被误读多次。为确保 FPGA 对键的闭合仅作一次处理,必须去除按键抖动。通常在按键较少时可用硬件方法消除抖动,一般采用 RS 触发器作为常用的消抖电路,如果按键较多时,常用软件消除抖动。在
5、 EDA 的设计应用中,软件消抖的方法即可使用 RS 触发器进行消抖,也可通过检测按键按下的时间进行消抖。本模块描述的防抖动电路属于计数器型防抖动电路。其工作原理是,输入一个 50MHZ的时钟信号,设置一个模值为 4 的控制计数器,在人工按键 KEY=0时,执行加 1 计数,如连续 4 次检测到低电平则 JSQ=3,即当 JSQ=3 时输出低电平,4 次以上检测到低电平,JSQ 依然等于 3,也一直输出低电平,这就确保了当按键信号持续低电平 6MS 以上按键信号才有效,抖动期间的低电平持续时间不足以输出低电平。如没有连续 4 次以上检测到低电平,则 JSQ 清零。如检测到高电平,JSQ 也清零
6、,这就导致了在抖动期间不可能输出低电平,唯有在稳定期间才可能输出低电平,因此防抖动得以实现。因为消抖电路后接的是同步设计的控制模块,故需要将输出信号的长度变为两个周期的控制模块同步时钟的长度,因此在输出电路后,再接入一个 20MHZ 的 CLK2 信号,当输出从 1 变为 0 时,在时钟跳变沿,输出低电平 0,在下一个时钟跳变沿则变为 1,在当输出为 1 时,则一直输出 1,也就是不论输出为多长的低电平,经过此部分同步变化后,只会输出两个周期 CLK2 的低电平输出,以供控制模块使用。3) 时钟分频电路模块 在基于 EDA 技术的数字电路系统设计中,分频电路应用十分广泛。常常使用分频电路来得到
7、数字系统中各种不同频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号经过适当处理后,产生一个或数个频率较低的数字输出信号。分频电路本质上是加法计数器的变种,其计数值由 N=FIN(输入频率)/FOUT(输出频率)决定,其输出不是一般计数器的计数结果,而是根据分频常数对输出信号的高,低电平控制。本设计需要一个计时范围为 03600 秒的秒表,首先需要获得一个比较精确的计时基准信号,这里时周期为 1/100 s 的计时脉冲,采用一个时钟信号源 50MHZ 经 50万倍分频后获得一个精确的 100HZ 的脉冲来作为计数器的时钟信号 CLK100hz,数码管的扫描频率采用经 2000
8、 倍分频后的 10000HZ 的脉冲 CLK_OUT2,按键消抖电路部分需要采用经 4 万倍分频后产生的 500HZ 的脉冲 CLK_OUT3 作为检测信号。4) 控制电路模块为了实现数字秒表的各种相应功能,主控电路对各种输入控制信号进行处理。作出相应的调整,发出一系列的控制输出信号。如对数字秒表实现复位操作,启、停控制,以及记录读取控制,控制模块为同步电路设计,在时钟上升沿才变化,主控电路的功能:(1)实现系统复位:当 SW1键按下时,输出 CLR=0以及 Q=0信号,实现计时清零并停止功能,当系统(2)启/停控制:用于开始/结束计时操作。数字秒表的启/停是通过控制送给计数器的使能端来实现的
9、。当按下 K2 键后,输出端 Q 的状态发生反转。Q=1,秒表处于计时状态,当 Q=0时,计数器暂停计时。5) 计数模块计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单 元则由一系列具有存储信息功能的各类触发器构成,这些触发器有 RS 触发器、T 触发器、D 触发器及 JK 触发器等。计数器在数字系统中应用广泛,如在电子计算 机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字
10、仪器中对脉冲的计数等等。计数器有很多作用,在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接 LCD 或 LED 屏才能显示。计数器的种类:如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。常见的同步计数器有 74160 系列,74LS190 系列,常见的异步计数器有 74LS290 系列。如果按照技术过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可
11、增可减的叫做可逆计数器。另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使人一目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。计数器的原理是将几个触发器按照一定的顺序连接起来,然后根据触发器的状态按照一定的规律随时钟的变化来记忆时钟的个数。掌握了计数器的这个原理后,就很容易采用 VHDL 语言来对计数器进行描述了。在本次设计中,因为计数器电路非常容易产生毛刺,为了系统精度和稳定可靠性着想,采用了同步计数器设计以及格雷码计数器设计,来最大限度的消除毛刺,系统需要 3个模 10 格雷码计数器以及一个模 6 格雷码计数器,其中 0.01S 位计时器由 1
12、00HZ 脉冲作为输入时钟,1S 计时器的时钟由0.1S 的进位输出作为时钟信号,10S 计时器的时钟由 1S 的进位输出作为时钟信号。毛刺是因为传输信号到达终点时间不一致,电路里的延时不一致所导致的信号跳变时间不一致而出现的一些误差,这些误差会影响系统稳定可靠性,对于对毛刺敏感的控制端可能会出现很严重的错误,毛刺的消除是有必要的。普通计数器因为每次几路信号同时多位跳变,必然会产生计数器型的毛刺,消除的该种毛刺的最好办法就是改用每次只跳变一位信号的格雷码来做计数,普通 4 位格雷码是到 15 回 0 的,但是我们需要到 9 回 0 的,所以要在原有格雷码的基础上做些修改,对应的 0 到 9 数
13、字。在设计格雷码计数器的时候可以使用状态机,给每个码设定一个状态然后用时钟来控制它在状态间转换,这样就完成了我们需要的功能, 但是若是状态比较多,如 n=6,这时就会有 64 个状态,显然再用状态机非常不方便,当然理论上是可以的。或者是设计一个二进制计数器,通过它来计数,然后利用编码转换就可以得到对应的格雷码计数器。我们采用算好哪一位下次时钟沿跳变时需要变化来实现格雷码计数器。计时电路模块输入端有使能端 EN,100HZ 时钟输入 CLK,清零输入 CLR,输出端有0.1S 位 1S 位 10S 位和 CO 进位端,在 10HZ 时钟输入给 0.1S 位并在控制模块输出 Q=1时开始计时,Q=
14、0时暂停计时,控制端按下清零键则 Q=0,CLR=0,使计时器停止计时并全部清零。6) 动态扫描译码显示模块在数字电路系统中,人们常常需要将数字电路中表示数字、文字、符号的二进制代码翻译成人们习惯的形式,并且使其直观地显示出来以便直接读数。为了能够直观地显示数字电路系统中的有关数据,人们常常使用七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元多一个小数点显示。七段数码管的的基本原理是将所要显示的数字翻译成构成该电路中可发光二极管的驱动信号,分别用 A、B、C、D、E、F、G 来表示不同位置的二极管,驱动信号会驱动不同位置的的发光二极管发光来显示出 0 到 9 的数字,因此要将
15、二进制数据信号转换为可显示的数字的驱动信号需要特定的译码电路。数码管分共阳和共阴型,共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极 COM 的数码管,在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮,本次设计使用共阳数码管。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,
16、从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个 I/O 端口进行驱动,或者使用如 BCD 码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5×8=40 根 I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。数码管动态显示接口是应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划"a,b,c,d,e,f,g,d,p"的同名端连在一起
17、,另外为每个数码管的公共极增加位选通控制电路,位选通由各自独立的 I/O 线控制,当系统输出显示码时,所有数码管都接收到相同的显示码,但究竟是那个数码管会显示出数字,取决于系统对位选端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的选通端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样
18、的,能够节省大量的 I/O 端口,而且功功耗更低。在本次设计中将采用七段共阳型数码管动态显示电路的来设计。三、 软件设计(描写:软件总框图,各模块流程图并加以详细说明)程序采用自顶向下分层设计,软件总框图如下:N存储器计时程序动态扫描译码程序主控程序按键消抖处理程序按键扫描程序分频电路程序CLK50M输入八段数码管七段共阳型数码管译码表:各模块流程图Ø Led七段共阳型数码管显示模块:1) 流程图: 开始定义输入变量datain定义输出变量ledout、dataoutledoutOUTWIDTH-1:1=dataout显示译码结束2) 程序:module led(datain,led
19、out);parameter INWIDTH=4;parameter OUTWIDTH=8;inputINWIDTH-1:0 datain;outputOUTWIDTH-1:0 ledout; regOUTWIDTH-2:0 dataout;assign ledoutOUTWIDTH-1:1=dataout;always begincase(datain)0:dataout<=7'b1000000;1:dataout<=7'b1111001;2:dataout<=7'b0100100;3:dataout<=7'b0110000;4:dat
20、aout<=7'b0011001;5:dataout<=7'b0010010;6:dataout<=7'b0000010;7:dataout<=7'b1111000;8:dataout<=7'b0000000;9:dataout<=7'b0010000;10:dataout<=7'b0001000;11:dataout<=7'b0000011;12:dataout<=7'b1000110;13:dataout<=7'b0100001;14:dataout&
21、lt;=7'b0000110;15:dataout<=7'b0001110;default:dataout<=7'b1000000;endcaseendendmodule3) 分析: 本模块实现了七段共阳型数码管显示功能,通过译码表在数码管上显示对应的字符。Ø 按键扫描程序:1) 流程图 N开始定义计时器的counter位数为8位定义使用时钟信号并赋值为输入信号的最高位如果输入信号clk上升沿到来时(clk)counter自加一如果使用时钟信号clk_use上升沿到来,即为了消去按键抖动时输出信号keyout=keyin模块结束NYY2) 程序:m
22、odule switch(clk,keyin,keyout);parameter COUNTWIDTH=8;input clk,keyin;output reg keyout;regCOUNTWIDTH-1:0 counter;wire clk_use;/频率较低的时钟assign clk_use=counterCOUNTWIDTH-1;always (posedge clk)counter<=counter+1'b1;always (posedge clk_use)keyout<=keyin;endmodule3) 分析此功能程序包含两个输入变量clk、keyin,一个输
23、出变量keyout,clk供给程序时钟脉冲,keyin提供程序按键的操作实现的功能(实现复位或者暂停),输出变量keyout实现对提供的输入信号keyin的处理。本程序较为简单,主要是用来实现按键的消抖:即由counter和clk_use构成的延时实现消抖,当输入信号clk上升沿(即时钟信号上升沿到来时),counter自加一,若counter的最高位发生变化时,即发生从0到1的跳变,clk_use会产生一个上升沿的变化,通过时间的延迟从而实现消抖,消抖时间为128*输入时间脉冲clk的时间。可通过程序仿真观察此模块实现的功能:当keyin为复位时,即clr=1,led4=led5=led6=
24、led7=1000000(数码管最低位即小数点位没用到)故只看前7位,查看led对应的显示译码可知道,当led=1000000时,数码管显示为0当keyin为暂停时,即pause=1,可看到led4、led5、led6、led7保持状态不变Ø 主程序模块:1) 流程图:开始定义输入输出口调用按键扫描模块程序led1=led2=led3=led0=8'b11111111,即低四位数码管消隐if(!isstop)即未按下暂停/启动按钮分频得到100hz时间脉冲Yif(zero)即按下复位按钮计时器清零实现1s计时if(s0=9)s0<=0,s1<=s1+1 s0<
25、;=s0+1if(s1=5)s1<=0,minu0<=minu0+1 s1<=s1+1if(minu0=9)minu0<=0,minu1<=minu1+1minu0<=minu0+1if(minu1=5)minu1<=0minu1<=minu1+1调用显示模块结束YYYYYNNNNNN2) 程序:module paobiao(clk50m,pause,clr,led0,led1,led2,led3,led4,led5,led6,led7);parameter WIDTH=8;(* chip_pin="N2" *)input c
26、lk50m;(* chip_pin="N25" *)input pause;(* chip_pin="N26" *)input clr;(* chip_pin="N9,P9,L7,L6,L9,L2,L3,Y18" *)output7:0 led7;(* chip_pin="M4,M5,M3,M2,P3,P4,R2,AA20" *)output7:0 led6;(* chip_pin="R3,R4,R5,T9,P7,P6,T2,U17" *)output7:0 led5;(* chip_pin=&
27、quot;T3,R6,R7,T4,U2,U1,U9,U18" *)output7:0 led4;(* chip_pin="W24,U22,Y25,Y26,AA26,AA25,Y23,W19" *)output7:0 led3;(* chip_pin="Y24,AB25,AB26,AC26,AC25,V22,AB23,V18" *)output7:0 led2;(* chip_pin="AB24,AA23,AA24,Y22,W21,V21,V20,AF22" *) output7:0 led1;(* chip_pin=&quo
28、t;V13,V14,AE11,AD11,AC12,AB12,AF10,AE22" *)output7:0 led0;/=暂停标志=wire isstop;/标识跑表当前是否处于停止状态wire zero;switch #(8) switchstop(clk50m,pause,isstop);switch #(8) switchzero(clk50m,clr,zero);reg counter_100hz;/从50Mhz分频到100hz的计数器wire clk100;/=分频得到100hz的时钟=/assign clk100=counter_100hz18;assign clk100=
29、counter_100hz;assign led0=8'b11111111;assign led1=8'b11111111;assign led2=8'b11111111;assign led3=8'b11111111;always (posedge clk50m)begin if(!isstop)begin if(counter_100hz=1)counter_100hz<=0;else counter_100hz=counter_100hz+1;end endreg3:0fs0;/百分秒十位regfscarry0;/百分秒十位的进位reg3:0fs1;
30、/百分秒十位regfscarry1;/百分秒十位的进位reg3:0s0;/秒的个位regscarry0;/秒个位的进位reg3:0s1;/秒的十位regscarry1;/秒十位的进位reg3:0minu0;/分的个位regmiucarry0;/分个位的进位reg3:0minu1;/分的十位always(posedge clk100 or posedge zero)begin if(zero)begin fs0<=0; fscarry0<=0;endelse if(clk100=1)begin if(fs0=9) begin fs0<=0; fscarry0<=1; en
31、delse begin fs0<=fs0+1;fscarry0<=0;endendendalways(posedge fscarry0 or posedge zero)begin if(zero) begin fs1<=0;fscarry1<=0;endelse if(fscarry0=1)begin if(fs1=9) begin fs1<=0;fscarry1<=1;endelse begin fs1<=fs1+1;fscarry1<=0;endendendalways(posedge fscarry1 or posedge zero)begin if(zero) begin s0<=0;scarry0<=0;endelse if(fscarry1=1)begin if(s0=9) begin s0<=0;scarry0<=1;endelse begin s0<=s0+1;scarry0<=0;endendendalways(posedge scarry0 or posedge zero)begin if (zero) begi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国包胶钢丝绳行业市场前景预测及投资价值评估分析报告
- 2025年中国半导体射频电源行业市场前景预测及投资价值评估分析报告
- 知识产权保护下的互联网广告精准投放合同
- 离职后担保协议书
- 美食分享平台用户原创食谱版权归属确认书
- 诉讼案件司法调解员委托合同
- 污水车交接协议书
- 运动员培养协议书
- 技术入干股协议书
- 热电材料研发与市场推广合伙协议
- 妊娠便秘疾病演示课件
- 面试官认证考题
- 大楼内卫生间装修改造工程施工组织设计
- 国家开放大学电大《液压气动技术(本科)》2019-2020期末试题及答案
- 书法课特色端午(课件)小学生书法通用版
- 小学数学-角的度量教学设计学情分析教材分析课后反思
- 2022年上海高考英语真题试卷(含答案)
- 中国风故宫建筑介绍
- 《思想道德与法治》课件第四章明确价值要求践行价值准则第三节积极践行社会主义核心价值观
- 2023年甘肃省天水市中考生物真题(含答案解析)
- 医院管理学试卷
评论
0/150
提交评论