现代电子系统的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CONSTANT Zero_4:STD_LOGIC_VECTOR(3 DOWNTO 0):=“0000”;
b.变量(VARIABLE)
——变量是局部量,只能在进程和子程序中定义和
使用;
——变量的赋值符号为“:=”; 变量定义格式:
c.信号(SIGNAL)
信号定义格式:
——信号是全局量。用于进程间通信,或用于并行模块 间的信息交流。 ——信号用于声明内部信号,而非外部信号(外部信号对 应为IN,OUT,INOUT,BUFFER),其在元件之间起互联作用 (类似于连线);可以赋值给外部信号。 ——信号的赋值符号为“<=”; ——信号使用和定义的范围只能是实体、结构体和程序 包,在进程和子程序中不允许定义信号,但可以使用信号。 ——同一个信号只能在一个进程中被赋值,不能在多个进 程被赋值,但同一个信号可以在多个进程中使用。
--块名必须有。
例:比较器
并行信号赋值语句
并行信号赋值语句实际上是一个进程的缩写。如下 面两个构造体是等效的:
并行信号赋值语句有三种形式:
◆ 简单信号赋值语句
◆ 条件信号赋值语句 ◆ 选择信号赋值语句
简单信号赋值语句
例:
条件信号赋值语句
WHEN_ELSE语句描述的四选一选择器:
选择信号赋值语句
利 用 元 件 例 化 构 成 本 例 (
10 ) :
cntvh
几点说明:
——元件例化时的端口列表可采用位置关联方法,如u1; ——元件例化时的端口列表也可采用名称关联方法映射 实参和形参,如u2;格式为(形参1=>实参1, 形参2=>实参 2,…) ——元件声明时,一定要用原元件定义时的端口名,不 能变动。若用到库中的元件,如OR2,在不知原端口名称 的情况下,建议重编写OR2_NEW。但必须另起文件名。
3.
VHDL语句及基本描述方法 顺序语句
并行语句 VHDL基本描述方法
顺序语句
◆赋值语句 ◆流程控制语句 ◆等待语句 ◆空操作语句
赋值语句
——赋值语句包括信号赋值语句和变量赋值语句; ——赋值源和目标数据类型必须相同; ——在进程中,信号赋值在进程结束时起作用,变量赋 值立即起作用; ——信号具有全局特征,变量具有局部特征; ——信号赋值语句可以以顺序语句形式出现,此时在进 程内使用;信号赋值语句也可以以并行语句形式出现,此 时在进程外使用。
BUFFER(缓冲)是INOUT(双向)的子集, 但不是由外部驱动
构造体
一般格式:
——说明语句(可选):声明构造体所用的内部 信号、数据类型、常数、函数等; ——构造体中,处于BEGIN和END之间是并行处 理语句,描述了构造体的行为及连接关系,包括: 并行语句、进程、子程序和元件例化等。
2.VHDL语言要素
变量赋值目标 := 赋值源; 信匀赋值目标 < = 赋值源;
流程控制语句
IF_THEN_ ELSE语句
!!IF语句只能在进程中使用
--注意,此处是ELSIF,而 --不是ELSE IF
例:设计一个二输入与门
无ELSE语句,因此综合器综合时默 认为:ELSE c<=c;
CASE_WHEN语句
case 表达式 is when 选择值=>顺序语句; when 选择值=>顺序语句; when 选择值=>顺序语句; ┅ end case;
例:四选一选择器:
“=>”相当于THEN的作用; 条件句的顺序是不重要的; WHEN OTHERS列出其他可能 取值;
LOOP语句 常用的是FOR_LOOP语句,语法格式如下:
如:
端口信号名 端口模式
端口类型
——端口模式(MODE):端口模式有以下几种类型: ■ IN:信号进入实体但并不输出; ■ OUT:信号离开实体但并不输入,并且不会在内部反 馈使用; ■ INOUT:信号是双向的(既可以进入实体,也可以离开 实体) ■ BUFFER:信号输出到实体外部,但同时也在实体内 部反馈。
对于N个测试变量,由于只与其中的一个有关,可对测试 变量进行编码,外部电路用N选一选择器,选择相应的测 试变量;其次要决定现态转向后续地址的哪一个,再用多 个(取决于后续地址位数)二选一数据选择器,根据测试 变量X(i)是0还是1,选出两个后续地址中的一个。
例2.3-3:设计MDS图如图所 示的微程序控制器。
4.控制子系统的微程序设计
概念 :把控制子系统中每一个状态要输出的控制信号及 该状态的转移去向按一定格式编写成条文,保存在ROM中。 运行时,逐条取出这些微指令,实现控制过程。
a.单测试双地址法
只把状态变量作为地址变量,而把决定状态转移的测试变 量作为指令的内容写入ROM,称为测试变量段。 后续地址段分为两部分,分别为测试变量为1和0时的转移 去向。
1、状态编码:用两个D触发器; 2、确定ROM容量:4×9; 3、填写ROM的内容; 4、硬件电路。
微指令表
电路图
b.单测试单地址法
现态的两个分支设置成:一个为现状态编码加1,另一 个任意,在微指令的后续地址中,只要注明“任意的一个” 即可,现态加1就不必标注。标志位:说明测试变量为1时还 是为0时现状态加1。 表2.3-5 单测试单地址微指令格式 输出变量 测试变量 标志位 转移地址
NULL语句
例:四选一 选择器
并行语句
VHDL的几种主要并行语句: ◆进程语句 PROCESS语句 ◆块语句 BLOCK语句 ◆并行信号赋值语句 ◆元件例化语句 ◆生成语句 GENERATE语句
进程语句(PROCESS)
——进程语句是个复合语句,由一段程序构成。
——各个进程是并发执行的,但进程内部的所有语句却都 是顺序执行的。 ——一个构造体可以包括多个进程语句,多进程间的通信 依靠信号(SIGNAL)来传递。
VHDL语言操作符 a.逻辑运算符
NOT:取反;AND:与;OR:或;NAND:与非; NOR:或非;XOR:异或;XNOR:同或 可以对STD_LOGIC和BIT等逻辑型数据、 STD_LOGIC_VECTOR等逻辑型数组及布尔数据操作。 左右无优先级之分。全为“AND”“OR”“XOR”时可以 不要括号。 例:A<=B AND C AND D; A<=((B NAND C) NAND D) NAND E;
慎重,会大大 增加逻辑门数
数据对象
在逻辑综合中,VHDL语言常用的数据对象为:
——信号 ——变量 ——常量
a.常量(CONSTANT)
——常量是全局量。
——常量的定义和设置是为了设计更容易阅读和修改。 如利用它可设计不同模值的计数器,模值存于一常量中, 对不同的设计,改变模值仅需改变此常量值即可。
b.关系运算符
=(等于);/=(不等于);适用于所有类型的数据;
<(小于);<=(小于等 于); >(大于);>=(大于等于);
可用于整数、实数、位和位矢量等类型。
注意!!
进行关系运算时,左右两边的数据类型必须相同,但 位长度不一定相等
c. 连接运算符
”&”:用于位的连接。
d. 算术运算符
注意:Std_logic类型数据不能进行算术运算 Std_logic_vector可以
定义枚举类型
语法:Type 类型名称 Is(元素1,元素2,„„); 例:type state is (s0,s1,s2,s3); signal s:state;
VHDL属性(Attribute) 函数类属性 ’event ,值为布尔型,如果该属性所附着 的信号有变化,则其取值为True,否则为False。
d.信号与变量的比较 ——信号可以促发进程,同一个信号可以在多个进程 中使用; ——信号与变量声明的形式与位置不同: 信号声明为SIGNAL…,变量声明为VARIABLE… 信号声明在子程序、进程等外部,而变量声明在子程序、 进程等内部。 ——信号与变量的赋值不同: 在进程中,信号赋值在进程结束时起作用,而变量赋值 立即起作用。 ——如果在一个进程中多次为一个信号赋值时,只 有最后一个值会起作用; ——为变量赋值时,变量值的改变立即发生。
数据类型 最常见的标准定义数据类型:
——INTEGER:可用作循环的指针或常数,通常不用于 I/O信号; Signal typei: INTEGER range 0 to 15; ——BIT:可取值‘0‟或‘1‟; ——BIT_VECTOR :用双引号括起来的一组位数据,如 “010101”; ——STD_LOGIC:工业标准的逻辑类型,可取值'0','1', 'Z'等; ——STD_LOGIC_VECTOR:std_logic的组合,工业标 准的逻辑类型。
LOAD X (i) YNBIT X (i) YNBIT
ROM内容:
微指令表
硬件电路:
还可用另一种方法来实现单测试单地址法。 由于每个状态只与一个测试变量有关,则可以采 用一个数据选择器,用现态作为其控制信号,选 出决定转移的那个测试变量,然后由现态和测试 变量共同作为ROM的地址变量,这样对于一个状 态只需要两个字就可以实现它的两个转移,也可 以大大缩减ROM的容量
用计数器取代D触发器
例2.3-4:用单测试单地 址法实现MDS图如图所示 的微程序控制器。
1、状态编码:现态的两个转移状态 一个必须为现态加1; 2、确定ROM的容量:4×9; 测试变量为X、Z、W三个加无条件 转移共4个。注意此处无条件转移不能 像单测试双地址那样把测试变量表示为 Φ,因为这里需要相应的硬件电路保证。 测试变量段为2位,L2L1=00为无条件; L2L1=01为X;L2L1=10Z;L2L1=11为 W。标志位YNBIT为1位,输出为4位, 转移地址两位,ROM容量共4×9=36。
临时变量,属LOOP语句的局部变量,不必事先定义。
起始值 Downto 结束值
起始值 To 结束值
例:奇偶校验电路
Байду номын сангаас
奇数个1标志位 偶数个1标志位
等待(WAIT)语句
语句格式:
WAIT [ON 敏感信号表] [UNTIL 条件表达式] [FOR 时间表 达式];
注:已列出敏感量的进程中不能使用任何形式的WAIT语句。
例2.3-5: 用单测试单地址 法实现如图所示的MDS图 的微程序控制器。
微指令表
硬件电路:
第三章
1、FPGA结构
2、CPLD结构
第四章
1. VHDL语言程序的基本结构
库和程序包
实体
格式如下:
端口定义:PORT(端口名1:端口模式 数据类型; …… 端口名n-1 ,端口名N :端口模式 数据类型);
WITH_SELECT语句描述的四选一选择器:
元件例化语句
--注意:没有IS --同该元件定义时的PORT部分
例化名:实体名(即元件名)PORT MAP(端口名连接关系);
例:一个模为10的计数器和一个七段译码器的连接。
模 10 计 数 器 的 V H D L 描 述
BCD 码 到 七 段 的 VHDL 描 述
现代电子系统设计 复习纲要
2011年6月
第二章
1.电子系统的基本组成及各部分之间的关系
2.十字路口交通灯设计之受控器电路
3.由MDS图设计控制器(状态编码方式)
例2.2-5:某数字系统的 MDS图如图所示, R、A为输入信号, Ci(i=0…3)为输出信号, 设计它的控制器电路。
五个状态,用三个D触发器, 采用二进制编码方式
状态转换表:
画出激励函数的卡诺图:
写出函数表达式:
D 2 AQ 2 Q1Q 0 D1 S 0 RA Q1 Q0 D0 S 0 R A Q1 Q0
C0 S 0 C1 S1 S 2 C2 S 2 S 3 S 4 C3 S3
画出控制器电原理图:
3、填写微指令: 在填写单测试单地址的微指令时最需要注意的是标志 位填写,而标志位填写与硬件电路有关。如果用标志位 YNBIT=1,表示测试变量X(i)为1时计数器计数,测试 变量X(i)为0时计数器置数;而用标志位YNBIT=0,表 示测试变量X(i)为0时计数器计数,测试变量X(i)为1 时计数器置数,同时根据一般计数器的置数信号均是低电 平有效, 则有
例:计数器进程部分:
--进程(敏感表)
--顺序语句,异步清零
若改为同步清零,则进程如下:
--同步清零
若没有敏感表,利用WAIT UNTIL语句,进程 如下:
块语句(BLOCK)
——块语句是将结构体中的并行语句组合在一起,其主 要目的是改善并行语句及其结构的可读性,一般用于较复 杂的VHDL程序中。 ——只是形式上的划分,而非功能上的改变。 块语句的语法描述: