徐永釗, 范麗仙, 曾志峰, 李洪濤
(東莞理工學院,廣東 東莞 523808)
作為用戶獲取信息以及人機交互的最佳渠道,視頻輸出是大多數電子設備必不可少的功能。而隨著電子技術的不斷發展,芯片制造工藝的不斷升級,芯片的集成度越來越高,視頻處理專用芯片或 SoC基本都集成了視頻輸出控制單元,用于直接驅動各種顯示屏。例如在手持式多媒體播放器中驅動小尺寸液晶屏,在液晶電視中驅動大尺寸顯示屏,或者以VESA標準通過VGA接口連接其他獨立的顯示設備。雖然上述幾種視頻輸出接口各不相同,輸出信號的分辨率也可能差別很大,但是其輸出控制功能基本都是一樣的。一是輸出信號的時序控制,包括數據、時鐘、使能信號和同步信號。另外是色彩空間轉換功能,這是因為一些設備的輸入圖像數據屬于YUV空間,例如數字電視中輸入的TS流解碼后得到的視頻數據等,需要轉換為RGB格式后再輸出。
在芯片設計過程中,除了考慮面積和工作頻率,芯片的功耗成為越來越重要的參數。因為芯片的集成度越高,單位面積所容納的邏輯門越多,單位面積所產生的熱功率也越大。為了保證芯片的正常工作溫度,低功耗設計成為了芯片設計流程中重要步驟之一[2-3]。另一方面,很多芯片應用于移動手持設備,需要低功耗設計來降低能耗,增強設備續航能力[4-5]。降低功耗的設計技術有:門控時鐘(Clock Gating)、多閾值電壓(Multi Threshold)、門控電源(Power Gating)、多工作電壓、動態頻率調整、動態電壓調整等[6]。
本文提出的通用視頻輸出控制器IP核實現了兼容多種視頻輸出時序的時序控制邏輯,實現了YUV轉RGB模塊,轉換標準包括ITU-R BT.601[7]、ITU-R BT.709[8]等。模塊的實現結構在第1節中詳細說明。然后在第2節對整個IP核進行了低功耗優化。在 RTL設計中進行多時鐘域劃分,手動加入模塊門控時鐘;在DC綜合過程中設置自動插入門控時鐘,加入功耗優化步驟。第3節給出了IP核的功耗分析和仿真結果。最后給出本設計的結論。
總體模塊結構如圖1所示,整個IP核主要分為3部分。寄存器模塊(Register)用于存儲IP核的配置數據,包括YUV轉 RGB的系數,輸出圖像的寬度和高度,同步信號持續長度,消隱期寬度等。寄存器的外部訪問接口為AMBA總線的APB接口。色彩空間轉換模塊(YUV2RGB)根據寄存器模塊給出的轉換系數完成色彩空間轉換。驅動時序發生模塊(DTG)主要是根據寄存器模塊的時序標準產生輸出控制時序,同時輸出YUV2RGB模塊的產生的數據。

圖1 IP核模塊結構
色彩空間轉換模塊本質是 3維數據的線性變換,線性變換矩陣是可配置的,由寄存器模塊給出,因此模塊可以支持多種標準的色彩空間轉換。模塊默認配置支持的是ITU-R BT.601標準,轉換矩陣由下式給出:

如果要支持ITU-R BT.709標準,則系數矩陣為:

如果輸入數據已經是 RGB空間數據,則需要將變換矩陣配置為3階單位陣。
根據YUV到RGB空間變換矩陣的形式,模塊采用4個整數乘法器實現,結構上采用4級流水線設計,使得模塊數據吞吐速率達到工作時鐘頻率。
驅動時序發生模塊需要產生圖 2所示的各個信號,用以支持VGA輸出、LVDS輸出等。圖中PCLK是像素時鐘,和模塊工作時鐘相同。Video表示輸出視頻數據。Blank/EN信號在VESA標準中表示消隱信號,低電平有效;在LVDS輸出時表示數據有效信號,高電平有效。雖然此信號在不同的標準有不同的含義,但時序是相同的,即高電平時對應輸出視頻數據有效,低電平時對應輸出視頻數據無效。HSync和VSync分別是行同步和場同步信號,這2個信號在VESA[9]標準中定義,這里不再詳述。由圖 2可知,各控制信號的產生可以通過計數器對PCLK或HSync計數實現。驅動時序發生器主要由一個像素計數器和一個行計數器實現。各信號的狀態由計數器值與寄存器模塊中的預設值進行比較得出。

圖2 驅動時序發生器輸出的各信號的時序
芯片的功耗主要由靜態功耗和動態功耗組成。其中靜態功耗又稱為漏電流功耗,是 CMOS電路的穩定態功耗。降低靜態功耗的方法主要是工藝相關的方法,因此在 IP軟核的設計中意義不大[10]。動態功耗包括內部功耗和開關功耗,由下式給出:

式中第一項是內部功耗,表示電路單元輸入發生變化而輸出不變時消耗的功率。第二項是開關功耗,表示電路單元發生變化而輸出也變化時消耗的功率。其中sct表示短路電流持續時間;perkI 是內部開關電流;effC 為有效充電電容;Vdd為電源電壓; fclk是工作時鐘頻率。
由動態功耗的表達式可知,減小上述任一參數都可以實現降低動態功耗的目的。由于其中電源電壓、充電電容、開關電流這3個參數都和芯片所采用的制造工藝有關,因此本設計主要通過降低工作頻率來降低功耗。
首先我們分析 IP核的整體結構,將其劃分多個工作時鐘域,慢速工作模塊采用慢速時鐘。圖 3是重新劃分時鐘域后的系統結構圖。色彩空間轉換模塊YUV2RGB工作在像素時鐘域,時鐘信號為 pclk,是整個模塊頻率最高的時鐘域。寄存器模塊則工作在APB總線的時鐘域,APB總線是AMBA總線協議中定義的低速總線。驅動時序發生器(DTG)中由于行同步信號和場同步信號的工作速度相差太大,因此分開為2個時鐘域來設計。其中行同步信號產生模塊(HS)的工作時鐘由像素時鐘四分頻得到,場同步信號產生模塊(VS)則使用行同步信號HSync作為工作時鐘。這樣整個IP核就分為4個時鐘域,其中pclk、pclk_div4、HSync是相關時鐘。驅動時序發生器的工作時鐘被大大降低了。

圖3 IP核時鐘域劃分
劃分上述時鐘域之后,系統工作頻率已經有所降低。但是在寄存器電路設計中,就算寄存器數據輸入端不發生變化,時鐘信號的翻轉也會產生動態功耗。因此如果某個模塊在某種條件下不需要輸出,或者某寄存器的輸入在某種條件下等于輸出時,可以禁止輸入時鐘的翻轉,也就相當于式(1)中的頻率參數被設置為0,從而降低系統動態功耗。
模塊的時鐘門控可以通過手動添加[11]。對于設計的視頻輸出控制器,其中的色彩空間轉換模塊只需要在輸出視頻數據有效的時候工作,也就是在Blank信號為高電平的時候正常工作,其余時間YUV轉RGB的數據是無效的。因此選擇Blank信號作為YUV2RGB模塊的時鐘門控使能信號,門控時鐘的Verilog代碼如下:
assign yuv2rgb_clk = blank & pclk;
針對設計中的單個寄存器,由于 IP核中使用的寄存器非常多,手動添加門控時鐘電路將會是復雜而繁瑣的工作,因此可以使用綜合工具檢測電路功能,自動添加門控時鐘電路。
使用綜合工具自動添加門控時鐘電路第1步要指定使用的門控時鐘單元。門控時鐘單元可以是離散的也可以是集成的。離散時鐘單元由綜合工具用工藝庫提供的邏輯門或者鎖存器組合而成,里面包含了多個工藝庫單元。集成的門控時鐘單元則是工藝庫提供商設計好并集成在工藝庫中的一個獨立單元。Design Compiler[1]中指定門控時鐘單元的命令為 set_clock_gating_style,例如指定使用工藝庫中的鎖存器的命令如下:
set_clock_gating_style -sequential_cell latch
指定門控時鐘單元后,第2步分析整個IP核的所有寄存器,在可以添加門控的寄存器輸入時鐘上添加門控時鐘單元。插入門控時鐘的命令為:
insert_clock_gating -global
global參數指示綜合工具添加門控時鐘時可以穿越層次結構,盡可能多的復用門控時鐘單元,減小芯片的面積和功耗。因為我們在前面手動添加了一個與門作為門控時鐘單元,為了避免與門邏輯的潛在毛刺的產生,可以通過以下命令取代手工門控時鐘,這是自動添加門控時鐘單元的第3步。
replace_clock_gates
第 4步使用 uniquify命令,完成設計的實例唯一化操作,方便后續的布局布線工作。最后是報告插入門控時鐘電路的結果report_clock_gating。
完成上述 5步設置之后,后面就只需要執行普通的綜合工作,綜合過程中 EDA工具會自動識別門控信號,在合適的位置加入門控時鐘邏輯。表一給出了 Design Compiler自動插入門控時鐘電路的報告。

表1 門控時鐘綜合結果
低功耗設計的具體流程如圖 4所示。設計流程使用Mentor公司的 ModelSim進行仿真,用 Synopsys公司的Design Compiler進行綜合和最終的功耗分析,用Cadence公司的Encounter完成綜合網表的布局布線。
IP核的設計從RTL設計開始,這一步還需要進行時鐘域劃分以及手動添加門控時鐘電路。然后對設計好的RTL代碼進行功能仿真,修改其不符合功能描述的部分。功能仿真正確之后,將RTL代碼綜合成門級網表,即布局布線前網表。布局布線前網表再輸入到 Encounter中完成布局布線,生成布局布線后網表和SPEF (Standard Parasitic Exchange Format)文件。SPEF文件中包含了工程中所有線網的電容電阻參數。
得到的布局布線后網表之后,通過對此網表進行仿真,我們可以得到SAIF (Switching Activity Interchange Format)文件。SAIF文件包含了網表中各線網狀態轉換率的統計結果。這里仿真使用的testbench文件可由功能仿真的testbench修改而來,只要在文件中加入統計狀態轉換率的 Verilog系統任務,包括$read_lib_saif(),$set_toggle_region(),$toggle_start(),$toggle_stop(),$toggle_report()。
最后,將前面生成的SAIF文件,SPEF文件,布局布線后網表,一起輸入到Design Compiler中進行功耗分析,得出整個設計的功耗分析報表。
本設計采用的工藝庫是SMIC 0.18微米工藝庫。為了使生成的SAIF文件所記錄的信號狀態轉換率更為準確,仿真使用的 testbench將視頻輸出控制器配置成 VESA標準的800x600@72Hz格式,像素時鐘為50 MHz。整個仿真過程輸出3幀視頻圖像。為了便于比較,我們還分析了沒有進行任何功耗優化的設計的功耗,也分析了不手動添加門控,只使用EDA工具自動添加門控的設計的功耗。表2給出了所有的功耗分析結果。

圖4 功耗分析流程

表2 功耗分析結果
由上表的結果可知,功耗優化后的設計比沒有任何功耗優化的設計降低了26.1%的功耗。而如果不對色彩空間轉換模塊手動加門控時鐘電路,僅使用DC進行自動添加門控時鐘單元,功耗的優化只有7.0%。這從表一中自動添加門控時鐘的寄存器數只占3.12%也可以得到側面驗證。上表還說明不能忽視手動優化代碼的作用,特別是根據模塊功能來對整個模塊進行門控的時候。EDA工具只是機械地檢查每一行代碼,給單個寄存器添加時鐘門控。
本文設計了一種通用視頻輸出控制器IP核。針對控制器的功耗,考慮到時鐘頻率是動態功耗的重要因子,本文通過合理劃分時鐘域以降低部分模塊的工作頻率,并采用門控時鐘技術對IP核進行功耗優化。最后的功耗分析結果表明,針對時鐘頻率進行前端功耗優化可以降低功耗20%以上。此控制器支持VESA標準視頻輸出,支持電視面板LVDS接口,可集成在各種視頻處理專用芯片或SoC中,基于其良好的低功耗特性,尤其適用于移動手持設備的顯示控制。除了針對時鐘頻率進行功耗優化,在后端設計時還可以根據工藝庫給整個IP核添加門控電源,當系統待機或不需要視頻輸出時關閉整個模塊的電源,從而達到最大限度降低模塊的功耗。
[1]Synopsys Inc. Synopsys Design Compiler User Guide[M]. Version Z. Mountain View:Synopsys Inc., 2007:307-312.
[2]FLYNN David, AITKEN Robert, GIBBONS Alan, SHI KaiJian. Low Power Methodology Manual For System on Chip Design[M]. 1st Edition. New York: Springer. 2007:304-310.
[3]徐永釗,田祖偉,陽若寧,等. SoC門級功耗分析方法[J].通信技術,2011,44(02):146-148.
[4]劉成安,孫濤,王銀玲.基于nRF24Z1的短距離無線音頻傳輸系統設計[J].通信技術,2008,41(11):50-53.
[5]孟惠霞,呂書勇.基于 ARM的 SD卡文件系統設計[J].通信技術,2009,42(07):135-150.
[6]CILETTI M D. Advanced Digital Design with the Verilog HDL [M].1st Edition. New York: Prentice Hall, 2002:1008-1015.
[7]ITU-R BT.601-6—2007. Studio Encoding Parameters of Digital Television for Standard 4:3 and Wide-screen 16:9 Aspect Ratios[S].
[8]ITU-R BT.709-5—2002. Parameter Values for HDTV Standards for Production and International Programme Exchange[S].
[9]VESA Standard DMT 1.0—2007. Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)Standard[S].
[10]HUANG Zhijun, ERCEGOVAC M D. High-performace low-power left-to-right array multipiler design[C]. IEEE Transaction on Computers. IEEE Computer Society, 2005: 272-283.
[11]羅旻, 楊波, 高德遠, 等. 寄存器傳輸級低功耗設計方法[J]. 小型微型計算機系統, 2004, 25(07):1207-1211.