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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[原创] 请教xilinx V6如何I2C输出?

[复制链接]
发表于 2013-5-23 21:41:07 | 显示全部楼层 |阅读模式

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

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

x
请教大家,xilinx V6如何I2C输出?写一个I2C模块烧到FPGA里,然后输出的两条线SCL SDA怎么定义到Pin上,SCL和SDA是三态门吧?
 楼主| 发表于 2013-5-24 14:39:43 | 显示全部楼层
IIC Bus
The ML605 implements four IIC bus interfaces at the FPGA.
The "MAIN" IIC bus hosts four items:
• FPGA U1 Bank 34 "MAIN" IIC interface
• 8Kb NV Memory U6
• FMC HPC connector J64
• DDR3 SODIMM Socket J1
The "DVI" IIC bus hosts two items:
• FPGA U1 Bank 34 "DVI" IIC interface
• DVI codec U38 and DVI connector J63
The "LPC" IIC bus hosts two items:
• FPGA U1 Bank 33 "LPC" IIC interface
• FMC LPC connector J63
The "SFP" IIC bus hosts two items:
• FPGA U1 Bank 13 "SFP" IIC interface
• SFP module connector P4

其中FMC的IIC是提供给我们的端口么?怎么指定过去呢?SDA和SCL用的是三态门
 楼主| 发表于 2013-5-24 15:24:59 | 显示全部楼层
是不是这样例化一个三态输出
IOBUF IOBUF_INST(
.O(out),
.I(in),
.EN(enable)
);

PULLIP PULLUP_INST(
.O(out)
);
 楼主| 发表于 2013-5-24 15:29:10 | 显示全部楼层
PULLUP PULLUP_INST(
.O(out)
);
打错了,文档上说是week pull-up,为什么是弱上拉?I2C的SDA和SCL用弱上拉可以吧?
 楼主| 发表于 2013-5-27 11:02:43 | 显示全部楼层
IOBUF KIO_0 (.O(KIO_I[0]), .IO(KIO[0]), .I(KIO_O[0]), .T(!we));
PULLDOWN pdIO0(.O(KIO[0]));

哦,应该是加个IOBUF就可以了吧
发表于 2013-5-27 11:05:41 | 显示全部楼层
scl是output

sda是inout,具体要靠程序来控制
发表于 2013-5-28 09:35:32 | 显示全部楼层
SCL是普通输出信号
SDA是双向信号,要使用一个三态输出
发表于 2013-6-4 23:30:16 | 显示全部楼层
按协议SDA/SCL都是双向信号,有些芯片的I2C是标准协议的简化版,SCL可能是单向的。
assign sda = ~sda_out ? 1'b0 : 1'bz ;
assign scl = ~scl_out ? 1'b0 : 1'bz ;
assign sda_in = sda ;
assign scl_in = scl ;
当然也可以用其它描述方式,逻辑等效就可以了。
如果器件支持漏极开路输出就选择漏极开路输出,没有的话普通三态输出也可以,就是漏电流稍大。
上啦电阻是必须的,否则无法正常工作。
 楼主| 发表于 2014-7-17 17:23:46 | 显示全部楼层
回复 8# 2ki


   (一)方式一
是不是这样例化一个三态输出,作为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:40:12 | 显示全部楼层
回复 8# 2ki


   请教,使用普通的三态门,上拉电阻阻值有要求么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-18 13:12 , Processed in 0.042957 second(s), 9 queries , Gzip On, Redis On.

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