Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Multiple i2c slave access

Status
Not open for further replies.

mush

Junior Member level 2
Joined
Mar 6, 2014
Messages
20
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
163
Hello all,

the I2C protocol can be implemented by any I/O in a FPGA right? My question is: if I have 3 different I2C slaves what is the beeter solution, to implement 3 different I2C or use an I2C switch to select the appropriate I2C slave each time? What is the difference? Use less logic and pins in the FPGA in the switch choice?

Regards,

Mush
 

Why don't you just connect all of them to the one I2C directly? That's why slave devices have addresses.

Regards
 

Why don't you just connect all of them to the one I2C directly? That's why slave devices have addresses.

Regards

Well, that is a good question!!You are right, I was carried away from the AC701 design of Xilinx. Why they did't use the same logic? page 6
 

Attachments

  • AC701_Rev1_0_SCHEMATIC_12-03-2012.pdf
    2.1 MB · Views: 172

I'd say they were just being overly conservative in the I2C design. Nothing wrong with that if you don't want to have to analyze the PCB layout to make sure the signal integrity is good.

Regards
 

Why they did't use the same logic? page 6

Hello.
I think they made so, because FPGA don't have enough current on IO pins, to pull down so much I2C devices at ones.
In your project, 3 i2c devices should be ok to connect straight to FPGA pins.
Join together all SDA, all SCL, put two hardware 2k pullup resistors, and connect this to FPGA.
Don't forget to set unique i2c address for each device.
Don't make huge i2c track loops and don't trace near pulsing coils.
 

I don't know why they chose it for this particular case, but in general another reason can be multi-speed. Suppose you don't want to have to deal with supporting all the different i2c speeds and switching between them, then you can use a relatively simple i2c core and simply instantiate it twice. One with parameters for the fast i2c device, and one for the slow i2c device. I've done exactly this in the past because lazy^H^H^H^Hpragmatic.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top