版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北华航天工业学院《EDA技术综合设计》课程设计报告设计题目:数字秒表设计系别:电子工程系专业:通行工程班级:姓名:学号:指导老师:完成时间:2012年11月30日大纲:应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了数字系统的开发时间。我们试一试利用VHDL为开发工具设计数字秒表。秒表的逻辑结构较简单,它主要由十进制计数器、六进制计数器、分频器、报警器、和显示译码器等组成。在整个秒表中最要点的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号、一个清零信号和一个报警信号,以便秒表能随意停止及启动。秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便与同显示译码器连接。开关设置秒表报警器,每1分钟,蜂鸣器鸣响1声。当计时达60分钟后,蜂鸣器鸣响10声。要点词:VHDL、分频器、计数器、译码显示器-2-目录数字秒表设计一、题目任务与要求1、任务:用FPGA设计一个数字秒表。2、技术要点与要求:(1)秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便与同显示译码器的连接。(2)开关设置秒表报警器,每1分钟,蜂鸣器鸣响1声。当计时达60分钟后,蜂鸣器鸣响10声。二、设计思想其设计思路为:经过分频器将晶振所供应的信号分频成0.01S脉冲作为计时信号,经计数器累加计数,形成六十进制的计数器和一百进制的计数器。经译码器译码后,分别输出给六个7段LED数码管显示。设计采用六位LED数码管显示分、秒,0.1s,0.01s计时方式。使用按键开关可实现开始/结束计时操作及复位清零操作。1.设计要求(秒表的功能描述)要求设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即即是在计时过程中也要无条件地进行清零操作。(2)要求设置启/停开关。当按下启/停开关后,将启动秒表并开始计时,当再按一下启停开关时,将停止秒表的计时操作。(3)要求计时精确度大于0.01秒。要求设计的计时器可以显示分(2位)、秒(2位)、0.1秒(1位),0.01秒的时间。(4)要求秒表的最长计时时间为秒表计时长度为59.分59.99秒,高出计时长度,有溢出则报警,计时长度可手动设置。2.秒表的面板包括:1)显示屏:由6个7段数码管组成,用于显示当前时间。2)QT(启/停键):用于开始/结束计时操作。3)CLR(复位键):用于秒表计时系统的复位操作。4)蜂鸣器:溢出报警,则发出蜂鸣声。三、系统设计整个系统设计是采用自顶向下剖析,自底向上设计。将数字秒表系统的整体分解为各个模块电路。下面详细介绍了数字秒表系统的各个模块的设计,并对各个模块的每一个部分进行认识析,在后半部分还对系统模型进行了程序调试。各模块之间的每一个坏节都是深思熟虑而成,各自完成相应的功能并组成一个一致的整体。系统的整体设计顶层电路设计数字秒表的顶层电路图及时序剖析采用硬件描述语言设计一个复杂电路系统,运用自顶向下的设计思想,将系统按功能逐层切割的层次化设计方法。在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述,而功能块实质的逻辑功能和详细的实现形式则由下一层模块来描述。图3.1顶层电路图依照数字秒表的系统原理框图,设计系统的顶层电路图如图4.1所示。依照图所示的数字秒表系统顶层电路图,依照自顶向下的设计思路,编写各个模块的源程序,最后再对各个模块进行组合,编写顶层描述的源程序。-5-按键CLK输入FPGA按键消抖办理分频电路主控电路计时电路报警控制
译码显示电路蜂鸣器七段数码管图3.2数字秒表系统原理框图数字秒表的设计原理本设计可分为五个主要模块:1)键输入模块电路(含消抖电路)。2)时钟分频电路模块。3)调整控制电路(主控电路模块)。4)计时电路模块。5)显示控制电路模块(包括溢出报警控制)。各个输入/输出端口的作用以下:1)CLK为外面时钟信号,CLR为复位信号。2)Q为启/停开关,用于开始/结束计时操作。3)alarm用于控制蜂鸣器发声。当SOUND=“1”时,扬声器发出蜂鸣声,表示计时高出计时长度(溢出报警)。键输入模块电路(含消抖电路)秒表面板上有2个按键:CLR键,Q键。由于设计采用的是机械式的按键,由于存在机械触动的弹性作用,一个按键开关在闭合时不会马上牢固地接通,在断开时也不会马上断开。所以在闭合及断开按键的刹时均陪同有一连串的抖动。抖动时间的长短由按键的机械特点决定,一般为5-10ms。如图3.3所示键按下前沿抖动后沿抖动闭合抖动如图3.3按键的抖动按键的闭合稳准时间的长短由操作人员的按键动作决定,一般为零点几秒至数秒。按键抖动会引起被误读多次。为保证FPGA对键的闭合仅作一次办理,必定去除按键抖动。平时在按键较少时可用硬件方法除掉抖动,一般采用RS触发器作为常用的消抖电路,若是按键很多时,常用软件除掉抖动。在EDA的设计应用中,软件消抖的方法即可使用RS触发器进行消抖,也可经过检测按键按下的时间进行消抖。VHDL源程序设计:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFDOUISPORT(CLK,DIN:INSTD_LOGIC;DOUT:OUTSTD_LOGIC);ENDENTITYFDOU;ARCHITECTUREARCOFFDOUISSIGNALCP:STD_LOGIC;SIGNALJSQ:INTEGERRANGE0TO3;BEGINPROCESS(CLK)-7-BEGINIF(CLK'EVENTANDCLK='1')THENIFDIN='1'THENIFJSQ=3THENJSQ<=JSQ;ELSEJSQ<=JSQ+1;ENDIF;IFJSQ=1THENCP<='1';ELSECP<='0';ENDIF;ELSEJSQ<=0;ENDIF;ENDIF;DOUT<=CP;ENDPROCESS;ENDARC;源程序说明:(1)工作原理本模块描述的防抖动电路属于计数器型防抖动电路。其工作原理是,设置一个模值为4的控制计数器,在人工按键KEY=‘1’时,执行加1计数;KEY=‘1’时,计数器进入状态0。计数器只在状态2有输出。计数器进入状态3,处于保持状态。总之,按键一次,计数器只有一个单脉冲输出。(2)防抖动原理按键KEY是产生抖动的根源,依照设计,只有按键连续时间大于3个时钟周期,计数器输出才可能产生有效的正跳变,输出一个单脉冲。由于机械开关抖动产生的毛刺宽度小于个时钟周期,所以毛刺作用不可以能使计数器有输出,防抖动目的得以实现。时钟分频电路模块在基于EDA技术的数字电路系统设计中,分频电路应用十分广泛。常常使用分频电路来获得数字系统中各种不同样样频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号经过合适办理后,产生一个或数个频率较低的数字输出信号。分频电路实质上是加法计数器的变种,其计数值有分频常数N=fin/fout决定,其输出不是一般计数器的计数结果,而是依照分频常数对输出信号的高,低电平控制。本设计需要一个计时范围为0.01s-59分59.99秒的秒表,第一需要获得一个比较精-8-确的计时基准信号,这里时周期为1/100s的计时脉冲,所以采用一个标准时钟信号源1KHZ经分频后获得一个精确的100HZ的脉冲。VHDL源程序:5MHZ—100HZ分频器的源程序clk_div10.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYclk_div10ISPORT(clk:INSTD_LOGIC;clk_out:OUTSTD_LOGIC);ENDclk_div10;ARCHITECTURErtlOFclk_div10ISSIGNALclk_temp:STD_LOGIC;BEGINPROCESS(clk)VARIABLEcounter:INTEGERRANGE0TO15;BEGINIF(clk'EVENTANDclk='1')THENIF(counter=24999)THENCounter:=0;Clk_out<='1';ELSECounter:=counter+1;Clk_out<='0';ENDIF;ENDIF;ENDPROCESS;ENDrtl;5MHZ—1KHZ分频器的源程序fp50_1K.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYfp50_1KISPORT(clk_5MHz:INSTD_LOGIC;clk_1KHz:OUTSTD_LOGIC);-9-ENDfp50_1K;ARCHITECTUREbehaveOFfp50_1KISSIGNALclk_1KHz_r:STD_LOGIC;SIGNALcount:STD_LOGIC_VECTOR(6DOWNTO0);BEGINPROCESS(clk_5MHz)BEGINIFclk_5MHz'EVENTANDclk_5MHz='1'THENIF(count=2499)THENcount<=(others=>'0');clk_1KHz_r<=notclk_1KHz_r;ELSEcount<=count+1;clk_1KHz_r<=clk_1KHz_r;ENDIF;ENDIF;ENDPROCESS;ENDbehave;调整控制电路(主控电路模块)为了实现数字秒表的各种相应功能,主控电路对各种输入控制信号进行办理。作出相应的调整,发出一系列的控制输出信号。如对数字秒表实现复位操作,启、停控制,以及计时长度设置模式选择。主控电路的功能:(1)实现系统复位:设置一个CLR信号,当CLR信号=0时,整个系统复位:当CLR=1时,系统进行计时或模式选择。(2)启/停控制:用于开始/结束计时操作。数字秒表的启/停是经过控制送给计数器的时钟来实现的。当按下QT键后,输出端Q的状态发生反转。Q为“1”时。时钟可经过与门,秒表处于计时状态。当Q为“0”时,时钟被障蔽,计数器得不到时钟脉冲,停止计数。主控电路各端口作用:输入端:(1)CLK为外面时钟信号,CLR为复位信号输入端。(2)QT为启/停信号输入端。-10-输出端:(1)Q:为启/停控制输出信号。(2)MIN—EN:分钟计时器的异步并行置数使能信号。(3)SEC—EN:秒计时器的异步并行置数使能信号。(4)TSEC—EN:0.01秒计数器的异步并行置数使能信号。VHDL源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYKZQISPORT(CLK,CLR,A,B:INSTD_LOGIC;Q,MIN_EN,SEC_EN,TSEC_EN:OUTSTD_LOGIC);ENDKZQ;ARCHITECTUREKZQ_ARCOFKZQISBEGINPROCESS(CLK,CLR)VARIABLETMP:STD_LOGIC;BEGINIFCLR='0'THENTMP:='0';ELSIFCLK'EVENTANDCLK='1'THENIFA='1'THENTMP:=NOTTMP;ENDIF;ENDIF;Q<=TMP;ENDPROCESS;PROCESS(CLK,CLR)BEGINIFCLR='0'THENMIN_EN<='0';SEC_EN<='0';TSEC_EN<='0';ELSIFCLK'EVENTANDCLK='1'THENIFB='1'THENMIN_EN<='0';SEC_EN<='1';TSEC_EN<='1';ELSEMIN_EN<='1';-11-SEC_EN<='1';TSEC_EN<='1';ENDIF;ENDIF;ENDPROCESS;ENDKZQ_ARC;计时电路模块在本次设计中,采用异步计数器的方法,用硬件描述语言描述一个异步计数器,将低/高位计数器的输出作为高/低位计数器的时钟信号,在本设计中要用到两个60进制计数器,和一个100进制计数器。(1)cnt60计数模块:是一个多用计时模块,既可作计秒电路又可作计分电路调用。用于秒钟计时的CNT60_1的VHDL源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT60_1ISPORT(CLK,CLR,EN:INSTD_LOGIC;SEC1,SEC0:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDCNT60_1;ARCHITECTURECNT60_1_ARCOFCNT60_1ISBEGINPROCESS(CLK,CLR)VARIABLECNT0,CNT1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFCLR='0'THENCNT0:="0000";CNT1:="0000";ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCNT1="0101"andcnt0="1000"THENCNT0:="1001";CO<='1';elsifcnt0<"1001"thenCNT0:=CNT0+1;elsecnt0:="0000";IFCNT1<"0101"THENcnt1:=cnt1+1;elsecnt1:="0000";CO<='0';-12-ENDIF;ENDIF;ENDIF;ENDIF;SEC1<=CNT1;SEC0<=CNT0;ENDPROCESS;ENDCNT60_1_ARC;用于分钟计时的CNT60_2的VHDL源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT60_2ISPORT(CLK,CLR,EN:INSTD_LOGIC;MIN1,MIN0:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDCNT60_2;ARCHITECTURECNT60_2_ARCOFCNT60_2ISBEGINPROCESS(CLK,CLR)VARIABLECNT0,CNT1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFCLR='0'THENCNT0:="0000";CNT1:="0000";ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCNT1="0101"andcnt0="1000"THENCNT0:="1001";CO<='1';elsifcnt0<"1001"thenCNT0:=CNT0+1;elsecnt0:="0000";IFCNT1<"0101"THENcnt1:=cnt1+1;elsecnt1:="0000";CO<='0';ENDIF;ENDIF;ENDIF;ENDIF;MIN1<=CNT1;-13-MIN0<=CNT0;ENDPROCESS;ENDCNT60_2_ARC;cnt100:输出值为0.01s和0.1s,其VHDL的源程序以下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT100ISPORT(CLR,CLK,EN:INSTD_LOGIC;BAI1,BAI0:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDCNT100;ARCHITECTURECNT100_ARCOFCNT100ISBEGINPROCESS(CLK,CLR)VARIABLECNT0,CNT1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFCLR='0'THENCNT0:="0000";CNT1:="0000";ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCNT0="1000"ANDCNT1="1001"THENCNT0:="1001";CO<='1';ELSIFCNT0<"1001"THENCNT0:=CNT0+1;ELSECNT0:="0000";IFCNT0<"1001"THENCNT1:=CNT1+1;ELSECNT1:="0000";CO<='0';ENDIF;ENDIF;ENDIF;ENDIF;BAI1<=CNT1;BAI0<=CNT0;ENDPROCESS;ENDCNT100_ARC;-14-译码显示驱动电路设计显示译码电路:将用于显示BCD码数据进行译码,计时电路的结果的端Q经外面的译码电路后用于选择对应计时结果显示数码管的公共端。其源程序以下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdisplay_ledISPORT(clk_1K:INSTD_LOGIC;d:INSTD_LOGIC_VECTOR(31DOWNTO0);dig:OUTSTD_LOGIC_VECTOR(7DOWNTO0);seg:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITY;ARCHITECTUREoneOFdisplay_ledISSIGNALseg_r:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALdig_r:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALdisp_dat:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALcount:STD_LOGIC_VECTOR(2DOWNTO0);BEGINdig<=dig_r;seg<=seg_r;PROCESS(clk_1K)BEGINIFRISING_EDGE(clk_1K)THENcount<=count+1;ENDIF;ENDPROCESS;PROCESS(clk_1K)BEGINIFRISING_EDGE(clk_1K)THENCASEcountISWHEN"000"=>disp_dat<=d(31DOWNTO28);WHEN"001"=>disp_dat<=d(27DOWNTO24);WHEN"010"=>disp_dat<=d(23DOWNTO20);WHEN"011"=>disp_dat<=d(19DOWNTO16);WHEN"100"=>disp_dat<=d(15DOWNTO12);WHEN"101"=>disp_dat<=d(11DOWNTO8);WHEN"110"=>disp_dat<=d(7DOWNTO4);
8位BCD码输出-15-WHEN"111"=>disp_dat<=d(3DOWNTO0);ENDCASE;CASEcountISWHEN"000"=>dig_r<="01111111";WHEN"001"=>dig_r<="10111111";WHEN"010"=>dig_r<="11011111";WHEN"011"=>dig_r<="11101111";WHEN"100"=>dig_r<="11110111";WHEN"101"=>dig_r<="11111011";WHEN"110"=>dig_r<="11111101";WHEN"111"=>dig_r<="11111110";ENDCASE;ENDIF;ENDPROCESS;PROCESS(disp_dat)BEGI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省孝义市实验中学2025届高考压轴卷数学试卷含解析
- 2025届岳阳市重点中学高考冲刺英语模拟试题含解析
- 2025届山西省陵川第一中学高三最后一卷数学试卷含解析
- 2025届宁夏银川市兴庆区银川一中高三最后一卷数学试卷含解析
- 广东省梅州市皇华中学2025届高三第二次诊断性检测英语试卷含解析
- 2025届山东省冠县武训高级中学高考语文全真模拟密押卷含解析
- 北京市交通大学附属中学2025届高考临考冲刺数学试卷含解析
- 2025届四川省仁寿县二中、华兴中学高三(最后冲刺)语文试卷含解析
- 2025届山东省菏泽市加定陶山大附中高考全国统考预测密卷数学试卷含解析
- 云南省临沧一中2025届高考考前模拟英语试题含解析
- 工程项目竣工验收报告PPT模板下载
- 孟子的仁政思想及其实践前提共3篇
- 2023年电力系统继电保护答案何瑞文 电力系统继电保护答案其次版(四篇)
- 水网建设产业发展工作意见
- 针对食堂服务质量承诺和保证措施
- 植物纤维原料的化学组成课件
- 改变世界的化学智慧树知到答案章节测试2023年南开大学
- IPC-6013中文版挠性印制板质量要求与性能规范汇编
- 【北师大版】五年级上册数学分数测试题-含答案
- 学校艺术教育评价管理制度
- 从业务骨干到管理者
评论
0/150
提交评论