PMBus(Power Management Bus)是一種電源管理總線一種控制電源轉換器的開放的標準協議。它脫胎于基于I2C和SMBUS(System Management Bus),但是定義了很多和電源管理相關的命令。可以說是之前的I2C是物理層(具體Slave會有指令集,但只是怎么該slave,沒有統一的指令集),而現在的PMbus卻有了協議層,如果想用PMbus就必須遵守該規范,這就有了統一的協議,加速了它的推廣和應用。現在很多可編程的PowerIC都引用了這個PMbus協議。
?PMBus運行時控制和狀態
–通過調整VREF實現運行時電壓定位
–使能和禁用每個開關
–故障和狀態監視
?用戶可配置的PMBus/I2C選項,保存在EEPROM中
–電源接通和關斷排序
–可基于固定時間延遲或PGOOD實現電源排序
–通過VREF配置實現初始電壓定位
–針對每個開關調節PWM頻率
–針對每個開關單獨進行PWM相位對齊以盡可能減小紋波和電容器尺寸
–軟啟動時間
一、硬件設計
1.1電感選擇
根據電感選擇公式
注:is the current ripple in the inductor通常取最大電流的0.1~0.3。Vin為12V±10%
我們需要的電壓大概范圍是2~6V,電流0.5~2A,為2.2MHZ。代入公式計算得到1.26uH~27.27uH。
選擇通常用的值,,電流2A,為2.2MHZ,帶入可得2.8uH。
1.2輸出電容選擇
紋波范圍一般會在10mA~500mA,如果選擇100mA得以得到輸出容大約0.003uF~6.15uF。
選擇完電感和輸出電容,就可以根據不同的模式連接電路了這里可以自由參考datasheet設計。
二、代碼設計
2、1數據格式
圖1 Send Byte Protocol With PEC
圖2Write Byte Protocol With PEC
When data is transmitted, the lowest order byte is sent first and the highest order byte is sent last.
Within any byte, the most significant bit (MSB) is sent first and the least significant bit (LSB) is sent last.
7位的Slaveaddress是根據I2CADDR上的電阻確定,不同的阻值地址不同。Wr指讀寫標志位,1指讀;0指寫。8位的Commandcode這里指器件的寄存器地址。Databyte是向寄存器寫入的數值。TPSXX支持的PEC(Packet Error Checking)代碼,該代碼將在每次讀寫操作結束時進行驗證。PEC計算的內容包括Salver address(包括Wr), Command code和Data bytes for。
2.2 PEC計算
由于TPSXX的PEC是默認使能的,平且該寄存器是只讀寄存器。
圖3 CAPABILITY COMMAND Data Byte Contents
在發送端和接收端都需要進行PEC的計算。PMbus的PEC計算是采用8-bit循環冗余校驗碼(cyclic redundancy check)CRC-8。
介紹一下CRC-8:
CRC即循環冗余校驗碼(Cyclic Redundancy Check):是數據通信領域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,并將得到的結果附在幀的后面,接收設備也執行類似的算法,以保證數據傳輸的正確性和完整性。
圖3參數模型
NAME:參數模型名稱。
WIDTH:寬度,即CRC比特數。
POLY:生成項的簡寫,以16進制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成項是0x104C11DB7。
INIT:這是算法開始時寄存器(crc)的初始化預置值,十六進制表示。
REFIN:待測數據的每個字節是否按位反轉,True或False。
REFOUT:在計算后之后,異或輸出之前,整個數據是否按位反轉,True或False。
XOROUT:計算結果與此參數異或后得到最終的CRC值。
從上表可以看出CRC-8的生成項C(x) =x8 +x2 + x +1;INIT和XOROUT都是00;REFIN和REFOUT都是false。
具體的計算過程:
將多項式轉化為二進制序列,由C(x) = x8+ x2 +x+1可知二進制一共有9位,第8位、第2位、第1位和第0位分別為1,則序列為100000111。
舉個例子要計算的數據為24-bit數據da00ff(16進制),多項式的最高次為8,則在數據的后面加上8位0,數據變為da00ff00(16進制),然后使用模2除法(異或運算)除以除數100000111,最終得到的除不盡的余數,變為我們要求的CRC-8結果。
圖4模2除法計算
為了得到并行輸出的結果,需要把data分解一下。該電源的有效數據是24bits,我們就以24-dit數據為例。Data為D(x),生成項為C(x),Di為D(x)的第i位(0≤i≤23,整數),Dn為D(x)的第n位,且為“1”(0≤n≤23,整數),“^”為異或,“÷”為模二除法。
CRC(x)=D(x)÷C(x)……………………………………………………①
D(x)= D23^D22^D21^D20^……^D0 ………………………………②
②代入①
CRC(x)=(D23÷C(x))^(D22÷C(x))^……^(D0÷C(x))
如果D(x)為24’hFFFFFF時,D23、D22、……D0都是定值,故他們與生成項C(x)的模二除法的結果是固定的,如表1。如果D(x)中有哪位是”0”,則它對應的模二除法結果就為00。就是說,如果Di為“1”時就按下表中Dn的CRC-8計算結果,如果是“0”那么此位的計算結果就是“00”,可以推出,Di與與Dn的CRC-8計算結果是“&”的關系,如果Dn的CRC-8計算結果相應位為零,此項就可以省區,又異或是按位計算則可并行得到需要的結果。
以CRC-8的第7位的計算為例。
從Dn的CRC-8的計算結果中,最高位為“1”的有D22、D20、d[18]、d[17]、 d[15]、 d[13]、 d[11]、d[7]、 d[6]、 d[5]。然后對這些位做異或,就可以得到crc[7]。
crc[7] = d[22] ^ d[20] ^ d[18] ^ d[17] ^ d[15] ^ d[13] ^ d[11] ^ d[7] ^ d[6] ^ d[5]
按上述方法可以得到:
crc[0] = d[23] ^ d[21] ^ d[19] ^ d[18] ^ d[16] ^ d[14] ^ d[12] ^ d[8] ^ d[7] ^ d[6] ^ d[0];
crc[1] = d[23] ^ d[22] ^ d[21] ^ d[20] ^ d[18] ^ d[17] ^ d[16] ^ d[15] ^ d[14] ^ d[13] ^ d[12] ^ d[9] ^ d[6] ^ d[1] ^ d[0];
crc[2] = d[22] ^ d[17] ^ d[15] ^ d[13] ^ d[12] ^ d[10] ^ d[8] ^ d[6] ^ d[2] ^ d[1] ^ d[0];
crc[3] = d[23] ^ d[18] ^ d[16] ^ d[14] ^ d[13] ^ d[11] ^ d[9] ^ d[7] ^ d[3] ^ d[2] ^ d[1];
crc[4] = d[19] ^ d[17] ^ d[15] ^ d[14] ^ d[12] ^ d[10] ^ d[8] ^ d[4] ^ d[3] ^ d[2];
crc[5] = d[20] ^ d[18] ^ d[16] ^ d[15] ^ d[13] ^ d[11] ^ d[9] ^ d[5] ^ d[4] ^ d[3];
crc[6] = d[21] ^ d[19] ^ d[17] ^ d[16] ^ d[14] ^ d[12] ^ d[10] ^ d[6] ^ d[5] ^ d[4];
crc[7] = d[22] ^ d[20] ^ d[18] ^ d[17] ^ d[15] ^ d[13] ^ d[11] ^ d[7] ^ d[6] ^ d[5];
數據代號 | 數據 | Dn的CRC-8 |
D23 | 800000 | 0B |
D22 | 400000 | 86 |
D21 | 200000 | 43 |
D20 | 100000 | A2 |
D19 | 080000 | 51 |
D18 | 040000 | AB |
D17 | 020000 | D6 |
D16 | 010000 | 6B |
D15 | 008000 | B6 |
D14 | 004000 | 5B |
D13 | 002000 | AE |
D12 | 001000 | 57 |
D11 | 000800 | A8 |
D10 | 000400 | 54 |
D9 | 000200 | 2A |
D8 | 000100 | 15 |
D7 | 000080 | 89 |
D6 | 000040 | C7 |
D5 | 000020 | E0 |
D4 | 000010 | 70 |
D3 | 000008 | 38 |
D2 | 000004 | 1C |
D1 | 000002 | 0E |
D0 | 000001 | 07 |
表1分式CRC-8計算結果
三、仿真結果
圖5CRC-8程序仿真
圖6PMBUS仿真
圖5中d[23:0]為需要傳輸的有效位(需要計算PEC部分),newCRC_D24[7:0]為計算得到的PEC結果。
圖6中i2c_scl_out1和i2c_sda1是PMBUS的兩根傳輸線,link_data1是ack應答信號標志位。
總結一下,此次我們用PMbus協議對Power IC進行控制,主要是最PEC部分進行了說明,從最終的結果看,輸出電壓都在我的預想范圍內,可以說取得了不錯的效果。在此感謝紫光同創和黑金科技提供的PGL22G硬件平臺。
責任編輯:xj
原文標題:紫光同創PGL22G開發平臺試用連載(1)——PMbus調試經驗
文章出處:【微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
-
PMBus
+關注
關注
3文章
98瀏覽量
30108 -
開發平臺
+關注
關注
0文章
88瀏覽量
14222 -
紫光
+關注
關注
2文章
409瀏覽量
33936
原文標題:紫光同創PGL22G開發平臺試用連載(1)——PMbus調試經驗
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論