您好,欢迎访问三七文档
《VHDL语言》课程设计报告1《VHDL语言》课程设计设计题目:电子秒表系统设计系别:电子通信工程系姓名:武志伟组员:吴金彪张向往班级:医电051学号:050411125指导老师:石新峰成绩:设计时间:2007年12月7日《VHDL语言》课程设计报告2目录前言…………………………………………………………………1一、设计任务及要求……………………………………………2二、方案论证……………………………………………………3三、设计总体框图………………………………………………4四、硬件电路设计与程序设计………………………………5五、编译仿真……………………………………………………6六、心得体会………………………………………………………7参考文献:……………………………………………………………8《VHDL语言》课程设计报告3前言秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。本文是主要是用CPLD的一些知识简单的设计秒表的过程。《VHDL语言》课程设计报告4一、设计任务及要求1.设计数码管显示的秒表。2.能够准确的计时并显示。3.开机显示00.00.00。4.用户可以随时清零、暂停、计时。5.最大记时59分钟,最小精确到0.01秒。二、方案论证方案一采用8051IP核设计。用FPGA构成一个8051单片应用系统具有如下优缺点:1、拥有标准8051完全兼容的指令系统的CPU;2、256字节内部RAM;3、4K字节程序ROM;4、每一此编译下载后都能根据需要更新ROM中的程序,所以该单片机的实现和使用如同89C51/52一样方便。缺点:1.设计烦琐可以直接用8051单片机代替。2.程序复杂。方案二采用芯片EP1C12Q240C8、共阴七段数码管、按键开关、发光二极管设计。EP1C12Q240C8是Cyclone器件,Cyclone可以最多支持129个通道的LVDS和RSDS。Cyclone器件的LVDS缓冲器可以支持最高达640Mbps的数据传输速度。与单端的I/O口标准相比,这些内显置于Cyclone器件内部的LVDS缓冲器保持了信号的完整性,并且有更低的电磁干扰、更好的电磁兼容性(EMI)及更低的电源功耗。采用此芯片设计简单,不需要用汇编语言编写程序,直接用VHDL编写即可以.缺点:与8051IP核相比精确度不是很高。但是对于秒表系统设计可以满足要求。三、设计总体框图VCCclkdspINPUTVCCclkINPUTVCCresetINPUTVCCsetsecINPUTVCCsetmsecINPUTlamp[2..0]OUTPUTsel[2..0]OUTPUTf8OUTPUTgOUTPUTc9OUTPUTd10OUTPUTe11OUTPUTb12OUTPUTa13OUTPUTclk1resetmsec[6..0]sec[6..0]minute[5..0]daout[3..0]sel[2..0]zhishiinstclkdain[6..0]lamp[2..0]alertinst1clkresetdaout[5..0]minuteinst6num[3..0]led[6..0]deledinst2clkclk1resetsetsecenmindaout[6..0]secondinst4clkresetsetsecensecdaout[6..0]msecondinst5led0led4led3led2led6led5led1lled[6..0]《VHDL语言》课程设计报告5三、硬件电路设计与程序设计本设计采用模块化设计,共分为顶层文件(msecond)、控制秒模块(second)、控制分钟模块(minutes)、LED模块(alert)、数码管扫描模块(zhishi)、显示驱动模块(deled)六个模块。其中LED模块可以去掉,不影响秒表正常运行以下对各个模块一一描述。1.顶层文件clkresetsetsecensecdaout[6..0]msecondinst5对这个功能模块用一个进程语句描述。clk、reset和调秒的setsec为输入信号程序代码如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYmsecondISPORT(clk,reset,setsec:INSTD_LOGIC;ensec:OUTSTD_LOGIC;daout:OUTstd_logic_vector(6downto0));ENDentitymsecond;ARCHITECTUREfunOFmsecondISSIGNALcount:STD_LOGIC_VECTOR(6downto0);BEGINdaout=count;process(clk,reset,setsec)begin--enmsec=k;if(reset='0')thencount=0000000;elsif(setsec='0')thenensec=clk;elsif(clk'eventandclk='1')thenif(count(3downto0)=1001)thenif(count16#60#)thenif(count=1011001)thenensec='1';count=0000000;ELSE《VHDL语言》课程设计报告6count=count+7;endif;elsecount=0000000;endif;elsif(count16#60#)thencount=count+1;ensec='0'after100ns;elsecount=0000000;endif;endif;endprocess;ENDfun;2.控制秒模块clkclk1resetsetsecenmindaout[6..0]secondinst4LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYsecondISPORT(clk,clk1,reset,setsec:INSTD_LOGIC;enmin:OUTSTD_LOGIC;daout:outstd_logic_vector(6downto0));ENDentitysecond;ARCHITECTUREfunOFsecondISSIGNALcount:STD_LOGIC_VECTOR(6downto0);BEGINdaout=count;process(clk,reset,setsec)beginif(reset='0')thencount=0000000;elsif(setsec='0')thenenmin=clk1;elsif(clk'eventandclk='1')thenif(count(3downto0)=1001)then《VHDL语言》课程设计报告7if(count16#60#)thenif(count=1011001)thenenmin='1';count=0000000;ELSEcount=count+7;endif;elsecount=0000000;endif;elsif(count16#60#)thencount=count+1;enmin='0'after100ns;elsecount=0000000;endif;endif;endprocess;ENDfun;3.控制分钟模块clkresetdaout[5..0]minuteinst6LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYsecondISPORT(clk,clk1,reset,setsec:INSTD_LOGIC;enmin:OUTSTD_LOGIC;daout:outstd_logic_vector(6downto0));ENDentitysecond;ARCHITECTUREfunOFsecondISSIGNALcount:STD_LOGIC_VECTOR(6downto0);BEGINdaout=count;process(clk,reset,setsec)beginif(reset='0')then《VHDL语言》课程设计报告8count=0000000;elsif(setsec='0')thenenmin=clk1;elsif(clk'eventandclk='1')thenif(count(3downto0)=1001)thenif(count16#60#)thenif(count=1011001)thenenmin='1';count=0000000;ELSEcount=count+7;endif;elsecount=0000000;endif;elsif(count16#60#)thencount=count+1;enmin='0'after100ns;elsecount=0000000;endif;endif;endprocess;ENDfun;4.LED模块clkdain[6..0]lamp[2..0]alertinst1该模块是有三个LED灯组成,三个LED轮流亮,起到验证秒表的功能。程序代码如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYalertISPORT(clk:INSTD_LOGIC;dain:INSTD_LOGIC_VECTOR(6DOWNTO0);lamp:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDalert;ARCHITECTUREfunOFalertIS《VHDL语言》课程设计报告9signalcount:std_logic_vector(1downto0);BEGINlamper:process(clk)beginif(rising_edge(clk))thenif(count=10)thenif(count=00)thenlamp=001;elsif(count=01)thenlamp=010;elsif(count=10)thenlamp=100;endif;count=count+1;elsecount=00;endif;endif;endprocesslamper;ENDfun;5.数码管扫描模块clk1resetmsec[6..0]sec[6..0]minute[5..0]daout[3..0]sel[2..0]zhishiinst该模块的功能是选择个计数端口来的数据,当相应的数据到来时数据选择器选择器数据后输出给数码管,并由数码管显示。LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYzhishiISPORT(clk1,reset:INSTD_LOGIC;msec,sec:INSTD_LOGIC_VECTOR(6downto0);minute:instd_logic_vector(5downto0);daout:OUTSTD_LOGIC_vector(3downto0);sel:outstd_logic_vector(2downto0));ENDzhishi;ARCHITECTUREfunOFzhishiIS《VHDL语言》课程设计报告10SIGNALcount:STD_LOGIC_vector(2downto0)
本文标题:电子秒表系统设计
链接地址:https://www.777doc.com/doc-76423 .html