張 杰,高 博,龔 敏,劉 兵,陳 昶
(四川省微電子技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610064)
?
基于FPGA的色彩空間雙向轉(zhuǎn)換電路設(shè)計(jì)
張 杰,高 博,龔 敏*,劉 兵,陳 昶
(四川省微電子技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610064)
RGB和YUV色彩空間的轉(zhuǎn)換電路廣泛應(yīng)用于視頻、圖像的壓縮和傳輸中。為減小RGB和YUV色彩空間轉(zhuǎn)換電路的芯片面積,通過(guò)采用可編程邏輯器件中嵌入的PLL(Phase Locked Loop)和流水線算法,復(fù)用矩陣乘法器結(jié)構(gòu),只需單一模塊電路便可以實(shí)現(xiàn)RGB和YUV色彩空間的雙向轉(zhuǎn)換。結(jié)果表明電路設(shè)計(jì)只需3個(gè)乘法器和3個(gè)加法器,最大工作頻率達(dá)到105.89 MHz。因此,該設(shè)計(jì)在滿足高清數(shù)據(jù)傳輸?shù)那闆r下,大幅節(jié)省了芯片面積。
FPGA;色彩空間轉(zhuǎn)換;矩陣乘法器;PLL
終端上的視頻和圖像顯示通常采用RGB格式,但RGB格式的視頻和圖像儲(chǔ)存量消耗較大,因而在傳輸過(guò)程中通常采用YUV格式。隨著用戶對(duì)高清數(shù)據(jù)傳輸速度的要求越來(lái)越高,RGB與YUV色彩空間的轉(zhuǎn)換也需要滿足高速的要求。
傳統(tǒng)的軟件轉(zhuǎn)換方法由于計(jì)算量過(guò)于龐大,轉(zhuǎn)換速度緩慢從而達(dá)不到高速轉(zhuǎn)換的要求。硬件轉(zhuǎn)換相對(duì)于軟件轉(zhuǎn)換具有速度快、轉(zhuǎn)換效率高等優(yōu)點(diǎn),同時(shí)便于批量生產(chǎn)[1]。目前的轉(zhuǎn)換電路都只是實(shí)現(xiàn)RGB到Y(jié)UV或者YUV到RGB的單向轉(zhuǎn)換[3-7]。但大多數(shù)情況下RGB到Y(jié)UV的轉(zhuǎn)換和YUV到RGB的轉(zhuǎn)換不會(huì)同時(shí)進(jìn)行,因此可以考慮將兩種功能集成在一塊模塊上實(shí)現(xiàn),再通過(guò)復(fù)用矩陣乘法器結(jié)構(gòu),滿足高清數(shù)據(jù)傳輸速率的前提下,使芯片面積節(jié)省3~4倍。
1.1 RGB與YUV轉(zhuǎn)換的實(shí)現(xiàn)方法
RGB與YUV色彩空間之間的對(duì)應(yīng)關(guān)系如下[2]:
(1)
(2)
方程組(1)為RGB到Y(jié)UV色彩空間的轉(zhuǎn)換,方程組(2)為YUV到RGB色彩空間的轉(zhuǎn)換。
目前大多數(shù)采用軟件實(shí)現(xiàn)的方法,如使用Intel單指令多數(shù)據(jù)擴(kuò)展指令集SSE2技術(shù)進(jìn)行轉(zhuǎn)換[3];基于VC++的YUV和RGB之間的格式轉(zhuǎn)換[4]等。軟件實(shí)現(xiàn)計(jì)算量龐大,轉(zhuǎn)換速度受到嚴(yán)重限制。
為提高速度,部分學(xué)者采用硬件實(shí)現(xiàn)的方法[5-6],不過(guò)發(fā)展緩慢。做得比較好的有采用CSD碼和Wallace樹(shù)優(yōu)化轉(zhuǎn)換電路[7];在高基乘法基礎(chǔ)上,建立參數(shù)化高基乘法算法模型從而優(yōu)化電路[8];采用查找表法[9]實(shí)現(xiàn)快速轉(zhuǎn)換的目的。但這些方法消耗的乘法器和加法器數(shù)目較多,占用芯片面積較大。
目前的轉(zhuǎn)換電路只能實(shí)現(xiàn)YUV到RGB或者RGB到Y(jié)UV的單向轉(zhuǎn)換,要實(shí)現(xiàn)雙向轉(zhuǎn)換需要兩個(gè)獨(dú)立模塊。但觀察方程組(1)、方程組(2)可以發(fā)現(xiàn),兩種轉(zhuǎn)換都可以等效為一個(gè)3×3矩陣與一個(gè)3×1矩陣的乘法運(yùn)算,因此可以采用同一個(gè)模塊來(lái)實(shí)現(xiàn)兩種轉(zhuǎn)換。通過(guò)復(fù)用乘法器,每一個(gè)方程式中的3次乘法運(yùn)算只需使用一個(gè)乘法器,從而大幅減少轉(zhuǎn)換電路的芯片面積。
1.2 RGB與YUV雙向轉(zhuǎn)換實(shí)現(xiàn)原理
方程組(1)和方程組(2)可以等效為如式(3)所示的兩個(gè)矩陣的乘法運(yùn)算。方程組(3)又可表示為式(4)所示。
(3)
(4)
通過(guò)在時(shí)序空間復(fù)用1個(gè)乘法器和1個(gè)加法器[10],可以得到Y(jié)的正確結(jié)果;通過(guò)并行3個(gè)與上面相同的電路結(jié)構(gòu),可以實(shí)現(xiàn)RGB到Y(jié)UV的轉(zhuǎn)換;通過(guò)選擇固化參數(shù)a1~a9,可以實(shí)現(xiàn)YUV與RGB的雙向轉(zhuǎn)換。為保證傳輸速率,矩陣乘法器的內(nèi)部頻率必須是系統(tǒng)時(shí)鐘頻率的3倍。這可以通過(guò)FPGA中的PLL倍頻來(lái)實(shí)現(xiàn)。
1.3 基于PLL的雙向轉(zhuǎn)換電路設(shè)計(jì)
鎖相環(huán)路是一種反饋控制電路,簡(jiǎn)稱鎖相環(huán)(PLL)。許多電子設(shè)備要正常工作,通常需要外部的輸入信號(hào)與內(nèi)部的振蕩信號(hào)同步,利用鎖相環(huán)路就可以實(shí)現(xiàn)這個(gè)目的。鎖相環(huán)的特點(diǎn)是:利用外部輸入的參考信號(hào)控制環(huán)路內(nèi)部振蕩信號(hào)的頻率和相位。鎖相環(huán)可以將外部的輸入信號(hào)分頻或者倍頻,利用這個(gè)特點(diǎn),在保持系統(tǒng)時(shí)鐘頻率不變的情況下,提高模塊內(nèi)部的頻率,從而提高傳輸速率,增加硬件資源復(fù)用率,減小芯片面積。
采用FPGA中的PLL模塊,轉(zhuǎn)換電路的結(jié)構(gòu)如圖1所示。
圖1 通過(guò)倍頻電路改進(jìn)后的RGB與YUV的雙向轉(zhuǎn)換電路結(jié)構(gòu)圖
a1~a9,b1~b9采用定點(diǎn)數(shù)設(shè)計(jì),參數(shù)采用12位,最高位為符號(hào)位,第8位為小數(shù)位。在選擇器控制下,當(dāng)參數(shù)固化為a1~a9時(shí),電路進(jìn)行RGB到Y(jié)UV空間的轉(zhuǎn)換;當(dāng)參數(shù)固化為b1~b9時(shí),電路進(jìn)行YUV到RGB空間的轉(zhuǎn)換。采用FPGA的RGB到Y(jié)UV空間轉(zhuǎn)換電路工作原理如下:
3Xclk是一個(gè)3倍系統(tǒng)時(shí)鐘頻率信號(hào),通過(guò)它實(shí)現(xiàn)外部一次計(jì)算操作,內(nèi)部乘法器3次計(jì)算操作。圖像數(shù)據(jù)R、G、B采用并行輸入,通過(guò)計(jì)數(shù)器Cntr選擇循環(huán)輸入R、G、B值。圖像數(shù)據(jù)的同步輸入和矩陣運(yùn)算參數(shù)的加載由Cntr計(jì)數(shù)器控制。結(jié)合計(jì)數(shù)控制器Cntr1和Cntr2以及寄存器單元,完成加法器的累加功能,并更新Y、U、V的輸出值。
1.4 設(shè)計(jì)仿真與實(shí)現(xiàn)
由于電路設(shè)計(jì)在FPGA中實(shí)現(xiàn),但方程組(1)和方程組(2)中的系數(shù)均為小數(shù),因此需要采用定點(diǎn)數(shù)設(shè)計(jì)。在Verilog-HDL環(huán)境中,將方程組(1)和方程組(2)中系數(shù)同乘2M得到近似的整數(shù),其中M為放大因子,M值的取值大小將在下面討論。當(dāng)方程組(1)和方程組(2)中的乘法和加法運(yùn)算結(jié)束后,同除2M-1,采用尾位加1法,最終得到四舍五入近似的轉(zhuǎn)換結(jié)果。
1.4.1 放大因子的選擇
方程組(1)和方程組(2)中系數(shù)的放大倍數(shù)取決于具體的設(shè)計(jì)精度要求。由于Y、U、V的取值為整數(shù),因此定義誤差閾值為1.0。如果計(jì)算結(jié)果在誤差閾值范圍內(nèi),則表明計(jì)算結(jié)果在允許的誤差范圍,否則將會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。
放大比例因子M與計(jì)算精度密切相關(guān),M如果取得太小,會(huì)出現(xiàn)顏色失真;M如果取得太大,將會(huì)超出人眼的區(qū)別范圍,并影響頻率特性等性能指標(biāo)。通過(guò)以上分析,計(jì)算結(jié)果的誤差與放大比例因子M密切有關(guān)。
以RGB到Y(jié)UV色彩空間的轉(zhuǎn)換為例,其中Y的理論絕對(duì)誤差的計(jì)算公式如下:
(5)
其中abs{·}是取絕對(duì)值函數(shù),int{·}是取整函數(shù),round{·,0}表示四舍五入后的取整函數(shù)。其中R、G、B為整數(shù),取值范圍為0~255。
分析式(5)可知,當(dāng)R、G、B均為最大值255時(shí),Y的理論絕對(duì)誤差達(dá)到最大值。同理,可以得到U、V的最大理論絕對(duì)誤差值。表1給出了M為6、7、8、9、10時(shí),Y、U、V的最大理論絕對(duì)誤差結(jié)果。
表1 不同放大比例因子的Y、U、V的最大理論絕對(duì)誤差值列表
設(shè)計(jì)中,選取M=9。R、G、B的理論最大絕對(duì)誤差分別為0.727、0.628、0.659,均小于閾值誤差1.0。
1.4.2 輸出結(jié)果四舍五入的實(shí)現(xiàn)
在FPGA中,所有的數(shù)據(jù)都采用二進(jìn)制來(lái)運(yùn)算。當(dāng)選擇放大因子M=9后,輸出結(jié)果近似為理論結(jié)果的29倍。如果此時(shí)直接將結(jié)果同除29進(jìn)行截位操作,誤差會(huì)很大。例如理論結(jié)果為27.8,直接截位后結(jié)果為27,導(dǎo)致產(chǎn)生0.8的誤差。
如果將放大后的輸出結(jié)果先同除28后,再將二進(jìn)制最低位加1,然后將結(jié)果同除21可以大幅減小誤差,實(shí)現(xiàn)輸出結(jié)果的四舍五入。這種方法稱為尾位加1法。例如理論結(jié)果為27.8,二進(jìn)制尾位加1后結(jié)果為28.3,再截位得到四舍五入的輸出結(jié)果28,誤差只有0.2。
文章使用的是Altera公司的StratixⅡGX中的EP2SGX30DF780C3芯片。當(dāng)參數(shù)固化在a1~a9存儲(chǔ)單元中時(shí),電路進(jìn)行RGB空間到Y(jié)UV空間的轉(zhuǎn)換,Verilog源代碼在Altera開(kāi)發(fā)環(huán)境QuartusⅡ 9.0中綜合并經(jīng)過(guò)ModelSim后仿真,得到時(shí)序波形如圖2所示。
圖2 RGB到Y(jié)UV空間電路時(shí)序仿真波形
圖2中areset為PLL中異步復(fù)位信號(hào),低電平時(shí)PLL正常工作;對(duì)PLL設(shè)置中,輸入系統(tǒng)時(shí)鐘inclk0為系100 MHz,輸出時(shí)鐘clk0為300 MHz;rst_n為電路內(nèi)部復(fù)位信號(hào),低電平有效。r、g、b為輸入,y、u、v為輸出并且延時(shí)2個(gè)系統(tǒng)時(shí)鐘周期。后仿真結(jié)果如圖3所示。以r、g、b分別等于26、53、26為例,對(duì)應(yīng)的y、u、v的理論值為41.849、-7.803、-13.905,改進(jìn)后的電路仿真結(jié)果為42、-8、-14,y、u、v的誤差分別為0.151、0.197、0.095。通過(guò)多組驗(yàn)證,輸出信號(hào)y、u、v是正確的。
圖3 YUV到RGB空間電路時(shí)序仿真波形
當(dāng)選擇器將參數(shù)固化在b1~b9時(shí),電路將進(jìn)行YUV到RGB空間的轉(zhuǎn)換,時(shí)鐘環(huán)境不變下后仿真的波形如圖3所示。
圖3中的端口定義和圖2中相同。以y、u、v分別等于17、43、49為例,對(duì)應(yīng)的r、g、b的理論值為72.86、-28.454、104.376,改進(jìn)后的電路仿真結(jié)果r、g、b為73、-28、104,誤差分別為0.14、0.454、0.376。通過(guò)多組驗(yàn)證,輸出信號(hào)r、g、b是正確的。
只需簡(jiǎn)單控制選擇器的數(shù)據(jù)輸入,便可以實(shí)現(xiàn)YUV和RGB色彩空間的雙向轉(zhuǎn)換,并且將加法器和乘法器數(shù)目均減為3個(gè)。與文獻(xiàn)5和文獻(xiàn)6對(duì)比,該設(shè)計(jì)乘法器和加法器數(shù)目都得到減少。
電路源代碼在Quartus Ⅱ 9.0中進(jìn)行綜合,觀察圖2和圖3的時(shí)間軸可知,系統(tǒng)時(shí)鐘inclk0的周期為10000 ps,因此系統(tǒng)此時(shí)的工作頻率為100 MHz。設(shè)計(jì)的實(shí)現(xiàn)平臺(tái)使用Altera公司Stratix Ⅱ GX系列的EP2SGX30DF780C3芯片,綜合布線工具使用Quartus Ⅱ 9.0,布線后通過(guò)時(shí)序分析所得時(shí)間性能分析報(bào)告總結(jié)的時(shí)序分析報(bào)告如表2所示,矩陣乘法器子系統(tǒng)的最大工作頻率達(dá)到317.66 MHz,因此系統(tǒng)的最大工作頻率達(dá)到105.89 MHz,流水線的工作模式使其滿足高清數(shù)據(jù)傳輸速率的要求。
表2 時(shí)序分析報(bào)告結(jié)果 單位:ns
文章利用FPGA中的PLL模塊的倍頻功能,設(shè)計(jì)行列矩陣乘法器,通過(guò)尾位加1法實(shí)現(xiàn)四舍五入的數(shù)據(jù)輸出,完成了RGB與YUV色彩空間之間的雙向轉(zhuǎn)換,該系統(tǒng)的最大工作頻率達(dá)到105.89 MHz,完全符合高清視頻信號(hào)74.25 MHz的傳輸速率要求,乘法器和加法器數(shù)目分別減為3個(gè)和3個(gè),減少了硬件占用資源,節(jié)省了芯片面積。通過(guò)FPGA電路的綜合和仿真驗(yàn)證了該設(shè)計(jì)方案的正確性。
[1]章惠. 色彩空間轉(zhuǎn)換的理論和實(shí)證研究綜述[J]. 包裝工程,2011,32(13):102-107.
[2]何斌,馬天予,王運(yùn)堅(jiān). Visual C++數(shù)字圖像處理[M]. 北京:人民郵電出版社,2001:4-8.
[3]劉云粼,王樹(shù)東. 基于SSE2的YUV與RGB色彩空間轉(zhuǎn)換[J]. 中國(guó)圖象圖形學(xué)報(bào),2010,15(1):45-49.
[4]閆晶. 基于VC++的YUV420與RGB24之間的視頻圖像格式相互轉(zhuǎn)換[J]. 電腦與信息技術(shù),2013,21(2):19-21,25.
[5]Benoit Payette. Color Space Converter:RGB toYCbCr[J]. XILINXxapp(V1. 0)September,2002:636-637.
[6]Andy Miller. Color Space Conversion-Part 2[R]. XilinxTechXclusives-Support Xilinx,2001:65-66.
[7]程星,吳金,陸生禮. 色彩空間RGB與YUV轉(zhuǎn)換的硬件設(shè)計(jì)[J]. 電子器件,2007,30(2):661-663.
[8]于慧明,胡永華,高明倫. 基于參數(shù)化高基乘法算法的顏色空間轉(zhuǎn)換[J]. 微電子學(xué)與計(jì)算機(jī),2001(5):25-28,35.
[9]張秀麗. 顏色空間轉(zhuǎn)換的硬件設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息通信,2009(2):54-56.
[10]鐘聲,侯朝煥,楊常安. 基于FPGA的矩陣乘法器優(yōu)化設(shè)計(jì)[J]. 電子測(cè)量技術(shù),2008,31(2):95-98,102.
張杰(1989-),男,漢族,四川達(dá)州,四川大學(xué)物理學(xué)院微電子專業(yè)碩士研究生,研究方向?yàn)槌笠?guī)模集成電路設(shè)計(jì);
高博(1975-),男,副教授(通訊作者),主要從事CMOS集成電路芯片設(shè)計(jì)和生物醫(yī)學(xué)成像領(lǐng)域的研究;
龔敏(1961-),男,教授,博士生導(dǎo)師,從事新型半導(dǎo)體材料與器件工藝、集成電路設(shè)計(jì)和工藝及半導(dǎo)體器件的輻照效應(yīng)研究;
劉兵(1990-),男,漢族,四川遂寧人,碩士研究生,研究方向?yàn)槌笠?guī)模集成電路設(shè)計(jì),363192202@qq.com。
DesignofColorSpaceTwo-WayConversionCircuitBasedonFPGA
ZHANGJie,GAOBo,GONGMin*,LIUBing,CHENChang
(Key Laboratory of Micro-Electronics Technology of Sichuan Province,Chengdu 610064,China)
The conversion circuit between RGB and YUV color space is widely used in video compression and image transmission. In order to reduce chip area of the conversion circuit and implement the two-way conversion with only one module circuit between RGB and YUV color space,by using PLL(Phase Locked Loop)embedded in programmable devices and pipeline algorithm,and the multiplexing structure of matrix multiplication,a new circuit structure is proposed. The simulation results showed that the maximum operating frequency of the new circuit structure with 3 multipliers and 3 adders reaches 105.89 MHz. Therefore,the new circuit structure which meets the high data transfer saves chip area greatly.
FPGA;color space conversion;matrix multiplier;PLL
2014-01-07修改日期:2014-03-15
TN402
:A
:1005-9490(2014)06-1121-04
10.3969/j.issn.1005-9490.2014.06.023