徐永釗, 范麗仙, 曾志峰, 李洪濤
(東莞理工學(xué)院,廣東 東莞 523808)
作為用戶獲取信息以及人機交互的最佳渠道,視頻輸出是大多數(shù)電子設(shè)備必不可少的功能。而隨著電子技術(shù)的不斷發(fā)展,芯片制造工藝的不斷升級,芯片的集成度越來越高,視頻處理專用芯片或 SoC基本都集成了視頻輸出控制單元,用于直接驅(qū)動各種顯示屏。例如在手持式多媒體播放器中驅(qū)動小尺寸液晶屏,在液晶電視中驅(qū)動大尺寸顯示屏,或者以VESA標(biāo)準(zhǔn)通過VGA接口連接其他獨立的顯示設(shè)備。雖然上述幾種視頻輸出接口各不相同,輸出信號的分辨率也可能差別很大,但是其輸出控制功能基本都是一樣的。一是輸出信號的時序控制,包括數(shù)據(jù)、時鐘、使能信號和同步信號。另外是色彩空間轉(zhuǎn)換功能,這是因為一些設(shè)備的輸入圖像數(shù)據(jù)屬于YUV空間,例如數(shù)字電視中輸入的TS流解碼后得到的視頻數(shù)據(jù)等,需要轉(zhuǎn)換為RGB格式后再輸出。
在芯片設(shè)計過程中,除了考慮面積和工作頻率,芯片的功耗成為越來越重要的參數(shù)。因為芯片的集成度越高,單位面積所容納的邏輯門越多,單位面積所產(chǎn)生的熱功率也越大。為了保證芯片的正常工作溫度,低功耗設(shè)計成為了芯片設(shè)計流程中重要步驟之一[2-3]。另一方面,很多芯片應(yīng)用于移動手持設(shè)備,需要低功耗設(shè)計來降低能耗,增強設(shè)備續(xù)航能力[4-5]。降低功耗的設(shè)計技術(shù)有:門控時鐘(Clock Gating)、多閾值電壓(Multi Threshold)、門控電源(Power Gating)、多工作電壓、動態(tài)頻率調(diào)整、動態(tài)電壓調(diào)整等[6]。
本文提出的通用視頻輸出控制器IP核實現(xiàn)了兼容多種視頻輸出時序的時序控制邏輯,實現(xiàn)了YUV轉(zhuǎn)RGB模塊,轉(zhuǎn)換標(biāo)準(zhǔn)包括ITU-R BT.601[7]、ITU-R BT.709[8]等。模塊的實現(xiàn)結(jié)構(gòu)在第1節(jié)中詳細(xì)說明。然后在第2節(jié)對整個IP核進(jìn)行了低功耗優(yōu)化。在 RTL設(shè)計中進(jìn)行多時鐘域劃分,手動加入模塊門控時鐘;在DC綜合過程中設(shè)置自動插入門控時鐘,加入功耗優(yōu)化步驟。第3節(jié)給出了IP核的功耗分析和仿真結(jié)果。最后給出本設(shè)計的結(jié)論。
總體模塊結(jié)構(gòu)如圖1所示,整個IP核主要分為3部分。寄存器模塊(Register)用于存儲IP核的配置數(shù)據(jù),包括YUV轉(zhuǎn) RGB的系數(shù),輸出圖像的寬度和高度,同步信號持續(xù)長度,消隱期寬度等。寄存器的外部訪問接口為AMBA總線的APB接口。色彩空間轉(zhuǎn)換模塊(YUV2RGB)根據(jù)寄存器模塊給出的轉(zhuǎn)換系數(shù)完成色彩空間轉(zhuǎn)換。驅(qū)動時序發(fā)生模塊(DTG)主要是根據(jù)寄存器模塊的時序標(biāo)準(zhǔn)產(chǎn)生輸出控制時序,同時輸出YUV2RGB模塊的產(chǎn)生的數(shù)據(jù)。
圖1 IP核模塊結(jié)構(gòu)
色彩空間轉(zhuǎn)換模塊本質(zhì)是 3維數(shù)據(jù)的線性變換,線性變換矩陣是可配置的,由寄存器模塊給出,因此模塊可以支持多種標(biāo)準(zhǔn)的色彩空間轉(zhuǎn)換。模塊默認(rèn)配置支持的是ITU-R BT.601標(biāo)準(zhǔn),轉(zhuǎn)換矩陣由下式給出:
如果要支持ITU-R BT.709標(biāo)準(zhǔn),則系數(shù)矩陣為:
如果輸入數(shù)據(jù)已經(jīng)是 RGB空間數(shù)據(jù),則需要將變換矩陣配置為3階單位陣。
根據(jù)YUV到RGB空間變換矩陣的形式,模塊采用4個整數(shù)乘法器實現(xiàn),結(jié)構(gòu)上采用4級流水線設(shè)計,使得模塊數(shù)據(jù)吞吐速率達(dá)到工作時鐘頻率。
驅(qū)動時序發(fā)生模塊需要產(chǎn)生圖 2所示的各個信號,用以支持VGA輸出、LVDS輸出等。圖中PCLK是像素時鐘,和模塊工作時鐘相同。Video表示輸出視頻數(shù)據(jù)。Blank/EN信號在VESA標(biāo)準(zhǔn)中表示消隱信號,低電平有效;在LVDS輸出時表示數(shù)據(jù)有效信號,高電平有效。雖然此信號在不同的標(biāo)準(zhǔn)有不同的含義,但時序是相同的,即高電平時對應(yīng)輸出視頻數(shù)據(jù)有效,低電平時對應(yīng)輸出視頻數(shù)據(jù)無效。HSync和VSync分別是行同步和場同步信號,這2個信號在VESA[9]標(biāo)準(zhǔn)中定義,這里不再詳述。由圖 2可知,各控制信號的產(chǎn)生可以通過計數(shù)器對PCLK或HSync計數(shù)實現(xiàn)。驅(qū)動時序發(fā)生器主要由一個像素計數(shù)器和一個行計數(shù)器實現(xiàn)。各信號的狀態(tài)由計數(shù)器值與寄存器模塊中的預(yù)設(shè)值進(jìn)行比較得出。
圖2 驅(qū)動時序發(fā)生器輸出的各信號的時序
芯片的功耗主要由靜態(tài)功耗和動態(tài)功耗組成。其中靜態(tài)功耗又稱為漏電流功耗,是 CMOS電路的穩(wěn)定態(tài)功耗。降低靜態(tài)功耗的方法主要是工藝相關(guān)的方法,因此在 IP軟核的設(shè)計中意義不大[10]。動態(tài)功耗包括內(nèi)部功耗和開關(guān)功耗,由下式給出:
式中第一項是內(nèi)部功耗,表示電路單元輸入發(fā)生變化而輸出不變時消耗的功率。第二項是開關(guān)功耗,表示電路單元發(fā)生變化而輸出也變化時消耗的功率。其中sct表示短路電流持續(xù)時間;perkI 是內(nèi)部開關(guān)電流;effC 為有效充電電容;Vdd為電源電壓; fclk是工作時鐘頻率。
由動態(tài)功耗的表達(dá)式可知,減小上述任一參數(shù)都可以實現(xiàn)降低動態(tài)功耗的目的。由于其中電源電壓、充電電容、開關(guān)電流這3個參數(shù)都和芯片所采用的制造工藝有關(guān),因此本設(shè)計主要通過降低工作頻率來降低功耗。
首先我們分析 IP核的整體結(jié)構(gòu),將其劃分多個工作時鐘域,慢速工作模塊采用慢速時鐘。圖 3是重新劃分時鐘域后的系統(tǒng)結(jié)構(gòu)圖。色彩空間轉(zhuǎn)換模塊YUV2RGB工作在像素時鐘域,時鐘信號為 pclk,是整個模塊頻率最高的時鐘域。寄存器模塊則工作在APB總線的時鐘域,APB總線是AMBA總線協(xié)議中定義的低速總線。驅(qū)動時序發(fā)生器(DTG)中由于行同步信號和場同步信號的工作速度相差太大,因此分開為2個時鐘域來設(shè)計。其中行同步信號產(chǎn)生模塊(HS)的工作時鐘由像素時鐘四分頻得到,場同步信號產(chǎn)生模塊(VS)則使用行同步信號HSync作為工作時鐘。這樣整個IP核就分為4個時鐘域,其中pclk、pclk_div4、HSync是相關(guān)時鐘。驅(qū)動時序發(fā)生器的工作時鐘被大大降低了。
圖3 IP核時鐘域劃分
劃分上述時鐘域之后,系統(tǒng)工作頻率已經(jīng)有所降低。但是在寄存器電路設(shè)計中,就算寄存器數(shù)據(jù)輸入端不發(fā)生變化,時鐘信號的翻轉(zhuǎn)也會產(chǎn)生動態(tài)功耗。因此如果某個模塊在某種條件下不需要輸出,或者某寄存器的輸入在某種條件下等于輸出時,可以禁止輸入時鐘的翻轉(zhuǎn),也就相當(dāng)于式(1)中的頻率參數(shù)被設(shè)置為0,從而降低系統(tǒng)動態(tài)功耗。
模塊的時鐘門控可以通過手動添加[11]。對于設(shè)計的視頻輸出控制器,其中的色彩空間轉(zhuǎn)換模塊只需要在輸出視頻數(shù)據(jù)有效的時候工作,也就是在Blank信號為高電平的時候正常工作,其余時間YUV轉(zhuǎn)RGB的數(shù)據(jù)是無效的。因此選擇Blank信號作為YUV2RGB模塊的時鐘門控使能信號,門控時鐘的Verilog代碼如下:
assign yuv2rgb_clk = blank & pclk;
針對設(shè)計中的單個寄存器,由于 IP核中使用的寄存器非常多,手動添加門控時鐘電路將會是復(fù)雜而繁瑣的工作,因此可以使用綜合工具檢測電路功能,自動添加門控時鐘電路。
使用綜合工具自動添加門控時鐘電路第1步要指定使用的門控時鐘單元。門控時鐘單元可以是離散的也可以是集成的。離散時鐘單元由綜合工具用工藝庫提供的邏輯門或者鎖存器組合而成,里面包含了多個工藝庫單元。集成的門控時鐘單元則是工藝庫提供商設(shè)計好并集成在工藝庫中的一個獨立單元。Design Compiler[1]中指定門控時鐘單元的命令為 set_clock_gating_style,例如指定使用工藝庫中的鎖存器的命令如下:
set_clock_gating_style -sequential_cell latch
指定門控時鐘單元后,第2步分析整個IP核的所有寄存器,在可以添加門控的寄存器輸入時鐘上添加門控時鐘單元。插入門控時鐘的命令為:
insert_clock_gating -global
global參數(shù)指示綜合工具添加門控時鐘時可以穿越層次結(jié)構(gòu),盡可能多的復(fù)用門控時鐘單元,減小芯片的面積和功耗。因為我們在前面手動添加了一個與門作為門控時鐘單元,為了避免與門邏輯的潛在毛刺的產(chǎn)生,可以通過以下命令取代手工門控時鐘,這是自動添加門控時鐘單元的第3步。
replace_clock_gates
第 4步使用 uniquify命令,完成設(shè)計的實例唯一化操作,方便后續(xù)的布局布線工作。最后是報告插入門控時鐘電路的結(jié)果report_clock_gating。
完成上述 5步設(shè)置之后,后面就只需要執(zhí)行普通的綜合工作,綜合過程中 EDA工具會自動識別門控信號,在合適的位置加入門控時鐘邏輯。表一給出了 Design Compiler自動插入門控時鐘電路的報告。
表1 門控時鐘綜合結(jié)果
低功耗設(shè)計的具體流程如圖 4所示。設(shè)計流程使用Mentor公司的 ModelSim進(jìn)行仿真,用 Synopsys公司的Design Compiler進(jìn)行綜合和最終的功耗分析,用Cadence公司的Encounter完成綜合網(wǎng)表的布局布線。
IP核的設(shè)計從RTL設(shè)計開始,這一步還需要進(jìn)行時鐘域劃分以及手動添加門控時鐘電路。然后對設(shè)計好的RTL代碼進(jìn)行功能仿真,修改其不符合功能描述的部分。功能仿真正確之后,將RTL代碼綜合成門級網(wǎng)表,即布局布線前網(wǎng)表。布局布線前網(wǎng)表再輸入到 Encounter中完成布局布線,生成布局布線后網(wǎng)表和SPEF (Standard Parasitic Exchange Format)文件。SPEF文件中包含了工程中所有線網(wǎng)的電容電阻參數(shù)。
得到的布局布線后網(wǎng)表之后,通過對此網(wǎng)表進(jìn)行仿真,我們可以得到SAIF (Switching Activity Interchange Format)文件。SAIF文件包含了網(wǎng)表中各線網(wǎng)狀態(tài)轉(zhuǎn)換率的統(tǒng)計結(jié)果。這里仿真使用的testbench文件可由功能仿真的testbench修改而來,只要在文件中加入統(tǒng)計狀態(tài)轉(zhuǎn)換率的 Verilog系統(tǒng)任務(wù),包括$read_lib_saif(),$set_toggle_region(),$toggle_start(),$toggle_stop(),$toggle_report()。
最后,將前面生成的SAIF文件,SPEF文件,布局布線后網(wǎng)表,一起輸入到Design Compiler中進(jìn)行功耗分析,得出整個設(shè)計的功耗分析報表。
本設(shè)計采用的工藝庫是SMIC 0.18微米工藝庫。為了使生成的SAIF文件所記錄的信號狀態(tài)轉(zhuǎn)換率更為準(zhǔn)確,仿真使用的 testbench將視頻輸出控制器配置成 VESA標(biāo)準(zhǔn)的800x600@72Hz格式,像素時鐘為50 MHz。整個仿真過程輸出3幀視頻圖像。為了便于比較,我們還分析了沒有進(jìn)行任何功耗優(yōu)化的設(shè)計的功耗,也分析了不手動添加門控,只使用EDA工具自動添加門控的設(shè)計的功耗。表2給出了所有的功耗分析結(jié)果。
圖4 功耗分析流程
表2 功耗分析結(jié)果
由上表的結(jié)果可知,功耗優(yōu)化后的設(shè)計比沒有任何功耗優(yōu)化的設(shè)計降低了26.1%的功耗。而如果不對色彩空間轉(zhuǎn)換模塊手動加門控時鐘電路,僅使用DC進(jìn)行自動添加門控時鐘單元,功耗的優(yōu)化只有7.0%。這從表一中自動添加門控時鐘的寄存器數(shù)只占3.12%也可以得到側(cè)面驗證。上表還說明不能忽視手動優(yōu)化代碼的作用,特別是根據(jù)模塊功能來對整個模塊進(jìn)行門控的時候。EDA工具只是機械地檢查每一行代碼,給單個寄存器添加時鐘門控。
本文設(shè)計了一種通用視頻輸出控制器IP核。針對控制器的功耗,考慮到時鐘頻率是動態(tài)功耗的重要因子,本文通過合理劃分時鐘域以降低部分模塊的工作頻率,并采用門控時鐘技術(shù)對IP核進(jìn)行功耗優(yōu)化。最后的功耗分析結(jié)果表明,針對時鐘頻率進(jìn)行前端功耗優(yōu)化可以降低功耗20%以上。此控制器支持VESA標(biāo)準(zhǔn)視頻輸出,支持電視面板LVDS接口,可集成在各種視頻處理專用芯片或SoC中,基于其良好的低功耗特性,尤其適用于移動手持設(shè)備的顯示控制。除了針對時鐘頻率進(jìn)行功耗優(yōu)化,在后端設(shè)計時還可以根據(jù)工藝庫給整個IP核添加門控電源,當(dāng)系統(tǒng)待機或不需要視頻輸出時關(guān)閉整個模塊的電源,從而達(dá)到最大限度降低模塊的功耗。
[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]徐永釗,田祖?zhèn)?,陽若寧,? SoC門級功耗分析方法[J].通信技術(shù),2011,44(02):146-148.
[4]劉成安,孫濤,王銀玲.基于nRF24Z1的短距離無線音頻傳輸系統(tǒng)設(shè)計[J].通信技術(shù),2008,41(11):50-53.
[5]孟惠霞,呂書勇.基于 ARM的 SD卡文件系統(tǒng)設(shè)計[J].通信技術(shù),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]羅旻, 楊波, 高德遠(yuǎn), 等. 寄存器傳輸級低功耗設(shè)計方法[J]. 小型微型計算機系統(tǒng), 2004, 25(07):1207-1211.