数字逻辑系统教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 例化语句

作用:为了连接底层元件形成更高层次的电路设计结构,它引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中指定端口相连接,从而为当前设计实体引进一个新的低一级的设计层次。

元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明。表达式如下:

相关文档
最新文档