1、现代电子系统设计现代电子系统设计复习纲要复习纲要2011年6月第二章第二章1.1.电子系统的基本组成及各部分之间的关系电子系统的基本组成及各部分之间的关系2.2.十字路口交通灯设计之受控器电路十字路口交通灯设计之受控器电路3.3.由由MDSMDS图设计控制器(状态编码方式)图设计控制器(状态编码方式)例例2.2-5:某数字系统的:某数字系统的MDS图如图所示,图如图所示,R、A为输入信号,为输入信号,Ci(i=03)为输出信号,为输出信号,设计它的控制器电路。设计它的控制器电路。五个状态,用三个五个状态,用三个D D触发器,触发器,采用二进制编码方式采用二进制编码方式 状态转换表:状态转换表:
2、画出激励函数的卡诺图:画出激励函数的卡诺图:写出函数表达式:写出函数表达式:010001010122QQARSDQQRASDQQQAD33432221100SCSSSCSSCSC画出控制器电原理图:画出控制器电原理图:4.4.控制子系统的微程序设计控制子系统的微程序设计 概念:把控制子系统中每一个状态要输出的控制信号及该状态的转移去向按一定格式编写成条文,保存在ROM中。运行时,逐条取出这些微指令,实现控制过程。只把状态变量作为地址变量,而把决定状态转移的测试变量作为指令的内容写入ROM,称为测试变量段。后续地址段分为两部分,分别为测试变量为1和0时的转移去向。对于N个测试变量,由于只与其中的
3、一个有关,可对测试变量进行编码,外部电路用N选一选择器,选择相应的测试变量;其次要决定现态转向后续地址的哪一个,再用多个(取决于后续地址位数)二选一数据选择器,根据测试变量X(i)是0还是1,选出两个后续地址中的一个。a.a.单测试双地址法单测试双地址法 例例2.3-3:设计:设计MDS图如图所图如图所示的微程序控制器。示的微程序控制器。1、状态编码:用两个D触发器;2、确定ROM容量:49;3、填写ROM的内容;4、硬件电路。微指令表电路图 现态的两个分支设置成:一个为现状态编码加1,另一个任意,在微指令的后续地址中,只要注明“任意的一个”即可,现态加1就不必标注。标志位:说明测试变量为1时
4、还是为0时现状态加1。表2.3-5 单测试单地址微指令格式 输出变量 测试变量 标志位 转移地址 用计数器取代用计数器取代D D触发器触发器b.b.单测试单地址法单测试单地址法 例例2.3-4:用单测试单地:用单测试单地址法实现址法实现MDS图如图所示图如图所示的微程序控制器。的微程序控制器。1、状态编码:现态的两个转移状态一个必须为现态加1;2、确定ROM的容量:49;测试变量为X、Z、W三个加无条件转移共4个。注意此处无条件转移不能注意此处无条件转移不能像单测试双地址那样把测试变量表示为像单测试双地址那样把测试变量表示为,因为这里需要相应的硬件电路保证。,因为这里需要相应的硬件电路保证。测
5、试变量段为2位,L2L1=00为无条件;L2L1=01为X;L2L1=10Z;L2L1=11为W。标志位YNBIT为1位,输出为4位,转移地址两位,ROM容量共49=36。3、填写微指令:在填写单测试单地址的微指令时最需要注意的是标志位填写,而标志位填写与硬件电路有关。如果用标志位YNBIT=1,表示测试变量X(i)为1时计数器计数,测试变量X(i)为0时计数器置数;而用标志位YNBIT=0,表示测试变量X(i)为0时计数器计数,测试变量X(i)为1时计数器置数,同时根据一般计数器的置数信号均是低电平有效,则有YNBITiXYNBITiXLOAD)()(微指令表ROMROM内容:内容:硬件电路
6、:硬件电路:还可用另一种方法来实现单测试单地址法。还可用另一种方法来实现单测试单地址法。由于每个状态只与一个测试变量有关,则可以采由于每个状态只与一个测试变量有关,则可以采用一个数据选择器,用现态作为其控制信号,选用一个数据选择器,用现态作为其控制信号,选出决定转移的那个测试变量,然后由现态和测试出决定转移的那个测试变量,然后由现态和测试变量共同作为变量共同作为ROMROM的地址变量,这样对于一个状的地址变量,这样对于一个状态只需要两个字就可以实现它的两个转移,也可态只需要两个字就可以实现它的两个转移,也可以大大缩减以大大缩减ROMROM的容量的容量 例例2.3-5:用单测试单地址用单测试单地
7、址法实现如图所示的法实现如图所示的MDS图图的微程序控制器。的微程序控制器。微指令表硬件电路:硬件电路:第三章第三章1 1、FPGAFPGA结构结构2 2、CPLDCPLD结构结构第四章第四章1.VHDL1.VHDL语言程序的基本结构语言程序的基本结构 库和程序包格式如下端口定义:端口定义:PORT(端口名端口名1:端口模式:端口模式 数据类型;数据类型;端口名端口名n1,端口名,端口名N:端口模式端口模式 数据类型)数据类型);实体端口信号名端口信号名端口模式端口模式端口类型端口类型如:端口模式(MODE):端口模式有以下几种类型:IN:信号进入实体但并不输出;OUT:信号离开实体但并不输入
8、,并且不会在内部反馈使用;INOUT:信号是双向的(既可以进入实体,也可以离开实体)BUFFER:信号输出到实体外部,但同时也在实体内部反馈。BUFFER(缓冲缓冲)是是INOUT(双向双向)的子集,的子集,但不是由外部驱动但不是由外部驱动 一般格式 构造体 说明语句(可选):声明构造体所用的内部信号、数据类型、常数、函数等;构造体中,处于BEGIN和END之间是并行处理语句,描述了构造体的行为及连接关系,包括:并行语句、进程、子程序和元件例化等。2.VHDL2.VHDL语言要素语言要素nVHDL语言操作符 a.逻辑运算符 NOT:取反;取反;AND:与;与;OR:或;或;NAND:与非;与非
9、;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;b.关系运算符 (等于);/=(不等于);适用于所有类型的数据;(小于);(大于);=(大于等于);可用于整数、实数、位和位矢量等类型。注意注意!进行关系运算时,左右两边的数据类型必须相
10、同,但进行关系运算时,左右两边的数据类型必须相同,但 位长度不一定相等位长度不一定相等c.连接运算符 ”&”:用于位的连接。d.算术运算符慎重,会大大慎重,会大大增加逻辑门数增加逻辑门数注意:注意:Std_logic类型数据不能进行算术运算类型数据不能进行算术运算 Std_logic_vector可以可以n数据对象 在逻辑综合中,在逻辑综合中,VHDL语言常用的数据对象为:语言常用的数据对象为:信号信号 变量变量 常量常量 a.常量(CONSTANT)常量是全局量。常量的定义和设置是为了设计更容易阅读和修改。如利用它可设计不同模值的计数器,模值存于一常量中,对不同的设计,改变模值仅需改变此常量
11、值即可。CONSTANT Zero_4:STD_LOGIC_VECTOR(3 DOWNTO 0):=“0000”;b.变量(VARIABLE)变量是局部量,只能在进程进程和子程序子程序中定义定义和使用使用;变量的赋值符号为“:=”;变量定义格式:c.信号(SIGNAL)信号定义格式:信号定义格式:信号是全局量。用于进程间通信,或用于并行模块间的信息交流。信号用于声明内部信号,而非外部信号(外部信号对应为IN,OUT,INOUT,BUFFER),其在元件之间起互联作用(类似于连线);可以赋值给外部信号。信号的赋值符号为“=”;信号使用和定义的范围只能是实体、结构体和程序包,在进程和子程序中不允许
12、定义信号,但可以使用信号。同一个信号只能在一个进程中被赋值,不能在多个进程被赋值,但同一个信号可以在多个进程中使用。d.信号与变量的比较信号与变量的比较 信号可以促发进程,同一个信号可以在多个进程中使用;信号与变量声明的形式与位置不同:信号声明为SIGNAL,变量声明为VARIABLE 信号声明在子程序、进程等外部,而变量声明在子程序、进程等内部。信号与变量的赋值不同:在进程中,信号赋值在进程结束时起作用,而变量赋值立即起作用。如果在一个进程中多次为一个信号赋值时,只有最后一个值会起作用;为变量赋值时,变量值的改变立即发生。n数据类型 最常见的标准定义数据类型:INTEGER:可用作循环的指针
13、或常数,通常不用于:可用作循环的指针或常数,通常不用于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的组合,工业标的组合,工业标准的逻辑类型。准的逻辑类型。定义枚举类型 语法:Type 类型名称 Is(元素1,元素2,);例:type state is(s0,s1,s2,s3);
14、signal s:state;nVHDL属性(Attribute)函数类属性 event,值为布尔型,如果该属性所附着,值为布尔型,如果该属性所附着的信号有变化,则其取值为的信号有变化,则其取值为True,否则为,否则为False。3.VHDL3.VHDL语句及基本描述方法语句及基本描述方法顺序语句顺序语句 并行语句并行语句 VHDL基本描述方法基本描述方法 赋值语句赋值语句 流程控制语句流程控制语句 等待语句等待语句 空操作语句空操作语句 顺序语句顺序语句赋值语句包括信号赋值语句和变量赋值语句;赋值源和目标数据类型必须相同;在进程中,信号赋值在进程结束时起作用,变量赋值立即起作用;信号具有全
15、局特征,变量具有局部特征;信号赋值语句可以以顺序语句形式出现,此时在进程内使用;信号赋值语句也可以以并行语句形式出现,此时在进程外使用。变量赋值目标变量赋值目标:=赋值源;赋值源;信匀赋值目标信匀赋值目标 =赋值源;赋值源;赋值语句赋值语句 IF_THEN_ ELSE语句流程控制语句流程控制语句-注意,此处是注意,此处是ELSIFELSIF,而,而-不是不是ELSE IF ELSE IF!IF语句只能在进程中使用语句只能在进程中使用例:设计一个二输入与门例:设计一个二输入与门无无ELSE语句语句,因此因此综合器综合时默综合器综合时默认为:认为:ELSE c顺序语句;when 选择值=顺序语句;
16、when 选择值=顺序语句;end case;例:四选一选择器:例:四选一选择器:“=”相当于相当于THEN的作用;的作用;条件句的顺序是不重要的;条件句的顺序是不重要的;WHEN OTHERS列出其他可能列出其他可能取值取值;LOOP语句 常用的是常用的是FOR_LOOP语句,语法格式如下:语句,语法格式如下:临时变量,属临时变量,属LOOP语句的局部变量,不必事先定义。语句的局部变量,不必事先定义。起始值起始值 Downto 结束值结束值 起始值起始值 To 结束值结束值 例:奇偶校验电路例:奇偶校验电路 奇数个奇数个1标志位标志位偶数个偶数个1标志位标志位n 等待(WAIT)语句 语句格
17、式:语句格式:WAIT ON 敏感信号表敏感信号表 UNTIL 条件表达式条件表达式 FOR 时间表时间表达式达式;注:注:已列出敏感量的进程中不能使用任何形式的已列出敏感量的进程中不能使用任何形式的WAIT语句。语句。例:四选一例:四选一 选择器选择器n NULL语句并行语句并行语句 VHDL的几种主要并行语句:进程语句 PROCESS语句 块语句 BLOCK语句并行信号赋值语句元件例化语句生成语句 GENERATE语句 进程语句进程语句(PROCESS)进程语句是个复合语句,由一段程序构成。各个进程是并发执行的,但进程内部的所有语句却都是顺序执行的。一个构造体可以包括多个进程语句,多进程间
18、的通信依靠信号(SIGNAL)来传递。例例:计数器进程部分:计数器进程部分:-进程(敏感表)进程(敏感表)-顺序语句,异步清零顺序语句,异步清零 若改为同步清零,则进程如下:若改为同步清零,则进程如下:-同步清零同步清零 若没有敏感表,利用若没有敏感表,利用WAIT UNTIL语句语句,进程进程如下:如下:块语句(块语句(BLOCK)块语句是将结构体中的并行语句组合在一起,其主要目的是改善并行语句及其结构的可读性,一般用于较复杂的VHDL程序中。只是形式上的划分,而非功能上的改变。块语句的语法描述:-块名必须有。块名必须有。例:比较器例:比较器 并行信号赋值语句并行信号赋值语句 并行信号赋值语
19、句实际上是一个进程的缩写。如下面两个构造体是等效的:并行信号赋值语句有三种形式:并行信号赋值语句有三种形式:简单信号赋值语句简单信号赋值语句 条件信号赋值语句条件信号赋值语句 选择信号赋值语句选择信号赋值语句简单信号赋值语句简单信号赋值语句例:例:条件信号赋值语句条件信号赋值语句WHEN_ELSE语句描述的四选一选择器:语句描述的四选一选择器:选择信号赋值语句选择信号赋值语句WITH_SELECT语句描述的四选一选择器:语句描述的四选一选择器:元件例化语句元件例化语句 -注意注意:没有没有IS -同该元件定义时的同该元件定义时的PORT部分部分例化名:实体名(即元件名)例化名:实体名(即元件名
20、)PORT MAP(端口名连接关系);(端口名连接关系);例:一个模为例:一个模为10的计数器和一个七段译码器的连接。的计数器和一个七段译码器的连接。模模10计计数数器器的的VHDL描描述述 BCD码到七段的码到七段的VHDL描述描述利用元件例化构成本例(利用元件例化构成本例(cntvh10):):几点说明:几点说明:元件例化时的端口列表可采用位置关联方法,如u1;元件例化时的端口列表也可采用名称关联方法映射实参和形参,如u2;格式为(形参1=实参1,形参2=实参2,)元件声明时,一定要用原元件定义时的端口名,不能变动。若用到库中的元件,如OR2,在不知原端口名称的情况下,建议重编写OR2_N
21、EW。但必须另起文件名。VHDL基本描述方法基本描述方法 结构描述(Structural):也称为网表(Netlist)描述。它反映了一个设计中硬件方面特征,表达了内部元件间连接关系。使用元件例化来描述。数据流描述(Dataflow):也称为方程(Equation)描述。它反映了一个设计中输入到输出的流向。使用并发语句来描述。行为描述(Bhavior):它反映了一个设计中的功能算法。一般使用进程PROCESS,用顺序语句来描述。例:两位相等比较器。例:两位相等比较器。逻辑表达式:)11()00(babaequ构造体一:用元件例化来实现,即结构描述:构造体一:用元件例化来实现,即结构描述:)11
22、()00(babaequ构造体二:用布尔方程来实现,即数据流描构造体二:用布尔方程来实现,即数据流描述:述:构造体三:用行为描述来实现,采用并行语构造体三:用行为描述来实现,采用并行语句句:)11()00(babaequ构造体四:用行为描述来实现,采用顺序语构造体四:用行为描述来实现,采用顺序语句:句:4.4.常用电路描述常用电路描述 组合逻辑电路 时钟边沿描述 基本触发器电路 时序电路 1、加法器(、加法器(13位全加器、位全加器、BCD码加法器)码加法器)-13位全加器位全加器-BCD码加法器码加法器-保存两数二进制相加之和保存两数二进制相加之和-进行加进行加6校正校正 2、译码器、译码器
23、-BCD7段段-可表示为(可表示为(OTHERS=0)-38译码器译码器-4位二进制比较器位二进制比较器 3、比较器、比较器 -16路四选一路四选一 4、数据选择器、数据选择器(1)时钟上升沿描述)时钟上升沿描述clkEVENT and clk=1RISING_EDGE(clk)(2)时钟下降沿描述)时钟下降沿描述clkEVENT and clk=0FALLING_EDGE(clk)1、异步复位置位(低有效)、异步复位置位(低有效)D触发器触发器 2、同步复位置位(低有效)负跳变、同步复位置位(低有效)负跳变D触发器触发器3、异步复位同步置位(低有效)、异步复位同步置位(低有效)D触发器触发器
24、1、移位寄存器、移位寄存器-可左移、右移、同步置数、同步清零可左移、右移、同步置数、同步清零2、M=60计数器计数器 异步清零,同步置数,使能,异步清零,同步置数,使能,8421BCD码计数器,模为码计数器,模为60。5.5.有限状态机有限状态机状态机的概念状态机的概念 状态在有限的范围内转换状态在有限的范围内转换 1Moore状态机.Mealy型状态机n Moore型状态机型状态机n Mealy型状态机型状态机习 题一、单项选择题一、单项选择题1、Quartus是 A、高级语言 B、硬件描述语言 C、EDA工具软件 D、综合软件2、使用Quartus建立仿真文件,应采用 A、图形编辑 B、文
25、本编辑 C、符号编辑 D、波形编辑 3、执行Quartus的哪条命令,可以检查设计电路错误A、Create Default Symbol B、Simulator C、Compiler D、Timing Analyzer 4、Quartus的波形文件类型是 A、.vwf B、.bdf C、.vhd D、.qpf 5、在VHDL的端口声明语句中,用于声明双向端口的是 A、IN B、OUT C、INOUT D、BUFFER二、完成下列各基础实验题二、完成下列各基础实验题 将两片74160连接成模100计数器,画出CLK和ENT、ENP的连接方法。注:画出一种连接方法即可1、完成下列各题(1)以下是低
26、有效异步清零clr、低有效异步复位set、时钟clk下降沿触发的D触发器构造体描述,指出其中的错误并改正。三、三、VHDL语言设计题语言设计题(2)阅读下面的VHDL程序,分析设计电路功能,并画出仿真波形。2、请用VHDL设计BCD-7段译码器。实体如下:请补充结构体:3、请用VHDL设计一个键盘扫描电路。其功能为只要输入CLK,便会自动且依序产生1110-1101-1011-0111-1110(周而复始)四个扫描信号。四、数字系统设计题四、数字系统设计题 1、某数字系统的MDS图如右所示,R、A为输入信号,Ci(i=0.3)为输出信号,设计它的控制器电路。要求:用D触发器作为状态寄存器,以状态编码方式(如图)进行设计。请列出状态转换表;画出激励函数的卡诺图;写出激励函数及输出函数表达式;画出控制器电原理图。