秒表实验报告_2
- 格式:doc
- 大小:52.00 KB
- 文档页数:3
实验八 秒表
一、实验目的:
1、了解数字秒表的工作原理。
2、进一步熟悉用VHDL语言编写驱动七段数码管的代码。
3、掌握VHDL编写中的一些小技巧。
二、实验要求:
实现数字秒表功能,要求有分,秒,1%秒显示,该秒表能够随时控制启/停,清零重
新计时功能。
三、实验原理
秒表的工作原理与多功能数字电子钟大致相同,唯一不同的是,由于秒表的分辨率为0.01秒。所以整个秒表的工作时钟是在100HZ的时钟信号下完成的。假设该秒表的应用场合小于1小时,秒表的显示格式为mm~~ss~~xx(mm表示分钟:0~59;ss表示秒:0~~59;xx表示百分之一秒:0~~99)。
四、实验步骤
1、 用VHDL语言编写出秒表电路程序,通过QuartusII 进行编辑、编译、综合、适配、仿真测试。给出其所有信号的时序仿真波形。
2、 按实验要求锁定管脚,重新综合。
3、 在EDA6000软件中建立实验模式。
4、 下载设计文件,硬件验证秒表工作性能。
五、实验结果
1、 调试的过程记录
在仿真图正确后开始用EDA6000进行检验,所有的管脚都连接好后,通入100Hz的脉冲,秒表开始工作
2、 实验结果
经过调试得到了正常工作的秒表,每一个环节的跳转过程都是正常的
最终的波形图:
3、 实验程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity stopwatch is
port(clk,rst,en:in std_logic;
minh,minl,sech,secl,msh,msl:out std_logic_vector(3 downto 0));
end entity;
architecture behav of stopwatch is
signal minhi,minli,sechi,secli,mshi,msli:std_logic_vector(3 downto 0);
signal clk1,clk2:std_logic;
begin
process(clk,en,rst)
begin
if rst='1' then mshi<="0000";msli<="0000";
elsif clk'event and clk='1' then
if en='1' then
if (mshi="1001" and msli="1001") then
mshi<="0000";msli<="0000";clk1<='1';
elsif msli="1001" then
msli<="0000"; mshi<=mshi+1;
else msli<=msli+1;clk1<='0';
end if;
end if;
end if;
end process;
process(clk1,en,rst)
begin
if rst='1' then sechi<="0000";secli<="0000";
elsif clk1'event and clk1='1' then
if en='1' then
if (sechi="0101" and secli="1001") then
sechi<="0000";secli<="0000";clk2<='1';
elsif secli="1001" then
secli<="0000"; sechi<=sechi+1;
else secli<=secli+1;clk2<='0';
end if;
end if;
end if;
end process;
process(clk2,en,rst)
begin
if rst='1' then minhi<="0000";minli<="0000";
elsif clk2'event and clk2='1' then
if en='1' then
if (minhi="0101" and minli="1001") then
minhi<="0000";minli<="0000";
elsif minli="1001" then
minli<="0000"; minhi<=minhi+1;
else minli<=minli+1;
end if;
end if;
end if;
end process;
msh<=mshi;msl<=msli;sech<=sechi;secl<=secli;minh<=minhi;minl<=minli;
end behav;