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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: 刺猬精灵

[求助] I2C从机响应的问题

[复制链接]
发表于 2011-9-1 21:48:50 | 显示全部楼层
回复 9# 刺猬精灵


    这个是说存在inout端口的模块最好放在你建立的FPGA工程的顶层,当然主机和从机都是inout类型的端口,都要放在顶层了。而且I2C本来就是个对外的接口,放在顶层也不是很困难的事。
 楼主| 发表于 2011-9-1 22:04:38 | 显示全部楼层
回复 11# rujion


    嗯,谢谢,我看了好多inout端口的使用方法。
发表于 2011-9-1 22:47:02 | 显示全部楼层
回复 9# 刺猬精灵


    当然是master的顶层用一个inout, slave的顶层用一个inout
仿真的时候mater顶层的inout端口和slave相应的inout端口连接;而且要注意仿真时候双向口进行上拉......
 楼主| 发表于 2011-9-3 21:19:55 | 显示全部楼层
回复 13# puyuwei


    请问你说的“仿真时候双向口进行上拉”,是什么意思?既然直接是将顶层的master 和顶层的slave的双响口相连,还要作何处理?
    今天我在仿真时想起个问题,在master和slave顶层文件中有控制信号控制sda为输出时(即是sda=(sda_oen)?sda_o:1'bz),那个控制信号(sda_oen)是分别在master和slave中产生的吧?相互之间不受影响吧?只管在各自的模块中产生相应的值吗?
发表于 2011-9-4 14:27:56 | 显示全部楼层
回复 14# 刺猬精灵


    sda_oen 这个使能信号在master 和 slave中 各自都有。
因为sda是三态总线结构 ,没有被使能时是高阻的 ,而i2c无效状态sda为高电平,所以你需要在仿真的时候使用pullup(sda) 进行上拉...
发表于 2011-9-4 20:02:23 | 显示全部楼层
回复 6# 刺猬精灵


    我想应该可以的吧
 楼主| 发表于 2011-9-4 20:35:31 | 显示全部楼层
本帖最后由 刺猬精灵 于 2011-9-4 21:33 编辑

回复 15# puyuwei


    就直接在testbench里的任意位置写pullup(sda),不用在其它限定条件下?我的意思就是不用if(.....)pullup(sda),不用受主机和从机中的sda_oen的限制吗?
发表于 2011-9-4 22:09:10 | 显示全部楼层
回复 17# 刺猬精灵


      直接 pullup(sda) 就行了,这就相当于模拟实际电路板上需要接上拉电阻的情形。你可以看一看pullup的使用方法...
 楼主| 发表于 2011-9-4 22:10:51 | 显示全部楼层
回复 18# puyuwei


    好的,非常谢谢你的解答。。。。
发表于 2013-9-27 13:34:56 | 显示全部楼层
在主机和从机之间是用SDA、SCL总线连接的,而中间会有一个模拟电路,其为OC门或OD门结构,由于有VCC和上拉电阻,所以默认情况总线为高,而时钟一直是由主机发送,故当你传输1时不需要控制SDA,当你传输零时只需把SDA拉低就可以了(当你需要用占用SDA总线时你只需要拉低SDA_o即可)。因此,在第九个时钟时你只需要释放SDA总线即可(主机:把SDA_o拉高 释放总线,这时从机会把SDA总线拉低 占用总线,把低电平即应答传输过来)。总的来说:不论是主机或者是从机,sda_o拉低占用总线,拉高释放总线,想要对方占用总线,本方必须首先要释放总线。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-21 21:30 , Processed in 0.021313 second(s), 7 queries , Gzip On, MemCached On.

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