INOUT双向端口仿真 三态门构成 三态门原理 三态门仿真
(2010-04-10 00:17:54)
HDL语言的INOUT双向端口仿真暨三态门仿真
------VHDL和VerilogHDL
概述
三态门是FPGA编程开发中经常遇到的一个问题。一个典型的应用就是TI的DSP的EMIF总线。针对HDL语言的三态门应用示例和仿真示例在网上很多,但是往往只讲述一种语言的,没有给予两种语言下三态门的一个综合评述,如讲述二者使用、仿真时的区别等。特别是VerilogHDL语言下的三态门仿真,很多讲述都是语焉不详,包括使用Force语句等,这些使用人手工干预的仿真方法明显违背了EDA自动化的宗旨,是使用者对其仿真方法不明确的情况下的一种权益之计。
本文将使用一个DSP EMIF接口逻辑的例子,详细讲述:
(0)什么叫做Z态?三态的晶体管级实现是怎样的?
(1)VHDL语言下同步、异步三态门的实现和仿真;
(2)VerilogHDL语言下同步、异步三态门的实现和仿真;
(3)综述两种语言下仿真的要点。
一 双向管脚INOUT与三态门介绍
图1 一个典型的FPGA的管脚
由图1可以看出,一个FPGA的管脚由一个输入缓冲器和一个三态输出缓冲器构成。
三态输出缓冲器,即三态门,是指逻辑门的输出除有高、低电平两种状态外,还有第三种状态——高阻状态的门电路。高阻态相当于隔断状态(电阻很大,相当于开路)。三态门都有一个EN控制使能端,来控制门电路的通断。可以具备这三种状态的器件就叫做三态。
准确来讲,三态的高阻态(Z态)指的就是门的输出脚的两个驱动TTL或MOS管都处于截止状态时的输出状态。参考图2、图3和图4有更详细的理解。
图2 TTL逻辑三态门的构成图
当三态门构成 三态门原理 三态门仿真" type="#_x0000_t75" o:button="t">端接低电平时,反相器输出一个高电平给T1 ,使整个电路处于工作状态,这样,电路将按与非关系把A, B接受到的信号传送到输出端, 使Y或为高电平,或为低电平。当三态门构成 三态门原理 三态门仿真" type="#_x0000_t75" o:button="t">端接高电平时,反相器输出低电平给T1,使 T1、T5截止。另一方面,通过D把T4的基极电位钳在1v左右,使T4截止。由于T4、T5均截止,从输出端Y看进去,电路处于高阻状态。
图3 CMOS三态门实现A
对于CMOS的三态门,可以分析:当三态门构成 三态门原理 三态门仿真" type="#_x0000_t75" o:button="t">为0时,T1’和T2’都处于导通状态,因此T1和T2能够在A为1或0时分别导通,因此Y输出A的状态;反之,当三态门构成 三态门原理 三态门仿真" type="#_x0000_t75" o:button="t">为1时,T1’和T2’都处于截止状态,T1和T2自然也处于截止状态,因此Y就处于高阻状态。
图4 CMOS三态门实现B—利用传输门实现的三态门
图5 传输门的逻辑构成图
对于利用传输门实现的三态门,分析传输门的逻辑购成可知,当S即EN为0时,传输门导通,反之,传输门的两个MOS管截止,门输出高阻态。
通过上面几种情况的介绍,希望大家能够深刻理解下面这句话:
高阻态(Z态)指的就是门的输出脚的两个驱动TTL或MOS管都处于截止状态时的输出状态。
图6 文章中的所要仿真的三态总线
如图7所示,总线宽度设为4bit。WE和RE分别是读写使能信号,低有效。假设这是一个和DSP的EMIF接口的逻辑模块,