秒表实验报告_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;