请教xilinx V6如何I2C输出?
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用的是三态门
是不是这样例化一个三态输出
IOBUF IOBUF_INST(
.O(out),
.I(in),
.EN(enable)
);
PULLIP PULLUP_INST(
.O(out)
);
PULLUP PULLUP_INST(
.O(out)
);
打错了,文档上说是week pull-up,为什么是弱上拉?I2C的SDA和SCL用弱上拉可以吧?
IOBUF KIO_0 (.O(KIO_I[0]), .IO(KIO[0]), .I(KIO_O[0]), .T(!we));
PULLDOWN pdIO0(.O(KIO[0]));
哦,应该是加个IOBUF就可以了吧
scl是output
sda是inout,具体要靠程序来控制
SCL是普通输出信号
SDA是双向信号,要使用一个三态输出
按协议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 ;
当然也可以用其它描述方式,逻辑等效就可以了。
如果器件支持漏极开路输出就选择漏极开路输出,没有的话普通三态输出也可以,就是漏电流稍大。
上啦电阻是必须的,否则无法正常工作。
(一)方式一
是不是这样例化一个三态输出,作为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)
);
谢谢
请教,使用普通的三态门,上拉电阻阻值有要求么?
