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