VHDL硬件描述语言与数字逻辑电路设计 第7章

上传人:n**** 文档编号:50868969 上传时间:2018-08-11 格式:PPT 页数:55 大小:457KB
返回 下载 相关 举报
VHDL硬件描述语言与数字逻辑电路设计 第7章_第1页
第1页 / 共55页
VHDL硬件描述语言与数字逻辑电路设计 第7章_第2页
第2页 / 共55页
VHDL硬件描述语言与数字逻辑电路设计 第7章_第3页
第3页 / 共55页
VHDL硬件描述语言与数字逻辑电路设计 第7章_第4页
第4页 / 共55页
VHDL硬件描述语言与数字逻辑电路设计 第7章_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《VHDL硬件描述语言与数字逻辑电路设计 第7章》由会员分享,可在线阅读,更多相关《VHDL硬件描述语言与数字逻辑电路设计 第7章(55页珍藏版)》请在金锄头文库上搜索。

1、1第7章 数值系统的状态模型 7.1 二态数值系统 7.2 三态数值系统 7.3 四态数值系统 7.4 九态数值系统 7.5 十二态数值系统 7.6 四十六态数值系统2在设计数值系统时,必须事先知道系统所规定的几种逻辑状态。在以往的数字电路的设计中,二态逻辑系统和三态逻辑系统已为一般的工程设计人员所熟知。但是,随着大规模集成电路技术的发展,在进行数值系统设计时往往需要用到混合技术,将ECL、TTL、CMOS、MOS等不同的器件连接起来。这些器件之间的逻辑电平是不一致的。为了描述这些器件的逻辑电平,前面已经提到的用二态和三态来描述数值系统的逻辑电平显然不够,这就需要增加某些状态。另外,建立双向开

2、关电平及处理未知状态等也需要引入其它状态。下面概略介绍随着硬件设计技术和仿真技术而发展起来的四十六态数值系统。3在对数字系统进行初级仿真时,一般采用二态数值系统, 逻辑“1”(或者“真”)和逻辑“0”(或者“假”)就是系统的两种状态。信号的状态只可能取二者之一。在VHDL语言中,通常用BIT数据类型来描述这两种状态。例如:TYPE BIT IS(0, 1);7.1 二态数值系统4图7-1 总线冲突电路实例5最简单的数值系统是一个信号源的系统,用二态数值系统就能很好地描述这样的系统。例如,由一个反相器构成的数值 系统,当输入为“0”时,其输出为“1”;当输入为“1”时,其输出为“0”。系统的输入

3、和输出在任何时候其值只能取这两种状态之一。在数字电路和计算机原理的有关书籍中经常可以看到这样 一个概念,即总线竞争(或者总线冲突)。在某一条总线上,如果有多个信号源以相同的强度值对它进行驱动,则会产生总线竞争,此时总线上的信号电平可能是一个不能具体确定的逻辑电平。对于这样的系统,如果要用二态数值系统来描述是不行 的,因为二态中的“0”和“1”都无法正确地描述其输出。6在图7-1中,如果某一条数据总线D0由一块反相器U1和一块与门U2所驱动,则U1的输出为“0”,而U2的输出为“1”。在一条总线上出现了两个不同的逻辑电平,这样D0数据线上到底是“1”还是“0”就很难确定了,也就是说出现了不确定的

4、值“X”。这种状态是一种错误的状态。因此仅仅利用二态数值系统不能表示信号的输出错误状态。7为了避免在二态数值系统中所发生的问题,人们认识到,在二态数值系统的基础上需要再加一个新的状态,即未知值状 态。这种状态在VHDL语言中通常用字符“X”来表示。未知状态可以取值为“1”,也可以取值为“0”,但是当前到底取值是“1”还是“0”是不确定的。对三态数值系统状态,可以用数据类型定义语句来描述:7.2 三态数值系统8TYPE threestate IS (X,0,1);未知状态值可以在不同情况下表示不同的行为。例如,用 未知状态值可以表示05 V之间的电压值;另一种情况下,也可以表示“1”和“0”。在

5、数值系统中,未知状态将表示“1”或者“0”,但是具体是何值却不能确定。9图7-2 三态驱动器10在系统设计的仿真中,引入“X”值有许多方便之处。首先,用“X”值可以表示信号的初始状态值,在系统启动时所有信号都被置为“X”值,此后这个值可以被电路元件的后继状态所改写。在系统开始仿真时,系统中的每一个信号均将赋以“X”值。在外部输入信号值加到电路的输入端以后,通过电路的信 号传递,就会改写初始启动值“X”。在仿真时产生“X”值的另一个原因是总线冲突(总线竞争),也就是前面所述的有多种输出信号线连接在一起,且它们的 逻辑值是相反的,如图7-1所示。此时,电路的输出值将为“X”。将两个输出信号连接在一

6、起,这可能是有意的,但也可能是无意的设计错误。不管哪一种情况,仿真器必须预测出正确的输出值。11在图7-1中,如果不给出两个信号的有关强度的信息,那么仿真器就不能确定输出值到底应该取值为“0”还是为“1”。此时,其输出值只能用“X”值来表示。有关输出信号值的强度问题,在后面将会作更详细的解释。这里,为便于读者理解“X”值的状态,先对信号值的强度作一概略介绍。在例5-3中介绍了一种判决函数表。在该表中定义了9种逻辑状态,其中:“0”强逻辑低电平;“1”强逻辑高电平;“L”弱逻辑低电平;“H”弱逻辑高电平。12当两个强度相同而逻辑不同的信号同时出现在一个输出端 时,其输出端的值是不确定的。例如,“

7、0”和“1”、“L”和“H”同时出现在信号的输出端时,输出端的取值应为“X”。当不同强度的信号出现在输出端时,输出端的最终取值应由强信号逻辑 状态确定。例如,当“1”和“L”出现在输出端时,输出端取值为“1”;当“0”和“H”出现在输出端时,输出端取值为“0”,其它情况依次类推。由此可见,在进行系统或电路仿真时,给出信号强度的信息是至关重要的。13在当前的计算机系统中常常要用到双向数据总线,数据总线驱动器的输出需要一个特殊的状态,即高阻状态。这是无法用二态数值系统和三态数值系统进行正确描述的。利用这个高阻状态可以使总线被多个设备所共享,并且可以方便地实现数据总线的双向操作。高阻状态通常用集电极

8、开路门来实现,为 表示这种状态,需要引入另一种状态,通常称为“Z”状态。这样就形成了四态数值系统,在VHDL语言中常用如下数据类型来描述这4种状态:7.3 四态数值系统14TYPE fourstate IS(X,0,1,Z);“Z”状态是三态驱动器的一种输出状态,与一般的门电路不同,它除了具有输入和输出端之外,还有一个允许端,如图 7-2所示的en端。当en端为“0”(低电平)时,无论输入端a的信号值是“0”还是“1”,其输出端b均呈现高阻状态;当en端为“1”(高电平)时,输出端b的信号值就随输入端a的信号值的变化而变化。当a=“1”时,b为“0”;当a=“0”时,b为“1”。高阻状态“Z”

9、的引入解决了多个信号源驱动一条信号线以及信号线的双向驱动等问题。图7-3是一个利用三态门实现总线双向操作的实例。15图7-3 利用三态门实现总线双向操作实例16现假设U1的输入bin=1,U4的输入ain=0。当en1=1时,U1的输出值“1”将加到总线上。如果此时en2=0,则U4的输出值“Z”也同时加到总线上,这样在总线上就存在两个逻辑值“1”和“Z”。由于“1”和“0”的强度都大于“Z”,因此总线上的最终状态值应为“1”。总线上数据的流向便为自左至右。如果现在en1=0,en2=1,那么U4就将输出“0”值加到总线上,而U1则将输出“Z”值加到总线上。这样总线上同样存在两个逻辑值“0”和

10、“Z”。与上述理由相同,此时总线上的最终状态值为“0”。总线上的数据流向便为自右至左。17如果某一时刻en1和en2同时为“1”,即U1输出的“1”值和U4输出的“0”值将同时加到总线上,则由于这两个值的强度相同,因此最终总线上的状态应为“X”。在一般情况下,这种状态是不希望出现的。在系统正常工作时,通常要求驱动总线的三态门在某一时刻只允许有一个被选通。表7-1给出了总线上施加两种不同的状态时其最终的取值结果。该表与例5-3中所述的判决函数是一致的。利用查表方法可以验证,上述所列举的3种情况其结果是完全一致的,即“1”和“Z”将取值“1”,“0”和“Z”将取值“0”,“1”和“0”将取值“X”

11、。18表7-1 总线状态值关系表19表7-1仅仅给出了两个三态驱动器驱动总线时总线的取值情况。当有多个三态驱动器驱动总线时,总线上的状态值又如何来确定呢?实际上也很简单,仍然使用该表,经查表得到两个驱动器驱动总线时的取值,然后由这个总线取值和下一个总线驱动器的输出值,经查表可得到下一个总线取值。如此循环查表,相当于一个迭代过程,最后即可得到由多个驱动器驱动时总线的最终取值。例如,有4个驱动器同时驱动一条总线,总线的初始状态为“Z”,4个驱动器的输出分别为“1”、“Z”、“1”、“0”,那么其总线的最终取值应为“X”,其具体的查表过程如图7- 4所示。从图7- 4中可以看出,在这种情况下总线上的

12、取值应为“X”。20图7-4 4个驱动器时总线取值的查表过程的示意图21四态数值系统能较精确地描述TTL器件的工作过程。但是,随着MOS技术的不断发展,四态数值系统已不能正确地反映系统的实际工作过程了。在MOS电路中,“1”和“0”具有不同的强度。在NMOS电路中,“0”值的强度比“1”值强;在PMOS电路中,“1”值的强度又比“0”值强。另外,在NMOS和PMOS电路中,当某一个节点处于三态时,电荷将被储存,节点将维 持原来的逻辑值(当然,这只是在某一工作周期中有效)。7.4 九态数值系统22为了表示数值系统的所有状态,人们开发了九态数值系统 。该数值系统由3种强度和3种逻辑值组成。3 种强

13、度分别为高阻“Z”、电阻“R”及强强度“F”。9个状态值的对应关系如表7-2所示。23表7-2 九态数值关系表24在VHDL语言中常用如下数据类型来描述九态数值系统:TYPE ninestate IS(Z0、Z1、ZX、R0、R1、RX、F0、F1、FX);上述定义的状态将表示如下的系统状态:Z0高阻强度的逻辑“0”;Z1高阻强度的逻辑“1”;ZX高阻强度的逻辑“X”;R0电阻强度的逻辑“0”;R1电阻强度的逻辑“1”;RX电阻强度的逻辑“X”;F0强强度的逻辑“0”;25F1强强度的逻辑“1”;FX强强度的逻辑“X”。这里,强强度的F0、F1、FX很像三态数值系统中所讨论的“0”、“1”、“

14、X”3种状态,所不同的仅仅是现在加了一个强度值。在四态数值系统中所讨论的状态值“Z”现在被扩展成3种状态,“Z”作为强度值来进行表示。这样,Z0、Z1、ZX分别表示电荷所存储的逻辑值。第三种电阻强度值用来处理NMOS的“1”值和PMOS的“0”值。26图7-5 F0和R0的关系27强强度在3种强度描述中表示最强的一个强度,它相当于供电电源提供的强度。例如,5 V电源的电平可以用F1来表示,电源地可以用F0来表示。电阻强度其强度值低于强强度的值,它可以由强强度逻辑电平经过一个电阻后得到。如图7-5所示,若电阻的左端加一个强强度逻辑电平,那么在电阻的另一 端即可得到电阻强度的逻辑电平。例如,5 V

15、电源是强强度逻辑电平F1,如果在电路中加一个上拉电阻,那么在上拉电阻的另一端即可得到电阻强度的逻辑电平R1。高阻强度是3种强度中最弱的一种强度。它所描述的是NMOS、PMOS、CMOS器件的门电路断开时在分布电容上所存储的电荷数量。例如,图 7-6就是一个电荷存储电路的实例。28图中en=0时,门被断开,信号b失去了驱动源,存储于电容上的电荷就加在U2的输入端。这个存储电荷的逻辑值将一直保持,直到下一个时间周期再对信号b进行驱动为止。此时信号b就处于高阻态,至于是Z0还是Z1,则取决于开关断开时的最后逻辑电平是“0”还是“1”。下面再来看一下用于构成NMOS和PMOS电路的电阻强度。图7-7所

16、示是一个NMOS的反相器电路。它由两个晶体管器件组成,分别为V1和V2。V2是一个标准的增强型NMOS开关器件。V1是一个耗尽型器件,它的作用像一个电阻,电压经过它将产生压降。29图7-6 高阻态的电荷存储电路实例图30图7-7 NMOS的反相电路31当输入in1加“1”电平时,V2将导通,信号out1将被拉至地电平(F0)。此时虽然V1也导通,但是呈现较高的阻抗。该反相器的输出将变成F0。当输入in1加“0”电平时,V2将不导通,并呈现很高的阻抗。此时,V1呈现中等大小的阻抗,因此输出out1由V1驱动,使其呈现“1”电平,它的输出强度不是强强度,而是R1强度。这里V1可以看成是一个带有中等大小阻抗值的电阻。这样,该反相器的真值表就如表7-3所示。32表7-3 反相器的真值表33在表7-3中,为什么在输入in1为“X”时,输出out1被置为“FX”值呢?这可以从两方面来考虑:如果输入“X”值是“0”,则输出值为R1;如

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号