根據Intel Agilex® 7 FPGA一般用途 I/O 和 LVDS SERDES 使用者指南 中的針腳放置要求,每個 x4 DQ 群組共用相同的 OE、重設和頻率啟用訊號,因此您無法在 x4 DQ 群組中分割 OE、重設或頻率啟用訊號。有鑑於此限制,在放置 I2C 針腳時,以下是一些考慮因素。
1. FPGA用作 I2C 主機,需要多主機模式:
(i) I2C 的一般實作是在 SCL 和 SDA 上使用 OE,如下所示。因此,您無法將 SCL 和 SDA 放在相同的 x4 DQ 群組中。
指派i2c_serial_scl_in = arduino_adc_scl;
指派arduino_adc_scl = i2c_serial_scl_oe?1'b0:1'bz;
指派i2c_serial_sda_in = arduino_adc_sda;
指派arduino_adc_sda = i2c_serial_sda_oe?1'b0:1'bz;
(ii) 另一種方法是使用 GPIO Intel FPGA IP。您可以啟用 SCL 和 SDA 的開放式排空功能、將 SCL 和 SDA 的 OOE 埠連接到 1(高),並連接原始 OE 控制訊號的倒轉訊號。透過這種方式,您可以解決此限制問題。以下是一個範例:
gioip gpioip_scl (
.dout (i2c_serial_scl_in),
.din (~i2c_serial_scl_oe),
.oe (1'b1),
.pad_io(arduino_adc_scl)
);
gioip gpioip_sda (
.dout (i2c_serial_sda_in),
.din (~i2c_serial_sda_oe),
.oe (1'b1),
.pad_io(arduino_adc_sda)
);
2. FPGA用作 I2C 主機單一模式:
SCL 是一個沒有 OE 的輸出針腳。SDA 是具有 OOE 的雙向針腳。
3. FPGA用作 I2C 從機:
SCL 是一個沒有 OE 的輸入針腳。SDA 是具有 OOE 的雙向針腳。
在 2 和 3 以上,因為 SCL 沒有 OE,
- SCL 與 SDA 可在同一 x4 DQ 群組中分配
- 多個 SCL 與 SDA 可在同一 x4 DQ 群組中分配
- 無法在同一 x4 DQ 群組中指派多個 SDA
- 當在同一 x4 DQ 群組中指派多個 SDA 時,使用上述的 GPIO Intel FPGA IP也是一個解決方法。