Intel® FPGA Programmable Acceleration Card N3000 Board Management Controller User Guide

ID 683709
Date 11/25/2019
Public

3. Board Monitoring through I2C SMBus

The standard I2C slave to Avalon-MM interface (read-only) shares the PCIe* SMBus between the host BMC and the Intel® MAX® 10 RoT. The Intel® FPGA PAC N3000 supports standard I2C slave interface and the slave address is 0xBC by default only for out-of-band access. Byte addressing mode is 2-byte offset address mode.

Here is the telemetry data register memory map that you can use to access information through the I2C commands. The description column describes how the returned register values may be further processed to get the actual values. The units can be Celsius (°C), mA, mV, mW depending on what sensor you read.

Table 2.  Telemetry Data Register Memory Map
Register Offset Width Access Field Default Value Description
Board Temperature 0x100 32 RO [31:0] 32'h00000000

TMP411(U65)

Register value is signed integer Temperature = register value * 0.5

Board Temperature High Warn 0x104 32 RW [31:0] 32'h00000000

TMP411(U65)

Register value is signed integer

High Limit = register value * 0.5

Board Temperature High Fatal 0x108 32 RW [31:0] 32'h00000000

TMP411(U65)

Register value is signed integer

High Critical = register value * 0.5

FPGA Core Temperature 0x110 32 RO [31:0] 32'h00000000

TMP411(U65)

Register value is signed integer

Temperature = register value * 0.5

FPGA Die Temperature High Warn 0x114 32 RW [31:0] 32'h00000000

TMP411(U65)

Register value is signed integer

High Limit = register value * 0.5

FPGA Die Temperature High Fatal 0x118 32 RW [31:0] 32'h00000000

TMP411(U65)

Register value is signed integer

High Critical = register value * 0.5

QSFP0 Temperature 0x11C 32 RO [31:0] 32'h00000000

QSFPA(J4)

Register value is signed integer

Temperature = register value * 0.5

QSFP0 Temperature High Fatal 0x120 32 RW [31:0] 32'h00000000

QSFPA(J4)

Register value is signed integer

High Alarm = register value * 0.5

QSFP0 Temperature High Warn 0x124 32 RW [31:0] 32'h00000000

QSFPA(J4)

Register value is signed integer

High Warning = register value * 0.5

QSFP0 Voltage 0x128 32 RO [31:0] 32'h00000000

QSFPA(J4)

Voltage(mv) = register value

QSFP1 Temperature 0x12C 32 RO [31:0] 32'h00000000

QSFPB(J5)

Register value is signed integer

Temperature = register value * 0.5

QSFP1 Temperature High Fatal 0x130 32 RW [31:0] 32'h00000000

QSFPB(J5)

Register value is signed integer

High Alarm = register value * 0.5

QSFP1 Temperature High Warn 0x134 32 RW [31:0] 32'h00000000

QSFPB(J5)

Register value is signed integer

High Warning = register value * 0.5

QSFP1 Voltage 0x138 32 RO [31:0] 32'h00000000

QSFPB(J5)

Voltage(mV) = register value

FPGA Core Voltage 0x13C 32 RO [31:0] 32'h00000000

LTC3884(U44)

Voltage(mV) = register value

FPGA Core Current 0x140 32 RO [31:0] 32'h00000000

LTC3884(U44)

Current(mA) = register value

12v Backplane Voltage 0x144 32 RO [31:0] 32'h00000000 Voltage(mV) = register value
12v Backplane Current 0x148 32 RO [31:0] 32'h00000000 Current(mA) = register value
1.2v Voltage 0x14C 32 RO [31:0] 32'h00000000 Voltage(mV) = register value
12v Aux Voltage 0x150 32 RO [31:0] 32'h00000000 Voltage(mV) = register value
12v Aux Current 0x154 32 RO [31:0] 32'h00000000 Current(mA) = register value
1.8v Voltage 0x158 32 RO [31:0] 32'h00000000 Voltage(mV) = register value
3.3v Voltage 0x15C 32 RO [31:0] 32'h00000000 Voltage(mV) = register value
Board Power 0x160 32 RO [31:0] 32'h00000000 Power(mW) = register value
PKVL A Core Temperature 0x168 32 RO [31:0] 32'h00000000

PKVL1(U18A)

Register value is signed integer

Temperature = register value * 0.5

PKVL A Serdes Temperature 0x16C 32 RO [31:0] 32'h00000000

PKVL1(U18A)

Register value is signed integer

Temperature = register value * 0.5

PKVL B Core Temperature 0x170 32 RO [31:0] 32'h00000000

PKVL2(U23A)

Register value is signed integer

Temperature = register value * 0.5

PKVL B Serdes Temperature 0x174 32 RO [31:0] 32'h00000000

PKVL2(U23A)

Register value is signed integer

Temperature = register value * 0.5

QSFP values are obtained by reading the QSFP module and reporting the read values in the appropriate register. If the QSFP module does not support Digital Diagnostics Monitoring or if the QSFP module is not installed, then ignore values read from QSFP registers.

Use the Intelligent Platform Management Interface (IPMI) tool to read the telemetry data through the I2C bus.

I2C command to read the board temperatures at address 0x100:

In the command below:
  • 0x20 is the I2C master bus address of your server that can access PCIe slots directly. This address varies with the server. Please refer to your server datasheet for the correct I2C address of your server.

  • 0xBC is the I2C slave address of the Intel® MAX® 10 BMC.
  • 4 is the number of read data bytes
  • 0x01 0x00 is the register address of the board temperature which is presented in the table.
Command:
ipmitool i2c bus=0x20 0xBC 4 0x01 0x00
Output:
01110010 00000000 00000000 00000000

The output value in hexidecimal is: 0x72000000

0x72 is 114 in decimal.

To calculate the temperature in Celsius multiply by 0.5: 114 x 0.5 = 57 °C

Note: Not all servers support I2C bus directly access to PCIe slots. Please check your server datasheet for support information and I2C bus address.