Introduction #
Power Management Bus (PMBus) is a serial communications protocol aimed at the configuration, control, and monitoring power supply devices. This includes AC-DC and DC-DC power supplies, Point-of-Load (PoL) converters, and microprocessor power supplies.
Wiring #
PMBus operates a multi-drop bus consisting of a minimum of two single-ended, open-drain signal wires;
- SDA – Serial Data
- SCL – Serial Clock
Signal voltages are specified as per the High Power SMBus DC specification, where a logic zero (low) is <0.8V and a logic one (high) is >1.35V.
Pull-up resistors keep both signals at the bus voltage logic high level when the bus is idle. The bus voltage is specified in the range of 1.8-5.0V. Common values for this may be +1.8V, +2.5V, +3.3V and +5.0V.
Further signal wires may optionally be included;
- SMBALERT# – Interrupt signal (usually for fault or warnings)
- CONTROL – Typically used to turn on/ off the power supply output
- WRITE PROTECT – Used to select the protection status of configuration data stored in non-volatile memory
Signaling #
PMBus operates typically at bus speeds of 100 kbit/s but allows operation at up to 400 kbit/s.
Each device on the bus is recognized by a unique 7-bit address. Some addresses are reserved for specific SMBus or PMBus functions such as zone operations, which allow communication with multiple devices simultaneously.
Data is transferred in ‘packets’, whose structure follows the bus protocols outlined in the SMBus specification. The bus protocol in use will depend on the requirements of the command being read or written.
Typically, a packet will begin with the host controller asserting a START condition on the bus and addressing the target device in ‘write’ mode, that is sending the device’s unique 7-bit address followed by the R/W bit set to ‘0’; if the target device is present and ready it will respond by driving the ACK bit low. The host controller will then transmit the command code to be serviced.
If the host intends to write data to the command, it will continue to transmit the data payload to the target device until all data bytes have been sent. The packet is then terminated with a STOP condition.
An example timing diagram is shown below, with the host controller issuing a command followed by two data bytes to a target device. This follows the SMBus WriteWord protocol.
If the host intends to receive data in response to the command, it will issue a RESTART condition on the bus, and address the same target device in ‘read’ mode that is sending the device’s unique 7-bit address followed by the R/W bit set to ‘1’, if the target device is present and ready it will respond by driving the ACK bit low. The host controller will then receive the data payload from the target device. When all bytes have been received, the packet will be terminated with a STOP condition.
An example timing diagram is shown below, with the host controller issuing a command and then receiving two data bytes from the target device. This follows the SMBus ReadWord protocol.
Capturing and Analyzing #
PMBus decoding is included in PicoScope as standard. To decode PMBus waveforms using PicoScope 7, select Serial Decoding from the More Tools menu to launch the serial decoding dialog.
Select PMBus from the list of available protocols and click ‘Next’ to proceed
Select the corresponding PicoScope input channels for Data and Clock signals within the configuration tab
Once the Data and Clock channels have been chosen and set up, configure the following options as per PMBus under test
Numeric Format #
Sets the data format for numeric parameter transfers, e.g. voltage, current, power. This selection has two options
- IEEE-754 Half Precision Floating Point
Numeric parameters are transferred in a two-byte floating-point format. The decoder will display the ‘real-world’ values for these parameters, e.g. voltage parameters will be displayed in Volts.
- Other
Numeric parameters are transferred in an alternative format. This may be ULINEAR16/SLINEAR16, VID, or DIRECT. As these numeric formats require supplementary information such as coefficients in order to find the ‘real-world’ value, the decoder will display the raw transfer data value in hexadecimal and decimal formats.
Bus Speed #
Sets the data transfer rate for the bus. This selection has three options
- Standard-mode (100 kbit/s)
- Fast-mode (400 kbit/s)
- Fast-mode Plus (1 Mbit/s)
PEC Byte #
This sets whether the packets in the bus are appended Packet Error Checking (PEC) byte. This selection has three options;
- Enabled
All bus transfers include a PEC byte. The decoder will carry out PEC byte validation on all packets.
- Disabled
No bus transfers include a PEC byte.
- Auto-Detect
The decoder will attempt to detect whether a PEC byte is present and compute PEC validation if found. This mode is useful when testing a multi-drop PMBus where some target devices are configured to use PEC, while others are not.
When all options are configured, click ‘Next’ to proceed to the Display tab.
In the Display tab, configure the following fields as required and click ‘Finish’ when done
- Name
Sets the decoder instance name. PicoScope automatically populates this with a default name, but this can be updated as preferred.
- Graph Display Format
Selects the format to be used for raw packet data displayed on the waveform graph.
- Table Display Format
Selects the format to be used for raw data fields in the decoder output table.
- Table Contents
Selects whether the table displays data from all captured waveform buffers or only the currently displayed buffer.
- Decode between time rulers
If the time rulers are set, the decoder will only analyze data between the ruler positions.
You will now be able to double click on a packet in the graph view to see the same packet in the table view, and vice versa, or use the zoom feature to focus on the appropriate areas of the decoder packets.