引言
Maxim串行器可連接并控制攝像頭IC,這類器件包括MAX9257?(帶有半雙工UART/I2C控制通道)、MAX9259和MAX9263?(兩款均帶有全雙工同步控制通道)。MAX9263還支持寬帶數字內容保護(HDCP)。本應用筆記介紹如何將攝像頭的RGB或YUV輸出轉換成標準顯示器接受的RGB數據。
攝像頭輸出數據格式
攝像頭芯片,例如OmniVision? OV10630,可通過串行器連接。OV10630的接口引腳包括:像素時鐘、PCLK、行有效、HREF、幀同步、VSYNC和并行數據位D[9:0]。數據位在時鐘的上升沿保持穩定。
YUV和原始RGB數據格式
CMOS攝像頭傳感器包括數百萬光敏單元,每個單元可響應整個波長的光信號。利用濾光膜使特定傳感器僅響應紅光、綠光或藍光信號。相鄰的光敏單元通常以拜耳結構的濾色規律排列,綠色濾色片的數量是紅色或藍色濾色片數量的兩倍。這種方式用于模擬人眼的感光特性。從左至右、從上至下讀取傳感器單元輸出,原始的RGB數據序列為藍、綠...藍、綠 (首行末尾),綠、紅...綠、紅(第二行末尾),依次類推,如圖1所示。
圖1. 原始RGB數據排列
通過相鄰單元內插生成與傳感器單元密度相同的RGB數據。另外,利用相鄰單元的顏色,按照特定的規則可以恢復圖像。構成每個像素RGB數據組的規則之一是:使用同一行的相鄰單元,再加上下一行(或上一行)的綠色相鄰單元。內插后的RGB數據序列為...、紅(i-1)、綠(i-1)、藍(i-1)、紅(i)、綠(i)、藍(i)、紅(i+1)、綠(i+1)、藍(i+1)、...如圖2所示。每個像素需要一組RGB數據,驅動彩色顯示器并保持攝像頭傳感器的最高分辨率。內插RGB數據的亮度分辨率接近于傳感器單元的分辨率,但色度分辨率較差。由于人眼對每個像素的灰度要比對像素的色彩分量更為敏感,所以感覺到的分辨率基本與傳感器單元分辨率相同。
圖2. RGB數據排列
然而,這種RGB數據的內插算法使得數據速率增至三倍。為了降低數據速率,尤其是需要圖像傳輸的場合,可采用YUV彩色空間(將模擬彩色電視信號壓縮到模擬黑白電視的頻帶)。在下式中,亮度以Y表示,藍色和亮度之間的色差以U表示,紅色和亮度之間的色差以V表示,
式中,典型的色彩加權為:WR?= 0.299,WB?= 0.114,WG?= 1 - WR?- WB?= 0.587,歸一化值為UMAX,VMAX?= 0.615。
對于采用拜耳濾色鏡的攝像頭傳感器,相鄰像素的U或V數據大致相同,取決于行索引i和像素索引j?(如果采用的規則為相鄰顏色)。利用本指南,可根據下式利用RGB數據直接生成YUV數據。
![]() |
偶數行索引i和偶數像素索引j。 |
![]() |
偶數行索引i和偶數像素索引j。 |
![]() |
對于奇數行索引i和偶數像素索引j。 |
![]() |
對于奇數行索引i和偶數像素索引j。 |
![]() |
偶數行索引i和偶數像素索引j。 |
![]() |
偶數行索引i和偶數像素索引j。 |
![]() |
對于奇數行索引i和偶數像素索引j。 |
![]() |
對于奇數行索引i和偶數像素索引j。 |
![]() |
偶數行索引i和偶數像素索引j。 |
![]() |
偶數行索引i和偶數像素索引j。 |
![]() |
對于奇數行索引i和偶數像素索引j。 |
![]() |
對于奇數行索引i和偶數像素索引j。 |
為了降低數據速率,利用偶數像素索引的U數據和奇數像素索引的V數據,以及偶數和奇數像素索引的Y數據。壓縮后的YUV數據按照圖3所示排列發送,即:Y1、U0和V1為像素1的數據;Y2、U2和V1為像素2的數據等。
圖3. YUV422數據排列
422表示Y:U:V的采樣比,4:x:x標準為早期彩色NTSC標準,按照4:1:1色度再次采樣,所以,圖像的色彩分辨率僅為亮度分辨率的四分之一。目前,只有處理非壓縮信號的高端設備才會采用4:4:4彩色再采樣,亮度和彩色信息的分辨率完全相同。
串行器輸入格式
Maxim串行器的并行接口設計用于24位RGB數據,特別是MAX9259,具有像素時鐘位(PCLK)和29個數據位,用于24位RGB以及行同步、場同步和3個控制位。除并行數據接口外,需要把DRS和BWS引腳設置成高電平或低電平,分別選擇數據速率和總線寬度。
Maxim串行器/解串器
MAX9257和MAX9258串行器/解串器(SerDes)具有18位并行輸入/輸出,適用于YUV數據傳輸;MAX9259/MAX9260芯片組具有28位并行輸入/輸出,適用于RGB數據傳輸;MAX9263/MAX9264?SerDes具有28位并行輸入/輸出,增加了HDCP功能。此外,MAX9265和MAX9268 28位SerDes帶有攝像鏈路,代替并行輸入/輸出接口。所有28位Maxim串行器和解串器具有相同的并/串數據映射,可互換使用。例如,MAX9259串行器可配合MAX9268解串器使用,傳輸RGB數據(借助于FPGA)。數據從CMOS攝像頭通過串行鏈路發送至攝像鏈路接口的顯示器。
串行器映射
為匹配MAX9268解串器攝像鏈路的輸出接口,并行RGB數據應按照以下信號圖映射。圖4所示為MAX9268并行位與其攝像鏈路輸出之間的映射,圖5所示為相機鏈路的RGB數據映射。表1所示為MAX9259串行器的對應內容映射。
圖4. MAX9268內部并行至輸出映射
圖5. 攝像鏈路內容映射
表1. MAX9259串行器RGB內容位映射 | |||||||||
DIN0 | DIN1 | DIN2 | DIN3 | DIN4 | DIN5 | DIN6 | DIN7 | DIN8 | DIN9 |
R0 | R1 | R2 | R3 | R4 | R5 | G0 | G1 | G2 | G3 |
DIN10 | DIN11 | DIN12 | DIN13 | DIN14 | DIN15 | DIN16 | DIN17 | DIN18 | DIN19 |
G4 | G5 | B0 | B1 | B2 | B3 | B4 | B5 | HREF | VSYNC |
DIN20 | DIN21 | DIN22 | DIN23 | DIN24 | DIN25 | DIN26 | DIN27 | DIN28 | ? |
? | R6 | R7 | G6 | G7 | B6 | B7 | ? | ? | ? |
色彩轉換:YUV至RGB
FPGA芯片可將壓縮(降低數據速率)后的攝像頭數據YUV轉換成RGB數據,用于MAX9259串行器。采用8位定點運算時,色彩空間轉換的公式如下,式2和式3中,Dn和En的n為偶數。
Cn?= Yn?- 16
Dn?= Dn + 1?= Un?- 128
En?= En + 1?= Vn + 1?- 128
Rn?= clip((298 × Cn?+ 409 × En?+ 128) >> 8)
Gn?= clip((298 × Cn?- 100 × Dn?- 208 × En?+ 128) >> 8)
Bn?= clip((298 × Cn?× 516 × Dn?+ 128) >> 8)
式中,>> 8表示“向右移8位”,clip表示“只取最低8位”。
FPGA方案
輸入緩沖
輸入緩沖電路包括計數器、三個寄存器和組合邏輯,將單字節時鐘輸入轉換成三字節時鐘輸出,輸出時鐘速率為輸入的一半。組合邏輯僅用于分別使能Y、U和V字節的對應寄存器。
圖6. 輸入緩沖電路
時鐘開關
FPGA輸出像素時鐘速率為攝像頭像素時鐘的一半,用于驅動串行器像素時鐘輸入。但是,攝像頭在初始化之前不會輸出像素時鐘。解決方案是在FPGA內部采用2:1時鐘復用器(mux)和時鐘信號檢測器,mux由時鐘信號檢測器控制。上電時,mux的默認時鐘來自攝像頭的時鐘振蕩器,使SerDes芯片組提供啟動攝像頭的控制通道。時鐘信號檢測器對場同步信號脈沖進行計數,經過幾個場同步脈沖后,mux切換到攝像頭像素時鐘速率的一半。采用高清攝像頭傳感器時,例如OV10630,每個場同步周期包含100k以上的像素時鐘。幾個場同步周期足以使攝像頭的鎖相環(PLL)達到穩定。場同步計數比像素時鐘計數的效率高得多,并可節省FPGA邏輯單元的資源。
中間緩沖
格式轉換表達式中沒有體現硬件電路的延遲。為了從YUV輸入生成RGB數據,需要兩到三次乘法運算和三到四次加法運算。盡管FPGA邏輯電路(門電路) 的延時只有幾個納秒,但載波傳輸、加法器、移位乘法器都會導致不同程度的延時,使整體延時增大。為了使延遲最小化,每個常數乘法器均由兩個移位輸入(代表常數的2個非零最高有效位MSB)的加法器近似。輸入的YUV字節速率大約為100MHz時,延遲會跨越相鄰像素的定時邊界,增大圖像噪聲。在每個乘法器之后通過中間寄存器來消除擴展延時。
以上提及的YUV至RGB彩色轉換已用于Actel? ProASIC3 A3PN125Z FPGA,圖7所示為實現這一FPGA的原理圖。
? |
? | ? |
? | |
清晰圖像(PDF, 172kB) | 清晰圖像(PDF, 180kB) |
圖7. YUV至RGB轉換器的FPGA實現
應用電路
廠家提供的攝像頭芯片可能位于PCB子板,圖8所示為攝像頭子板模塊的功能框圖。輸入包括電源、PWR和晶振時鐘(XCLK)。輸出信號包含并行數據位(D0..D9)、I2C總線(SDA、SCL)、視頻同步(HREF、VSYNC)和像素時鐘(PCLK)。
圖8. 攝像頭模塊功能框圖
圖9所示為應用電路的FPGA和串行器芯片的原理圖。電路通過兩對雙絞線組成的串行電纜供電,一對用于傳輸串行信號,另一對用于供電。獨立的LDO電源IC用于串行器和FPGA器件。攝像頭模塊采用旁路電容,自帶LDO電源芯片,進一步降低潛在干擾。FPGA和串行器之間的數據鏈路采用阻尼電阻。
清晰圖像(PDF, 1.6MB)
圖9a. 應用電路的FPGA部分
清晰圖像(PDF, 533kB)
圖9b. 應用電路的串行器部分
MAX9259也能夠直接連接至攝像頭傳感器,例如OV10630,以構建更小的攝像頭。彩色空間轉換FPGA可置于解串器之后。由于這種應用需要攝像鏈路輸出,可直接由MAX9268驅動,所以彩色轉換FPGA置于攝像頭傳感器和串行器(MAX9259)之間。
視頻采集示例
圖10所示攝像頭應用電路也是利用這些攝像頭電路搭建的。
圖10. 攝像頭應用電路
結論
本應用筆記介紹Maxim的攝像頭解串器IC與FPGA配合工作的典型方案。提供應用原理圖和FPGA代碼,用于現有的參考設計。即將給出本應用筆記的升級版:RAW RGB至24位RGB FPGA轉換器。
評論