EDA课程设计--带存储功能的秒表

上传人:liy****000 文档编号:115199740 上传时间:2019-11-13 格式:PDF 页数:16 大小:753.53KB
返回 下载 相关 举报
EDA课程设计--带存储功能的秒表_第1页
第1页 / 共16页
EDA课程设计--带存储功能的秒表_第2页
第2页 / 共16页
EDA课程设计--带存储功能的秒表_第3页
第3页 / 共16页
EDA课程设计--带存储功能的秒表_第4页
第4页 / 共16页
EDA课程设计--带存储功能的秒表_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《EDA课程设计--带存储功能的秒表》由会员分享,可在线阅读,更多相关《EDA课程设计--带存储功能的秒表(16页珍藏版)》请在金锄头文库上搜索。

1、太原科技大学:名字起个什么 电子课程设计 带存储功能的秒表 学院: 专业, 姓名: 学号: 指导老师: 2009 年 12 月 太原科技大学:名字起个什么 带存储功能的秒表设计 一设计任务与要求 1.实现一小时以内的秒表设计,显示精度精确到 0.1 秒,即显示 5 位数据 2.有“开始” , “停止” , “存储”按键,能存储一组数据。 3.能存储两组以上的数据,并能反复调用查看。 二总体框图 (1)方案论证 方案一 采用 8051IP 核设计。 用 FPGA 构成一个 8051 单片应用系统具有如下 优缺点: 1. 拥有标准 8051 完全兼容的指令系统的 cpu; 2. 256 字节内部

2、ram; 3. 4k 字节程序 rom; 4. 每一次编译下载后都能根据需要更新 rom 中的程序,所以该单片机 的实现和使用如同 89c51/52 一样方便。 缺点: 1. 设计繁琐可以直接用 8051 单片机代替。 2. 程序复杂。 方案二 采用芯片 EP1C2Q240C8,共阴七段数码管,按键开关,发光二级管 设计。 EP1C12Q240C8 是 Cyclone 器件, Cyclone 可以最多支持 129 个通道的 LVDS 和 RSDA。 Cyclone 器件的 LVDS 缓冲器可以支持最高达 640Mbps 的数据传输速度。 与单端的 I/0 口标准相比,这些内显置于 Cyclon

3、e 器件内部的 LVDS 缓冲器保持 了信号的完整性, 并且有更低的电磁干扰, 更好的电磁兼容性及更低的电源功耗。 采用此芯片设计简单,不需要用汇编语言编写程序,直接用 VHDL 编写即可。所 以优先选用方案二。 本设计采用模块化设计,共分为顶层文件,控制毫秒模块(msecond) ,控 制秒模块(second) ,控制分钟模块(minutes) ,数码管扫描模块(seltime) , 显示驱动模块(deled),分频模块(finpin) ,decode3_8 模块。 秒表计数器中启/停开关的使用方法和传统的计时器相同,即按一下启/停 开关,启用计时器开始计时,再按一下启/停开关计时终止。而复

4、位开关可以在 任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止, 并对计时器清零。 太原科技大学:名字起个什么 (2)原理框图 秒 表 电 路 显 示 电 路 扫 描 电 路 分 频 器 时 钟 信 号 图 2.1,总体原理框图 总体框图由秒表电路(包括 msecond,second,minute 三个小模块) ;扫描电路 驱动 5 位八段共阴扫描数码管的片选驱动信号输出模块(seltime) ;显示电路驱 动八段字形译码器输出模块(deled) 。 三选择器件 1.主芯片:Altera的 Cyclone EPEC12Q240C8 2.5 个八段扫描共阴极数码显示管 3.三

5、个按键开关(开关,复位,存储) 4.EDA 实验箱一台 5.含有 Quartus软件的计算机一台 6.导线若干 四功能模块 1.数码管显示模块 图 4.1 数码管 太原科技大学:名字起个什么 数码管驱动电路,驱动数码管发光。共有七段数码管为 g,f,e,d,c,b,a 接高电频 的数码管发亮从而显示数字,管脚图如下: 图 4.2 数码管管脚 仿真波形如下: 图 4.3 数码管仿真波形 程序代码如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY deled IS PORT(n

6、um:INstd_logic_vector(3 downto 0); 太原科技大学:名字起个什么 A:out std_logic; B:out std_logic; C:out std_logic; D:out std_logic; E:out std_logic; F:out std_logic; G:out std_logic; dp:out std_logic ); END deled; ARCHITECTURE fun OF deled IS signal led:std_logic_vector(6 downto 0); BEGIN A=led(6); B=led(5); C=led

7、(4); D=led(3); E=led(2); F=led(1); G=led(0); dp=0; LED=“1111110“WHEN NUM=“0000“ELSE “0110000“WHEN NUM=“0001“ELSE “1101101“WHEN NUM=“0010“ELSE “1111001“WHEN NUM=“0011“ELSE “0110011“WHEN NUM=“0100“ELSE “1011011“WHEN NUM=“0101“ELSE “1011111“WHEN NUM=“0110“ELSE “1110000“WHEN NUM=“0111“ELSE “1111111“WHEN

8、 NUM=“1000“ELSE “1111011“WHEN NUM=“1001“ELSE “1110111“WHEN NUM=“1010“ELSE “0011111“WHEN NUM=“1011“ELSE “1001110“WHEN NUM=“1100“ELSE “0111101“WHEN NUM=“1101“ELSE “1001111“WHEN NUM=“1110“ELSE “1000111“WHEN NUM=“1111“; END fun; 太原科技大学:名字起个什么 2.控制分钟模块 图 4.4 分钟计时器 分钟计时器由一个 60 进制的计数器构成的,具有清零,置数和计数的功能。其 中

9、reset 为清零信号,当 reset 为 0 时,分计时器清零;setmin 为调分信号与 置数信号 set 相连;clk 为驱动分计时器工作的时钟,与 enmin 相连接;daout 为输出信号与 seltime 的 minute 相连。 程序代码如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY minute IS PORT(clk,reset,setmin:INSTD_LOGIC; daout:out std_logic_vector(6 downto 0); EN

10、D entity minute; ARCHITECTURE fun OF minute IS SIGNAL count:STD_LOGIC_VECTOR(6 downto 0); BEGIN daout=count; process(clk,reset,setmin) begin if(reset=0)then count=“0000000“; elsif(setmin=0)then elsif(clkevent and clk=1)then if(count(3 downto 0)=“1001“)then if(count16#60#)then if(count=“1011001“)then

11、 count=“0000000“ ; ELSE count=count+7; 太原科技大学:名字起个什么 end if; else count=“0000000“; end if; elsif(count16#60#)then count=count+1; else count=“0000000“; end if; end if; end process; END fun; 仿真波形如下: 图 4.5 分钟计时器仿真波形 3.控制秒模块 图 4.6 秒计时器 太原科技大学:名字起个什么 由一个 60 进制的计数器构成的,具有清零,置数和计数的功能。其中 reset 为 清零信号,当 reset

12、 为 0 时,秒计时器清零;setsec 为调秒信号与 set 置数信 号相连;clk 为驱动秒计时器的时钟与 ensec 相连接;daout 为输出信号与 seltime 中的 sec 相连;enmin 控制 minute 的计时。 程序代码如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY second IS PORT(clk,clk1,reset,setsec:INSTD_LOGIC; enmin:OUT STD_LOGIC; daout :out std_logic

13、_vector(6 downto 0); END entity second; ARCHITECTURE fun OF second IS SIGNAL count:STD_LOGIC_VECTOR(6 downto 0); BEGIN daout=count; process(clk,reset,setsec) begin -enmin=k; if(reset=0)then count=“0000000“; elsif(setsec=0)then elsif(clkevent and clk=1)then if(count(3 downto 0)=“1001“)then if(count16

14、#60#)then if(count=“1011001“)then enmin=1; count=“0000000“; ELSE count=count+7; end if; else count=“0000000“; end if; elsif(count16#60#)then count=count+1; enmin=0after 100 ns; else count=“0000000“; end if; 太原科技大学:名字起个什么 end if; end process; END fun 仿真波形如下: 图 4.7 秒计时器仿真波形 4.控制毫秒模块 图 4.8 毫秒计时器 毫秒计时器由

15、一个 10 进制的计数器构成的,具有清零,置数和计数的功能。其 中 reset 为清零信号,当 reset 为 0 时,毫秒时器清零;setmsec 为调秒信号与 置数信号 set 相连;clk 为驱动毫秒时器工作的时钟与 fenpin 相连接;daout 为 输出信号与 seltime 的 msec 相连;ensec 控制 second 的计时。 程序代码如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY msecond IS PORT(clk,reset,setsec:

16、INSTD_LOGIC; ensec:OUTSTD_LOGIC; daout :OUT std_logic_vector(7 downto 0); END entity msecond; ARCHITECTURE fun OF msecond IS SIGNAL count:STD_LOGIC_VECTOR(7 downto 0); 太原科技大学:名字起个什么 BEGIN daout=count; process(clk,reset,setsec) begin if(reset=0)then count=“00000000“; elsif(setsec=0)then elsif(clkevent and clk=1)then if(count(3 downto 0)=“1001“)then if(count16#A0#)then if(count=“10011001“)then ensec=1; count=“00000000“; ELSE count=count+7; end if; else coun

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号