电子秒表系统设计.docx

上传人:b****4 文档编号:13919745 上传时间:2023-06-19 格式:DOCX 页数:16 大小:205.31KB
下载 相关 举报
电子秒表系统设计.docx_第1页
第1页 / 共16页
电子秒表系统设计.docx_第2页
第2页 / 共16页
电子秒表系统设计.docx_第3页
第3页 / 共16页
电子秒表系统设计.docx_第4页
第4页 / 共16页
电子秒表系统设计.docx_第5页
第5页 / 共16页
电子秒表系统设计.docx_第6页
第6页 / 共16页
电子秒表系统设计.docx_第7页
第7页 / 共16页
电子秒表系统设计.docx_第8页
第8页 / 共16页
电子秒表系统设计.docx_第9页
第9页 / 共16页
电子秒表系统设计.docx_第10页
第10页 / 共16页
电子秒表系统设计.docx_第11页
第11页 / 共16页
电子秒表系统设计.docx_第12页
第12页 / 共16页
电子秒表系统设计.docx_第13页
第13页 / 共16页
电子秒表系统设计.docx_第14页
第14页 / 共16页
电子秒表系统设计.docx_第15页
第15页 / 共16页
电子秒表系统设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子秒表系统设计.docx

《电子秒表系统设计.docx》由会员分享,可在线阅读,更多相关《电子秒表系统设计.docx(16页珍藏版)》请在冰点文库上搜索。

电子秒表系统设计.docx

电子秒表系统设计

 

《VHDL语言》课程设计

 

设计题目:

电子秒表系统设计

 

系别:

电子通信工程系

XX:

武志伟

组员:

吴金彪X向往

班级:

医电051

学号:

050411125

指导老师:

石新峰

成绩:

设计时间:

2007年12月7日

 

前言…………………………………………………………………1

 

一、设计任务及要求……………………………………………2

二、方案论证……………………………………………………3

三、设计总体框图………………………………………………4

四、硬件电路设计与程序设计………………………………5

五、编译仿真……………………………………………………6

六、心得体会………………………………………………………7

 

参考文献:

……………………………………………………………8

 

前言

秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。

其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。

而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。

本文是主要是用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.设计烦琐可以直接用8051单片机代替。

2.程序复杂。

方案二采用芯片EP1C12Q240C8、共阴七段数码管、按键开关、发光二极管设计。

EP1C12Q240C8是Cyclone器件,Cyclone可以最多支持129个通道的LVDS和RSDS。

Cyclone器件的LVDS缓冲器可以支持最高达640Mbps的数据传输速度。

与单端的I/O口标准相比,这些内显置于Cyclone器件内部的LVDS缓冲器保持了信号的完整性,并且有更低的电磁干扰、更好的电磁兼容性(EMI)及更低的电源功耗。

采用此芯片设计简单,不需要用汇编语言编写程序,直接用VHDL编写即可以.

缺点:

与8051IP核相比精确度不是很高。

但是对于秒表系统设计可以满足要求。

三、设计总体框图

三、硬件电路设计与程序设计

本设计采用模块化设计,共分为顶层文件(msecond)、控制秒模块(second)、控制分钟模块(minutes)、LED模块(alert)、数码管扫描模块(zhishi)、显示驱动模块(deled)六个模块。

其中LED模块可以去掉,不影响秒表正常运行以下对各个模块一一描述。

1.顶层文件

对这个功能模块用一个进程语句描述。

clk、reset和调秒的setsec为输入信号程序代码如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYmsecondIS

PORT(

clk,reset,setsec:

INSTD_LOGIC;

ensec:

OUTSTD_LOGIC;

daout:

OUTstd_logic_vector(6downto0));

ENDentitymsecond;

ARCHITECTUREfunOFmsecondIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,setsec)

begin

--enmsec<=k;

if(reset='0')then

count<="0000000";

elsif(setsec='0')then

ensec<=clk;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

ensec<='1';

count<="0000000";

ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

ensec<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

2.控制秒模块

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYsecondIS

PORT(

clk,clk1,reset,setsec:

INSTD_LOGIC;

enmin:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentitysecond;

ARCHITECTUREfunOFsecondIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,setsec)

begin

if(reset='0')then

count<="0000000";

elsif(setsec='0')then

enmin<=clk1;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

enmin<='1';

count<="0000000";

ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enmin<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

3.控制分钟模块

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYsecondIS

PORT(

clk,clk1,reset,setsec:

INSTD_LOGIC;

enmin:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentitysecond;

ARCHITECTUREfunOFsecondIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,setsec)

begin

if(reset='0')then

count<="0000000";

elsif(setsec='0')then

enmin<=clk1;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

enmin<='1';

count<="0000000";

ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enmin<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

4.LED模块

该模块是有三个LED灯组成,三个LED轮流亮,起到验证秒表的功能。

程序代码如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYalertIS

PORT(

clk:

INSTD_LOGIC;

dain:

INSTD_LOGIC_VECTOR(6DOWNTO0);

lamp:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDalert;

ARCHITECTUREfunOFalertIS

signalcount:

std_logic_vector(1downto0);

BEGIN

lamper:

process(clk)

begin

if(rising_edge(clk))then

if(count<="10")then

if(count="00")then

lamp<="001";

elsif(count="01")then

lamp<="010";

elsif(count="10")then

lamp<="100";

endif;

count<=count+1;

else

count<="00";

endif;

endif;

endprocesslamper;

ENDfun;

5.数码管扫描模块

该模块的功能是选择个计数端口来的数据,当相应的数据到来时数据选择器选择器数据后输出给数码管,并由数码管显示。

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

ENTITYzhishiIS

PORT(

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

SIGNALcount:

STD_LOGIC_vector(2downto0);

BEGIN

sel<=count;

process(clk1,reset)

begin

if(reset='0')then

count<="000";

elsif(clk1'eventandclk1='1')then

if(count>="101")then

count<="000";

else

count<=count+1;

endif;

endif;

casecountis

when"000"=>daout<=msec(3downto0);

when"001"=>daout(3)<='0';

daout(2downto0)<=sec(6downto4);

when"010"=>daout<=sec(3downto0);

when"011"=>daout(3)<='0';

daout(2downto0)<=sec(6downto4);

when"100"=>daout<=minute(3downto0);

whenothers=>daout(3downto2)<="00";

daout(1downto0)<=minute(5downto4);

endcase;

endprocess;

endfun;

6.数码管显示模块

数码管驱动电路,驱动数码管发光。

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYdeledIS

PORT(num:

INstd_logic_vector(3downto0);

led:

OUTstd_logic_vector(6downto0));

ENDdeled;

ARCHITECTUREfunOFdeledIS

BEGIN

led<="0111111"whennum="0000"else

"0000110"whennum="0001"else

"1011011"whennum="0010"else

"1001111"whennum="0011"else

"1100110"whennum="0100"else

"1101101"whennum="0101"else

"1111101"whennum="0110"else

"0000111"whennum="0111"else

"1111111"whennum="1000"else

"1101111"whennum="1001"else

"1110111"whennum="1010"else

"1111100"whennum="1011"else

"0111001"whennum="1100"else

"1100011"whennum="1101"else

"1111001"whennum="1110"else

"1110001"whennum="1111";

ENDfun;

四、编译仿真

下面使用QuartusII6.0对本设计进行编译和仿真。

首先创建工程,使用文本编辑器输入本设计的所有模块的源程序,把miaobiao.vhd设为顶层文件。

把本设计中的所有设计文件添加进工程后,先对每个模块进行编译纠错,然后把各个模块连接在一起保存然后在全程编译,通过之后就可以进行仿真。

先进行软件仿真每一部分的仿真从略,下面只说明系统的整体仿真波形。

系统工作时的仿真波形如图所示。

确定准确无误后然后开始锁定管脚,执行菜单命令assignments→pins出现如下:

 

锁定后的管脚结果如下:

 

NodeName

Direction

Location

a13

Output

PIN_2

b12

Output

PIN_3

c9

Output

Pin_4

clk

Input

PIN_28

clkdsp

Input

PIN_6

d10

Output

PIN_7

e11

Output

PIN_8

f8

Output

PIN_11

g

Output

PIN_12

lamp[2]

Output

PIN_37

lamp[1]

Output

PIN_39

lamp[0]

Output

PIN_38

reset

Input

PIN_16

sel[2]

Output

PIN_19

sel[1]

Output

PIN_18

sel[0]

Output

PIN_17

setmsec

Input

PIN_20

setsec

Input

PIN_21

管脚锁定好以后再重新编译一次编译通过后执行Tools→Progammer命令出现如下:

单击"start"按钮,开始硬件仿真.如果不能实现还需要重新调试程序直到实现秒表功能为止.

五、心得体会

经过了一周的课程设计,现在终于有了一点的心得,原本以为我对VHDL还是比较的了解的,所以一向以为VHDL的课程设计应该不会觉得很难,可是事实并不是我所想的那样,如果老师不给我们框架的话,我想就算给我两个月的时间我也不可能做的出来.通过这次课程设计,对VHDL的语言有了更深刻的认识,对课题设计的基本流程有了一定的认识,同时也是一次把原来所学的书本知识和实践相联系的过程。

并通过实践,建立起了学习EDA的浓厚兴趣。

在设计中也深刻体会到了团队精神的重要性!

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。

某个人的离群都可能导致导致整项工作的失败。

设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。

团结协作是我们实习成功的一项非常重要的保证。

而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

对EDA的设计平台QuartusⅡ有了熟练的使用。

掌握了本次设计所用的EDA试验箱用法,为以后更好的学习EDA打下了基础。

通过这次课程设计,我意识到了我对这门课掌握还有一定的不足,还有许多的知识我不了解;有的是一知半解;有的即使原理懂了,但在应用方面却是丝毫不知。

所以在今后的学习中,我会更加努力,不仅要学好理论知识,还要把它应用到实践中去,使两者很好的结合起来,互补互助。

参考文献:

[1]潘松,黄继业·EDA技术实用教程·科学·2006年9月第三版

[2] 马淑华,高原·《电子设计自动化》·邮电大学·2006

[3]卢毅,赖杰·《VHDL与数字电路设计》·2001

 

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2