编辑: 丑伊 2019-12-05
结构原理图: 流程图:在整个流程中,按clr信号都会清零,按go信号会停止或开始.

系统仿真: 部分模块仿真:

1、启停模块 当有一个脉冲时,在时钟是上升沿,输出状态q即发生改变.

2、毫秒模块 在1s时,计数器co进1位.60进制和24进制模块同理.

3、分频模块 输入时钟频率clk为12kHz,输出频率为100Hz(10ms). clk时钟频率为12kHz,位选时钟频率为47kHz.go信号置低电平,由于是低电平清零,所以clr置高电平,在34.4ms处给一清零信号. 从以上两图可以知道,在20.11ms处,开始有计数(3FH表示0,06H表示1),数码管显示00

00 00 01,在相隔10ms左右,即30.32ms处,计数增1(5BH表示2),数码管显示00

00 00 02. 考虑到仿真的时间和速度,只做了40ms的仿真,但我们不难从中看出,该系统是以10ms为一次计数的. 在34.4ms处给一清零信号,此后系统不计数,数码管显示00

00 00 00. 系统的功能是正确的. 注:这是所有的模块,有些模块可以写上,有些模块也可以不要 要添加一些必要的注释 模块程序: 启停模块 ----秒表的启停是通过控制送给计数器的时钟来实现的,当按下启停键后,输出端Q的状态发生反转. ----Q为'1'时,时钟可通过与门,秒表计时;

Q为'0'时,时钟被屏蔽,计数器得不到时钟,停止计数 library ieee;

use ieee.std_logic_1164.all;

entity aab is port(a,clk,clr:in std_logic;

q:out std_logic);

end aab;

architecture aab_arc of aab is begin process(clk) variable tmp:std_logic;

begin if clr='0'then tmp:='0';

---清零,封锁与门 elsif clk'event and clk='1'then if a='1'then ---当检测到脉冲时 tmp:=not tmp;

输出低电平,封锁与门 end if;

end if;

q

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题