数字跑表实验报告(电子科技大学)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字跑表设计报告

学院:物理电子学院

学号:2014040206029

姓名:刘明哲

班级:电子六班

一 系统总体设计

设计要求

设计一个数字秒表,有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,系统主要由显示译码器、分频器、十进制计数器和六进制计数器组成。整个秒表还需有一个启动/停止信号和一个复位信号,以便秒表能随意停止及启动。

要求:

(1) 秒表计时范围为:1小时;

(2) 秒表精度为0.01秒;

(3) 具有开始计时、停止计时控制功能,且开始计时、停止计时为一个复用按键;

(4) 在正常计时显示过程中,能够在存储按键作用下存储某一计时时间;存储的时间组数为确定值或1至任意值;

(5) 在读取按键作用下存储的时间能够回放显示;回放显示时,秒表计时可停止或在后台正常进行;回放显示可手动或自动依次显示;

(6) 具有复位功能;

(7) 用六位数码管显示时间读数。

系统工作原理

数字跑表通过系统将48MHz时钟进行分频得到100Hz的秒表时钟,之后通过对时钟信号进行计数得到具体的跑表显示数值,跑表数值作为显示单元电路的输入,显示单元控制数码管动态扫描显示计数

因此,系统主要划分为:分频器,计数器,显示控制,开始\停在使能控制,清零控制,存储读取功能,按键消抖。

原理图如下:

二 单元电路设计

1. 分频器

设计思路:输入信号48MHz,将其48000分频可得1KHz信号,再将

1KHz信号10分频可得100Hz信号。1KHz用于显示LED扫描,100Hz用于计数器时钟。

源程序如下:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity pp is

PORT(CLKIN:IN STD_LOGIC;

CLKOUT1K:OUT STD_LOGIC;

CLKOUT100:OUT STD_LOGIC);

end ENTITY pp;

architecture Behavioral of pp is

SIGNAL CNTER0:INTEGER RANGE 0 TO 23999 :=0;

SIGNAL CNTER1:INTEGER RANGE 0 TO 4 :=0;

SIGNAL CLKOUT1K_TMP,CLKOUT100_TMP: STD_LOGIC:='0'; begin

PROCESS(CLKIN) IS

BEGIN

IF CLKIN'EVENT AND CLKIN ='1' THEN

IF CNTER0=23999 THEN

CNTER0 <=0;

CLKOUT1K_TMP <= NOT CLKOUT1K_TMP;

ELSE

CNTER0 <= CNTER0 + 1 ;

END IF;

END IF;

END PROCESS;

CLKOUT1K <= CLKOUT1K_TMP;

PROCESS(CLKOUT1K_TMP) IS

BEGIN

IF CLKOUT1K_TMP'EVENT AND CLKOUT1K_TMP='1' THEN IF CNTER1 =4 THEN

CNTER1 <=0;

CLKOUT100_TMP <= NOT CLKOUT100_TMP;

ELSE CNTER1 <= CNTER1 + 1;

END IF;

END IF;

END PROCESS;

CLKOUT100<=CLKOUT100_TMP;

end Behavioral;

2. 计数器以及清零装置

实验需要用到2个六进制计数器和4个十进制计数器,并且将六个计数器级联

十进制计数器的源程序:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entity COUNTER is

PORT(RST,CLK:IN STD_LOGIC;

CARRY_IN:IN STD_LOGIC;

CARRY_OUT:OUT STD_LOGIC;

COUNT_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

end COUNTER;

architecture Behavioral of COUNTER is

SIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; begin

PROCESS(RST,CLK)

BEGIN

IF RST='1' THEN

COUNT<="0000";

ELSIF CLK'EVENT AND CLK='1' THEN

IF CARRY_IN='1' THEN

IF COUNT< "1001" THEN

COUNT <= COUNT + 1;

ELSE

COUNT<="0000";

END IF;

ELSE NULL;

相关文档
最新文档