RD1100 Power Management Bus Reference Design Documentation

Power Management Bus
December 2010
Reference Design RD1100
Introduction
The Power Management Bus (PMBus) is an open standard protocol that was defined as a means to communicate
with power conversion and other devices. As an industry standard serial communication interface based on SMBus
protocols, it is viewed as an extension of the System Management Bus and supports many new functions. Like
SMBus, the PMBus protocol defines three layers, the Physical Layer, the Data Link Layer and the Network Layer.
This design contains a WISHBONE interface and focuses on the implementation of the Data Link Layer protocol. It
is convenient to connect this design with a microcontroller which implements the Network Layer protocol.
This design is based on Lattice reference design RD1046, I2C Master with WISHBONE Bus Interface. It is available
in both Verilog and VHDL languages.
Features
• Compatible with PMBus specification
– Multi-master operation
– Software-programmable SDL clock frequency and 400KHz allowed
– Clock stretching and wait state generation
– Timeout monitor for the master
– Interrupt flag generation
– Arbitration lost interrupt, with automatic transfer cancellation
– Bus busy detection
– Supports 7-bit addressing mode
• Compliant with WISHBONE specification
– Compliant with WISHBONE Classic interface, Revision B
– All output signals are registered
– Two-cycle access time
– A non-WISHBONE compatible signal, arst_i, is an asynchronous reset signal provided for FPGA implementations
Functional Description
The PMBus master core supports the critical features described in the PMBus specification and is suitable for most
applications involving PMBus slave control. The design responds to the read/write cycles initiated by the microcontroller through the WISHBONE interface. It provides the correct sequences of commands and data to the PMBus
slave device and then transfers the required data from the PMBus slave device through the two open-drain wires.
The PMBus master with WISHBONE interface offloads the microcontroller from needing to administrate many
details of the PMBus commands and operation sequences.
Table 1 lists the I/O ports of the design. Signals ending in “_i” indicate an input and those ending in “_o” indicate an
output. All signals on the WISHBONE side are synchronous to the master clock. The two PMBus wires, scl and
sda, must be open-drain signals and are externally pulled up to Vcc through resistors.
© 2010 Lattice Semiconductor Corp. All Lattice trademarks, registered trademarks, patents, and disclaimers are as listed at www.latticesemi.com/legal. All other brand
or product names are trademarks or registered trademarks of their respective holders. The specifications and information herein are subject to change without notice.
www.latticesemi.com
1
rd1100_01.1
Lattice Semiconductor
Power Management Bus
Table 1. Pin Descriptions
Signal
Width
Type
Description
WISHBONE Interface
wb_clk_i
1
Input
Master clock
wb_rst_i
1
Input
Synchronous reset, active high
arst_i
1
Input
Asynchronous reset
wb_adr_i
3
Input
Lower address bits
wb_dat_i
8
Input
Data towards the core
wb_dat_o
8
Output
Data from the core
wb_we_i
1
Input
Write enable input
wb_stb_i
1
Input
Strobe signal/core select input
wb_cyc_i
1
Input
Valid bus cycle input
wb_ack_o
1
Output
Bus cycle acknowledge output
wb_inta_o
1
Output
Interrupt signal output
1
Bi-directional
Serial clock line
SDA
1
Bi-directional
Serial data line
SMBA
1
Input
CONTROL
1
Output
PMBus Interface
SCL
Alert signal, active is low
Control signal, active is low
Design Module Description
The design has four main modules as shown in Figure 1. These include one top-level module and three lower-level
modules, the register module, byte command module and bit command module.
Figure 1. Design Modules
Prescale
Register
Clock
Generator
Command
Register
WISHBONE
Signals
WISHBONE
Interface
Byte
Command
Controller
Status
Register
SCL
Bit
Command
Controller
SDA
SMBA
CONTROL
Transmit
Register
DataIO
Shift
Register
Receive
Register
Internal
Registers
Top-level Module
2
Lattice Semiconductor
Power Management Bus
Top-level Module (PMBus_master_top.v)
In addition to connecting all the functional blocks together, this module generates byte-wide data, acknowledgement, and interrupt for the WISHBONE interface. Depending on the parameter ARST_LVL, the reset polarity is
determined and distributed to all the modules.
Internal Registers Module (PMBus_master_registers.v)
A 2-bit by 8-bit register space constitutes the internal register structure of the PMBus core. The space houses the
six 8-bit registers listed in Table 2. The addresses not used are reserved for future expansion of the core.
Table 2. Internal Register List
Name
Address
Width
Access
Description
PRERlo
0x00
8
R/W
Clock prescale register lo-byte
PRERhi
0x01
8
R/W
Clock prescale register hi-byte
CTR
0x02
8
R/W
Control register
TXR
0x03
8
W
Transmit register
RXR
0x03
8
R
Receive register
CR
0x04
8
W
Command register
SR
0x04
8
R
Status register
The Prescale Register (address = 0x00 and 0x01) is used to prescale the scl clock line based on the master clock.
This design uses an internal clock, named clk_en, to generate the scl clock frequency. The frequency of clk_en is
calculated by the equation [wb_clk_i frequency / Prescale Register+1] and this frequency is five times the scl frequency. The contents of the Prescale Register can only be modified when the core is not enabled.
Only two bits of the Control Register (address = 0x01) are used for this design. The MSB of this register is the
most critical one because it enables or disables the entire PMBus core. The core will not respond to any command
unless this bit is set.
The Transmit Register and the Receive Register share the same address (address = 0x30) depending on the
direction of data transfer. The data to be transmitted via PMBus will be stored in the Transmit Register, while the
byte received via PMBus is available in the Receive register.
The Status Register and the Command Register share the same address (address = 0x04). The Status Register
allows the monitoring of the PMBus operations, while the Command Register stores the next command for the next
PMBus operation. Unlike the rest of the registers, the bits in the Command Register are cleared automatically after
each operation. Therefore, this register has to be written for each start, write, read, or stop of the PMBus operation.
Table 3 provides a detailed description of each bit in the internal registers.
3
Lattice Semiconductor
Power Management Bus
Table 3. Description of Internal Register Bits
Internal Register
Control Register (0x02)
Transmit Register (0x30)
Receive Register (0x30)
Status Register (0x04)
Command Register (0x04)
Bit #
Access
Description
7
RW
EN, PMBus core enable bit. ‘1’ = the core is enabled; ‘0’ = the core is disabled.
6
RW
IEN, PMBus core interrupt enable bit. ‘1’ = interrupt is enabled; ‘0’ =
interrupt is disabled.
5:0
RW
7:1
W
Next byte to be transmitted via PMBus
0
W
a) This bit represents the data’s LSB.
b) This bit represents the R/W bit during slave address transfer ‘1’= reading from slave; ‘0’= writing to slave
7:0
R
Last byte received via PMBus
7
R
RxACK, Received acknowledge from slave. This flag represents
acknowledge from the addressed slave. ‘1’ = No acknowledge received;
‘0’ = Acknowledge received
6
R
Busy, indicates the PMBus bus busy ‘1’= START signal is detected; ‘0’=
STOP signal is detected
5
R
AL, Arbitration lost This bit is set when the core lost arbitration. Arbitration is lost when:
- A STOP signal is detected, but not requested.
- The master drives SDA high, but SDA is low.
4
R
This bit is set when signal SMBA is active.
3
R
Timeout. ‘1’ = scl and sda line have been high for 50ms.
2
R
Timeout. ‘1’ = scl line has been low for 25ms.
1
R
TIP, Transfer in progress. ‘1’ = transferring data; ‘0’ = transfer is complete
0
R
IF, Interrupt Flag. This bit is set when an interrupt is pending, which will
cause a processor interrupt request if the IEN bit is set. The Interrupt
Flag is set when:
- One byte transfer has been completed.
- Arbitration is lost.
7
W
STA, generate (repeated) start condition
6
W
STO, generate stop condition
5
W
RD, read from slave
4
W
WR, write to slave
3
W
ACK, when a receiver, sent ACK (ACK = ‘0’) or NACK (ACK = ‘1’)
2
W
When set, clears the timeout status.
1
W
Corresponds to the signal CONTROL
0
W
IACK, Interrupt acknowledge. When set, clears a pending interrupt.
Reserved
Byte Command Controller Module (PMBus_master_byte_ctrl.v)
The microcontroller issues commands and data through the WISHBONE interface in byte format. The information
is fed into the Byte Command Controller module and is translated into PMBus sequences required for a byte transfer. This module includes a state machine, as shown in Figure 2, to handle normal PMBus transfer sequences. The
module then breaks up a single command into multiple clock cycles for the Bit Command Controller to work on bitlevel PMBus operations. This module also contains a shift register which is used for both READ and WRITE cycles.
During a READ cycle, the input to the shift register comes from the sda line. After eight scl cycles, the shifted-in
data is copied into the Receive Register. During a WRITE cycle, the input to the shift register comes from the
WISHBONE data bus. The data in the shift register is shifted out to the sda line during WRITE.
4
Lattice Semiconductor
Power Management Bus
Figure 2. PMBus Byte Command State Machine
Idle State
No
Read/Write
Bit Set?
Yes
START
Bit Set?
No
Yes
START Signal State
No
START
Generated?
Yes
Read
Bit Set?
No
Yes
READ State
Byte
Read?
WRITE State
No
Byte
Written?
Yes
No
Yes
ACK State
Yes
ACK Bit
Read
Written
No
Bit Command Controller Module (PMBus_master_bit_ctrl.v)
This module directly controls the PMBus bus, scl and sda lines, by generating the correct sequences for START,
STOP, Repeated START, READ, and WRITE commands. Each bit operation is divided into five (5 x scl frequency)
clock (clk_en) cycles (idle, A, B, C, and D), except for the START command that has six clock cycles. This ensures
that the logical relationship between the scl and sda lines meets the PMBus requirement for these critical com5
Lattice Semiconductor
Power Management Bus
mands. The internal clock (clk_en) running at 5 x scl frequency is used for the registers in this module (Figure 3,
Table 4). The designer can calculate the appropriate frequency of the internal clock clk_en to meet the PMBus timing specification by setting a appropriate value to the Prescale Register.
Figure 3. PMBus Bit Command Illustration
clk_en
A
SCL
B
tSU:STA
Start
C
D
E
tHD:STA
SDA
tHIGH_scl
SCL
Rep Start
SDA
SCL
Stop
tSU:STO
SDA
SCL
tSU:DAT
Write
tHD:DAT
SDA
SCL
Read
SDA
Table 4. PMBus Timing Specifications
Symbol
Parameter
Value
tHD:STA
Hold time after Start condition
1 clk_en cycle
tSU:STA
Start condition setup time
1 clk_en cycle
tSU:DAT
Data setup time
1 clk_en cycle
tHD:DAT
Data hold time
1 clk_en cycle
tHIGH_scl
Scl high period
2 clk_en cycles
tLOW:scl
Scl low period
3 clk_en cycles
tSU:STO
Stop condition setup time
1 clk_en cycle
Miscellaneous Features
By the nature of open-drain signals, the PMBus provides clock synchronization through a wired-AND connection
on the scl line. This clock synchronization capability can be used as a handshake between the slave and master
PMBus devices. By holding the scl line low, the slave device tells the master to slow down the data transfer until the
slave device is ready. This design detects the scl line to determine if the line is being held.
6
Lattice Semiconductor
Power Management Bus
This design supports multiple masters and thus incorporates the arbitration lost detection. The master that loses
the arbitration reports the status in Status Register bit 5. The arbitration is lost when the master detects a STOP
condition which is not requested, or when the master drives the sda line high but the sda line is pulled low. The
arbitration lost resets the bits in the Command Register to clear the current command for the master to start over
again.
This design monitors the scl and sda bus values to determine if either of two timing conditions have been violated:
• The PMBus specification requires that when scl has been low for 25ms, the PMBus master must generate a stop
condition within or after the current data byte in the transaction. This design generates a stop condition after the
current data byte in the transaction when the master detects this condition and reports the status in Status Register bit 2. An appropriate value can be set for the parameter SCL_LOW_TIMEOUT in the source code to meet
the 25ms requirement according to the clock wb_clk_i frequency.
• The PMBus specification also requires that when scl and sda have been high for 50ms, the PMBus is considered
free. This design reports the status in Status Register bit 3 when such condition is detected. An appropriate
value can be set the parameter SCL_SDA_HIGH_TIMEOUT in the source code to meet the 50ms requirement
according to the clock wb_clk_i frequency.
The signal SMBA is an interrupt line for devices that want to trade their ability to master. When this signal is active,
this design reports the status in Status Register bit 4.
The CONTROL signal is an input signal on a power converter. It is used to turn the unit on and off in conjunction
with commands received via the serial bus. This signal can be set by the Command Register bit 1.
These features are described in detail in the PMBus specification.
Operation Sequence of PMBus Controller
To Write Data to the PMBus Slave:
1.
Write the appropriate data to the Prescale Register based on the frequency of scl through the WISHBONE bus.
2.
Write 0x01 to the Control Register to enable the PMBus controller through the WISHBONE bus.
3.
Write the PMBus slave address+write bit to the Transmit Register through the Wishbone bus.
4.
Write 0x90 to the Control Register through the WISHBONE bus to start the PMBus write operation.
5.
Read the Status Register through the WISHBONE bus until bit 1 of the Status Register is set.
6.
Write the byte that was sent to the PMBus slave to the Transmit Register through the WISHBONE bus.
7.
Write 0x10 to the Control Register through the WISHBONE bus to set the PMBus write operation.
8.
Read the Status Register through the WISHBONE bus until bit 1 of the Status Register is set.
9.
When all the bytes are sent, write 0x40 to the Control Register through the WISHBONE bus to stop the
PMBus write operation.
10. Read the Status Register through the WISHBONE bus until bit 1 of the Status Register is set.
To Read Data from the PMBus Slave:
1.
Write the appropriate data to the Prescale Register based on the frequency of scl through the WISHBONE bus.
2.
Write 0x01 to the Control Register to enable the PMBus controller through the WISHBONE bus.
7
Lattice Semiconductor
Power Management Bus
3.
Write the PMBus slave address+read bit to the Transmit Register through the WISHBONE bus.
4.
Write 0x90 to the Control Register through the WISHBONE bus to start the PMBus read operation.
5.
Read the Status Register through the WISHBONE bus until bit 1 of the Status Register is set.
6.
Write 0x20 to the Control Register through the WISHBONE bus to read data from the slave.
7.
Read the Status Register through the WISHBONE bus until bit 1 of the Status Register is set.
8.
Read data from the Receive Register through the WISHBONE bus.
9.
When the read operation is finished, write 0x40 to the Control Register through the WISHBONE bus to
stop the PMBus read operation.
10. Read the Status Register through the WISHBONE bus until bit 1 of the Status Register is set.
HDL Simulation and Verification
The PMBus master with WISHBONE interface design is simulated using a PMBus slave model
(PMBus_slave_model.v) and a WISHBONE master model (wb_master_model.v). The slave model emulates the
responses of a PMBus slave device by sending an ACK signal when the address matches and when the WRITE
operation is completed. The master model contains several tasks to emulate the WISHBONE READ, WRITE, and
Compare commands normally issued by the microcontroller. The top-level testbench (tst_bench_top.v) controls the
flow of the PMBus operations. The START, WRITE, REPEATED START, READ, consecutive READ, ACK/NACK,
STOP, and clock stretching operations are simulated with this test bench.
The following timing diagrams shows the major timing milestones in the simulation.
Figure 4. Writing Prescale Register with 0x64 and 0x00 at Addresses 0x00 and 0x01 Respectively
8
Lattice Semiconductor
Power Management Bus
Figure 5. Initiate a START, SR[1] (Transfer in Progress) and SR[6] (Busy) Are Set
Figure 6. Transfer Slave Address + WR, Receive ACK from Slave, Transfer Slave Memory Address 0x01,
Receive ACK from Slave, Release SR[1] (Transfer in Progress)
Figure 7. Clock Stretching by Slave, scl Line Held Low for 25ms, Master Generate the Stop condition
9
Lattice Semiconductor
Power Management Bus
Figure 8. Repeated START with Slave Address + RD Command
Figure 9. Consecutive READ from the Slave, Data Read are 0xA5, 0x5A, and 0x11
Implementation
Table 5. Performance and Resource Utilization
Device Family
MachXO2™ 1
MachXO™ 2
Platform Manager3
Language
Speed Grade
Utilization
fMAX(MHz)
I/Os
Architecture
Resources
Verilog
-4
299 LUTs
>50
31
N/A
VHDL
-4
290 LUTs
>50
31
N/A
Verilog
-4
292 LUTs
>50
31
N/A
VHDL
-4
288 LUTs
>50
31
N/A
Verilog
-3
291 LUTs
>50
31
N/A
VHDL
-3
288 LUTs
>50
31
N/A
1. Performance and utilization characteristics are generated using LCMXO2-2000HC-4TG100CES, with Lattice Diamond™ 1.1 and ispLEVER® 8.1 SP1 software. When using this design in a different device, density, speed, or grade, performance and utilization may vary
2. Performance and utilization characteristics are generated using LCMXO1200C-3T100C, with Lattice Diamond 1.1 and ispLEVER 8.1 SP1
software When using this design in a different device, density, speed, or grade, performance and utilization may vary.
3. Performance and utilization characteristics are generated using LPTM10-12107-3FTG208CES,with ispLEVER 8.1 SP1 software. When
using this design in a different device, density, speed or grade, performance and utilization may vary.
10
Lattice Semiconductor
Power Management Bus
References
• PMBus specification Version 1.0
• SMBus specification Version 2.0
• RD1046, I2C Master with WISHBONE Bus Interface
Technical Support Assistance
Hotline: 1-800-LATTICE (North America)
+1-503-268-8001 (Outside North America)
e-mail: [email protected]
Internet: www.latticesemi.com
Revision History
Date
Version
November 2010
01.0
Initial release.
Change Summary
December 2010
01.1
Added support for the Platform Manager device family.
11