根据英特尔 Agilex 7 FPGA® 通用 I/O 和 LVDS SERDES 用户指南 中的引脚放置要求,每个 x4 DQ 组共享相同的 OEM、重置和时钟启用信号,因此您无法在 x4 DQ 组中拆分 OEM、重置或时钟启用信号。考虑到限制,放置 I2C 引脚时有一些注意事项。
1. FPGA可用作 I2C 主模式,需要多主模式:
(i) I2C 的一个典型实施就是在 SCL 和 SDA 上使用 OEM,如下所示。因此,您不能将 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 英特尔 FPGA IP。您可以启用 SCL 和 SDA 的开放式消耗,将适用于 SCL 和 SDA 的 O O 端口连接到 1(高),并连接原始 OEM 控制信号的逆转信号。通过这种方式,您可以围绕限制进行工作。以下是一个示例:
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可用作 I2C 主单模式:
SCL 是一个不带 OOE 的输出引脚。SDA 是一个带有 OOE 的双向引脚。
3. FPGA用作 I2C 从:
SCL 是一个没有 OEM 的输入引脚。SDA 是一个带有 OOE 的双向引脚。
在 2 和 3 个以上中,因为 SCL 没有 OEM,
- SCL 和 SDA 可以在同一个 x4 DQ 组中分配
- 多个 SCL 和 SDA 可以在同一个 x4 DQ 组中分配
- 无法在同一个 x4 DQ 组中分配多个 SDA
- 当在同一个 x4 DQ 组中分配多个 SDA 时,使用上文提到的 GPIO 英特尔 FPGA IP 也是一个变通办法。