|
Monitor this item
You will be notified via email when status of this item is changed or if somebody adds a comment.
| |
Clock synchronization for multi-master system
| Type |
BUG |
| Status |
OPENED |
|
1. The open-core I2C documentation suggests that clock synchronization is performed as defined in the NXP I2C specifcation to accomodate a multi-master system. However, the open-core master does not start counting off its LOW period once a HIGH to LOW transition on the SCL line occurs (e.g. from another master) and does not hold the SCL line low for this duration. This means in a multi-master system the open-core I2C master will never extend the SCL LOW period on the bus to the programmed clock frequency. This may not be an issue in practise but it should be made clear in the documentation. 2. The "slave_wait" signal in "i2c_master_bit_ctrl.v" causes "cnt" to hold its value until "slave_wait" is no longer true. In a muti-master system, the present logic may result in a VERY SHORT HIGH period. For example: another master takes SCL low just prior to the open-core I2C master; this causes the open-core I2C master to enter its wait state with a low value of "cnt" (e.g. 1). When SCL is HIGH again, the open-core I2C master will resume counting from where it left off and subsequently take SCL low after 1 clock cycle resulting in a SCL HIGH period that clearly violates the I2C specification.
To circumvent this problem, a solution would be to set "cnt" to "clk_cnt" when "slave_wait" is true. This will cause the open-core I2C master to subsequntly generate a whole HIGH period when SCL is HIGH again.
|
|
| |
|
Stats
5 people are monitoring this item
|
|