(一)低功耗設計目的與功耗的類型

一、低功耗設計的目的

1.便攜性設備等需求

  電子產品在我們生活中扮演了極其重要的作用,便攜性的電子設備便是其中一種。便攜性設備需要電池供電、需要消耗電池的能量。在同等電能提供下,低功耗設計的產品就能夠工作更長的時間。時間的就是生命,因此低功耗設計是很重要的。便攜性的設備需要低功耗設備,比如說手機,如果充電兩小時,通話5分鐘,這誰還買你的手機...

?

2.可靠性與性能的影響

  設備消耗電能,會產生熱量;消耗的能量越多,產生的熱量越多。發熱越嚴重,熱噪聲越大,就會影響器件的正常工作,導致電路不能正常工作。發熱量的增加,可能會使工作在1G下的電路,只能工作在500M,這就影響了速度,這最常見的就是手機的發熱了,手機發熱之后,便感覺卡卡的。

?

3.成本的影響

  如果不注意進行低功耗設計,那就可能導致后期的成本增加,從而導致整個系統的成本增加。例如,不進行低功耗設計,發熱量就可能增加,在封裝的時候,就需要考慮怎么給你這個芯片進行散熱,從而增加了封裝的散熱成本。再比如,在進行系統組裝的時候,如果那你的芯片功耗過大,就需要考慮在系統外給你進行散熱,比如說添加一個風扇,發熱很嚴重的甚至可以給你進行液體降溫。這樣子就在系統組裝上面增加了組裝成本。因此在設計初始進行低功耗設計是很重要的。

?

  ······

  當然,除了上面那三點之外,還有許多要進行低功耗設計原因,這里列出三點,主要是為了說明低功耗設計是以后的數字IC發展趨勢之一,我們要注重低功耗設計。

?

?

二、功耗的構成/類型

  本小節主要一方面介紹一下功耗的構成,一方面介紹一下工藝庫中的功耗模型。功耗的構成可以從兩個角度來描述,一個是從功耗種類方面,另一個是從系統結構方面。我們在設計過程中,討論比較多的往往是從功耗角度方面;工藝庫中的功耗模型主要是結合工藝庫來對功耗種類進行一些具體的、補充式的講解。下面我們就來看看功耗的工程吧。

1.功耗的構成——按類型分

  低功耗按照類型分類呢,其構成主要有動態功耗、靜態功耗、浪涌功耗這三種。在這第一小點我主要做一些簡要的介紹,在后面的第三小點我將結合工藝庫進行介紹。

  (1)動態功耗

  動態功耗包括:開關功耗或者稱為翻轉功耗、短路功耗或者稱為內部功耗。

①開關功耗

  在數字CMOS電路中,對負載電容進行充放電時消耗的功耗,比如對于下面的CMOS非門中:

?                

當Vin = 0時,上面的PMOS導通,下面的NMOS截止;VDD對負載電容Cload進行充電,充電完成后,Vout的電平為高電平。

當Vin = 1時,上面的PMOS截止,下面的NMOS導通,負載電容通過NMOS進行放電,放電完成后,Vout的電平為低電平。

這樣一開一閉的變化,電源的充放電,就形成了開關功耗,開關功耗Psitch的計算公式如下所示:

?                

  在上式中,VDD為供電電壓,Cload為后級電路等效的電容負載大小,Tr為輸入信號的翻轉率(關于翻轉率,我們在后面第三小點會進行介紹)。我們不必追究這個公式怎么得來,我知道這個功耗在這么計算就可以了,有興趣的話,也可以深入探討。

?

?

②短路功耗

  短路功耗也稱為內部功耗,短路功耗是因為在輸入信號進行翻轉時,信號的翻轉不可能瞬時完成,因此PMOS和NMOS不可能總是一個截止另外一個導通,總有那么一段時間是使PMOS和NMOS同時導通,那么從電源VDD到地VSS之間就有了通路,就形成了短路電流,如下面的反相器電路圖所示:

?    ? 

短路功耗Pshort的計算公式如下所示:

?              

?

上式中,Vdd為供電電壓,Tr為翻轉率,Qx為一次翻轉過程中從電源流到地的電荷量。

?

  由此我們可以找到,動態功耗主要有開關功耗和短路功耗;其中開關功耗在動態功耗中占大部分比例;從上面的兩個式子中我們可以看到,動態功耗主要跟電源的供電電壓、翻轉率、負載電容有關。

?

  (2)靜態功耗

在CMOS電路中,靜態功耗主要是漏電流引起的功耗,如下圖所示:

?            

漏電流有下面幾個部分組成:

  ·PN結反向電流I1(PN-junction Reverse Current)

  ·源極和漏極之間的亞閾值漏電流I2(Sub-threshold Current)

  ·柵極漏電流,包括柵極和漏極之間的感應漏電流I3(Gate Induced Drain Leakage)

  ·柵極和襯底之間的隧道漏電流I4(Gate Tunneling)

一般情況下,漏電流主要是指柵極泄漏電流和亞閾值電流(進入超深亞微米工藝之后,隧道漏電流成為主要電流之一),因此下面就簡單介紹一下這兩種電流。

柵極泄漏功耗:在柵極上加信號后(即柵壓),從柵到襯底之間存在電容,因此在柵襯之間就會存在有電流,由此就會存在功耗。

亞閾值電流:使柵極電壓低于導通閾值,仍會產生從FET漏極到源極的泄漏電流。此電流稱為亞閾值泄漏電流。在較狹窄的晶體管中,漏極和源極距離較近的情況下會產生亞閾值泄漏電流。晶體管越窄,泄漏電流越大。要降低亞閾值電流,可以使用高閾值的器件,還可以通過襯底偏置進行增加閾值電壓,這些屬于低功耗設計,我們在后面的低功耗設計中會進行講解。

靜態功耗的計算公式如下所示,Ipeak為泄漏電流:

?                

?

靜態功耗往往與工藝有關,我們在第三小節中將進一步進行討論。

?

  (3)浪涌功耗

  浪涌功耗是浪涌電流引起的功耗。浪涌電流是指開機或者喚醒的時候,器件流過的最大電流,因此浪涌電流也稱為啟動電流。一般情況下,浪涌功耗不是我們關注的地方,因此這里只是說明有這個功耗存在。

?

?

2.功耗的構成——按結構分

前面按照類型進行功耗分類,這里使用結構進行分類,也就是根據設備的結構或者設備的構成進行分類。(以SoC為例)主要分為:時鐘樹功耗、處理器功耗、存儲器功耗、其他邏輯和IP核功耗、輸入輸出pad功耗。在不同的應用、設備中,這些功耗的比例不一樣,但是時鐘樹、處理器、存儲器占了絕大部分功耗,這是需要說明的。

?

?

3.工藝庫中的功耗模型

前面介紹了功耗的構成,在這一小點中,將結合工藝庫進行闡述功耗(的構成),同時結合工藝庫舉例說明功耗的計算。

  (1)工藝庫中的功耗信息與計算

①開關功耗計算與相關庫信息

  我們從前面知道,開關功耗主要就是對輸出電容的充放電引起的,工藝庫中有開關功耗有關的信息,如下所示:

      

  開關功耗可以用開關能量和翻轉率來表示:P=E·Tr=C·v^2·T2,即開關能量E=CV^2。翻轉率我們后面會進行說明,至于放在后面介紹翻轉率,一個是即介紹即用,另外一個就是幫大家功耗的組成。

②內部功耗/短路功耗與相關庫信息

  內部功耗前面我們也介紹了一些,這里再啰嗦一下,短路功耗/內部功耗是單元(比如說反相器單元)的輸入從0到1或者從1到0的轉換過程中,單元內部P管和N管同時導通那個瞬間的功耗,這不是因為單元損壞而產生的短路功耗 。工藝庫中包含了單元的短路功耗,短路功耗由特性描述工具預先處理,存放在工藝庫的功耗查找表里。也就是說,我們可以通過工藝庫中內部功耗的相關參數,從而得到內部功耗。工藝庫中內部功耗信息如下所示:

        

單元的內部功耗與其轉換時間和輸出電容負載有關,根據輸入轉換時間和輸出電容的大小,在工藝庫中進行查表,得到上升功耗和下降功耗,然后再根據下面的公式進行計算得到總的內部功耗:

Pi=(上升功耗+下降功耗)·0.5·Tr

需要補充一下,工藝庫中比較精確的功耗模型,功耗與狀態有關,與路徑也有關,即state dependent path dependent,SDPD。

?

③靜態功耗/漏電功耗與相關庫信息

  靜態功耗/漏電功耗也是由特性工具預先處理,存放在工藝庫里面。工藝庫中的靜態功耗信息如下所示:

????      

靜態功耗跟單元的狀態有關,也就是輸入(或者說單元)在不同的狀態下,對于的功耗不一樣,通過狀態進行查表,就可以得到相應的靜態功耗了。

?

?

  (2)計算舉例

①翻轉率

  前面我們一直說翻轉率,那么翻轉率到底是什么呢?這里我們就來給大家介紹一下。

翻轉率(Toggle rate,Tr):單位時間內信號(包括時鐘、數據等等信號)的翻轉次數。如下圖所示:

?              

信號在40ns時間內跳轉了4次,翻轉率為:Tr = 4/4ns = 0.1GHz

?

②動態功耗計算舉例

  從前面中我們知道,在計算動態功耗的時候,我們才用到翻轉率。其中開關功耗的表達式為:

?                

?

內部功耗的表達式為:

        Pi=(上升功耗+下降功耗)·0.5·Tr

?

現在我們使用翻轉率和工藝庫的功耗信息來計算一下電路的動態功耗,電路如下圖所示:

?                      

工藝庫信息如下所示:

          

·動態功耗中的開關功耗計算:

?            

根據公式,我們可以直接計算出開關功耗為:29.403uw

?

·動態功耗中的短路功耗/內部功耗:

              Pi=(上升功耗+下降功耗)·0.5·Tr

根據公式,我們先要查找工藝庫得到上升(沿)功耗和下降(沿)功耗。輸入轉換時間為1.20000,輸出電容負載為0.270000,因此對于的上升功耗和下降功耗分別為:0.214947和0.094129。因此總的內部功耗為:

?            

?

·于是得到總的動態功耗為:

?            

?

?

③其他事項

·單元的功耗可能與狀態和路徑有關,下圖中:

?          

左圖是RAM單元,在讀狀態和寫狀態時,功率是不同的。此外,單元的功耗在不同的操作模式下也有不同的值。

右圖表示了輸入到輸出的不同路徑,路徑不一樣,功耗也是不一樣的。

·工藝庫有狀態和路徑不同時的功耗描述,即SDPD描述,如下圖所示:

          

我們也可以在EDA工具中使用report_lib ?slow ?-power?命令列出庫中的功耗信息:

?              

      第一講先整理到這里。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253930.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(轉)徹底學會使用epoll(一)——ET模式實現分析

注:之前寫過兩篇關于epoll實現的文章,但是感覺懂得了實現原理并不一定會使用,所以又決定寫這一系列文章,希望能夠對epoll有比較清楚的認識。是請大家轉載務必注明出處,算是對我勞動成果的一點點尊重吧。另外&#xff0…

MFC的消息映射有什么作用

絕對以下這三個解釋的比較簡潔,特此做個記錄!以感謝回答的這些人! MFC的消息映射有什么作用: Windows操作系統主要是有消息來處理的,每個程序都有自己的消息隊列,并且這些消息是有優先級的,也就是誰會先…

線性表的鏈式存儲結構

鏈式存儲結構的定義 1.概念定義: - n個結點離散分配 - 彼此通過指針相連 - 每個結點只有一個前驅結點和一個后繼結點 - 首結點沒有前驅結點,尾結點沒有后繼結點 2.專業術語 -首結點:第一個有有效數據的結點 -尾結點:最后一個有有效…

Apache 設置http跳轉至HTTPS訪問

為什么80%的碼農都做不了架構師&#xff1f;>>> <VirtualHost>...</VirtualHost> 中添加如下配置 <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://域名/$1 [R301,L] </IfModule> 轉…

JAVA線程概念

一、程序與進程 1、程序&#xff1a;一段靜態的代碼。 2、進程&#xff1a;程序的一次動態執行過程&#xff0c;它對應從代碼加載、執行到執行完畢的一個完整過程。 3、進程也稱任務&#xff0c;支持多個進程同時執行的OS就被稱為多進程OS或多任務OS。 二、進程與線程 在一…

(二)功耗的分析

前面學習了進行低功耗的目的個功耗的構成&#xff0c;今天就來分享一下功耗的分析。由于是面向數字IC前端設計的學習&#xff0c;所以這里的功耗分析是基于DC中的power compiler工具&#xff1b;更精確的功耗分析可以采用PT&#xff0c;關于PT的功耗分析可以查閱其他資料&#…

Hibernate創建hqll時報錯

Hibernate 問題,在執行Query session.createQuery(hql) 報錯誤 出錯截圖&#xff1a; 這條語句在java運行環境下&#xff0c;直接連數據庫不出錯&#xff0c;如果在hiberante,struts環境下就出錯 出錯原因&#xff1a;jar包沖突&#xff0c;struts2和hibernate框架中都有antlr包…

.NET Core TDD 前傳: 編寫易于測試的代碼 -- 全局狀態

第1篇: 講述了如何創造"縫". "縫"(seam)是需要知道的概念. 第2篇, 避免在構建對象時寫出不易測試的代碼. 第3篇, 依賴項和迪米特法則. 本文是第4篇, 將介紹全局狀態引起的問題. 全局狀態 全局狀態, 也可以叫做應用程序狀態, 它是一組變量, 這些變量維護著…

(三)系統與架構級低功耗設計

前面講解了使用EDA工具&#xff08;主要是power compiler&#xff09;進行功耗分析的流程&#xff0c;這里我們將介紹在數字IC中進行低功耗設計的方法&#xff0c;同時也結合EDA工具&#xff08;主要是Design Compiler&#xff09;如何實現。我們的講解的低功耗設計主要是自頂向…

python---統計列表中數字出現的次數

1 import collections 2 3 a [1,2,3,1,2,3,4,1,2,5,4,6,7,7,8,9,6,2,23,4,2,1,5,6,7,8,2] 4 b collections.Counter(a) 5 for c in b&#xff1a; print c,b[c] 轉載于:https://www.cnblogs.com/lxs1314/p/7236321.html

MFC入門(一)——MFC是一個編程框架

MFC (Microsoft Foundation Class Library)中的各種類結合起來構成了一個應用程序框架&#xff0c;它的目的就是讓程序員在此基礎上來建立Windows下的應用程序&#xff0c;這是一種相對SDK來說更為簡單的方法。因為總體上&#xff0c;MFC框架定義了應用程序的輪廓&#xff0c;并…

2.數據結構筆記學習--線性表基本操作

線性表的結構定義&#xff1a; 順序表的結構定義&#xff1a; typedef struct {int data[maxSize]; //存放順序表元素的數組&#xff0c;一般用 int A[maxSize];int length; //存放順序表的長度,一般用 int n; }SeqList; 單鏈表結點定義&#xff1a; typedef struct L…

(四)RTL級低功耗設計

前面介紹了系統級的低功耗設計&#xff0c;換句話說就是在系統級降低功耗可以考慮的方面。系統級的低功耗設計&#xff0c;主要是由系統級設計、具有豐富經驗的人員實現&#xff0c;雖然還輪不到我們設計&#xff0c;我們了解一下還是比較好的。我們前端設計人員的重點不在系統…

Unity3D 游戲前端開發技能樹(思維導圖)

如果做游戲也是一種游戲,那么這個游戲的自由度實在是太高了.(導圖源文件鏈接&#xff1a;http://pan.baidu.com/s/1eSHpH5o 密碼&#xff1a;qzl5) 最近要用思維導圖軟件Xmind把自己的思路好好捋一捋,算是溫故知新吧. 轉載于:https://www.cnblogs.com/qiaogaojian/p/6098962.ht…

js forEach

&#xfeff;&#xfeff;forEach()函數從頭到尾把數組遍歷一遍。有三個參數各自是&#xff1a;數組元素。元素的索引&#xff0c;數組本身&#xff08;假設是一個參數就是數組元素&#xff0c;也就是數組的值。var data[1,2,3,4,5,6]; var sum0; data.forEach(function(v){//當…

SQL Server 死鎖的告警監控

原文:SQL Server 死鎖的告警監控今天這篇文章總結一下如何監控SQL Server的死鎖&#xff0c;其實以前寫過MS SQL 監控錯誤日志的告警信息&#xff0c;這篇文章著重介紹如何監控數據庫的死鎖&#xff0c;當然這篇文章不分析死鎖產生的原因、以及如何解決死鎖。死鎖&#xff08;D…

關于web性能一些特性匯總

關于web性能一些特性匯總 DOMContentLoaded & load load事件是window對象上的事件。指的是網頁資源已經加載完畢&#xff08;包括但不限于DOM、圖片、音頻、腳本、插件資源以及CSS&#xff09;。 DOMContentLoaded事件是document對象上的事件。指的是DOM已經加載完畢。IE中…

(五)門級電路低功耗設計優化

&#xff08;1&#xff09;門級電路的功耗優化綜述 門級電路的功耗優化(Gate Level Power Optimization&#xff0c;簡稱GLPO)是從已經映射的門級網表開始&#xff0c;對設計進行功耗的優化以滿足功耗的約束&#xff0c;同時設計保持其性能&#xff0c;即滿足設計規則和時序的要…

SQL三大范式

第一范式(1NF) (必須有主鍵&#xff0c;列不可分) 數據庫表中的任何字段都是單一屬性的&#xff0c;不可再分 create table aa(id int,NameAge varchar(100)) insert aa values(1,無限-女 ) 沒有達到第一范式 create table aa(id int,name varcahr(10),age char(2)) insert aa …

Spring3向Spring4升級過程中quartz修改

為什么80%的碼農都做不了架構師&#xff1f;>>> 問題 nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.scheduling.quartz.CronTriggerBean] for bean with name ... 原因 org.spri…