一、前言
隨著系統(tǒng)功率預(yù)算的不斷緊縮,迫切需要新型低功率元器件。對(duì)通信基礎(chǔ)設(shè)施而言,電路板冷卻、機(jī)箱體積小型化以及系統(tǒng)可靠性在系統(tǒng)設(shè)計(jì)中都起著重要的作用。對(duì) e-應(yīng)用,電池壽命、熱耗散和小體積尺寸是主要的設(shè)計(jì)難點(diǎn)。選用智能器件,輔以正確的設(shè)計(jì)技巧增加了符合功率預(yù)算的可能性。盡管可編程邏輯器件(PLD) 有很好的性能,然而卻以犧牲功耗為代價(jià)。Actel公司的抗熔斷型FPGA提供低功耗且高性能應(yīng)用的理想解決方案。
二、抗熔斷型FPGA的結(jié)構(gòu)與特點(diǎn)
Actel 公司的抗熔斷型FPGA是用先進(jìn)的CMOS工藝制作的,內(nèi)部采用專(zhuān)利的金屬-金屬抗熔斷元件??谷蹟嗷ミB就象純金屬互連一樣,而與用晶體管開(kāi)關(guān)的SRAM 互連截然不同??谷蹟嘟Y(jié)構(gòu)消除了CRAM互連開(kāi)關(guān)中圖騰柱結(jié)構(gòu)的功耗,并且縮小了器件的尺寸,使全部連線資源都位于硅片的頂部。這種結(jié)構(gòu)可以更形象地用掩 埋在金屬層上的“模塊海洋”來(lái)描述,極大地減少了芯片的尺寸以及開(kāi)關(guān)的電阻與電容,從而降低了功耗(圖1)。
分段式連線資源
該 類(lèi)器件采用分段式連線資源,其容量是連線的長(zhǎng)度,寬度和負(fù)載的函數(shù)。分段式連線較全長(zhǎng)式短,因而電容也較小。分段結(jié)構(gòu)還允許切斷未使用連線,進(jìn)一步減小了 電容。當(dāng)信號(hào)需要傳輸較長(zhǎng)距離時(shí),可將多個(gè)線段連接在一起,這是通過(guò)連線開(kāi)關(guān)完成的。由于這類(lèi)開(kāi)關(guān)是快速且低功耗的,因此不會(huì)增加功耗與延時(shí)。eX以及 SX/SX-A結(jié)構(gòu)采用稱(chēng)為Fastconnet與Directconnect兩種創(chuàng)新的局部連線資源將邏輯塊連接在一起。此外,器件還具有由不同段長(zhǎng)度 組成的其它連線資源,以備需要較長(zhǎng)距離的連線信號(hào)連接使用。
低功耗模式引腳
eX器件提供一個(gè)專(zhuān)用的低功耗引腳,這是降低功耗的又一種手段。它能關(guān)閉所有的內(nèi)部電荷泵,將靜態(tài)電流降低至幾乎為0。當(dāng)然用戶必須細(xì)心地處理某些邊緣效應(yīng),這將在下文詳細(xì)討論。
細(xì)晶粒結(jié)構(gòu)
粗 晶粒PLD與FPGA邏輯的效率比Actel細(xì)晶粒邏輯塊低,因而浪費(fèi)了很多邏輯功能。Actel eX,SX/SX-A系列是在細(xì)晶粒4輸入MUX基本結(jié)構(gòu)上構(gòu)建的,且備有多個(gè)控制輸入。一個(gè)單元能實(shí)現(xiàn)多達(dá)5個(gè)輸入的邏輯功能,使邏輯映射功能更有效。 這種細(xì)晶粒結(jié)構(gòu)與大量的且分段的連線資源相結(jié)合,有助于在不犧牲性能的前提下降低功耗。
非易失性與通電時(shí)即時(shí)工作
由于 Actel FPGA采用抗熔斷技術(shù),本質(zhì)上是非易失性的,在通電時(shí)能即時(shí)工作,器件在通電序列中無(wú)需進(jìn)行重構(gòu),信息是永久性編程的,信息的存儲(chǔ)與保持不消耗電流,從 而減小靜態(tài)電流,降低功耗。器件不必?cái)y帶通電系統(tǒng)引導(dǎo)程序的PROM,因而是一種高性能的單片解決方案。
[page]
三、降低功耗的設(shè)計(jì)技巧
基 于CMOS的設(shè)計(jì)主要消耗三類(lèi)切率:內(nèi)部的(短路)、漏電的(靜態(tài)的)以及開(kāi)關(guān)的(電容)。當(dāng)門(mén)電路瞬變時(shí),VDD與地之間短路連接消耗內(nèi)部功率。漏電功 耗是CMOS工藝普遍存在的寄生效應(yīng)引起的。而開(kāi)關(guān)功耗則是自負(fù)載電容,放電造成的。開(kāi)關(guān)功耗與短路功耗合在一起稱(chēng)為動(dòng)態(tài)功耗。下面介紹降低靜態(tài)功耗和動(dòng) 態(tài)功耗的設(shè)計(jì)技巧。
降低靜態(tài)功耗
雖然靜態(tài)電流與動(dòng)態(tài)電流相比可以忽略不計(jì),然而對(duì)電池供電的手持設(shè)備就顯得十分重要,在 設(shè)備通電而不工作時(shí)更是如此。靜態(tài)電流的因素眾多,包括處于沒(méi)有完全關(guān)斷或接通的狀態(tài)下的I/O以及內(nèi)部晶體管的工作電流、內(nèi)部連線的電阻、輸入與三態(tài)電 驅(qū)動(dòng)器上的拉或下拉電阻。在易失性技術(shù)中,保持編程信息也需一定的靜態(tài)功率??谷蹟嗍且环N非易失性技術(shù),因此信息存儲(chǔ)不消耗靜態(tài)電流。
下面介紹幾種降低靜態(tài)功耗的設(shè)計(jì)方法:
·驅(qū)動(dòng)輸入應(yīng)有充分的電壓電平,因而所有晶體管都是完全通導(dǎo)或關(guān)閉的。
·由于I/O線上的上拉或下拉電阻要消耗一定的電流,因此盡量避免使用這些電阻。
·少用驅(qū)動(dòng)電阻或雙極晶體管,這些器件需維持一個(gè)恒定電流,從而增加了靜態(tài)電流。
·將時(shí)鐘引腳按參數(shù)表推薦條件連接至低電平。懸空的時(shí)鐘輸入會(huì)大大增加靜態(tài)電流。
·在將設(shè)計(jì)劃分為多個(gè)器件時(shí),減少器件間I/O的使用。
eX器件LP方式引腳的使用
有時(shí)用戶很難阻止時(shí)鐘進(jìn)入器件。在此場(chǎng)合,用戶可使用與CLKA或CLKA相鄰的正常輸入引腳并在設(shè)計(jì)中加進(jìn)CLKINT。這樣,時(shí)鐘將通過(guò)靠近時(shí)鐘引腳的正常輸入進(jìn)入器件,再通過(guò)CLKINT向器件提供時(shí)鐘資源。
采用這種輸入電路后,由于常規(guī)I/O是三態(tài)的,因此用戶不必?fù)?dān)心時(shí)鐘進(jìn)入器件。當(dāng)然,增加一級(jí)門(mén)電路會(huì)產(chǎn)生0.6ns的較大時(shí)鐘延時(shí),幸好這在多數(shù)低功率設(shè)計(jì)中是可以接受的。注意應(yīng)將與CLKINT緩沖器相關(guān)的CLKA或CLKB引腳接地。
此外還要注意,CLKINT只可用作連線時(shí)鐘,HCLK并不具備將內(nèi)部走線網(wǎng)連接到HCLK的能力,因而HCLK資源不能被常規(guī)輸入驅(qū)動(dòng)。換句話說(shuō),如果使用LP引腳就不能使用HCLK;使用HCLK時(shí)就應(yīng)在外部截?cái)鄷r(shí)鐘信號(hào)。
降低動(dòng)態(tài)功耗
動(dòng) 態(tài)功耗是在時(shí)鐘工作且輸入正在開(kāi)關(guān)時(shí)的功耗。對(duì)CMOS電路,動(dòng)態(tài)功耗基本上確定了總功耗。動(dòng)態(tài)功耗包括幾個(gè)成分,主要是電容負(fù)載充電與放電(內(nèi)部與 I/O)以及短路電流。多數(shù)動(dòng)態(tài)功率是內(nèi)部或外部電容向器件充、放電消耗的。如果器件驅(qū)動(dòng)多個(gè)I/O負(fù)載,大量的動(dòng)態(tài)電流構(gòu)成總功耗的主要部分。
對(duì)設(shè)計(jì)中給定的驅(qū)動(dòng)器,動(dòng)態(tài)功耗由下式計(jì)算
p=CL×V 2 DD×f
式中,CL是電容負(fù)載,VDD是電源電壓,f則是開(kāi)關(guān)頻率??偣氖敲總€(gè)驅(qū)動(dòng)器功耗之總和。
由于VDD是固定的,降低內(nèi)部功耗就要降低平均邏輯開(kāi)關(guān)頻率,減少每個(gè)時(shí)鐘沿處的邏輯開(kāi)關(guān)總數(shù)、減少連線網(wǎng)絡(luò),特別是高頻信號(hào)連線網(wǎng)絡(luò)中的電容值。對(duì)低功率設(shè)計(jì),需要從系統(tǒng)至工藝的每個(gè)設(shè)計(jì)級(jí)別中采取相應(yīng)預(yù)防措施,級(jí)別越高,效果越好。
[page]
四、減少開(kāi)關(guān)活動(dòng)量的設(shè)計(jì)方法
減少開(kāi)關(guān)動(dòng)作可在設(shè)計(jì)流程中的各個(gè)級(jí)別加以控制。當(dāng)然,在設(shè)計(jì)周期最初階段的結(jié)構(gòu)確定影響最大。設(shè)計(jì)者應(yīng)統(tǒng)盤(pán)考慮時(shí)鐘門(mén)控、總線時(shí)分復(fù)用、減少毛刺、使用功率低的數(shù)據(jù)通路元件、減少高開(kāi)關(guān)信號(hào)的邏輯電平等。下面敘述某些常用的技巧。
時(shí)鐘門(mén)控
這 是最廣泛使用的方法,即在器件末使用時(shí)截?cái)鄷r(shí)鐘來(lái)降低功耗。然而正確地截?cái)鄷r(shí)鐘十分重要。門(mén)控信號(hào)與門(mén)控邏輯應(yīng)正確地設(shè)計(jì),以消除時(shí)鐘線上的任何毛刺。再 者,門(mén)控邏輯會(huì)增加時(shí)鐘的延時(shí),影響建立時(shí)間與保持時(shí)間。由于抗熔斷是一種極快速的技術(shù),引入的延時(shí)很小且容易控制。在使用時(shí)鐘門(mén)控時(shí),用戶應(yīng)仔細(xì)地安置 門(mén)控邏輯,將時(shí)鐘網(wǎng)絡(luò)的延時(shí)降低到最小限度。典型的門(mén)控邏輯如圖3所示。
防護(hù)技巧
這 是一種在塊輸出不用時(shí)防止輸入信號(hào)使塊開(kāi)關(guān)工作的技巧。例如考慮一個(gè)乘法器,它的輸出僅在某些特定條件下才使用。在此場(chǎng)合可增添一個(gè)鎖存器,這樣每當(dāng)輸出 不用時(shí),乘法器的輸入將阻止不必要的開(kāi)關(guān)動(dòng)作帶入乘法器(圖4)。一個(gè)鎖存器只需一個(gè)組合單元,并不占用過(guò)多芯片面積。
總線復(fù)用
高 密度設(shè)計(jì)的布局必須留有空地并相當(dāng)?shù)卣归_(kāi),才可完成,這便導(dǎo)致連線長(zhǎng),每個(gè)線上開(kāi)關(guān)多,這些因素產(chǎn)生不良的時(shí)序結(jié)果并增加了功耗。此外,塊中的邏輯趨向于 分類(lèi)集結(jié)在一起,總線跨越不同塊時(shí)需走過(guò)較長(zhǎng)的距離。在一個(gè)設(shè)計(jì)中采用時(shí)分復(fù)用寬總線技術(shù),可減少總線的數(shù)量,有利于時(shí)序和功耗。再者,在DSP設(shè)計(jì)中, 數(shù)據(jù)是相關(guān)的,這表明大多數(shù)數(shù)據(jù)位并未改變狀態(tài)。攜帶相關(guān)數(shù)據(jù)的總線應(yīng)盡量復(fù)用在一起,進(jìn)一步減少M(fèi)UX、DEMUX邏輯中的開(kāi)關(guān)活動(dòng)(圖5)。
減少毛刺與流水作業(yè)
毛 刺是信號(hào)趨于穩(wěn)定前不必要的開(kāi)關(guān)動(dòng)作。每個(gè)時(shí)鐘沿改變了寄存器間組合邏輯的輸入。對(duì)每個(gè)節(jié)點(diǎn)而言,不同的輸入路徑有不同的延時(shí),它將多次改變狀態(tài)。節(jié)點(diǎn)上 的毛刺與該節(jié)點(diǎn)的邏輯深度,也就是節(jié)點(diǎn)至最初輸入的邏輯門(mén)個(gè)數(shù)有關(guān)。到達(dá)節(jié)點(diǎn)的邏輯錐體越深、越寬,毛刺也越多。降低邏輯深度,減少邏輯錐體的開(kāi)關(guān)輸入可 減少這類(lèi)毛剌。流水線、時(shí)序驅(qū)動(dòng)合成以及邏輯單元的合理映射能減少邏輯級(jí)的數(shù)量。
流水線是又一種技巧,它在很長(zhǎng)組合路徑的中點(diǎn)引入寄存 器。寄存器會(huì)增加等待時(shí)間,卻能增加速度,減少邏輯級(jí)。引入附加寄存器增加了一定的功耗,然而能極大地減少毛剌。例如,一個(gè)用ACTGEN生成的流水線 16×16位不帶符號(hào)乘法器所消耗的功率比未使用流水線的同樣器件少。
降低頻繁開(kāi)關(guān)轉(zhuǎn)換信號(hào)的邏輯深度
重新安排“if-else”表達(dá)式,用戶可將毛刺或快變化信號(hào)移至邏輯錐體的后部。這樣既減少開(kāi)關(guān)動(dòng)作的傳播,又降低了功耗。在合成時(shí),合成工具總是試圖降低高開(kāi)關(guān)概率輸入信號(hào)的邏輯級(jí),當(dāng)輸入具有同等開(kāi)關(guān)概率時(shí),最好采用平衡樹(shù)來(lái)合成邏輯。
選擇功率低的數(shù)據(jù)通路元件
不 同的數(shù)據(jù)通路元件對(duì)功耗產(chǎn)生不同的影響。例如,脈動(dòng)進(jìn)位具有少扇出,從而減少了邏輯面積,降低了功耗;然而它又使用了深開(kāi)關(guān)傳播,因此就有一個(gè)利弊權(quán)衡, 折衷考慮。譯碼器通常是重負(fù)荷的,向它提供一個(gè)使能信號(hào)可在譯碼器不使用時(shí)防止輸出的不必要開(kāi)關(guān)動(dòng)作。對(duì)計(jì)數(shù)器,Gray計(jì)數(shù)器具有最低開(kāi)關(guān)率,應(yīng)經(jīng)常使 用。對(duì)內(nèi)部存儲(chǔ)器尋址,也應(yīng)使用Gray尋址。
狀態(tài)機(jī)編碼
狀態(tài)機(jī)在傳統(tǒng)上是按二進(jìn)制 編碼的。然而采用Gray編碼,相鄰狀態(tài)可減少瞬變的次數(shù)。有時(shí)不可能在所有狀態(tài)中使用Gray編碼,則應(yīng)在狀態(tài)矢量中增加觸發(fā)器的數(shù)量以減少開(kāi)關(guān)的次 數(shù)。另一種方法是使用one-hot編碼,雖然該編碼使用的觸發(fā)器較多,即可減少組合邏輯的使用,在帶多個(gè)輸出且每個(gè)輸出是幾個(gè)狀態(tài)的函數(shù)的狀態(tài)機(jī)中更是 如此。根據(jù)狀態(tài)機(jī)的形式,設(shè)計(jì)者可在Gray、One-hot或二進(jìn)制間進(jìn)行選擇。
使用異步邏輯
雖 然并不經(jīng)常推薦使用異步邏輯,有時(shí)它也能降低功耗。一個(gè)例子是前文已提及的時(shí)鐘門(mén)控。時(shí)鐘大約消耗30%的總動(dòng)態(tài)功率。在eX、SX/SX-A系列中,每 個(gè)序列元件具有連線時(shí)鐘的時(shí)鐘選擇邏輯、一個(gè)硬連時(shí)鐘(HCLK)或常規(guī)連線資源。對(duì)每個(gè)已使用的觸發(fā)器,它的時(shí)鐘選擇邏輯以時(shí)鐘速率開(kāi)關(guān)。減少時(shí)鐘輸入 開(kāi)關(guān)有助于降低功耗。例如一個(gè)異步二進(jìn)制計(jì)數(shù)器的功耗僅為同步計(jì)數(shù)器的一半。當(dāng)然,異步邏輯會(huì)帶來(lái)諸如競(jìng)爭(zhēng)狀態(tài),保持時(shí)間出錯(cuò)的時(shí)序問(wèn)題。因此使用異步邏 輯時(shí)特別推薦運(yùn)行極小-極大條件下的時(shí)序模擬法。
降低時(shí)鐘速率
雖然時(shí)鐘速率是固定 的,有時(shí)也可采用低速并行而不是高速串行的方案。上文已提及,每個(gè)觸發(fā)器都有相應(yīng)的時(shí)鐘選擇邏輯,時(shí)鐘切耗占總功耗的很大一部分。任何旨在減少時(shí)鐘開(kāi)關(guān)動(dòng) 作的措施都有助于降低功耗。由于Actel的模塊和連線結(jié)構(gòu)具有低功率特片,使用附加邏輯模塊來(lái)補(bǔ)償較低時(shí)鐘速率還是能節(jié)省功率的。
相關(guān)閱讀:
【原創(chuàng)】初學(xué)者實(shí)用:數(shù)電和FPGA中常用觸發(fā)器的介紹
專(zhuān)家教你如何設(shè)計(jì)高級(jí)FPGA時(shí)鐘域
實(shí)用技術(shù):利用FPGA技術(shù)設(shè)計(jì)設(shè)計(jì)步進(jìn)電機(jī)系統(tǒng)