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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[讨论] 双向端口verilog 这样写 会游什么问题?

[复制链接]
发表于 2011-7-7 17:13:19 | 显示全部楼层 |阅读模式

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

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

x
module duo(a,b,en);
inout[3:0] a,b;
wire [3:0]a,b;
input en;
assign a=(en)?b:1'bz;
assign b=(en)?a:1'bz;
endmodule
发表于 2011-7-7 19:00:10 | 显示全部楼层
tri a, b;
发表于 2011-7-7 20:31:53 | 显示全部楼层
两个三态门用同一个使能,按你上面的赋值是有问题的,有效时,既做输入又做输出,冲突了。
发表于 2011-7-8 08:15:37 | 显示全部楼层
当en有效的时候
a = b
b = a
这样实在意图在哪里呢?组合环路?
发表于 2011-7-8 11:17:10 | 显示全部楼层
你的真实意图是不是想让2个端口在不使能的时候为高阻断开态呢,如果是的话,光靠上面的2句话是不行的。
inout [7:0]dinout;
input clk;
input rd;
input [7:0]dout;
output [7:0]din;

reg [7:0]din;
reg [7:0]dout_temp;

assign dinout = (!rd) ? dout_temp : 8'bzzzzzzzz;

always @(posedge clk)
begin
if (!rd)
        dout_temp <= dout;
else
        din <= dinout;
end

可以参考一下
 楼主| 发表于 2011-7-8 18:01:38 | 显示全部楼层
谢谢楼上的大家的回答。我其实是用不同的信号来区分的 ,只不过,这两个信号在某个时段会出现同值....
发表于 2011-7-9 11:19:42 | 显示全部楼层
a,b好像不能是wire型吧,得是tri型
发表于 2011-7-11 19:41:44 | 显示全部楼层
IO口物理上只能一个方向吧,
发表于 2011-7-11 22:38:05 | 显示全部楼层
论坛里边有一篇文章专门讲怎么仿真双向口的,可以看看。
发表于 2011-7-12 00:29:59 | 显示全部楼层
双向端口一般有专门的cell或buf处理,建议只是在最顶层改成双向口,内部都用单向口做。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-24 10:41 , Processed in 0.026641 second(s), 9 queries , Gzip On, Redis On.

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