数字逻辑系统教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2时序电路描述
[提问]什么是时序电路?时序电路与组合电路的区别?
时序电路由输入逻辑组合电路、输出逻辑组合电路和存储器三部分组成,它们之间的逻辑关系可用输出方程、驱动方程和状态方程表示。
时序逻辑电路的特点
(1)时序逻辑由组合电路和存储电路组成。
(2)在存储元件的输出和电路输入之间存在反馈连接。因而电路的工作状态,与时间因素相关,即时序电路的输出由电路的输入和原来的状态共同决定。
时序电路通常分为两大类:一类是同步时序逻辑电路,电路中所有存储器由一个时钟脉冲控制;另一类是异步时序电路,此类电路无公共的时钟脉冲。
3.2.1 D 触发器
[提问]D触发器的输入输出关系
Qn+1 = D
[分析]例3-6
1、语句讲解
2、时序仿真
3.2.2 时序描述VHDL规则
1. 标准逻辑位数据类型 STD_LOGIC
BIT数据类型定义:
TYPE BIT IS('0','1'); --只有两种取值STD_LOGIC数据类型定义:TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); --有9种取值
2. 设计库和标准程序包
LIBRARY WORK ;
LIBRARY STD ;
USE STD.STANDARD.ALL ;
LIBRARY <设计库名>;
USE < 设计库名>.<程序包名>.ALL ;
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
3. 信号定义和数据对象
例3-6中由于Q1被定义为器件的内部节点信号,数据的输出不像端口信号那样受限制,所以不必定义其端口模式。定义Q1的目的是为了在设计更大的电路时使用由此引入的信号,这是一种常用的时序电路的设计方式。
4. 上升沿检测表式和信号属性函数EVENT
<信号名>'EVENT
对CLOCK标识符的信号在当前的一个极小的时间段δ内发生时间的情况进行检测。所谓发生事件,就是CLOCK在其数据类型的取值范围内发生变化,从一种取值转变到另一种取值(或电平方式)。
5. 不完整条件语句与时序电路
[提问]是否可以认为CLK上升沿测定语句“CLK'EVENT AND CKK=‘1’”就成为综合器构建时序电路的必要条件?(否定)
时序电路构建关键在于利用不完整的条件语句的描述,这种构成时序电路的方式是VHDL描述时序电路最重要的途径。通常,完整的条件语句只能构成组合逻辑电路。
注意:虽然在构建时序电路方面,可以利用不完整的条件语句所具有的独特构成时序电路,但在利用条件语句进行纯组合电路设计时,如果没有充分考虑电路中所有可能出现的问题(条件),即没有列全所有的条件及其对应的处理方法,将导致不完整的条件语句的出现,从而综合出设计者不希望的组合与时序电路的混合体。
3.2.3 时序电路的不同表述
一、采用CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0')语句。如例3-9
二、采用CLK='1' AND CLK'LAST_VALUE='0'语句。如例3-10
三、调用rising_edge()函数。如3-11。次函数只用于标准逻辑位数据类型STD_LOGIC 的信号,属于STD_LOGIC_1164程序包。
四、采用WAIT UNTIL 语句实现。如3-12
五、利用进程的启动特性产生对CLK 的边沿检测。如3-13
六、电平触发寄存器。如3-14
注:时序电路常用的表达方法为第一种和第三种。
3.3全加器的VHDL 描述
3.3.2 CASE 语句
1. CASE 语句
CASE <表达式> IS
When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ; When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ; ...
WHEN OTHERS => <顺序语句>;
END CASE ;
✧ case 语句是无序的,所有表达式值都并行处理。
✧ case 语句中的条件表达式的值必须举穷尽,又不能重复。 ain cout cout ain
bin sum
cin bin
sum cin f_adder or2a f e d u3u2u1b a c co so B co so B h_adder A h_adder
A
✧不能穷尽的条件表达式的值用OTHERS表示。
✧含有任意项输入的条件表达式,对应用于任意项输出,而不能有
确定输出。
2. 标准逻辑矢量数据类型
B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;
或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4)
B <= "01100010" ; -- B(7)为 '0'
B(4 DOWNTO 1) <= "1101" ; -- B(4)为 '1'
B(7 DOWNTO 4) <= A ; -- B(6)等于 A(2)
SIGNAL C :BIT_VECTOR(3 DOWNTO 0);
3. 并置操作符&
SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;
SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;
...
a <= '1'&'0'&d(1)&'1' ; -- 元素与元素并置,并置后的数组长度为4
...
IF a & d = "101011" THEN ... –- 在IF条件句中可以使用并置符
注:0 TO N 与N DOWNTO 0的方向刚好相反N DOWNTO 0最左边为最高位。
3.3.3 例化语句
作用:为了连接底层元件形成更高层次的电路设计结构,它引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中指定端口相连接,从而为当前设计实体引进一个新的低一级的设计层次。
元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明。表达式如下: