本篇主要介紹Xilinx FPGA的電源設計,主要包括電源種類、電壓要求、功耗需求,上下電時序要求,常見的電源實現方案等。
1、電壓種類及要求
隨著FPGA的發展,其電壓類型越來越豐富,主要包括以下幾種類型:
Processor System電壓,主要給Zynq系列SoC中的ARM供電,包括VCC_PSINTFP、VCC_PSINTLP、VCC_PSAUX、VCC_PSINTFP_DDR、VCC_PSADC、VCC_PSPLL、VPS_MGTRAVCC、VPS_MGTRAVTT、VCCO_PSDDR、VCC_PSDDR_PLL、VCCO_PSIO、VCC_PSBATT等;
FPGA Logic電壓,主要給FPGA邏輯部分供電,包括VCCINT、VCCINT_IO、VCCBRAM、VCCAUX、VCCO、VCCAUX_IO、VBATT等;
GTx Transceiver電壓,主要給FPGA部分的GTx高速收發器供電,包括VCCINT_GT、VMGTAVCC、VMGTAVTT、VMGTVCCAUX、VMGTAVTTRCAL;
System Monitor電壓,主要給FPGA部分的ADC供電,包括VCCADC、VREFP;
High Bandwidth Memory電壓,包括VCC_HBM、VCC_IO_HBM、VCCAUX_HBM;
VCU電壓,只有Zynq UltraScale+ MPSoC系列帶圖像處理內核的器件才有,包括VCCINT_VCU;
RF電壓,只有Zynq UltraScale+ RFSoC系列才有,包括VADC_AVCC、VADC_AVCCAUX、VDAC_AVCC、VDAC_AVCCAUX、VDAC_AVTT、VCCINT_AMS、VCCSDFEC;
以上各種電壓的供電對象不同,對精度的要求也不一樣,針對不同架構的FPGA,其對電壓的精度要求也不一樣,其紋波范圍從2%到5%不等,但整體要求都比較高,而電流要求卻越來越大,比如VCCINT最大能到幾十安。同時各種電壓值不同,有的可以合并,有的卻不能合并,同時還需要時序上的控制。
針對Zynq UltraScale+ MPSoC(ZU+ MPSoC)、Zynq UltraScale+ RFSoC(ZU+ RFSoC)、Zynq 7000(Z7)、UltraScale +(US+包括VU+和KU+)、UltraScale(US包括VU和KU)、7系列等,對每一類型電壓及要求電壓值、精度羅列如下表:
電壓類型 | ZU+ MPSoC | ZU+ RFSoC | Z7 | US+ | US | 7 Series | |
Logic | VCCINT |
0.85(3%) 0.72(3%) 0.9(3%) |
0.85(3%) 0.72(3%) |
1.0(3%) 0.95(3%) |
0.85(3%) 0.72(3%) 0.9(3%) |
0.95(3%) 0.9(2.2%)KU 1.0(3%) |
1.0(3%) 0.9(3%) 0.95(2%) AKV三個系列不同 |
VCCINT_IO |
0.85(3%) 0.9(3%) |
0.85(3%) | × |
0.85(3%) 0.9(3%) |
0.95(3%) 0.9(2.2%)KU 1.0(3%) |
× | |
VCCBRAM |
0.85(3%) 0.9(3%) |
0.85(3%) |
1.0(3%) 0.95(3%) |
0.85(3%) 0.9(3%) |
0.95(3%) 1.0(3%) |
1.0(3%) 0.9(3%) 0.95(3%) AKV三個系列不同 |
|
VCCAUX | 1.8(3%) | 1.8(3%) | 1.8(5%) | 1.8(3%) | 1.8(5%) | ||
VCCO | √ | √ | √ | √ | √ | √ | |
VCCAUX_IO | 1.8(3%) | 1.8(3%) |
1.8(5%) 2.0(3%) |
1.8(3%) |
1.8(5%) 2.0(3%) A7沒有 |
||
VBATT | ? | ? | √ | √ | √ | √ | |
GTx | VCCINT_GT | × | × | × |
0.85(3%) 0.9(3%) 只有VU+才有 |
× | × |
VMGTAVCC | 0.9(3%) | 0.9(3%) |
1.0(0.97~1.08) 1.05(1.02~1.08) |
0.9(3%) |
1.0(3%) 1.03(3%)VU |
1.0(0.97~1.08) 1.05(1.02~1.08) |
|
VMGTAVTT | 1.2(3%) | 1.2(3%) | 1.2(2.5%) | 1.2(3%) |
1.2(2.5%) 1.23(2.4%)VU |
1.2(2.5%) | |
VMGTVCCAUX | 1.8(3%) | 1.8(3%) | 1.8(2.7%) | 1.8(3%) | 1.8(2.7%) | 1.8(2.7%) | |
VMGTAVTTRCAL | 1.2(3%) | 1.2(3%) | 1.2(2.5%) | 1.2(3%) |
1.2(2.5%) 1.23(2.4%)VU |
1.2(2.5%) | |
System ?Monitor | VCCADC | 1.8(3%) | 1.8(3%) | 1.8(5%) | 1.8(3%) | 1.8(5%) | |
VREFP | 1.25(4%) | 1.25(4%) | 1.25(4%) | 1.25(4%) | 1.25(4%) | ||
Processor ?System | VCC_PSINTFP |
0.85(5%) 0.9(3%) |
0.85(5%) | VCC_PSINT(1.0(5%)) | ? | ? | ? |
VCC_PSINTLP |
0.85(5%) 0.9(3%) |
0.85(5%) | ? | ? | ? | ||
VCC_PSAUX | 1.8(5%) | 1.8(5%) | 1.8(5%) | ? | ? | ? | |
VCC_PSINTFP_DDR |
0.85(5%) 0.9(3%) |
0.85(5%) | × | ? | ? | ? | |
VCC_PSADC | 1.8(5%) | 1.8(5%) | × | ? | ? | ? | |
VCC_PSPLL | 1.2(3%) | 1.2(3%) | 1.8(5%) | ? | ? | ? | |
VPS_MGTRAVCC | 0.85(3%) | 0.85(3%) | × | ? | ? | ? | |
VPS_MGTRAVTT | 1.8(3%) | 1.8(3%) | × | ? | ? | ? | |
VCCO_PSDDR | DDR ?I/O | DDR ?I/O | DDR ?I/O | ? | ? | ? | |
VCC_PSDDR_PLL | 1.8(5%) | 1.8(5%) | × | ? | ? | ? | |
VCCO_PSIO | MIO | MIO | MIO | ? | ? | ? | |
VCC_PSBATT | √ | √ | × | ? | ? | ? | |
HBM | VCC_HBM | ? | ? | ? | 1.2(3%)VU+ | ? | ? |
VCC_IO_HBM | ? | ? | ? | 1.2(3%)VU+ | ? | ? | |
VCCAUX_HBM | ? | ? | ? | 2.5(3%)VU+ | ? | ? | |
VCU | VCCINT_VCU | 0.9(3%) | ? | ? | ? | ? | ? |
RF | VADC_AVCC | ? | 0.925(3%) | ? | ? | ? | ? |
VADC_AVCCAUX | ? | 1.8(3%) | ? | ? | ? | ? | |
VDAC_AVCC | ? | 0.925(3%) | ? | ? | ? | ? | |
VDAC_AVCCAUX | ? | 1.8(3%) | ? | ? | ? | ? | |
VDAC_AVTT | ? |
2.5(3%) 3.0(3%) |
? | ? | ? | ? | |
VCCINT_AMS | ? | 0.85(3%) | ? | ? | ? | ? | |
VCCSDFEC | ? | 0.85(3%) | ? | ? | ? |
2、功耗
FPGA的功耗包括所用邏輯單元數/BRAM數等內部資源、工作時鐘頻率、切換速率、布線和I/O功耗等。對于I/O功耗,影響因素包括輸出類型、工作時鐘頻率、以及輸出的信號翻轉數量以及輸出負載等。實際功耗取決于特定的系統設計。本部分內容主要針對FPGA logic部分的功耗,而對于Zynq系列,由于其操作系統不同、應用不同,無法進行詳細計算,但可以通過軟件進行粗略評估。
整個FPGA設計的總功耗由三部分功耗組成:芯片靜態功耗、設計靜態功耗、設計動態功耗。
芯片靜態功耗:FPGA在上電完成后還未配置時的功耗,主要是晶體管的泄露電流所消耗的功耗。
設計靜態功耗:當FPGA配置完成后,當設計還未啟動時,需要維持I/O的靜態電流,時鐘管理和其它部分電路的靜態功耗。
設計動態功耗:FPGA內設計正常啟動后,設計的功耗;這部分功耗的多少主要取決于芯片所用電平,以及FPGA內部邏輯和布線資源的占用情況等。
2.1、待機功耗(芯片靜態功耗)
由于漏電流的存在,器件在待機時也會消耗能量。待機功耗隨芯片DIE的大小、溫度以及工藝的變化而變化。可以利用器件特征參數來模擬待機功耗,并定義為兩類:典型功耗和最大功耗。
2.2、IO功耗(設計靜態功耗)
I/O功耗是VCCO功耗,主要來自器件輸出引腳連接的外部負載電容、阻抗模式輸出驅動電路以及外部匹配網絡(如果有)的充放電電流。
如前所述,FPGA內部要實際消耗一部分VCCO功耗,外部匹配電阻網絡以及輸出電容負載消耗了另一部分能量。設計人員在規劃散熱方案時,應考慮VCCO的內部功耗。作為VCCO電源輸出功率的一部分,設計人員也應考慮外部功耗的組成。
2.3、動態功耗(設計動態功耗)
內部節點改變邏輯狀態時(例如,從邏輯0變到邏輯1)會形成器件內部動態功耗,因為它需要能量對邏輯陣列和互聯網絡的內部電容進行充放電。內核動態功耗包括邏輯單元功耗和導線功耗。LE功耗來自內部節點電容充放電以及內部電阻單元的電流損耗。導線功耗來自每個LE驅動外部導線電容時的充放電電流。內核動態功耗主要來自以下結構單元:
LUT
RAM模塊
DSP Slice
鎖相環(PLL)
時鐘樹網絡
GTx收發器
IP使用情況
IO使用情況
2.4、功耗設計
前兩部分的功耗取決于FPGA芯片及硬件設計本身,很難有較大的改善??梢詢灮氖堑?部分功耗:設計動態功耗,這部分功耗占總功耗的90%以上,因此降低設計動態功耗是降低整個系統功耗的關鍵因素。
Tjmax>θJA*PD+TA
其中Tjmax表示FPGA芯片的最高結溫(maximum junction temperature);θJA表示FPGA與周圍大氣環境的結區熱阻抗(Junction to ambient thermalresistance),單位是℃/W;PD表示FPGA總功耗(power dissipation),單位是W;TA表示周圍環境溫度。
以XC7K325T-2FFG900I系列芯片為例,θJA=9.7℃/W,在TA=55℃的環境中,想要結溫Tjmax不超過100°C的情況下,可以推算FPGA的總功耗為:
PD
因此實際功耗只要超過此值就需要進行優化處理,優化處理的方法主要有兩種:一是降低θJA:熱阻抗取決于芯片與環境的熱傳導效率,可通過加散熱片或者風扇減小熱阻抗;二是減小PD:通過優化FPGA設計,降低總功耗。下面就針對這兩部分進行介紹。
2.4.1、降低θJA
此部分詳見之前的文章《可靠性設計之降額設計》。
2.4.1、減小PD
2.4.1.1、功耗估計
Xilinx FPGA的功耗評估常見的有幾種方案:Xilinx自己的XPE(可以在xilinx官網上下載到:http://www.xilinx.com/power,它是一個基于excel的工具)、TI的WEBENCH(貌似只有FPGA部分,沒有ARM部分)、Vivado軟件、開發板實測評估等,這幾種方案都可以根據自己的外設進行定制,方便靈活。
在低功耗設計之前,需要先進行功耗評估。XPE主要是在項目初期,處于系統設計,RTL代碼并未完善階段功耗估計時使用。在設計完成綜合實現后,則可以使用vivado自帶的功耗分析工具進行精確計算功耗。打開綜合實現后的設計,點擊report power即可得到功耗分析的結果。
此部分可以參見之前的文章《Zynq UltraScale+系列之“電源”》。
2.4.1.2、功耗優化
關于FPGA低功耗設計,可從兩方面著手:一是算法優化;二是FPGA資源使用效率優化。
算法優化
算法優化可分為兩個層次說明:實現結構和實現方法。首先肯定需要設計一種最優化的算法實現結構,設計一種最優化的結構,使資源占用達到最少,當然功耗也能降到最低,但是還需要保證性能,使FPGA設計在面積和速度上都能兼顧。比如在選擇采用流水線結構還是狀態機結構時,流水線結構同一時間所有的狀態都在持續工作,而狀態機結構只有一個狀態是使能的,顯而易見流水線結構的功耗更多,但其數據吞吐率和系統性能更優,因此需要合理選其一,使系統能在面積和速度之間得到平衡。
另一個層面是具體的實現方法,設計中所有吸收功耗的信號當中,時鐘是罪魁禍首。雖然時鐘可能運行在100MHz,但從該時鐘派生出的信號卻通常運行在主時鐘頻率的較小分量(比如12%~15%)。此外,時鐘的扇出一般也比較高。這兩個因素顯示,為了降低功耗,應當認真研究時鐘。首先,如果設計的某個部分可以處于非活動狀態,則可以考慮禁止時鐘樹翻轉,而不是使用時鐘使能。時鐘使能將阻止寄存器不必要的翻轉,但時鐘樹仍然會翻轉,消耗功率。其次,隔離時鐘以使用最少數量的信號區。不使用的時鐘樹信號區不會翻轉,從而減輕該時鐘網絡的負載。
資源使用效率優化
資源使用效率優化是使用FPGA內部的一些資源(如BRAM,DSP slice)時,可以優化功耗的方法。FPGA動態功耗主要體現為存儲器、內部邏輯、時鐘、I/O等的功耗。
其中存儲器是功耗大戶,如xilinx FPGA中的存儲器單元Block RAM,因此主要介紹對BRAM的一些功耗優化方法。
下圖中雖然BRAM只使用了7%,但是其功耗0.614W占了總設計的42%,因此優化BRAM的功耗能有效地減小FPGA的動態功耗。
下面介紹一下優化BRAM功耗的方法:
使用“NO CHANGE”模式:在BRAM配置成True Dual Port時,需要選擇端口的操作模式:“Write First”,“Read First” or “NO CHANGE”,避免讀操作和寫操作產生沖突,如圖6所示;其中“NO CHANGE”表示BRAM不添加額外的邏輯防止讀寫沖突,因此能減少功耗,但是設計者需要保證程序運行時不會發生讀寫沖突。
設置成“NO CHANGE”后BRAM的功耗從0.614W降到了0.599W,因為只使用了7%的BRAM,如果設計中使用了大量的BRAM,效果能更加明顯。
控制“EN”信號:BRAM的端口中有clock enable信號,在端口設置中可以將其使能,模塊例化時將其與讀/寫信號連接在一起,如此優化可以使BRAM在沒有讀/寫操作時停止工作,節省不必要的功耗。
控制“EN”信號優化后BRAM功耗降到了0.589W。
拼深度:當設計中使用了大量的存儲器時,需要多塊BRAM拼接而成,如需要深度32K,寬度32-bit,32K*32Bit的存儲量,但是單塊BRAM如何配置是個問題。7 series FPGA中是36Kb 的BRAM,其中一般使用32Kb容量,因此可以配置成32K*1-bit或者1K*32-bit,多塊BRAM拼接時,下圖中前者是“拼寬度”,后者是“拼深度”。兩種結構在工作時,“拼寬度”結構所有的BRAM需要同時進行讀寫操作;而“拼深度”結構只需要其中一塊BRAM進行讀寫,因此在需要低功耗的情況下采用“拼深度”結構。但需要特別注意的是:“拼深度”結構需要額外的數據選擇邏輯,增加了邏輯層數,為了降低功耗即犧牲了面積又犧牲了性能。
3、上下電時序
3.1、上電時序
FPGA通常需要多路供電電壓,并且要求一定的上電/斷電順序。順序上電有助于限制上電期間的浪涌電流。如果忽視器件的供電順序要求,可能導致器件損壞或閂鎖,造成FPGA器件故障。有三種類型的上電時序:同步跟蹤、順序跟蹤和比率跟蹤。
針對各個系列的FPGA芯片,其內部各功能模塊的上電時序一般是相互獨立的,各個功能模塊內部是有先后順序的要求。詳細可參看各個器件的data sheet,其中會有詳細的先后順序約束。
3.2、上升單調性
啟動過程中,電源電壓保持單調爬升非常重要,只有這樣才能確保器件成功開啟。一般的FPGA給出了嚴格的電壓單調上升要求,即電源電壓應該連續上升至所設置的穩壓值,中間不應發生跌落。如果電源不能提供足夠的輸出功率,則會造成跌落。
3.3、上電時間
大多數FPGA規定了啟動電壓上升速率的最小值和最大值,電源通過在啟動過程中逐漸增大限流值實現軟啟動。軟啟動減緩了電源電壓的上升速率,也降低了注入FPGA的峰值浪涌電流。一般的電源可利用連接在引腳的軟啟動電容設置軟啟動時間。
3.4、掉電時序
斷電時序也是需要控制的,標準的時序是把上電時序倒過來。
3.5、特殊情況的時序控制
經常會有FPGA和ARM等其他CPU互連的情況,為了不損壞器件,此時FPGA和ARM的上電時序既要滿足自身的上電時序要求,也要滿足對方的上電時序要求,這種情況可以進行如下處理:
當FPGA和ARM各自使用自己的配置文件時:由于ARM處于復位狀態時IO為輸入狀態,而FPGA需要完成配置后才能確定其IO的狀態,因此ARM和FPGA可以各自進行各自的上電時序,當ARM的上電時序完成后處于復位狀態,這樣IO為輸入狀態,當FPGA上電完成后進行配置,配置完成后給ARM一個配置完成信號,此信號去釋放ARM的復位,設置對應的IO狀態,就不會出現IO沖突了,也不會影響FPGA啟動時序,也不會導致FPGA接口出現閂鎖效應。
當FPGA是使用ARM給配置文件時,不會出現IO沖突的情況,因為FPGA釋放復位,進行配置之前,IO是高阻態,FPGA沒有配置文件,不會去設置IO狀態。
4、電源方案
目前針對FPGA的常用電源解決方法包括使用單路LDO、單路DC/DC、單顆Power Module、PMIC等。
4.1、LDO
如果電路板空間有保證,低輸出噪聲很重要,或者系統要求對輸入和瞬態現象快速響應,就應該采用LDO。LDO提供了中低輸出電流。輸入電容通常會切斷輸入至LDO的阻抗和噪聲。LDO還要求在輸出端有一個電容器,以處理系統瞬態響應并提供穩定性。
4.2、SMPS
當設計效率非常關鍵且系統要求大輸出電流時,開關電源具有優勢。開關電源提供比LDO更高的效率,但其開關特性使其對噪聲更敏感。與LDO不同,開關電源需要使用電感器,而且可能需要變壓器進行DC-DC轉換,對PCB空間需求較大。
4.3、Power Module
Power Module可以省去自己搭建外圍電路,且廠家設計的模塊一般比自己設計的性能會更好(效率更高、紋波更?。?a target="_blank">電源模塊一般是在電流需求比較大的情況下會選擇。
4.4、PMIC
由于FPGA的廣泛應用,目前針對FPGA的專用PMIC越來越多,從輸出電壓、通道數、輸出電流等方面都能很好的滿足特定FPGA芯片的需求,同時PCB占用面積、設計便捷性、價格等方面都比較有優勢。ZU+ MPSoC系列可參見之前的文章《Zynq UltraScale+系列之“電源”》,其他系列類似,詳細可以參見TI、Infineon、ADI(含凌特)等廠家官網,有相關FPGA系列芯片對應的解決方案。
以上就是針對Xilinx FPGA的電源介紹,主要包括了電源的種類、電壓要求、功耗分析、上下電時序、電源實現方式等。
評論
查看更多