《三态门(总线).doc》由会员分享,可在线阅读,更多相关《三态门(总线).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、三态门(总线)2。2 三态门1基本原理在数字系统中,常常需要把多个门电路的输出端连接在一起,比如接到数据总线上。但一般的门电路都只有两个输出状态:输出高电平状态与输出低电平状态。把这些门电路的输出端连接在一起,在某一个时刻,可能会出现一个以上的门电路的输出同时为高电平状态或者低电平状态,这样就会引起逻辑电平的不确定。使用三态门可以很好地解决这个问题。三态门电路有三个输出状态:输出高电平状态、输出低电平状态,以及输出高阻状态。当三态门电路输出为高阻状态时,三态门的输出端相当于开路,对总线上连接的其它器件没有影响.我们可以利用三态门的这个优点对需要通过总线的数据进行分时传送,这样数据的传送就不会出
2、现混乱了。简单的三态门电路如图2。2.1a所示,图2。2.1b是它的代表符号。其中EN为片选信号输入端,A为数据输入端,L为数据输出端。图2。2。1 三态门电路 (a) 电路图 (b) 代表符号当EN=0时,TP2和TN2同时导通,为正常的非门,输出L=;当EN=1时,TP2和TN2同时截止,输出为高阻状态。所以,这是一个低电平有效的三态门。三态门的真值表如表2。2。1所示。由真值表可以得出逻辑表达式:当EN=0时,L=;当EN=1时,L=Z。其中Z表示高阻状态.表2.2.1 三态门的真值表EN数据输入端输出端LAL010011x高阻2实现方案通过FPGA来实现三态门的功能有以下几种方式:(1
3、) 用case语句和if.else语句来实现。先判断EN是否等于1,如果EN等于1,则输出端L=Z;如果不等于1,再判断A是否等于0,如果等于0,则输出端L=1,如果不等于0,则输出端L=0.(2) 用if。else语句来实现。先判断EN是否等于1,如果EN等于1,则输出端L=Z;如果不等于1,则输出L=A.(3) 用“? :”语句来实现,输出端L=EN ? 1bZ : (A)。3FPGA的实现下面以第三种方案为例来进行FPGA的实现。(1) 创建工程并设计输入 在E:project目录下,新建名为notif的新工程器件族类型(Device Family)选择“Virtex2P”,器件型号(D
4、evice)选“XC2VP30 ff896 7,综合工具(Synthesis Tool)选“XST (VHDL/Verilog)”,仿真器(Simulator)选“ISE Simulator(VHDL/Verilog)”。 设计输入在源代码窗口中单击右键,在弹出的快捷菜单中选择“New Source”,在弹出的对话框中选择“Verilog Moudle,在右端的File name中输入源文件名“notif”,再依次点击“Next-Next-Finish”,然后在弹出的源代码编辑框内输入下面的源代码并保存即可。Verilog HDL 代码如下:module notif(A,EN,L);input
5、 A,EN;output L;wire L;assign L=EN?1bZ:(A);endmodule(2) 功能仿真 在sources窗口的“sources for”中选择“Behavioral Simulation。 由Test Bench WaveForm添加激励源,如图2。2.2所示。仿真结果如图2。2。3所示。图2。2.2 激励波形图2。2.3 仿真结果从仿真的结果中我们可以看到:当使能端EN为低电平时,输出端L=,当EN为高电平时,输出端呈现高阻状态,这就实现了三态门电路的功能。(3) 进行ChipScope在线调试 生成ICON核和VIO核并添加到工程.这里使用的是核生成法。因为
6、ICON核只需要控制VIO核,所以控制端口数为1,如图2。2。4所示.VIO核使用异步输入、输出端口,异步输入位宽为1,异步输出位宽为2,如图2.2。5所示。图2。2.4 操作示意图1图2。2.5 操作示意图2最后得到的代码如下:module notif(A,EN,L);wire A,EN;output L;wire L;wire 35 : 0 CONTROL0;wire 1 : 0 ASYNC_OUT;wire 0 : 0 ASYNC_IN;ICON I_ICON( .CONTROL0(CONTROL0);VIO I_VIO( 。CONTROL(CONTROL0), 。ASYNC_IN(AS
7、YNC_IN), .ASYNC_OUT(ASYNC_OUT));assign ASYNC_IN=L;assign A=ASYNC_OUT0;assign EN=ASYNC_OUT1;assign L=EN?1bZ:(A);endmodule 在ISE里进行综合和实现,然后生成bit文件。 在ChipScope里观测调试。在Processes窗口中选择双击“Analyze Design Using Chipscope进入ChipScope Pro Analyzer窗口,点击图标检查连接情况,然后下载bit文件进行在线观测。调试结果如图2.2.6和图2.2.7所示。图2。2.6 调试结果1图2.2.7 调试结果2从上面的调试结果可以看出三态门的设计是正确的.4总结上面采用的是数据流描述方式来实现三态门的功能,这种方式相对于其他两种方式来说,思路更简单、清晰,它只用了一个条件运算符“? :”就描述了三态门的功能.使用这种方式需要注意的是assign赋值语句中等号左边的变量是wire类型的。