EDA-数字秒表设计

电子设计自动化

大作业

题 目 数字秒表设计

学 院 控制科学与工程学院 班 级 自动化0803 姓 名 学 号

二OO 一一年五月十二日

题 目:数字秒表的设计

一、设计要求:

(1)数字秒表的计时精度是10ms;

(2)复位开关可以在任何情况下使用,计时在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备;

(3)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。

(4)数字秒表的计时范围是0秒~59分59.99秒,显示的最长时间为59分59秒

二、总体设计: 1、总体结构图

2、各模块功能

1) S EL 模块:将扫描信号输给选择(CHOICE)模块 2)选择模块:按扫描信号的指定选择输出

3)3-8译码模块:通过SEL 给的信号来控制8位数码管位的亮灭 4)计时模块:分别对毫秒,秒,分计时

5)显示模块:通过CHOICE 模块的输出信号来控制

三、单元模块设计 1、模块名: sel 模块设计

(1)模块功能: CLK为扫描时钟脉冲,SELOUT 端不停的发出扫描到的信号 (2)端口定义: CLK为信号输入端

SELOUT[2..0]为选择到的信号输出

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sel is

port(clk: in std_logic;

selout: out std_logic_vector(2 downto 0));

end sel;

architecture one of sel is

signal count: std_logic_vector(2 downto 0); begin

process(clk) begin

if clk'event and clk='1' then if (count="101") then count

count

(4)仿真结果

说明:来一个上升沿,SELOUT 的值增1,可以证明模块是正确的。

2、模块名:选择模块设计

(1)模块功能: 按扫描信号的指定选择输出 (2)端口定义: a,b,c为控制信号;

data1[3..0], data2[3..0], data3[3..0], data4[3..0],

data5[3..0], data6[3..0]分别是毫秒的低位,毫秒的高位,秒的低位,秒的高位,分的低位,分的高位的数据值;

ch_out[3..0]为选择输出端。

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity choice is

port

(a,b,c:in std_logic;

data1,data2,data3,data4,data5,data6:in downto 0);

ch_out:out std_logic_vector( 3 downto 0)

);

std_logic_vector(3

end choice;

architecture behave of choice is

signal ch:std_logic_vector(2 downto 0);

begin

ch(2)

process(ch)

begin

case ch is

when"000"=>ch_outch_outch_outch_outch_outch_out null;

end case;

end process;

end behave;

(4)仿真结果

说明:abc 的值递增,ch_out选择输出data1,data2,data3,data4,data5,data6的值,证明模块是正确的

3、模块名: 3-8译码模块设计

(1)模块功能: 通过SEL 给的信号来控制8位数码管位的亮灭。 (2)端口定义: 输入端SEL[2..0]值大小来选择输出Q 的值

输出端Q[7..0]来控制灯哪位亮

(3)VHDL 源程序

LIBRARY ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY decode3_8 IS

PORT(SEL: IN std_logic_vector(2 downto 0); Q : OUT std_logic_vector(7 downto 0)

);

END decode3_8;

AR CHITECTURE a OF decode3_8 IS BEGIN

Q

"11111101" when sel = 1 else

"11111011" when sel = 2 else "11110111" when sel = 3 else "11101111" when sel = 4 else "11011111" when sel = 5 else "11111111";

END a;

(4)仿真结果

说明:Sel 的值递增,Q 的相应位会亮,证明模块是正确的。

4.1模块名: 毫秒计时模块设计

(1)模块功能: 对毫秒位的计数 (2)端口定义: clk 为信号时钟输入端

reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql: 毫秒信号的低位输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m100 is

port

(clk:in std_logic; reset:in std_logic; pause:in std_logic; co:out std_logic;

qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );

end m100;

architecture behave of m100 is

begin

co

process(clk,reset,pause)

begin

if(reset='0') then

qh

elsif(pause='0')then

qh

elsif (clk'event and clk='1') then

if (ql="1001") then

ql

i f (qh="1001") then

q h

e nd if; else ql

end if;

end if;

end process;

end behave;

(4)仿真结果

说明:毫秒为100进制,高位和地位都是10进制,高位到10会有进位,可以证明模块的正确性

4.2模块名: 秒计时模块设计

(1)模块功能: 对毫秒位的计数 (2)端口定义: clk 为信号时钟输入端

reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql: 毫秒信号的低位输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m60_sec is

port

(reset:in std_logic; pause:in std_logic; ci:in std_logic; co:out std_logic;

qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );

end m60_sec;

architecture behave of m60_sec is

begin

co

process(reset,pause,ci)

begin

if(reset='0') then

qh

elsif(pause='0')then

qh

elsif (ci'event and ci='1') then

if (ql="1001") then

ql

if (qh="0101") then

qh

else qh

else ql

end if;

end if;

end process;

end behave;

(4)仿真结果

说明:秒进制为60进制,高位到6会有进位,低位为10进制,可以证明模块的正确性

4.3模块名: 分计时模块设计

(1)模块功能: 对毫秒位的计数 (2)端口定义: clk 为信号时钟输入端

reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql: 毫秒信号的低位输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m60_min is

port

(reset:in std_logic; pause:in std_logic; ci:in std_logic;

qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );

end m60_min;

architecture behave of m60_min is

begin

process(reset,pause,ci)

begin

if(reset='0') then

qh

elsif(pause='0')then

qh

elsif (ci'event and ci='1') then

if (ql="1001") then

ql

if (qh="0101") then qh

end if; else ql

end if;

end process;

end behave;

(4)仿真结果

说明:高位为6进制,低位为10进制,ci 为脉冲信号,当ql=9的时候,qh 在下一时刻会增1,可以证明模块的正确性

5、模块名: 显示模块设计

(1)模块功能: 通过CHOICE 模块的输出信号来控制 (2)端口定义: adr是选择模块结果的输入端

q_show是控制数码管段亮的输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity BCD_7 is

port

(adr:in std_logic_vector(3 downto 0); q_show:out std_logic_vector(6 downto 0) );

end BCD_7;

architecture behave of BCD_7 is

begin

process(adr)

begin

case adr is

when "0000"=>q_showq_showq_showq_showq_showq_showq_showq_showq_showq_shownull;

end case;

end process;

end behave;

(4)仿真结果

说明:随着adr 的值增加,q_show输出相应的值,数码管相应的段会亮,证明模块是正确的

四、数字秒表整体组装 1、顶层原理图

1. 工作情况

输入信号经过分频器输给计时模块,计时模块的各位输给选择(CHOICE)模块,选择模块选择输出,再经过转码(BCD_7)模块控制数码管段的亮灭;

输入信号的另一路经过分频器给扫描(SEL)模块,SEL 的输出信号一方面给CHOICE 模块提供提供选择信号,另一方面又给译码器(decode3_8)模块提供译码信号来控制灯位的亮灭。,pause 和reset 分别控制暂停和复位。

2.模块间的连接关系:

扫描(SEL)模块的输出端接译码(decode3_8)模块和选择(CHOICE)模块,计时模块接选择(CHOICE)模块,选择(CHOICE)模块将选到的信号给转码(BCD_7)模块控制数码管段的亮灭

2、仿真结果

说明:输入信号后,数码管会不停的被扫描,段和位会选择亮,可以证明模块的正确性

管脚分配:

管脚编号 153 4 127 86 87 88 93

管脚定义

Clk50MHZ Pause reset Wei7 Wei6 Wei5 Wei4

管脚编号 104 101 100 85 84 83 82

管脚定义

duan1 duan2 duan3 duan4 duan5 duan6 dp

Wei3 94

Wei2 95

Wei1 98

Wei0 99

hout3 duan0

箱子接上电源,下载即可运行,数码管会开始计时

电子设计自动化

大作业

题 目 数字秒表设计

学 院 控制科学与工程学院 班 级 自动化0803 姓 名 学 号

二OO 一一年五月十二日

题 目:数字秒表的设计

一、设计要求:

(1)数字秒表的计时精度是10ms;

(2)复位开关可以在任何情况下使用,计时在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备;

(3)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。

(4)数字秒表的计时范围是0秒~59分59.99秒,显示的最长时间为59分59秒

二、总体设计: 1、总体结构图

2、各模块功能

1) S EL 模块:将扫描信号输给选择(CHOICE)模块 2)选择模块:按扫描信号的指定选择输出

3)3-8译码模块:通过SEL 给的信号来控制8位数码管位的亮灭 4)计时模块:分别对毫秒,秒,分计时

5)显示模块:通过CHOICE 模块的输出信号来控制

三、单元模块设计 1、模块名: sel 模块设计

(1)模块功能: CLK为扫描时钟脉冲,SELOUT 端不停的发出扫描到的信号 (2)端口定义: CLK为信号输入端

SELOUT[2..0]为选择到的信号输出

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sel is

port(clk: in std_logic;

selout: out std_logic_vector(2 downto 0));

end sel;

architecture one of sel is

signal count: std_logic_vector(2 downto 0); begin

process(clk) begin

if clk'event and clk='1' then if (count="101") then count

count

(4)仿真结果

说明:来一个上升沿,SELOUT 的值增1,可以证明模块是正确的。

2、模块名:选择模块设计

(1)模块功能: 按扫描信号的指定选择输出 (2)端口定义: a,b,c为控制信号;

data1[3..0], data2[3..0], data3[3..0], data4[3..0],

data5[3..0], data6[3..0]分别是毫秒的低位,毫秒的高位,秒的低位,秒的高位,分的低位,分的高位的数据值;

ch_out[3..0]为选择输出端。

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity choice is

port

(a,b,c:in std_logic;

data1,data2,data3,data4,data5,data6:in downto 0);

ch_out:out std_logic_vector( 3 downto 0)

);

std_logic_vector(3

end choice;

architecture behave of choice is

signal ch:std_logic_vector(2 downto 0);

begin

ch(2)

process(ch)

begin

case ch is

when"000"=>ch_outch_outch_outch_outch_outch_out null;

end case;

end process;

end behave;

(4)仿真结果

说明:abc 的值递增,ch_out选择输出data1,data2,data3,data4,data5,data6的值,证明模块是正确的

3、模块名: 3-8译码模块设计

(1)模块功能: 通过SEL 给的信号来控制8位数码管位的亮灭。 (2)端口定义: 输入端SEL[2..0]值大小来选择输出Q 的值

输出端Q[7..0]来控制灯哪位亮

(3)VHDL 源程序

LIBRARY ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY decode3_8 IS

PORT(SEL: IN std_logic_vector(2 downto 0); Q : OUT std_logic_vector(7 downto 0)

);

END decode3_8;

AR CHITECTURE a OF decode3_8 IS BEGIN

Q

"11111101" when sel = 1 else

"11111011" when sel = 2 else "11110111" when sel = 3 else "11101111" when sel = 4 else "11011111" when sel = 5 else "11111111";

END a;

(4)仿真结果

说明:Sel 的值递增,Q 的相应位会亮,证明模块是正确的。

4.1模块名: 毫秒计时模块设计

(1)模块功能: 对毫秒位的计数 (2)端口定义: clk 为信号时钟输入端

reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql: 毫秒信号的低位输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m100 is

port

(clk:in std_logic; reset:in std_logic; pause:in std_logic; co:out std_logic;

qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );

end m100;

architecture behave of m100 is

begin

co

process(clk,reset,pause)

begin

if(reset='0') then

qh

elsif(pause='0')then

qh

elsif (clk'event and clk='1') then

if (ql="1001") then

ql

i f (qh="1001") then

q h

e nd if; else ql

end if;

end if;

end process;

end behave;

(4)仿真结果

说明:毫秒为100进制,高位和地位都是10进制,高位到10会有进位,可以证明模块的正确性

4.2模块名: 秒计时模块设计

(1)模块功能: 对毫秒位的计数 (2)端口定义: clk 为信号时钟输入端

reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql: 毫秒信号的低位输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m60_sec is

port

(reset:in std_logic; pause:in std_logic; ci:in std_logic; co:out std_logic;

qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );

end m60_sec;

architecture behave of m60_sec is

begin

co

process(reset,pause,ci)

begin

if(reset='0') then

qh

elsif(pause='0')then

qh

elsif (ci'event and ci='1') then

if (ql="1001") then

ql

if (qh="0101") then

qh

else qh

else ql

end if;

end if;

end process;

end behave;

(4)仿真结果

说明:秒进制为60进制,高位到6会有进位,低位为10进制,可以证明模块的正确性

4.3模块名: 分计时模块设计

(1)模块功能: 对毫秒位的计数 (2)端口定义: clk 为信号时钟输入端

reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql: 毫秒信号的低位输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m60_min is

port

(reset:in std_logic; pause:in std_logic; ci:in std_logic;

qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );

end m60_min;

architecture behave of m60_min is

begin

process(reset,pause,ci)

begin

if(reset='0') then

qh

elsif(pause='0')then

qh

elsif (ci'event and ci='1') then

if (ql="1001") then

ql

if (qh="0101") then qh

end if; else ql

end if;

end process;

end behave;

(4)仿真结果

说明:高位为6进制,低位为10进制,ci 为脉冲信号,当ql=9的时候,qh 在下一时刻会增1,可以证明模块的正确性

5、模块名: 显示模块设计

(1)模块功能: 通过CHOICE 模块的输出信号来控制 (2)端口定义: adr是选择模块结果的输入端

q_show是控制数码管段亮的输出端

(3)VHDL 源程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity BCD_7 is

port

(adr:in std_logic_vector(3 downto 0); q_show:out std_logic_vector(6 downto 0) );

end BCD_7;

architecture behave of BCD_7 is

begin

process(adr)

begin

case adr is

when "0000"=>q_showq_showq_showq_showq_showq_showq_showq_showq_showq_shownull;

end case;

end process;

end behave;

(4)仿真结果

说明:随着adr 的值增加,q_show输出相应的值,数码管相应的段会亮,证明模块是正确的

四、数字秒表整体组装 1、顶层原理图

1. 工作情况

输入信号经过分频器输给计时模块,计时模块的各位输给选择(CHOICE)模块,选择模块选择输出,再经过转码(BCD_7)模块控制数码管段的亮灭;

输入信号的另一路经过分频器给扫描(SEL)模块,SEL 的输出信号一方面给CHOICE 模块提供提供选择信号,另一方面又给译码器(decode3_8)模块提供译码信号来控制灯位的亮灭。,pause 和reset 分别控制暂停和复位。

2.模块间的连接关系:

扫描(SEL)模块的输出端接译码(decode3_8)模块和选择(CHOICE)模块,计时模块接选择(CHOICE)模块,选择(CHOICE)模块将选到的信号给转码(BCD_7)模块控制数码管段的亮灭

2、仿真结果

说明:输入信号后,数码管会不停的被扫描,段和位会选择亮,可以证明模块的正确性

管脚分配:

管脚编号 153 4 127 86 87 88 93

管脚定义

Clk50MHZ Pause reset Wei7 Wei6 Wei5 Wei4

管脚编号 104 101 100 85 84 83 82

管脚定义

duan1 duan2 duan3 duan4 duan5 duan6 dp

Wei3 94

Wei2 95

Wei1 98

Wei0 99

hout3 duan0

箱子接上电源,下载即可运行,数码管会开始计时


相关内容

  • 传感器选用原则
  • 传感器选用原则 现代传感器在原理与结构上千差万别,如何根据具体的测量目的.测量对象以及测量 环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题.当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了.测量结果的成败,在很大程度上取决于传感器的选用是否合理. 1)根据测量对象与测量环 ...

  • 单片机10秒秒表课程设计
  • 赣 南 师 范 学 院 物理与电子信息学院 课程设计Ⅳ设计报告书 基于AT89S52单片机的 10秒秒表的设计 姓名: 匡远熹 班级: 09电子信息工程 学号: 090802015 指导老师:刘小燕 时间: 2012.1.01 目 录 内容摘要 ........................... ...

  • 科技文献检索_课程论文
  • 09物理学 汪筠(0908410043) 关于"基于FPGA技术设计电子钟表电路"的科技文 献检索 [摘要] 本文从科研及毕业论文的角度,首先阐述了文献检索的概念及重要意义,然后通过对有关"基于FPGA技术设计电子钟表电路"的科技文献的检索,并对检索过程.结果 ...

  • 对数字系统设计的认识
  • 对数字系统设计的认识 摘 要:当今世界,电子技术飞速发展,新器件和新产品不断涌现,人类已进入数字化时代,数字技术已渗透到人类生活的诸多领域, 随着电子计算机技术的迅猛发展,计算机辅助设计技术深人人类经济生活的各个领域,电子CAD 就是应用计算机辅助设计技术来进行电子产品的设计.开发.制造,现代数字系 ...

  • 数字电压表设计
  • 东北石油大学 课 程 设 计 2 东北石油大学课程设计成绩评价表 东北石油大学课程设计任务书 课程 硬件课程设计 题目 数字电压表设计 专业 计 主要内容.基本要求等 一.主要内容: 利用EL 教学实验箱.微机和Quartus Ⅱ软件系统,使用VHDL 语言输入方法设计数字钟.可以利用层次设计方法和 ...

  • EDA硬件测试平台说明书.PDF
  • SJ8002C EDA硬件测试平台说明书 电子科技大学自动化学院2008年9月 目 录 第一部分 SJ8002C EDA硬件测试平台简介 一.EDA硬件测试平台系统组成 ................................................. 2 二.主要性能指标 .... ...

  • 跑马灯电路课程设计6
  • 淮北师范大学 硬件课程设计 跑马灯电路课程设计 学 院 计算机科学与技术 专 业 计算机科学与技术(非师范) 学生姓名 徐龙龙 学 号 [1**********] 指导教师 宋文 2010年12月15日 星期三 摘要: 21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断 ...

  • 文献检索期刊论文
  • 文献检索期刊论文 1.检索策略:中国知网:集成电路 2.题名:国内集成电路产业特点.问题.趋势及建议 3.作者: 徐武明 4.工作单位: 西南财经大学经济学院: 四川大学工商管理学院: 5.摘要:有关报道称发达国家对向中国出口集成电路制造设备.材料和技术实行严格的管制使得中国集成电路产业落后发达国家 ...

  • 电子电路EDA实训报告
  • 电子电路EDA实训报告 电气与控制工程 自动化1305 雷心宇 1306050506 一.课程设计的目的及任务 EDA课程设计是工科院校电类专业学生进行的一次较全面的设计能力训练实践课程.通过本课程设计重点掌握一种EDA 软件--Multisim软件在模拟电路和数字电路的设计和仿真应用,训练学生综合 ...