11-28-2011 07:44 AM
Do I2C/ SMBUS clock signals have to be routed to a GCLK pin of a Spartan-6 device? I'm running into some layout issues and a suggestion was made to move these clock and data signals from their current bank to another bank, which doesn't have any global clock pins.
11-28-2011 12:37 PM
@polyee13 wrote:
So with that said, it really shouldn't matter if the I2C clock lines are allocated to a Global clock pin. It's not like the I2C clock is a clock that will be distributed through the FPGA for the logic other than the I2C core.
Correct.
To add to that, you should know that unless you have an FPGA or CPLD with hysteresis on the
inputs (Schmitt triggers) you should not even consider using the SCL line as a clock. Its rise
time is much too slow.
-- Gabor
11-28-2011 08:35 AM
11-28-2011 08:39 AM
Not sure if I understand your reply. Let's assume that it treats the clock lines as a clock.
11-28-2011 08:41 AM
@polyee13 wrote:
Not sure if I understand your reply. Let's assume that it treats the clock lines as a clock.
You missed his point. You should use your FPGA's high-speed global clock to oversample the I2C signals and look for levels. Remember that I2C isn't edge sensitive.
11-28-2011 08:48 AM - edited 11-28-2011 08:55 AM
"Not sure if I understand your reply. Let's assume that it treats the clock lines as a clock."
Don't assume. Find out.
If you looked at the HDL for the I2C block, would you understand it?
11-28-2011 10:29 AM
So with that said, it really shouldn't matter if the I2C clock lines are allocated to a Global clock pin. It's not like the I2C clock is a clock that will be distributed through the FPGA for the logic other than the I2C core.
11-28-2011 12:37 PM
@polyee13 wrote:
So with that said, it really shouldn't matter if the I2C clock lines are allocated to a Global clock pin. It's not like the I2C clock is a clock that will be distributed through the FPGA for the logic other than the I2C core.
Correct.
To add to that, you should know that unless you have an FPGA or CPLD with hysteresis on the
inputs (Schmitt triggers) you should not even consider using the SCL line as a clock. Its rise
time is much too slow.
-- Gabor
11-28-2011 02:59 PM
@polyee13 wrote:
So with that said, it really shouldn't matter if the I2C clock lines are allocated to a Global clock pin. It's not like the I2C clock is a clock that will be distributed through the FPGA for the logic other than the I2C core.
The I2C clock isn't used as a clock, full stop. It's a flag that, when high, indicates that the state of SDA is a valid logic level. When SCK is low, SDA can change, but SDA must be stable some setup time before the rise of SCK and cannot change until after SCK falls. So what is usually done is for the FPGA to oversample SCK, note when its rising edge occurs, and then wait a few (fast system) clock ticks before actually reading the value on SDA. You want to wait because, as noted, the rise time on SCK and SDA are not all that fast due to resistive pull-ups.