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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[原创] I2C的FPGA连接

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

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

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

x
(一)方式一
是不是这样例化一个三态输出,作为I2C的sda输出?

IOBUF IOBUF_inst (
      .O(1'b0),     // Buffer output
      .IO(sda),   // Buffer inout port (connect directly to top-level port)
      .I(sda_in),     // Buffer input
      .T(~en)      // 3-state enable input, high=input, low=output
   );


(二)方式二

assign sda = (~en) ? 1'b0 : 1'bz ;
assign sda_in = sda ;





请教两种实现有什么区别?而且是否需要用下面的原语,pullup。
PULLUP PULLUP_INST(
.O(sda)

);
 楼主| 发表于 2014-7-17 17:39:00 | 显示全部楼层
请教,用FPGA实现需要上拉么?上拉电阻一般选多少?
发表于 2014-7-17 21:02:25 | 显示全部楼层
作为三态门,方式二是对的,但还差输入信号呀
 楼主| 发表于 2014-7-18 09:19:15 | 显示全部楼层
回复 3# autim


   输入信号是en额
发表于 2014-7-18 09:33:15 | 显示全部楼层
(二)方式二

assign sda = (~en) ? 1'b0 : 1'bz ;
assign sda_in = sda ;

第一句话有问题,1'b0应该改为输出端口信号!
 楼主| 发表于 2014-7-18 09:49:18 | 显示全部楼层
回复 5# chinafpga


   我这是带上拉的I2C接口,非常确认逻辑上没有错误
发表于 2014-7-18 09:59:32 | 显示全部楼层
1,2都可以,i2c是 open drain。一般拉上啦都是在FPGA外加的,内部FPGA上啦没试过,你也可以试一下。
 楼主| 发表于 2014-7-18 11:29:19 | 显示全部楼层
回复 7# wgej1987


asic设计,我们可以在器件库里选择i2c是 open drain吧。在FPGA里如何指定为open drain呢,只能用普通的三态?
发表于 2014-7-18 12:20:41 | 显示全部楼层
回复 6# atlandis

SDA要输出1如何输出?因为看写法是只能输出0(当en=0),因为当为输出时en必须为0,en为1时表示SDA是输入,看你的这个写法。
发表于 2014-7-18 15:17:20 | 显示全部楼层
回复 8# atlandis
open drawn的意思是开漏输出,指的是ic只驱动low。你那两种写法都是驱动low的啊,你输出0的时候就oe为1,输出1就oe为0(其实不是输出1,是外部上啦1)。asic就选一般的pad,只是你把i端接0,oe或者是oen为你i2c的数据输出啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-23 06:05 , Processed in 0.027331 second(s), 9 queries , Gzip On, MemCached On.

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