張 杰,高 博,龔 敏,劉 兵,陳 昶
(四川省微電子技術重點實驗室,成都 610064)
?
基于FPGA的色彩空間雙向轉換電路設計
張 杰,高 博,龔 敏*,劉 兵,陳 昶
(四川省微電子技術重點實驗室,成都 610064)
RGB和YUV色彩空間的轉換電路廣泛應用于視頻、圖像的壓縮和傳輸中。為減小RGB和YUV色彩空間轉換電路的芯片面積,通過采用可編程邏輯器件中嵌入的PLL(Phase Locked Loop)和流水線算法,復用矩陣乘法器結構,只需單一模塊電路便可以實現RGB和YUV色彩空間的雙向轉換。結果表明電路設計只需3個乘法器和3個加法器,最大工作頻率達到105.89 MHz。因此,該設計在滿足高清數據傳輸的情況下,大幅節省了芯片面積。
FPGA;色彩空間轉換;矩陣乘法器;PLL
終端上的視頻和圖像顯示通常采用RGB格式,但RGB格式的視頻和圖像儲存量消耗較大,因而在傳輸過程中通常采用YUV格式。隨著用戶對高清數據傳輸速度的要求越來越高,RGB與YUV色彩空間的轉換也需要滿足高速的要求。
傳統的軟件轉換方法由于計算量過于龐大,轉換速度緩慢從而達不到高速轉換的要求。硬件轉換相對于軟件轉換具有速度快、轉換效率高等優點,同時便于批量生產[1]。目前的轉換電路都只是實現RGB到YUV或者YUV到RGB的單向轉換[3-7]。但大多數情況下RGB到YUV的轉換和YUV到RGB的轉換不會同時進行,因此可以考慮將兩種功能集成在一塊模塊上實現,再通過復用矩陣乘法器結構,滿足高清數據傳輸速率的前提下,使芯片面積節省3~4倍。
1.1 RGB與YUV轉換的實現方法
RGB與YUV色彩空間之間的對應關系如下[2]:

(1)

(2)
方程組(1)為RGB到YUV色彩空間的轉換,方程組(2)為YUV到RGB色彩空間的轉換。
目前大多數采用軟件實現的方法,如使用Intel單指令多數據擴展指令集SSE2技術進行轉換[3];基于VC++的YUV和RGB之間的格式轉換[4]等。軟件實現計算量龐大,轉換速度受到嚴重限制。
為提高速度,部分學者采用硬件實現的方法[5-6],不過發展緩慢。做得比較好的有采用CSD碼和Wallace樹優化轉換電路[7];在高基乘法基礎上,建立參數化高基乘法算法模型從而優化電路[8];采用查找表法[9]實現快速轉換的目的。但這些方法消耗的乘法器和加法器數目較多,占用芯片面積較大。
目前的轉換電路只能實現YUV到RGB或者RGB到YUV的單向轉換,要實現雙向轉換需要兩個獨立模塊。但觀察方程組(1)、方程組(2)可以發現,兩種轉換都可以等效為一個3×3矩陣與一個3×1矩陣的乘法運算,因此可以采用同一個模塊來實現兩種轉換。通過復用乘法器,每一個方程式中的3次乘法運算只需使用一個乘法器,從而大幅減少轉換電路的芯片面積。
1.2 RGB與YUV雙向轉換實現原理
方程組(1)和方程組(2)可以等效為如式(3)所示的兩個矩陣的乘法運算。方程組(3)又可表示為式(4)所示。
(3)
(4)
通過在時序空間復用1個乘法器和1個加法器[10],可以得到Y的正確結果;通過并行3個與上面相同的電路結構,可以實現RGB到YUV的轉換;通過選擇固化參數a1~a9,可以實現YUV與RGB的雙向轉換。為保證傳輸速率,矩陣乘法器的內部頻率必須是系統時鐘頻率的3倍。這可以通過FPGA中的PLL倍頻來實現。
1.3 基于PLL的雙向轉換電路設計
鎖相環路是一種反饋控制電路,簡稱鎖相環(PLL)。許多電子設備要正常工作,通常需要外部的輸入信號與內部的振蕩信號同步,利用鎖相環路就可以實現這個目的。鎖相環的特點是:利用外部輸入的參考信號控制環路內部振蕩信號的頻率和相位。鎖相環可以將外部的輸入信號分頻或者倍頻,利用這個特點,在保持系統時鐘頻率不變的情況下,提高模塊內部的頻率,從而提高傳輸速率,增加硬件資源復用率,減小芯片面積。
采用FPGA中的PLL模塊,轉換電路的結構如圖1所示。

圖1 通過倍頻電路改進后的RGB與YUV的雙向轉換電路結構圖
a1~a9,b1~b9采用定點數設計,參數采用12位,最高位為符號位,第8位為小數位。在選擇器控制下,當參數固化為a1~a9時,電路進行RGB到YUV空間的轉換;當參數固化為b1~b9時,電路進行YUV到RGB空間的轉換。采用FPGA的RGB到YUV空間轉換電路工作原理如下:
3Xclk是一個3倍系統時鐘頻率信號,通過它實現外部一次計算操作,內部乘法器3次計算操作。圖像數據R、G、B采用并行輸入,通過計數器Cntr選擇循環輸入R、G、B值。圖像數據的同步輸入和矩陣運算參數的加載由Cntr計數器控制。結合計數控制器Cntr1和Cntr2以及寄存器單元,完成加法器的累加功能,并更新Y、U、V的輸出值。
1.4 設計仿真與實現
由于電路設計在FPGA中實現,但方程組(1)和方程組(2)中的系數均為小數,因此需要采用定點數設計。在Verilog-HDL環境中,將方程組(1)和方程組(2)中系數同乘2M得到近似的整數,其中M為放大因子,M值的取值大小將在下面討論。當方程組(1)和方程組(2)中的乘法和加法運算結束后,同除2M-1,采用尾位加1法,最終得到四舍五入近似的轉換結果。
1.4.1 放大因子的選擇
方程組(1)和方程組(2)中系數的放大倍數取決于具體的設計精度要求。由于Y、U、V的取值為整數,因此定義誤差閾值為1.0。如果計算結果在誤差閾值范圍內,則表明計算結果在允許的誤差范圍,否則將會產生錯誤的結果。
放大比例因子M與計算精度密切相關,M如果取得太小,會出現顏色失真;M如果取得太大,將會超出人眼的區別范圍,并影響頻率特性等性能指標。通過以上分析,計算結果的誤差與放大比例因子M密切有關。
以RGB到YUV色彩空間的轉換為例,其中Y的理論絕對誤差的計算公式如下:
(5)
其中abs{·}是取絕對值函數,int{·}是取整函數,round{·,0}表示四舍五入后的取整函數。其中R、G、B為整數,取值范圍為0~255。
分析式(5)可知,當R、G、B均為最大值255時,Y的理論絕對誤差達到最大值。同理,可以得到U、V的最大理論絕對誤差值。表1給出了M為6、7、8、9、10時,Y、U、V的最大理論絕對誤差結果。

表1 不同放大比例因子的Y、U、V的最大理論絕對誤差值列表
設計中,選取M=9。R、G、B的理論最大絕對誤差分別為0.727、0.628、0.659,均小于閾值誤差1.0。
1.4.2 輸出結果四舍五入的實現
在FPGA中,所有的數據都采用二進制來運算。當選擇放大因子M=9后,輸出結果近似為理論結果的29倍。如果此時直接將結果同除29進行截位操作,誤差會很大。例如理論結果為27.8,直接截位后結果為27,導致產生0.8的誤差。
如果將放大后的輸出結果先同除28后,再將二進制最低位加1,然后將結果同除21可以大幅減小誤差,實現輸出結果的四舍五入。這種方法稱為尾位加1法。例如理論結果為27.8,二進制尾位加1后結果為28.3,再截位得到四舍五入的輸出結果28,誤差只有0.2。
文章使用的是Altera公司的StratixⅡGX中的EP2SGX30DF780C3芯片。當參數固化在a1~a9存儲單元中時,電路進行RGB空間到YUV空間的轉換,Verilog源代碼在Altera開發環境QuartusⅡ 9.0中綜合并經過ModelSim后仿真,得到時序波形如圖2所示。

圖2 RGB到YUV空間電路時序仿真波形
圖2中areset為PLL中異步復位信號,低電平時PLL正常工作;對PLL設置中,輸入系統時鐘inclk0為系100 MHz,輸出時鐘clk0為300 MHz;rst_n為電路內部復位信號,低電平有效。r、g、b為輸入,y、u、v為輸出并且延時2個系統時鐘周期。后仿真結果如圖3所示。以r、g、b分別等于26、53、26為例,對應的y、u、v的理論值為41.849、-7.803、-13.905,改進后的電路仿真結果為42、-8、-14,y、u、v的誤差分別為0.151、0.197、0.095。通過多組驗證,輸出信號y、u、v是正確的。

圖3 YUV到RGB空間電路時序仿真波形
當選擇器將參數固化在b1~b9時,電路將進行YUV到RGB空間的轉換,時鐘環境不變下后仿真的波形如圖3所示。
圖3中的端口定義和圖2中相同。以y、u、v分別等于17、43、49為例,對應的r、g、b的理論值為72.86、-28.454、104.376,改進后的電路仿真結果r、g、b為73、-28、104,誤差分別為0.14、0.454、0.376。通過多組驗證,輸出信號r、g、b是正確的。
只需簡單控制選擇器的數據輸入,便可以實現YUV和RGB色彩空間的雙向轉換,并且將加法器和乘法器數目均減為3個。與文獻5和文獻6對比,該設計乘法器和加法器數目都得到減少。
電路源代碼在Quartus Ⅱ 9.0中進行綜合,觀察圖2和圖3的時間軸可知,系統時鐘inclk0的周期為10000 ps,因此系統此時的工作頻率為100 MHz。設計的實現平臺使用Altera公司Stratix Ⅱ GX系列的EP2SGX30DF780C3芯片,綜合布線工具使用Quartus Ⅱ 9.0,布線后通過時序分析所得時間性能分析報告總結的時序分析報告如表2所示,矩陣乘法器子系統的最大工作頻率達到317.66 MHz,因此系統的最大工作頻率達到105.89 MHz,流水線的工作模式使其滿足高清數據傳輸速率的要求。

表2 時序分析報告結果 單位:ns
文章利用FPGA中的PLL模塊的倍頻功能,設計行列矩陣乘法器,通過尾位加1法實現四舍五入的數據輸出,完成了RGB與YUV色彩空間之間的雙向轉換,該系統的最大工作頻率達到105.89 MHz,完全符合高清視頻信號74.25 MHz的傳輸速率要求,乘法器和加法器數目分別減為3個和3個,減少了硬件占用資源,節省了芯片面積。通過FPGA電路的綜合和仿真驗證了該設計方案的正確性。
[1]章惠. 色彩空間轉換的理論和實證研究綜述[J]. 包裝工程,2011,32(13):102-107.
[2]何斌,馬天予,王運堅. Visual C++數字圖像處理[M]. 北京:人民郵電出版社,2001:4-8.
[3]劉云粼,王樹東. 基于SSE2的YUV與RGB色彩空間轉換[J]. 中國圖象圖形學報,2010,15(1):45-49.
[4]閆晶. 基于VC++的YUV420與RGB24之間的視頻圖像格式相互轉換[J]. 電腦與信息技術,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轉換的硬件設計[J]. 電子器件,2007,30(2):661-663.
[8]于慧明,胡永華,高明倫. 基于參數化高基乘法算法的顏色空間轉換[J]. 微電子學與計算機,2001(5):25-28,35.
[9]張秀麗. 顏色空間轉換的硬件設計與實現[J]. 信息通信,2009(2):54-56.
[10]鐘聲,侯朝煥,楊常安. 基于FPGA的矩陣乘法器優化設計[J]. 電子測量技術,2008,31(2):95-98,102.

張杰(1989-),男,漢族,四川達州,四川大學物理學院微電子專業碩士研究生,研究方向為超大規模集成電路設計;

高博(1975-),男,副教授(通訊作者),主要從事CMOS集成電路芯片設計和生物醫學成像領域的研究;

龔敏(1961-),男,教授,博士生導師,從事新型半導體材料與器件工藝、集成電路設計和工藝及半導體器件的輻照效應研究;

劉兵(1990-),男,漢族,四川遂寧人,碩士研究生,研究方向為超大規模集成電路設計,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