电子秒表系统设计.doc

上传人:牧羊曲112 文档编号:4267557 上传时间:2023-04-12 格式:DOC 页数:14 大小:251.50KB
返回 下载 相关 举报
电子秒表系统设计.doc_第1页
第1页 / 共14页
电子秒表系统设计.doc_第2页
第2页 / 共14页
电子秒表系统设计.doc_第3页
第3页 / 共14页
电子秒表系统设计.doc_第4页
第4页 / 共14页
电子秒表系统设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《电子秒表系统设计.doc》由会员分享,可在线阅读,更多相关《电子秒表系统设计.doc(14页珍藏版)》请在三一办公上搜索。

1、VHDL语言课程设计设计题目:电子秒表系统设计系别:电子通信工程系XX:武 志 伟 组 员:吴金彪 X向往班级: 医 电 051 学号: 050411125 指导老师: 石 新 峰 成绩:设计时间:2007年12月7日目录前言1一、设计任务及要求2二、方案论证3 三、设计总体框图4四、硬件电路设计与程序设计5五、编译仿真6六、心得体会7参考文献:8前 言秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位

2、开关,计时应立即终止,并对计时器清零。本文是主要是用CPLD的一些知识简单的设计秒表的过程。一、设计任务及要求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. 设计烦

3、琐可以直接用8051单片机代替。2. 程序复杂。方案二 采用芯片EP1C12Q240C8、共阴七段数码管、按键开关、发光二极管设计。EP1C12Q240C8是Cyclone器件,Cyclone可以最多支持129个通道的LVDS和RSDS。Cyclone器件的LVDS缓冲器可以支持最高达640Mbps的数据传输速度。与单端的I/O口标准相比,这些内显置于Cyclone器件内部的LVDS缓冲器保持了信号的完整性,并且有更低的电磁干扰、更好的电磁兼容性(EMI)及更低的电源功耗。采用此芯片设计简单,不需要用汇编语言编写程序,直接用VHDL编写即可以. 缺点:与8051IP核相比精确度不是很高。但是对

4、于秒表系统设计可以满足要求。三、设计总体框图三、硬件电路设计与程序设计 本设计采用模块化设计,共分为顶层文件(msecond)、控制秒模块(second)、控制分钟模块(minutes)、LED模块(alert)、数码管扫描模块(zhishi)、显示驱动模块(deled)六个模块。其中LED模块可以去掉,不影响秒表正常运行以下对各个模块一一描述。1. 顶层文件对这个功能模块用一个进程语句描述。clk、reset和调秒的setsec为输入信号程序代码如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.al

5、l;ENTITY msecond ISPORT(clk, reset,setsec : INSTD_LOGIC;ensec : OUTSTD_LOGIC;daout: OUT std_logic_vector (6 downto 0);END entity msecond ;ARCHITECTURE fun OF msecond ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk , reset , setsec ) begin - enmsec =k; if (reset=0) th

6、en count = 0000000; elsif (setsec =0) then ensec = clk; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=1011001) then ensec =1; count=0000000; ELSE count=count+7; end if; else count=0000000; end if; elsif (count 16#60#) then count = count+1; ensec =

7、0 after 100 ns; else count=0000000; end if; end if; end process;END fun;2.控制秒模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk, clk1,reset,setsec : INSTD_LOGIC;enmin : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity second ;ARCHITECT

8、URE fun OF second ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk,reset,setsec ) begin if (reset=0) then count = 0000000; elsif (setsec =0) then enmin = clk1; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=1011001)

9、then enmin =1; count=0000000; ELSE count=count+7; end if; else count=0000000; end if; elsif(count 16#60#) then count = count + 1; enmin =0 after 100 ns; else count=0000000; end if; end if; end process;END fun;3.控制分钟模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY sec

10、ond ISPORT(clk, clk1,reset,setsec : INSTD_LOGIC;enmin : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity second ;ARCHITECTURE fun OF second ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk,reset,setsec ) begin if (reset=0) then count = 0000000; elsif (

11、setsec =0) then enmin = clk1; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=1011001) then enmin =1; count=0000000; ELSE count=count+7; end if; else count=0000000; end if; elsif(count 16#60#) then count = count + 1; enmin =0 after 100 ns; else coun

12、t=0000000; end if; end if; end process;END fun;4.LED模块该模块是有三个LED灯组成,三个LED轮流亮,起到验证秒表的功能。程序代码如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY alert ISPORT(clk : INSTD_LOGIC;dain : INSTD_LOGIC_VECTOR(6 DOWNTO 0);lamp : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END alert ;ARCHIT

13、ECTURE fun OF alert ISsignal count : std_logic_vector( 1 downto 0);BEGINlamper:process(clk)beginif (rising_edge(clk)then if (count = 10) thenif (count =00) thenlamp = 001 ;elsif (count = 01) thenlamp = 010 ;elsif(count=10) then lamp = 100 ;end if;count = count + 1;else count = 00;end if; end if; end

14、 process lamper;END fun ;5.数码管扫描模块该模块的功能是选择个计数端口来的数据,当相应的数据到来时数据选择器选择器数据后输出给数码管,并由数码管显示。LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY zhishi ISPORT(clk1, reset: INSTD_LOGIC;msec,sec : INSTD_LOGIC_VECTOR(6 downto 0);minute : in std_logic_

15、vector (5 downto 0);daout: OUTSTD_LOGIC_vector (3 downto 0);sel : out std_logic_vector ( 2 downto 0);END zhishi;ARCHITECTURE fun OF zhishi ISSIGNAL count: STD_LOGIC_vector ( 2 downto 0);BEGIN sel = count; process ( clk1,reset) begin if (reset =0) then count = 101) then count = 000; else count daout

16、daout(3) = 0; daout(2 downto 0) daout daout(3) = 0; daout(2 downto 0) daout daout(3 downto 2) = 00; daout(1 downto 0) = minute(5 downto 4); end case; end process;end fun;6.数码管显示模块数码管驱动电路,驱动数码管发光。LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY deled ISPORT(num: INstd_l

17、ogic_vector( 3 downto 0); led: OUT std_logic_vector(6 downto 0);END deled;ARCHITECTURE fun OF deled ISBEGIN led = 0111111 when num= 0000 else 0000110 when num= 0001 else 1011011 when num= 0010 else 1001111 when num= 0011 else 1100110 when num= 0100 else 1101101 when num= 0101 else 1111101 when num=

18、0110 else 0000111 when num= 0111 else 1111111 when num= 1000 else 1101111 when num= 1001 else 1110111 when num= 1010 else 1111100 when num= 1011 else 0111001 when num= 1100 else 1100011 when num= 1101 else 1111001 when num= 1110 else 1110001 when num= 1111 ;END fun;四、编译仿真下面使用Quartus II6.0 对本设计进行编译和仿

19、真。首先创建工程,使用文本编辑器输入本设计的所有模块的源程序,把miaobiao.vhd设为顶层文件。把本设计中的所有设计文件添加进工程后,先对每个模块进行编译纠错,然后把各个模块连接在一起保存然后在全程编译,通过之后就可以进行仿真。先进行软件仿真每一部分的仿真从略,下面只说明系统的整体仿真波形。系统工作时的仿真波形如图所示。确定准确无误后然后开始锁定管脚,执行菜单命令assignmentspins出现如下:锁定后的管脚结果如下:Node Name DirectionLocationa13OutputPIN_2b12OutputPIN_3c9OutputPin_4clkInputPIN_28c

20、lkdspInputPIN_6d10OutputPIN_7e11OutputPIN_8f8OutputPIN_11gOutputPIN_12lamp2OutputPIN_37lamp1OutputPIN_39lamp0OutputPIN_38resetInputPIN_16sel2OutputPIN_19sel1OutputPIN_18sel0OutputPIN_17setmsecInputPIN_20setsecInputPIN_21管脚锁定好以后再重新编译一次编译通过后执行ToolsProgammer命令出现如下:单击start按钮,开始硬件仿真.如果不能实现还需要重新调试程序直到实现秒表

21、功能为止.五、心得体会经过了一周的课程设计,现在终于有了一点的心得,原本以为我对VHDL还是比较的了解的,所以一向以为VHDL的课程设计应该不会觉得很难,可是事实并不是我所想的那样,如果老师不给我们框架的话,我想就算给我两个月的时间我也不可能做的出来.通过这次课程设计,对VHDL的语言有了更深刻的认识,对课题设计的基本流程有了一定的认识,同时也是一次把原来所学的书本知识和实践相联系的过程。并通过实践,建立起了学习EDA的浓厚兴趣。在设计中也深刻体会到了团队精神的重要性!同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致导致整项工

22、作的失败。设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。对EDA的设计平台Quartus有了熟练的使用。掌握了本次设计所用的EDA试验箱用法,为以后更好的学习EDA打下了基础。通过这次课程设计,我意识到了我对这门课掌握还有一定的不足,还有许多的知识我不了解;有的是一知半解;有的即使原理懂了,但在应用方面却是丝毫不知。所以在今后的学习中,我会更加努力,不仅要学好理论知识,还要把它应用到实践中去,使两者很好的结合起来,互补互助。参考文献:1 潘松,黄继业EDA技术实用教程科学2006年9月第三版2马淑华,高原 电子设计自动化邮电大学20063 卢毅,赖杰 VHDL与数字电路设计2001

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号