微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 双向三态门

双向三态门

时间:10-02 整理:3721RD 点击:
三态门的状态是不是这样的:输出受使能信号控制,当en=1时,输出内部寄存器的值,en=0时,输出高阻;而输入是不受控制的,当en=1时,输入就是输出的值,当en=0时,输入就是逻辑外部信号输入的值,也就是说输入不存在高阻,始终是有值的?现在仿真遇到一个问题:设计一个模块,两个inout双向端口a,b;a输入b输出,b输入a输出。仿真先把三态a=0输入,三态b输出0,因为三态b的输入始终是打开的,所以三态b输入0传到a端输出,整个环路都是0,当我把a拉高到1时,与从b端返回的0出现冲突,波形出现不定态,有没有解决办法?

你的a,b两个使能应该不对,这两个en应该是互斥的

这个设计是做PS2接口额,因为PS2是双向的,两边都可以传输数据,所以两边的接收使能都必须是打开的,也就是说这种方案是存在问题的。

如果双方不可避免地都可能出现同时输出的话,是禁止用lz这样的方案的。
应该用iic那样的open drain,或者用push pull输出。

顶贴只为俺下载,喔喔呵呵

我改天也试试PS2

到时候记得过来指导一下哦



   为什么会有“三态b输入0传到a端输出”的情况出现?不清楚什么结构。
如果需要同时输出,简单的做法是Open Drain。
或者将a或b的驱动能力定义为一个强,一个弱,如Supply,strong,pull,weak等
在实际电路中设计时,一个输出远大于另一个输出电流,如20mA,2mA,当驱动能力强的输出时,另一个输出不受影响;当驱动能力强的电路三态时,输出受驱动能力弱的电路决定。

FPGA可以实现真正的双向三态,不过要用四个引脚, 两个三态输出,和两个输入引脚,要搞清楚的是三态总线总是在FPGA外部

一条物理电气引脚,都是双向的,所谓双向控制,是指的FPGA内部逻辑,它分为两个部分,一个是输出,一个数输入。
输出的那块逻辑就是一个三态门,en有效就输出1或者0,en无效就不输出(保持高阻)。
输入逻辑,其实就是直接把引脚连到逻辑里去,从器件的角度上讲,会加一个buffer电路,给缓冲下,逻辑上就等于直连引脚。
这样,输入输出,不冲突,你用输出的时候不用管输入,你用输入的时候,把三态门给关闭,也就忽略了输出。
比如
inout data;
wire  data_i, data_o;
wire en;
assign data = en ? data_o : 1'bz;
data_i = data;

上一篇:itf 转 tlu
下一篇:关于xilinx ipcore DPDV4.0

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top