在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4560|回复: 9

[求助] 双向三态门

[复制链接]
发表于 2014-8-16 10:28:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
三态门的状态是不是这样的:输出受使能信号控制,当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出现冲突,波形出现不定态,有没有解决办法?
发表于 2014-8-19 17:18:41 | 显示全部楼层
你的a,b两个使能应该不对,这两个en应该是互斥的
 楼主| 发表于 2014-8-21 13:15:02 | 显示全部楼层
这个设计是做PS2接口额,因为PS2是双向的,两边都可以传输数据,所以两边的接收使能都必须是打开的,也就是说这种方案是存在问题的。
发表于 2014-8-21 20:36:37 | 显示全部楼层
如果双方不可避免地都可能出现同时输出的话,是禁止用lz这样的方案的。
应该用iic那样的open drain,或者用push pull输出。
发表于 2014-8-22 15:08:35 | 显示全部楼层
顶贴只为俺下载,喔喔呵呵
发表于 2014-8-22 20:57:49 | 显示全部楼层
我改天也试试PS2
发表于 2014-8-22 21:05:36 | 显示全部楼层
到时候记得过来指导一下哦
发表于 2014-8-29 16:51:58 | 显示全部楼层
回复 1# fgm1982


   为什么会有“三态b输入0传到a端输出”的情况出现?不清楚什么结构。
如果需要同时输出,简单的做法是Open Drain。
或者将a或b的驱动能力定义为一个强,一个弱,如Supply,strong,pull,weak等

在实际电路中设计时,一个输出远大于另一个输出电流,如20mA,2mA,当驱动能力强的输出时,另一个输出不受影响;当驱动能力强的电路三态时,输出受驱动能力弱的电路决定。
发表于 2014-8-29 23:01:29 | 显示全部楼层
FPGA可以实现真正的双向三态,不过要用四个引脚, 两个三态输出,和两个输入引脚,要搞清楚的是三态总线总是在FPGA外部
发表于 2014-9-1 00:30:56 | 显示全部楼层
一条物理电气引脚,都是双向的,所谓双向控制,是指的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;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-23 07:46 , Processed in 0.027423 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表