双向三态门
你的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;
