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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5210|回复: 11

[求助] Verilog中inout端口的使用方法和仿真方法

[复制链接]
发表于 2017-7-12 17:07:05 | 显示全部楼层 |阅读模式

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

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

x
小弟在最近设计中用到inout端口,查看网上的资料都说需要加三态门控制。因此在设计IIC时,在底层module里面讲数据线SDA分为了sda_in和sda_out,并加了一个控制信号sda_en,
利用assign语句赋值,sda=(sda_en)?sda_out:1'bz
此处的疑问是 sda_in如何处理?

仿真时,将inout端口定义为wire型,其他输入定义为reg型,也加入三态门控制,定义data_out和link信号。
在initial块中对data_out赋值,并打开link端口
最后使用assign语句,sda=(link)?data_out:1'bz,这样测试模块的SDA就是输出端口,将激励输出到IIC模块的SDA端口。
有一个疑问是,当测试模块的SDA作为输入端口,接收来自IIC模块的数据时,应该如何操作?
 楼主| 发表于 2017-7-12 17:07:44 | 显示全部楼层
回复 1# mysoul
自己顶一个
发表于 2017-7-13 09:41:10 | 显示全部楼层
assign sda_in = sda;
 楼主| 发表于 2017-7-13 10:01:53 | 显示全部楼层
回复 3# haimo


  您好,为什么不是这样呢?sda_in = (!link)?sda : 1'bz,直接把sda给sda_in,会不会存在同时输入输出的问题?
发表于 2017-7-13 10:21:07 | 显示全部楼层
不会同时输入输出,sda_en会控制的
 楼主| 发表于 2017-7-13 16:06:35 | 显示全部楼层
回复 5# haimo
那我把源代码中的sda_in这样处理,你看对不对?sda_in = (sda_en)? sda :'bz;
发表于 2017-7-13 16:44:00 | 显示全部楼层
不用的,你搜一下designware的iic手册,查一下接口电路就明白了。
 楼主| 发表于 2017-7-13 20:54:03 | 显示全部楼层
本帖最后由 mysoul 于 2017-7-13 21:07 编辑

回复 7# haimo


  我看到综合之后的inout端口的电路,sda_in与sda是直接连接起来的应该是高阻态就表示此时正在当做输入端口用,控制信号无效,
控制信号有效的时候当做输出用,对吧?
发表于 2017-7-14 09:31:54 | 显示全部楼层
inout端口输出的时候不能给输入,应该是sda_in = (!sda_en)? sda :1'b0;
发表于 2017-7-14 09:43:35 | 显示全部楼层
可以直接做为输入信号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-7-7 02:50 , Processed in 0.022568 second(s), 7 queries , Gzip On, MemCached On.

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