asust2p4 发表于 2010-7-29 21:30:50

关于verilog双向三态门实现语句的疑问

【例 9.4】三态双向驱动器
module bidir(tri_inout,out,in,en,b);
inout tri_inout;
output out;
input in,en,b;
assign tri_inout = en ? in : 'bz;
assign out = tri_inout ^ b;
endmodule
以上程序摘自王金明:《Verilog HDL 程序设计教程》

我自己的理解:
http://cache.amobbs.com/bbs_upload782111/files_31/ourdev_571730.JPG
(原文件名:1.JPG)

en在这里应该仅仅是控制输入端是否为高阻的,当en==0时,输入呈z态。

令人费解的是输出端为什么仅仅是tri_inout和b作了个异或运算,当b为低电平时,out端输出tri_inout当前值,当b为高电平时out端等于对tri_inout取反,输出是无论如何不会进入高阻态的,那么又怎么实现三态中的高阻态呢?
页: [1]
查看完整版本: 关于verilog双向三态门实现语句的疑问