持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
时序电路是由组合电路加存储元件构成; 存储元件采用触发器实现; 时序电路可以没有组合电路,但必须有触发器; 触发器具有存储功能; D 触发器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DFF1 IS
PORT(CLK,D:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END DFF1;
ARCHITECTURE BHV OF DFF1 IS
SIGNAL Q1:STD_LOGIC;
BEGIN
PROCESS(CLK,Q1) BEGIN
IF CLK'EVENT AND CLK='1'
THEN Q1<=D;
END IF;
END PROCESS;
Q<=Q1;
END BHV;
D 触发器模块图
在时钟上升沿,输出口 D 数据更新 边沿敏感检测: CLK'EVENT AND CLK='1' 解释:
- EVENT包含在 STD_LOGIC_1164 里。名称:信号属性函数“ <信号名> EVENT ”
- CLK'EVENT:对 CLK 标识符的信号在当前的一个极小的时间 δ 内发生的事件的情况进行检测
- 发生事件: CLK 在其数据类型的取值范围内发生变化,从一种取值转变到另一种取值
- CLK'EVENT AND CLK='1' :在 δ 时间内测得 CLK 有一个跳变,而此小时间段δ后又测得CLK为高电平 ‘ 1 ’
- 不完整条件语句与时序电路:满足条件:执行 Q1<=D ,并结束IF语句。不完整的条件语句与时序电路,没有指出所有情况
- 不满足条件则不执行任何行为,即保持原值不变。
- 对于数字电路而言,当输入改变后仍能保持原值不变,就意味着使用了具有存储功能的元件。
- 在本文中还有一个重要的知识点就是定义信号Q1,是为了在设计更大的电路时使用由此引入的信号,这是一种非常常用的时序电路设计的表述方式。在D 触发器这里也用上是为了养成良好的编程习惯。 总结:D触发器是最简单的时序电路,是后面学习的基础,因此彻底理解和掌握非常重要。而且内容非常少;就是一个上升沿函数和一个赋值操作和定义一个信号。