您好,欢迎访问三七文档
第二章1.电子系统的基本组成及各部分之间的关系2.十字路口交通灯设计之受控器电路3.由MDS图设计控制器(状态编码方式)例2.2-5:某数字系统的MDS图如图所示,R、A为输入信号,Ci(i=0…3)为输出信号,设计它的控制器电路。五个状态,用三个D触发器,采用二进制编码方式状态转换表:画出激励函数的卡诺图:写出函数表达式:010001010122QQARSDQQRASDQQQAD33432221100SCSSSCSSCSC画出控制器电原理图:4.控制子系统的微程序设计概念:把控制子系统中每一个状态要输出的控制信号及该状态的转移去向按一定格式编写成条文,保存在ROM中。运行时,逐条取出这些微指令,实现控制过程。只把状态变量作为地址变量,而把决定状态转移的测试变量作为指令的内容写入ROM,称为测试变量段。后续地址段分为两部分,分别为测试变量为1和0时的转移去向。对于N个测试变量,由于只与其中的一个有关,可对测试变量进行编码,外部电路用N选一选择器,选择相应的测试变量;其次要决定现态转向后续地址的哪一个,再用多个(取决于后续地址位数)二选一数据选择器,根据测试变量X(i)是0还是1,选出两个后续地址中的一个。a.单测试双地址法例2.3-3:设计MDS图如图所示的微程序控制器。1、状态编码:用两个D触发器;2、确定ROM容量:4×9;3、填写ROM的内容;4、硬件电路。微指令表电路图现态的两个分支设置成:一个为现状态编码加1,另一个任意,在微指令的后续地址中,只要注明“任意的一个”即可,现态加1就不必标注。标志位:说明测试变量为1时还是为0时现状态加1。表2.3-5单测试单地址微指令格式输出变量测试变量标志位转移地址用计数器取代D触发器b.单测试单地址法例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。3、填写微指令:在填写单测试单地址的微指令时最需要注意的是标志位填写,而标志位填写与硬件电路有关。如果用标志位YNBIT=1,表示测试变量X(i)为1时计数器计数,测试变量X(i)为0时计数器置数;而用标志位YNBIT=0,表示测试变量X(i)为0时计数器计数,测试变量X(i)为1时计数器置数,同时根据一般计数器的置数信号均是低电平有效,则有YNBITiXYNBITiXLOAD)()(微指令表ROM内容:硬件电路:还可用另一种方法来实现单测试单地址法。由于每个状态只与一个测试变量有关,则可以采用一个数据选择器,用现态作为其控制信号,选出决定转移的那个测试变量,然后由现态和测试变量共同作为ROM的地址变量,这样对于一个状态只需要两个字就可以实现它的两个转移,也可以大大缩减ROM的容量例2.3-5:用单测试单地址法实现如图所示的MDS图的微程序控制器。微指令表硬件电路:第三章1、FPGA结构2、CPLD结构第四章1.VHDL语言程序的基本结构库和程序包格式如下:端口定义:PORT(端口名1:端口模式数据类型;……端口名n-1,端口名N:端口模式数据类型);实体端口信号名端口模式端口类型如:——端口模式(MODE):端口模式有以下几种类型:■IN:信号进入实体但并不输出;■OUT:信号离开实体但并不输入,并且不会在内部反馈使用;■INOUT:信号是双向的(既可以进入实体,也可以离开实体)■BUFFER:信号输出到实体外部,但同时也在实体内部反馈。BUFFER(缓冲)是INOUT(双向)的子集,但不是由外部驱动一般格式:构造体——说明语句(可选):声明构造体所用的内部信号、数据类型、常数、函数等;——构造体中,处于BEGIN和END之间是并行处理语句,描述了构造体的行为及连接关系,包括:并行语句、进程、子程序和元件例化等。2.VHDL语言要素VHDL语言操作符a.逻辑运算符NOT:取反;AND:与;OR:或;NAND:与非;NOR:或非;XOR:异或;XNOR:同或可以对STD_LOGIC和BIT等逻辑型数据、STD_LOGIC_VECTOR等逻辑型数组及布尔数据操作。左右无优先级之分。全为“AND”“OR”“XOR”时可以不要括号。例:A=BANDCANDD;A=((BNANDC)NANDD)NANDE;b.关系运算符=(等于);/=(不等于);适用于所有类型的数据;(小于);=(小于等于);(大于);=(大于等于);可用于整数、实数、位和位矢量等类型。注意!!进行关系运算时,左右两边的数据类型必须相同,但位长度不一定相等c.连接运算符”&”:用于位的连接。d.算术运算符慎重,会大大增加逻辑门数注意:Std_logic类型数据不能进行算术运算Std_logic_vector可以数据对象在逻辑综合中,VHDL语言常用的数据对象为:——信号——变量——常量a.常量(CONSTANT)——常量是全局量。——常量的定义和设置是为了设计更容易阅读和修改。如利用它可设计不同模值的计数器,模值存于一常量中,对不同的设计,改变模值仅需改变此常量值即可。CONSTANTZero_4:STD_LOGIC_VECTOR(3DOWNTO0):=“0000”;b.变量(VARIABLE)——变量是局部量,只能在进程和子程序中定义和使用;——变量的赋值符号为“:=”;变量定义格式:c.信号(SIGNAL)信号定义格式:——信号是全局量。用于进程间通信,或用于并行模块间的信息交流。——信号用于声明内部信号,而非外部信号(外部信号对应为IN,OUT,INOUT,BUFFER),其在元件之间起互联作用(类似于连线);可以赋值给外部信号。——信号的赋值符号为“=”;——信号使用和定义的范围只能是实体、结构体和程序包,在进程和子程序中不允许定义信号,但可以使用信号。——同一个信号只能在一个进程中被赋值,不能在多个进程被赋值,但同一个信号可以在多个进程中使用。d.信号与变量的比较——信号可以促发进程,同一个信号可以在多个进程中使用;——信号与变量声明的形式与位置不同:信号声明为SIGNAL…,变量声明为VARIABLE…信号声明在子程序、进程等外部,而变量声明在子程序、进程等内部。——信号与变量的赋值不同:在进程中,信号赋值在进程结束时起作用,而变量赋值立即起作用。——如果在一个进程中多次为一个信号赋值时,只有最后一个值会起作用;——为变量赋值时,变量值的改变立即发生。数据类型最常见的标准定义数据类型:——INTEGER:可用作循环的指针或常数,通常不用于I/O信号;Signaltypei:INTEGERrange0to15;——BIT:可取值‘0’或‘1’;——BIT_VECTOR:用双引号括起来的一组位数据,如“010101”;——STD_LOGIC:工业标准的逻辑类型,可取值'0','1','Z'等;——STD_LOGIC_VECTOR:std_logic的组合,工业标准的逻辑类型。定义枚举类型语法:Type类型名称Is(元素1,元素2,……);例:typestateis(s0,s1,s2,s3);signals:state;VHDL属性(Attribute)函数类属性’event,值为布尔型,如果该属性所附着的信号有变化,则其取值为True,否则为False。3.VHDL语句及基本描述方法顺序语句并行语句VHDL基本描述方法◆赋值语句◆流程控制语句◆等待语句◆空操作语句顺序语句——赋值语句包括信号赋值语句和变量赋值语句;——赋值源和目标数据类型必须相同;——在进程中,信号赋值在进程结束时起作用,变量赋值立即起作用;——信号具有全局特征,变量具有局部特征;——信号赋值语句可以以顺序语句形式出现,此时在进程内使用;信号赋值语句也可以以并行语句形式出现,此时在进程外使用。变量赋值目标:=赋值源;信匀赋值目标=赋值源;赋值语句IF_THEN_ELSE语句流程控制语句--注意,此处是ELSIF,而--不是ELSEIF!!IF语句只能在进程中使用例:设计一个二输入与门无ELSE语句,因此综合器综合时默认为:ELSEc=c;CASE_WHEN语句case表达式iswhen选择值=顺序语句;when选择值=顺序语句;when选择值=顺序语句;┅endcase;例:四选一选择器:“=”相当于THEN的作用;条件句的顺序是不重要的;WHENOTHERS列出其他可能取值;LOOP语句常用的是FOR_LOOP语句,语法格式如下:临时变量,属LOOP语句的局部变量,不必事先定义。起始值Downto结束值起始值To结束值例:奇偶校验电路奇数个1标志位偶数个1标志位等待(WAIT)语句语句格式:WAIT[ON敏感信号表][UNTIL条件表达式][FOR时间表达式];注:已列出敏感量的进程中不能使用任何形式的WAIT语句。例:四选一选择器NULL语句并行语句VHDL的几种主要并行语句:◆进程语句PROCESS语句◆块语句BLOCK语句◆并行信号赋值语句◆元件例化语句◆生成语句GENERATE语句进程语句(PROCESS)——进程语句是个复合语句,由一段程序构成。——各个进程是并发执行的,但进程内部的所有语句却都是顺序执行的。——一个构造体可以包括多个进程语句,多进程间的通信依靠信号(SIGNAL)来传递。例:计数器进程部分:--进程(敏感表)--顺序语句,异步清零若改为同步清零,则进程如下:--同步清零若没有敏感表,利用WAITUNTIL语句,进程如下:块语句(BLOCK)——块语句是将结构体中的并行语句组合在一起,其主要目的是改善并行语句及其结构的可读性,一般用于较复杂的VHDL程序中。——只是形式上的划分,而非功能上的改变。块语句的语法描述:--块名必须有。例:比较器并行信号赋值语句并行信号赋值语句实际上是一个进程的缩写。如下面两个构造体是等效的:并行信号赋值语句有三种形式:◆简单信号赋值语句◆条件信号赋值语句◆选择信号赋值语句简单信号赋值语句例:条件信号赋值语句WHEN_ELSE语句描述的四选一选择器:选择信号赋值语句WITH_SELECT语句描述的四选一选择器:元件例化语句--注意:没有IS--同该元件定义时的PORT部分例化名:实体名(即元件名)PORTMAP(端口名连接关系);例:一个模为10的计数器和一个七段译码器的连接。模10计数器的VHDL描述BCD码到七段的VHDL描述利用元件例化构成本例(cntvh10):几点说明:——元件例化时的端口列表可采用位置关联方法,如u1;——元件例化时的端口列表也可采用名称关联方法映射实参和形参,如u2;格式为(形参1=实参1,形参2=实参2,…)——元件声明时,一定要用原元件定义时的端口名,不能变动。若用到库中的元件,如OR2,在不知原端口名称的情况下,建议重编写OR2_NEW。但必须另起文件名。VHDL基本描述方法结构描述(Structural):也称为网表(Netlist)描述。它反映了一个设计中硬件方面特征,表达了内部元件间连接关系。使用元件例化来描述。数据流描述(Dataflow):也称为方程(Equation)描述。它反映了一个设计中输入到输出的流向。使用并发语句来描述。行为描述(Bhavior):它反映了一个设计中的功能算法。一般使用进程PROCESS,用顺序语句来描述。例:两位相等比较器。逻辑表达式:)11()00(babaequ构造体一:用元件例化来实现,即结构描述:)11()00(babaequ构造体二:用布尔方程来实现,即数据流描述:构造体三:用行为描述来实现,采用并行语句:)11(
本文标题:现代电子系统设计
链接地址:https://www.777doc.com/doc-3393858 .html