史興強,范學仕
(中科芯集成電路股份有限公司,江蘇無錫214072)
隨著生產(chǎn)工藝的不斷進步,集成電路一直按照摩爾定律高速發(fā)展[1]。芯片規(guī)模由最初的中小規(guī)模集成電路到大規(guī)模、超大規(guī)模集成電路,直到如今的SoC,芯片尺寸日益縮小,復雜程度進一步提高,在消費電子、工業(yè)控制、醫(yī)療設備以及人工智能等領域得到廣泛應用[2]。功耗一直是推動集成電路工藝飛速發(fā)展的重要動因,也是制約摩爾定律進一步延伸的關鍵因素之一[3]。電源需要約10年才能使性能翻倍,完全趕不上摩爾定律18~24個月芯片性能翻倍的速度[4],之間的差距使得低功耗設計技術顯得愈發(fā)重要。
一般的功耗管理方法主要包括門控時鐘、門控電源、多電壓、動態(tài)電壓頻率調(diào)節(jié)、多閾值電壓等 。門控電源技術是根據(jù)電路的工作狀態(tài),動態(tài)地控制電路的開關來降低功耗,成本較高且實現(xiàn)困難[7];多電壓和多閾值電壓技術則類似,都是根據(jù)電路性能的要求分配相關的電壓或者電壓閾值,降低非關鍵路徑的功耗,成本高且效果不理想[8]。
為降低SoC功耗,文章根據(jù)芯片的不同工作場合,在正常運行模式的基礎上增加睡眠、停止和待機3種低功耗模式,同時增加不同電壓域劃分設計,并設計時鐘管理控制技術,在保證芯片性能的前提下實現(xiàn)了芯片不同模式的自由切換,達到降低芯片功耗的目的,并在實際樣片中得到驗證。
由于硬件設計流程的不同層次特點不同,低功耗設計也各不相同。
(1)系統(tǒng)級:基本思想是在部分模塊空閑后立即關閉,主要研究如何進行系統(tǒng)劃分和狀態(tài)預測[9];
(2)體系結構級:主要方法是動態(tài)功耗管理,包括動態(tài)電壓管理、動態(tài)頻率管理、低功耗調(diào)度策略和軟硬件劃分等[10~11];
(3)算法級:通過選擇適當?shù)乃惴p小跳變率,通過軟硬件的合理劃分降低電路功耗[12];
(4)寄存器傳輸級:主要有門控時鐘、有限狀態(tài)機編碼優(yōu)化、通路平衡、總線編碼優(yōu)化等方法;
(5)邏輯門級:主要出發(fā)點是減小負載電容,調(diào)整晶體管尺寸,選擇功耗較低的邏輯器件,并盡可能優(yōu)化邏輯結構;
(6)晶體管級:主要是在功耗、面積、性能之間進行折衷,通過控制生產(chǎn)工藝來降低功耗,典型方法為閾值電壓控制法、電源門控制法等[13~14]。
文章重點介紹電壓域劃分、低功耗模式設計和時鐘管理技術3個方面的設計,以達到降低功耗的目的。
因動態(tài)功耗和電壓平方成正比,在同一個芯片上采用不同電源電壓供電,各功能模塊選擇能滿足自身速率要求的最低電源電壓供電,可以在最大限度內(nèi)既保證電路性能又降低整個芯片的功耗。在物理級低功耗設計中,可通過布圖實現(xiàn)多電壓技術。
在系統(tǒng)或電源復位以后,微控制器處于運行狀態(tài),當 CPU(Central Processing Unit,中央處理器)不需要繼續(xù)運行時,例如等待某個外部事件時,可以利用多種低功耗模式來節(jié)省功耗。根據(jù)最低電源消耗、最快速啟動時間和可用的喚醒源等條件,選定一個最佳的低功耗模式。文章設計了睡眠、停止和待機3種低功耗模式。
睡眠模式:內(nèi)核停止運行,所有外設包括內(nèi)核外設,如嵌套向量中斷控制器(Nested Vectored Interrupt Controller,NVIC)、系統(tǒng)時鐘(SysTick)等仍在運行。
停止模式:在保持SRAM和寄存器內(nèi)容不丟失的情況下,停止模式可以達到最低的電能消耗。在停止模式下,停止所有內(nèi)部1.5 V域的供電,鎖相環(huán)(Phase Locked Loop,PLL)、高速內(nèi)部時鐘(High Speed Internal Crystal,HSI) 的 RC振蕩器和高速外部時鐘(High Speed External Crystal,HSE)晶體振蕩器被關閉,調(diào)壓器可以被置于普通模式或低功耗模式。
待機模式:在待機模式下可以達到最低的電能消耗。內(nèi)部的電壓調(diào)節(jié)器關閉,所有內(nèi)部1.5 V域的供電被切斷;PLL、HSI的RC振蕩器和HSE晶體振蕩器被關閉;進入待機模式后SRAM和寄存器的內(nèi)容消失,但備份寄存器的內(nèi)容仍然保留,待機電路仍工作。
文章設計的時鐘管理技術主要是指在系統(tǒng)運行模式下,通過降低系統(tǒng)時鐘、關閉APB和AHB總線上未被使用的外設時鐘這兩種方式,并結合門控時鐘技術來降低功耗。
在運行模式下,通過對預分頻寄存器進行編程,可以降低任意一個系統(tǒng)時鐘(SYSCLK、HCLK、PCLK1、PCLK2)的速度。進入睡眠模式前,也可以利用預分頻器來降低外設的時鐘。同樣,任何時候都可以通過停止為外設和內(nèi)存提供時鐘來減少功耗。為了在睡眠模式下更多地減少功耗,可以在執(zhí)行進入睡眠模式指令前關閉所有外設時鐘,該操作可以通過對相關寄存器進行編程來實現(xiàn)。
門控時鐘是用于降低功耗最普遍有效的方式,即當系統(tǒng)某一部分處于空閑狀態(tài)時關閉其時鐘從而消除時鐘驅動的功耗。門控時鐘分3類:系統(tǒng)級門控時鐘、組合邏輯門控時鐘和時序邏輯門控時鐘。系統(tǒng)級門控時鐘為對整個模塊的時鐘進行開關控制,組合邏輯和時序邏輯門控時鐘是有選擇地停止時鐘輸入。這3種門控時鐘技術的應用對象和相應減少的開關活動量是不同的,加以合理利用可以全面降低寄存器的翻轉率,從而降低系統(tǒng)功耗。文章主要通過EDA工具直接在電路中實現(xiàn)門控結構。
芯片工作電壓(VDD)為2.0~3.6 V。通過內(nèi)置的電壓調(diào)節(jié)器提供所需的1.5 V電源。當電源VDD掉電后,通過VBAT腳為實時時鐘(Real Time Clock,RTC)和備份寄存器提供電源。各電壓域劃分如圖1所示。
圖1 電壓域劃分
VDDA域 :2.0~3.6 V, 主 要 包 括 模 數(shù) 轉 換 器(Analog-to-digital Converter,ADC)、溫度傳感器、復位模塊、PLL等模擬電路,使用ADC時VDDA不得小于2.4 V。
VDD域:2.0~3.6 V,主要包括IO邏輯、電壓調(diào)節(jié)器和1.5 V域的CPU、數(shù)字外設和存儲器。
VBAT域:1.8~3.6 V,備份域,主要包括備份電路、低速外部時鐘(Low Speed External Crystal,LSE)、RTC 等。
電壓調(diào)節(jié)器有3種操作模式:主模式、低功耗模式和關斷模式。主模式用于正常的運行操作,低功耗模式用于CPU的停止模式,關斷模式用于CPU的待機模式。復位后調(diào)節(jié)器始終處于工作狀態(tài),在待機模式下關閉處于高阻輸出。
進入睡眠模式,只有CPU停止,所有外設處于工作狀態(tài)并可在發(fā)生中斷/事件時喚醒CPU。通過執(zhí)行等待中斷(Wait for Interrupt,WFI)或等待事件(Wait for Event,WFE)指令進入睡眠模式,圖2所示為系統(tǒng)進入睡眠模式序列,根據(jù)內(nèi)核系統(tǒng)控制寄存器的SLEEPONEXIT位的值,文章提供了如下2種選擇睡眠模式的進入機制。
(1)SLEEP_NOW:SLEEPONEXIT 位被清除,當執(zhí)行WFI/WFE時,微控制器立即進入睡眠模式;
(2)SLEEP_ON_EXIT:SLEEPONEXIT被置位,系統(tǒng)從最低優(yōu)先級的中斷處理程序中退出時,微控制器就立即進入睡眠模式。
若執(zhí)行WFI指令進入睡眠模式,任意一個被NVIC響應的外設中斷都能將系統(tǒng)從睡眠模式喚醒;若執(zhí)行WFE指令進入睡眠模式,則一旦發(fā)生喚醒事件時,微處理器都將從睡眠模式退出。喚醒事件可以通過以下方式產(chǎn)生:
(1)在外設控制寄存器中使能一個中斷,而不是在NVIC中使能,并且在內(nèi)核控制寄存器中使能SEVONPEND位。當MCU從WFE中喚醒后,外設的中斷掛起位和外設的NVIC中斷通道掛起位(在NVIC中斷清除掛起寄存器中)必須被清除。
(2)配置一個外部或內(nèi)部的外部中斷事件控制器(External Interrupt/Event Controller,EXTI)線為事件模式。當MCU從WFE中喚醒后,因為與事件線對應的掛起位未被設置,不必清除外設的中斷掛起位或外設的NVIC中斷通道掛起位。
圖2 進入睡眠模式序列
在睡眠模式下,所有IO口都保持其在運行時的狀態(tài),通過事件喚醒睡眠模式所需時間最短,因為沒有時間損失在中斷的進入和退出上。
在深度睡眠模式的基礎之上,結合外設的時鐘控制機制,文章設計了停止模式,在停止模式下電壓調(diào)節(jié)器可運行在正?;蛘叩凸哪J健4藭r1.5 V域的所有時鐘都被停止,PLL、HSI和HSE RC振蕩器的功能被禁止,SRAM和寄存器的內(nèi)容被保留下來。
進入停止模式步驟如下:
(1)設置內(nèi)核系統(tǒng)控制寄存器中的SLEEPDEEP位;
(2)清除電源控制寄存器中的PDDS位,在SLEEPDEEP=1時,PDDS=1,微控制器進入待機模式;PDDS=0,微控制器進入停止模式;
(3)設置電源控制器中的LPDS為選擇進入停止模式時電壓調(diào)節(jié)器的工作模式,LPDS=1時電壓調(diào)節(jié)器進入低功耗模式,LPDS=0時處于運行模式;
(4)執(zhí)行WFI或者WFE指令進入停止模式。
在進入停止模式時,若Flash正在進行編程操作,直到對內(nèi)存的訪問完成,系統(tǒng)進入停止模式;若正在進行對APB的訪問,直到對APB的訪問完成,系統(tǒng)才進入停止模式。進入停止模式,可以通過對獨立的控制位進行編程,對獨立看門狗(Independent Watchdog,IWDG)、RTC、LSI和LSE進行操作。
退出停止模式步驟如下:
(1)若執(zhí)行WFI進入停止模式,設置任一外部中斷線為中斷模式;
(2)若執(zhí)行WFE進入停止模式,設置任一外部中斷線為事件模式。
在停止模式下,所有IO口都保持其在運行模式的狀態(tài),當從停止模式退出,HSI被選為系統(tǒng)時鐘。從停止模式退出,若電壓調(diào)節(jié)器處于低功耗狀態(tài),則退出時會有一段額外的啟動時間,若電壓調(diào)節(jié)器處于運行狀態(tài),則退出時啟動時間縮短,但功耗會增加。
待機模式可實現(xiàn)系統(tǒng)的最低功耗,該模式在內(nèi)核深度睡眠模式時關閉電壓調(diào)節(jié)器,整個1.5 V域被關斷,PLL、HSI和HSE斷電,SRAM和寄存器內(nèi)容丟失,只有備份寄存器和待機電路維持供電。
進入待機模式步驟如下:
(1)設置內(nèi)核系統(tǒng)控制寄存器中的SLEEPDEEP位;
(2)設置電源控制寄存器中的PDDS位;
(3)清除電源控制/狀態(tài)寄存器的WUF位;
(4)執(zhí)行WFI或者WFE指令進入待機模式。
進入待機模式,可以通過對獨立的控制位進行編程,IWDG、RTC、LSI和LSE進行操作。當一個外部復位(NRST引腳)、IWDG復位、WKUP引腳上的上升沿或RTC鬧鐘事件的上升沿發(fā)生時,微控制器從待機模式退出。從待機模式喚醒后,除了電源控制/狀態(tài)寄存器,所有寄存器被復位。喚醒后的代碼執(zhí)行等同于復位后的執(zhí)行。表1所示為3種低功耗模式的綜合說明,包括各自狀態(tài)以及進入和喚醒的方式。
表1 低功耗模式一覽表
圖3以某外設從停止模式喚醒HSI時鐘為例,說明文章的低功耗時鐘管理設計。具體流程如下:
(1)配置HSI作為系統(tǒng)時鐘源,使能相關外設配置,系統(tǒng)進入停止模式,停止HSI;
(2)進入停止模式后,系統(tǒng)時鐘切換狀態(tài)機將停留在LPW_Final_Sta(停止狀態(tài)),CORE_WORK為低,為停止模式,此時CPU時鐘關閉;
(3)在停止模式,外設檢測到相關信號跳變,發(fā)出start信號到HSI模塊,HSI模塊產(chǎn)生相關信號輸出到PMU喚醒LDO(HSI模塊和LDO模塊較復雜,圖3中并未畫出);
(4)等待LDO 1.5 V準備好信號,產(chǎn)生HSI使能信號,打開HSI;
(5)等待HSI時鐘穩(wěn)定,輸出HSI_RDY_CLK_SYS;
(6)出現(xiàn)HSI_RDY_CLK_SYS時鐘后,系統(tǒng)時鐘輸出,free_clk同時輸出,EXTI產(chǎn)生中斷輸出到MCU,至此,MCU被喚醒。
圖3 停止模式喚醒流程圖
本樣片為基于UMC 0.11 μm eFlash工藝線,自主開發(fā)設計的一款低功耗SoC芯片。采用ARM Cortex-M3內(nèi)核,最高可工作在72 MHz,包含128 kB的Flash存儲空間和20 kB的SRAM;內(nèi)部集成LDO、POR/PDR、PVD、HIS/HSE、LSI/LSE、PLL、ADC 等 模塊,包含 DMA、TIMER、USB、CAN、SPI、I2C、USART等外設通信接口。其顯微圖如圖4所示。
圖4 樣片顯微圖
為驗證文章設計的低功耗模式,同時對性能和功耗進行評估,文章搭建了SoC實驗平臺,集成了ARM公司Cortex-M3的32位低功耗處理器、AHB總線、Flash控制器、ISSI的64位某型Flash、SRAM及相關外設。圖5~7為低功耗模式進入與喚醒仿真時序圖。
圖5 睡眠模式進入與喚醒仿真時序圖
在圖5中,通過WFI進入睡眠模式,sleeping信號拉高,同時CPU時鐘hclk停止,而其余部分時鐘如GPIOB時鐘iopb_pclk依然工作;通過PB0模擬按鍵中斷,將CPU從睡眠模式喚醒。
圖6 停止模式進入與喚醒仿真時序圖
在圖6中,通過WFI進入停止模式,電壓調(diào)節(jié)器處于運行模式,進入停止模式后,sleeping和sleep_deep均拉高,所有1.5 V域時鐘關閉,RTC時鐘依然正常工作,由RTC計時,鬧鐘喚醒停止模式,系統(tǒng)恢復正常工作。
圖7 待機模式進入與喚醒仿真時序圖
在圖7中,通過WFI進入待機模式,電壓調(diào)節(jié)器關閉,進入待機模式后,sleeping和sleep_deep均拉高,所有1.5 V域時鐘關閉,RTC時鐘依然正常工作,由RTC計時,鬧鐘喚醒待機模式,系統(tǒng)恢復正常工作。
搭載文章設計的低功耗模式的SoC芯片,已完成樣品流片和測試,表2和表3所示為不同低功耗模式的實測功耗值。
表2 正常運行模式與睡眠模式功耗值表
表3 停止模式和待機模式功耗值表
從表2和表3中可以看出,芯片進入低功耗模式后,功耗顯著降低,在待機模式的功耗達到最低,符合預期結果,表明設計的正確合理性。
文章根據(jù)SoC芯片的不同工作場合,在正常運行模式的基礎上設計了睡眠、停止和待機3種低功耗模式,并詳細介紹了各種模式的特征、進入以及喚醒方式。針對不同的模式切換,設計了時鐘管理技術,實現(xiàn)了對不同模式下不同時鐘的控制。同時采用電壓域劃分方法,將整個芯片劃分為VDD、VDDA和VBAT3個電壓域,以降低系統(tǒng)功耗。仿真和實驗結果證明了設計的合理性,實測數(shù)據(jù)表明,睡眠模式最多降低59.1%的功耗,停止和待機模式降低了3~4個數(shù)量級。
[1]Kaushik Roy,Sharat Prasad.Low Power CMOS VLSI Circuit Design[M].New York:A Wiley Interscience Publication,2000:5-43.
[2]Hung W L,Link G M,et al.Temperature-aware Voltage Islands Architecting in System on Chip Design[C].IEEE International Conference on Computer Design:VLSI in Computer and Processors,2005:689-694.
[3]卜愛國.嵌入式系統(tǒng)動態(tài)低功耗設計策略的研究[D].南京:東南大學,2006:28.
[4]Chalamala B R.Portable Electronics and The Widening Gap[J].Proceedings of the IEEE,2007,95(11):2106-2107.
[5]儲著飛.低功耗SoC設計關鍵技術研究[D].寧波:寧波大學,2014:15.
[6]莫東杰,熊曉明.一種低功耗SoC的動態(tài)時鐘控制技術的應用[J].中國集成電路,2016,205(4):19-25.
[7]Zhiguo Y,Jinghe W.Low Power Design and Implementation for A SoC[C].IC SICT 2008,9thInternational Conference on IEEE,2008:2184-2187.
[8]Benini L,Bogliolo A.A Survey of Design Techniques for System-level Dynamic Power Management[C].IEEE Trans on VLSI,2000:299-316.
[9]Chandrakasan A P,Srivastava M B,et al.Energy Efficient Programmable Computation[C].Proceedings of International Conference on VLSI Design,Calcutta,India,1994:261-264.
[10]Ren Zhiyuan,krogh B,et al.Hierarchical Adaptive Dynamic Power Management[C].Design,Automation and Test in Europe Conference and Exhibition Volume,Paris,France,2004:136-141.
[11]Monhanty S P,Ranganathan N,et al.Data Path Scheduling Using Dynamic Frequency Clocking[C].IEEE Computer Society Annual Symposium on VLSI,Pittsburgh,Pennsylvania,2002:58-63.
[12]Lekatsas H,Henkel J,et al.Arithmetic Coding for Low Power Embedded System Design[C].Data Compression Conference,Snowbird,Utah,2000:430-439.
[13]Pant P,Vivek D,et al.Device Circuit Optimization for Minimal Energy and Power Consumption in CMOS Random Logic Networks[C].Design Automation Conference,Las Vegas,1997:403-408.
[14]Qi Wang,Vrudhula S.Algorithms for Minimizing Standby Power in Deep Sub-micrometer,Dual-Vt CMOS Circuits[J].Computer-Aided Design of Integrated Circuits and Systems,2002,21(3):306-318.