微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教各位有关双向端口的使用问题

请教各位有关双向端口的使用问题

时间:10-02 整理:3721RD 点击:
今天突然看到一种双向端口的使用方法,跟我所知的   assign  sda = link?sda_buf:1'bz;不同,是这样的
inout sda;
reg sda_buf;
always ......
begin

      sda_buf = 1'bz;//输出为1并释放总线
.....
end
sda = sda_buf;
请问为什么上面这种用法也行?always块中的那句赋值为什么有那个功能(如注释)
谢谢各位了

双端口的操作和三态门是相似的。三态门选通信号z:input z;
    当z=1 时,把三态门置为高阻态,这时 dinout 作为输入口用;当z=0 时,开通三态门,这时 dinout 作为输出口用。  三态门控制语句为: asign dinout=(!z)?din_reg:8'bz;
小编描述的两种操作时等价的,只不过是一个是直接assign赋值了用的是三目运算符,另外一个分别在程序不同位置执行的。最后结果都是一样的。

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

网站地图

Top