seawwh 发表于 2011-10-16 13:06:17

I2C 可以通过FPGA再连接到芯片上吗?

一个比较菜的问题,简化了的逻辑如下:

    MCU的I2C的两条线SDA,SCL 线通过一片FPGA 连接到一个芯片上。FPGA可以完成这个功能吗?
    SCL 比较好办它是单向的,关键其中的SDA是双向的。

   请求帮助



Thx

xtxdg 发表于 2011-10-16 17:57:48

FPGA IO 具有inout功能的 只要加上上拉电阻就可以了

seawwh 发表于 2011-10-16 18:49:13

回复【1楼】xtxdg
fpga io 具有inout功能的 只要加上上拉电阻就可以了
--------------------------------------------------------------------

请楼上给出verilog 的语句表述?先谢了

pmpo 发表于 2011-10-16 20:35:25

需要多一根控制线。
http://wenku.baidu.com/view/80a492d233d4b14e85246829.html

yutianyiren 发表于 2011-10-16 20:41:54

用双向口就行,自己建一个带使能的双向口module。
module iopad(pad,en,a,y);

input a,en;
inout pad;
output y;

bufif1(pad,a,en);
buf(y,pad);
endmodule

philoman 发表于 2011-10-16 21:54:22

I2C的协议不是双向传输这么简单吧,仔细看看芯片手册,又没有特殊要求;

overmountain 发表于 2011-10-16 22:40:10

需要控制传输方向的,sda输入时,sda引脚对应的输出buf要设为高阻

HighCaMilk 发表于 2011-10-16 22:58:23

呵呵,标准iic的scl可不是单向的,你要好好看iic的协议了,scl可以被从机忙时拉低以便通知主机,那怎么通知呢,主机不读能行么
,你不要把他想复杂了,输出的同时,也读一下电平就行了;标准协议里根据电平要处理的事情还很多呢,尤其是抢线仲裁机制。当然 如果你的mcu任何时候只是作为主机,那就相对简单一些。

seawwh 发表于 2011-10-17 15:40:14

感谢楼上各位的指导,但是感觉还是没能彻底的解决

1. I2C 通信的时候是不具备一条专门的方向控制线的,因此这条路不通。
2. 事实上就是需要在FPGA的两个引脚之间构造一个直通的导线,这个可以实现吗?
3, 或者说FPGA可以实现类似于模拟开关得功能吗?

   网上浏览了一下,还未发现I2C 通过FPGA的好办法。
   之前咨询过Altera的FAE , 据他说不可以实现。

philoman 发表于 2011-10-17 16:25:15

给楼主一个建议吧,在FPGA内做一个模块,让该模块监听SCL/SDA并解析I2C协议,在需要改变端口方向的时候改变方向,需要输出高阻的时候输出高阻;我做的一个多SPI设备的控制器就是这么做的。
还有一个问题,FPGA是无法检测高阻态的;

overmountain 发表于 2011-10-19 13:48:45

可以负责任的告诉你,是可以实现的,我们就有I2C总线切换器,用fpga实现的

zlhbenge 发表于 2011-10-21 23:52:36

完全可以。

qwic 发表于 2011-10-22 00:59:07

应该可以实现的,FPGA只要分别监测两端端口的电平变化,将电平变化反应到另一端口上去就可以了。你可以试试用两组tri门,in接低电平,en过一个not一端,out接另一端,scl和sda都这么处理,这样就可以分别监测两端电平变化。需要注意的是FPGA输出只能输出低电平和高阻,不能直接输出高电平。

qwic 发表于 2011-10-22 01:04:03

大概是这样:

scl_a    ----not ----tri_en
gnd      ------------tri_in
scl_b    ------------tri_out

scl_b    ----not ----tri_en
gnd      ------------tri_in
scl_a    ------------tri_out

sda_a    ----not ----tri_en
gnd      ------------tri_in
sda_b    ------------tri_out

sda_b    ----not ----tri_en
gnd      ------------tri_in
sda_a    ------------tri_out

我没有试过,你可以试一下看行不行:)

pontiff 发表于 2011-10-22 14:25:56

虽然没这样做过,不过肯定可以实现。
想问楼主这样做有什么意义吗?

john2liu 发表于 2011-10-23 07:05:18

是要分析iic,还是要做iic的一个设备,如果是做iic上的一个设备的话就好办了,如果是要分析iic,接上iic两根线上分析就好了,为什么要你这么做呢?
页: [1]
查看完整版本: I2C 可以通过FPGA再连接到芯片上吗?