数字系统设计与硬件描述语言
期末考试作业
题目: 多功能电子秒表设计
学院: 电子信息工程学院
专业: 电子信息工程
学号:
姓名:
2012-05-31
一、 选题设计描述
1. 功能介绍
设计一块数字秒表,能够精确反映计时时间,并完成复位、计时功能。
秒表计时的最大范围为 10 分钟,精度为 0.1 秒。秒表可得到计时时间的
分、秒、0.1 秒等度量,且各度量间可以正确进位。当复位清零有效时,
秒表清零并做好计时准备。在任何情况下,只要按下复位开关,秒表都
要无条件的进行复位操作,即使在计时过程中也要无条件地清零。设置
秒表启动、停止开关。按下该开关,秒表即刻开始计时,并得到计时结
果;放开该开关时,计时停止。
2. 算法简介
根据上述设计要求,可以预先设计若干个不同进制的计数器单元模块,
然后将其进行例化组合来得到数字秒表系统。 要满足数字秒表的精度,
首先要获得精确的计时基准信号,这里的系统精度要求为 0.1 秒,因此
必须设置周期为 0.1 秒的时钟脉冲。0.1 秒、秒、分等计时单位之间的进
位转换可以通过不同进制的计数器实现。
设置十进制计数器和六进制计数器,每位计数器均能输出相应计时单位
计数结果,其中,十进制计数器可以实现 0.1 秒、秒、分为单位的计数,
六进制计数器可以实现以 10 秒为单位的计数。把各级计数器级联,即
可同时显示 0.1 秒、秒、分钟。
级联为串行进位方式,以低位片的进位输出信号作为高位片的时钟输入
信号。在并行进位方式中,以低位片的进位输出信号作为高位片的工作
状态信号(计数的使能信号 EN),两片的 CLK 端同时接计数输入信号。
二、 程序源代码及说明
1、十进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN: IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC );
END CNT10;
ARCHITECTURE behav OF CNT10 IS
BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器复位
ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
IF EN = '1' THEN --检测是否允许计数
IF CQI < "1001" THEN CQI := CQI + 1; --允许计数
ELSE CQI := (OTHERS =>'0');--大于 9,计数值清零
END IF;
END IF;
END IF;
IF CQI = "1001" THEN COUT <= '1'; --计数大于 9,输出进位信号
ELSE COUT <= '0';
END IF;
CQ <= CQI; --将计数值向端口输出
END PROCESS;
END behav;
2、六进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT6 IS
PORT (CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC );
END CNT6;
ARCHITECTURE behav OF CNT6 IS
BEGIN
PROCESS(CLK, RST, EN)