Gemäß den Anforderungen an die Pin-Platzierung in Intel Agilex® 7 FPGA Allzweck-I/O- und LVDS-SERDES-Benutzerhandbuch teilt sich jede x4 DQ-Gruppe die gleichen OE-, Reset- und Takt-Aktivierungssignale, daher können Sie die OE-, Reset- oder Takt-Aktivierungssignale nicht innerhalb einer x4 DQ-Gruppe aufteilen. Angesichts der Einschränkung gibt es hier einige Überlegungen bei der Platzierung von I2C-Pins.
1. FPGA wird als I2C-Master verwendet und erfordert einen Multi-Master-Modus:
(i) Eine typische Implementierung von I2C verwendet OE sowohl auf SCL als auch auf SDA, wie unten gezeigt. So können Sie SCL und SDA nicht in der gleichen x4 DQ-Gruppe platzieren.
Zuweisen i2c_serial_scl_in = arduino_adc_scl;
Zuweisen arduino_adc_scl = i2c_serial_scl_oe? 1'b0: 1'bz;
zuweisen i2c_serial_sda_in = arduino_adc_sda;
zuweisen arduino_adc_sda = i2c_serial_sda_oe? 1'b0: 1'bz;
(ii) Eine andere Möglichkeit ist die Verwendung von GPIO-Intel FPGA IP. Sie können Open-Drain für SCL und SDA aktivieren, beide OE-Ports für SCL und SDA mit 1 (hoch) verbinden und die invertierten Signale der ursprünglichen OE-Steuerungssignale verbinden. Auf diese Weise können Sie die Einschränkung umgehen. Folgendes ist ein Beispiel:
gpioip gpioip_scl (
.dout (i2c_serial_scl_in),
.din (~i2c_serial_scl_oe),
.oe (1'b1),
.pad_io (arduino_adc_scl)
);
gpioip gpioip_sda (
.dout (i2c_serial_sda_in),
.din (~i2c_serial_sda_oe),
.oe (1'b1),
.pad_io (arduino_adc_sda)
);
2. FPGA wird als I2C Master-Einzelmodus verwendet:
SCL ist ein Ausgangsstift ohne OE. SDA ist ein bidirektionaler Pin mit OE.
3. FPGA wird als I2C-Slave verwendet:
SCL ist ein Eingabestift ohne OE. SDA ist ein bidirektionaler Pin mit OE.
In 2 und 3 oben, da SCL keine OE hat,
- Ein SCL und ein SDA können in der gleichen x4 DQ-Gruppe zugewiesen werden
- Mehrere SCL und ein SDA können in der gleichen x4 DQ-Gruppe zugewiesen werden
- Mehrere SDA können nicht in der gleichen x4 DQ-Gruppe zugewiesen werden
- Wenn mehrere SDA in der gleichen x4 DQ-Gruppe zugewiesen werden, ist die Verwendung von GPIO-Intel FPGA IP wie oben erwähnt auch eine Problemumgehung.