- 27
- 0
- 约3.22千字
- 约 6页
- 2016-05-15 发布于重庆
- 举报
LED显示及秒表计时器设计
LED秒表计时器本秒表计时器用于体育竞赛及各种要求有较精确时的各领域。此计时器是用VHDL语言描述的。它开关、时钟和显示功能。
计时器的设计功能:
(1)精度应大于1/100s
(2)计时器的最长计时时间为1小时在一般的短时间计时应用中,1小时应该足够了。为此需要一个6位显示器,显示最长时间为59分59.99秒。
(3)设置复位和启/停开关
?????? 复位开关用来使计时器清0。启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程应立即终止,并对计时器清零。
设计方案:
??? 为了便于描述,将整个计时控制芯片分成个子模块:子模块(),子模块(c),子模块(c),和显示子模块(),各模块之间信号连接关系的方框图如下:设计:
各模块程序及生成的符号文件如下:
模块设计
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity fpq is
generic(framlenr:integer:=40000);
Port (clk:in std_logic;
bclk:out std_logic);
end fpq;
architecture Behavioral of fpq is
begin
process(clk)
variable cnt:integer;
begin
if rising_edge(clk) then
if cnt=framlenr then cnt:=0; bclk=0;
elsif cnt=framlenr/2 then cnt:=cnt+1;bclk=1;
else cnt:=cnt+1; bclk=0;
end if;
end if;
end process;
end Behavioral;
生成的符号:
2、十进制计数器子模块(c).
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt10 IS
PORT (reset,en,clk:IN STD_LOGIC;
carry:OUT STD_LOGIC;
q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT10;
ARCHITECTURE rtl OF cnt10 IS
SIGNAL qs :STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL ca :STD_LOGIC;
BEGIN
PROCESS(clk)
BEGIN
IF(clkEVENT AND clk=1)THEN
IF(reset=1)THEN
qs=0000;
ELSIF(en=1) THEN
IF(qs=1001) THEN --计数到9
qs= 0000;
ca=0;
ELSIF(qs=1000) THEN --计数到8
qs= qs+1;
ca=1;
ELSE qs= qs+1;
ca=0;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(ca)
BEGIN
q=qs;
carry=ca AND en;
END PROCESS;
END rtl;
生成的符号:
仿真波形:
六进制计数器子模块(c)LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
?
ENTITY cnt6 IS
??? PORT (reset
原创力文档

文档评论(0)