以下文章來(lái)源于OpenFPGA,作者碎碎思
介紹
FPGA 廣泛應(yīng)用于各種圖像處理應(yīng)用,包括醫(yī)療和科學(xué)成像、空間成像、汽車(chē)和國(guó)防領(lǐng)域。
不管用哪種解決方案,高級(jí)算法可能不一樣,但最基礎(chǔ)的部分都是一樣的:它們都得先跟圖像傳感器或者攝像頭連接,把拍到的畫(huà)面處理一下,然后整理成視頻流,好讓顯示器顯示或者通過(guò)網(wǎng)絡(luò)傳出去。
在本項(xiàng)目中,我們將詳細(xì)了解使用圖像傳感器時(shí)涉及的不同階段和元素。
我們將從頭開(kāi)始:圖像傳感器實(shí)際上是如何工作的。
圖像傳感器如何工作?
圖像傳感器是一種神奇的設(shè)備,因?yàn)樗鼈儾粌H使我們能夠看到可見(jiàn)光譜內(nèi)的東西,而且還使我們能夠看到人類(lèi)可見(jiàn)光范圍之外的東西,例如X射線(xiàn)和紅外線(xiàn)。
圖像傳感器主要基于兩種技術(shù):
電荷耦合器件(CCD)
CMOS圖像傳感器(CIS)
兩者的工作原理都是將撞擊半導(dǎo)體的光子轉(zhuǎn)換成電壓。
電荷耦合器件- 利用勢(shì)阱形成像素陣列,勢(shì)阱在入射光子撞擊像素時(shí)形成。在積分時(shí)間(即捕獲圖像的時(shí)間)內(nèi),撞擊像素的光子產(chǎn)生的電荷會(huì)累積,就像水灌滿(mǎn)桶一樣,將勢(shì)阱填滿(mǎn)。積分時(shí)間結(jié)束時(shí),逐個(gè)像素輸出,將電荷轉(zhuǎn)換為電壓。
其工作原理類(lèi)似于移位寄存器:定時(shí)信號(hào)將存儲(chǔ)信號(hào)移位通過(guò)像素陣列。為了加快讀取速度,可以實(shí)現(xiàn)多個(gè)輸出通道。CCD 是模擬的,信號(hào)的定時(shí)和電壓電平會(huì)影響數(shù)據(jù)傳輸和圖像的整體質(zhì)量。通常使用外部 ADC 將像素電壓轉(zhuǎn)換為數(shù)字表示,以便進(jìn)一步處理。
CCD 如今已不太常見(jiàn),但由于其卓越的性能,仍用于天文學(xué)和空間成像等高端成像應(yīng)用。
CMOS 圖像傳感器- CIS 使用光電二極管形成像素陣列,在每個(gè)像素上將光子轉(zhuǎn)換為電壓。該模擬電壓直接在芯片上轉(zhuǎn)換為數(shù)字輸出。
這種轉(zhuǎn)換方式比CCD讀取速度更快,但是CIS的噪聲性能通常較差。如今大多數(shù)相機(jī)都使用CIS,因?yàn)樗鼈兏子诓僮骱蛿?shù)字化集成。
可見(jiàn)光譜外成像
如果我們想要在可見(jiàn)光譜之外成像,就必須選擇合適的設(shè)備。CMOS 和 CCD 傳感器都可以捕獲 X 射線(xiàn)到近紅外 (NIR) 波長(zhǎng)。
隨著波長(zhǎng)向紅外光譜方向遞減,電子能量也隨之降低,需要比硅更先進(jìn)的半導(dǎo)體。根據(jù)觀察到的光譜,典型的器件包括:
電荷耦合器件(CCD):X射線(xiàn)到可見(jiàn)光,延伸至近紅外。
CMOS圖像傳感器(CIS):X射線(xiàn)到可見(jiàn)光,延伸至近紅外。
非制冷紅外:微測(cè)輻射熱計(jì),通常在中紅外范圍內(nèi)工作。
冷卻紅外線(xiàn):需要冷卻的基于 HgCdTe 或 InSb 的解決方案。
線(xiàn)掃描或二維掃描
當(dāng)我們觀看靜止圖像或視頻幀時(shí),它是二維的。然而,如何創(chuàng)建二維圖像則取決于具體應(yīng)用。
例如,如果目標(biāo)物體正在移動(dòng)(例如在生產(chǎn)線(xiàn)上),可以使用單行像素,并通過(guò)移動(dòng)生成二維圖像。這種方法在生產(chǎn)線(xiàn)檢測(cè)和軌道衛(wèi)星成像中很常見(jiàn),因?yàn)檐壍赖倪\(yùn)動(dòng)提供了生成圖像所需的運(yùn)動(dòng)。
更常見(jiàn)的替代方法是使用 2D 傳感器,無(wú)需移動(dòng)即可捕獲 2D 圖像。
傳感器性能
圖像傳感器的一個(gè)關(guān)鍵性能指標(biāo)是量子效率 (QE)。QE 測(cè)量的是入射到器件的光子數(shù)與像素中檢測(cè)到的光子數(shù)之比。
當(dāng)制造圖像傳感器時(shí),設(shè)備上的結(jié)構(gòu)可以降低前照式設(shè)計(jì)中的 QE(即光子撞擊傳感器的前部)。
為了實(shí)現(xiàn)更好的量子效率 (QE),人們采用了背照式設(shè)計(jì),以減少結(jié)構(gòu)對(duì)光子探測(cè)的影響。然而,背照式設(shè)計(jì)需要額外的工藝,這會(huì)降低良率并增加成本。
卷簾快門(mén)或全局快門(mén)
使用二維圖像傳感器時(shí),我們經(jīng)常需要確定圖像傳感器上快門(mén)的類(lèi)型??扉T(mén)主要有兩種類(lèi)型:
卷簾快門(mén):每行在其積分時(shí)間之后讀出,但是捕獲的圖像可能會(huì)因運(yùn)動(dòng)而損壞。
全局快門(mén):整個(gè)陣列同步并作為一個(gè)整體讀出。
我相信我們都在網(wǎng)上看過(guò)這樣的視頻:直升機(jī)在飛行,但旋翼卻似乎沒(méi)有動(dòng)。這是因?yàn)榫砗熆扉T(mén)與卷簾上的旋翼葉片同步,導(dǎo)致旋翼葉片看起來(lái)靜止不動(dòng)。
彩色或灰度
對(duì)于大多數(shù)人來(lái)說(shuō),我們通過(guò)眼睛感知世界的方式是彩色視覺(jué)。然而,到目前為止,我們只討論了像素、電荷的積累,以及電荷轉(zhuǎn)化為電壓,再轉(zhuǎn)化為數(shù)字格式的過(guò)程。
所有波長(zhǎng)的光子在一個(gè)像素上混合,并轉(zhuǎn)換成代表圖像的電壓。如果我們?cè)趫D像處理應(yīng)用程序中按原樣處理這些信息,結(jié)果將是一幅灰度圖像。
灰度圖像用于許多應(yīng)用,因?yàn)樗鼈兲峁┝炼刃畔ⅲ@對(duì)于分析亮度、對(duì)比度、邊緣、形狀、輪廓、紋理、透視和陰影至關(guān)重要。
灰度運(yùn)算也具有計(jì)算效率高的特點(diǎn),因?yàn)橹恍杼幚韱蝹€(gè)通道的數(shù)據(jù)。此外,使用閾值處理很容易將灰度圖像轉(zhuǎn)換為二值圖像,從而實(shí)現(xiàn)形態(tài)學(xué)運(yùn)算。
為了獲得彩色圖像,需要在傳感器上直接應(yīng)用一個(gè)特定的光學(xué)濾鏡。這個(gè)濾鏡被稱(chēng)為拜耳掩模,它覆蓋每個(gè)像素,只允許一種波長(zhǎng)的光(紅色、綠色或藍(lán)色)通過(guò)。
每個(gè)像素僅捕獲紅色、綠色或藍(lán)色光子。這些濾光片通常排列成 2x2 的網(wǎng)格,包含一個(gè)紅色像素、一個(gè)藍(lán)色像素和兩個(gè)綠色像素。這種排列會(huì)突出綠色,因?yàn)樗挥诳梢?jiàn)光譜的中間,而人眼對(duì)綠光更敏感。
去拜耳化過(guò)程
拜耳掩模需要后期處理才能重建全彩圖像。在 FPGA 中,我們可以處理像素流,對(duì)原始數(shù)據(jù)進(jìn)行反拜耳處理,使用 2x2 網(wǎng)格將每個(gè)像素轉(zhuǎn)換為 RGB 值。
此過(guò)程涉及網(wǎng)格中相鄰像素之間的插值。雖然有效,但由于需要插值來(lái)填充缺失的顏色信息,可能會(huì)導(dǎo)致圖像分辨率略有損失。
色彩空間
如果我們決定處理 RGB 圖像,還需要考慮顏色空間。通常,我們從 RGB 顏色空間開(kāi)始。假設(shè)每個(gè)顏色通道(R、G、B)8 位,則每個(gè)像素需要 24 位。
在 FPGA 中,可以輕松實(shí)現(xiàn)任意總線(xiàn)大小。但是,由于 24 位格式,將這些數(shù)據(jù)存儲(chǔ)在內(nèi)存(例如 DDR3 或 DDR4)中效率不高。
為了提高內(nèi)存效率,我們可以使用更緊湊的色彩空間,例如 YUV,它將亮度 (Y) 和色度(U 和 V)通道分開(kāi)。在 YUV 色彩空間中,兩個(gè)像素可以共享 U 和 V 通道,從而將存儲(chǔ)需求降低到每像素 16 位,從而提高效率。
此外,較窄的總線(xiàn)寬度簡(jiǎn)化了 FPGA 內(nèi)的布線(xiàn),使實(shí)現(xiàn)更容易且可能更具成本效益。
與傳感器和攝像頭接口
現(xiàn)在我們了解了圖像傳感器的工作原理,我們可以探索傳感器如何與 FPGA 連接。
主要有兩種方法:
相機(jī)集成傳感器:傳感器嵌入在執(zhí)行大部分接口的相機(jī)中,并輸出圖像以供進(jìn)一步處理。
直接傳感器接口:FPGA 直接與傳感器接口,需要額外的控制和信號(hào)處理。
無(wú)論采用何種方法,F(xiàn)PGA I/O 都是多功能的,能夠與攝像機(jī)和傳感器連接。
我們先來(lái)看一下一些常用的接口標(biāo)準(zhǔn):
HDMI(高清多媒體接口)- HDMI 通常用于相機(jī),尤其是緊湊型運(yùn)動(dòng)相機(jī)。FPGA 可以使用最小化傳輸差分信號(hào) (TMDS) 標(biāo)準(zhǔn)直接與 HDMI 接口。AMD 7 系列 FPGA、UltraScale 器件和 UltraScale+ 器件均支持此功能。
對(duì)于分辨率更高的圖像,其性能可能超出高清 (HD) 存儲(chǔ)體的性能,可以使用千兆收發(fā)器。HDMI 通過(guò)三個(gè)差分通道(分別用于紅、綠、藍(lán))和一個(gè)用于時(shí)鐘信號(hào)的附加通道傳輸視頻數(shù)據(jù)。
SDI(串行數(shù)字接口)視頻- SDI 是一種通過(guò)帶有 BNC 連接器或光纖的同軸電纜傳輸未壓縮的數(shù)字視頻、音頻和元數(shù)據(jù)的專(zhuān)業(yè)標(biāo)準(zhǔn)。
支持的分辨率:范圍從標(biāo)準(zhǔn)清晰度(SD-SDI)到超高清(12G-SDI)。
應(yīng)用:由于其高質(zhì)量、低延遲性能和對(duì)長(zhǎng)電纜傳輸?shù)闹С?,非常適合廣播和現(xiàn)場(chǎng)制作。
FPGA 支持:當(dāng)與 AMD FPGA 或 SoC 連接時(shí),SDI 使用千兆收發(fā)器。
SDI 視頻信號(hào)通過(guò)專(zhuān)用硬件 IP 核進(jìn)行處理,可提供:
支持各種SDI標(biāo)準(zhǔn)。諸如視頻縮放、色彩空間轉(zhuǎn)換和多路復(fù)用等功能。
這些核心能夠?qū)崿F(xiàn)與專(zhuān)業(yè)視頻工作流程的強(qiáng)大而靈活的集成。
Camera Link - Camera Link 使用多個(gè) LVDS(低壓差分信號(hào))通道將數(shù)據(jù)從相機(jī)傳輸?shù)綆杉鳎ㄔ?Camera Link 標(biāo)準(zhǔn)中,幀采集器就是我們的 FPGA)。Camera Link 使用四對(duì) LVDS 線(xiàn)傳輸數(shù)據(jù),第五對(duì) LVDS 線(xiàn)傳輸時(shí)鐘。
并行/串行 -許多相機(jī)或傳感器提供并行或串行輸出,其方式可以通過(guò)反串行化來(lái)重建像素?cái)?shù)據(jù)、相關(guān)幀以及行有效信號(hào)。這可以使用 LVDS/SLVS(可擴(kuò)展低壓信號(hào))等實(shí)現(xiàn)。如果采用串行化,則可以使用 FPGA IO 提供的 IO 結(jié)構(gòu)來(lái)同步和正確解碼數(shù)據(jù)流。
MIPI (移動(dòng)行業(yè)處理器接口)- MIPI 是最廣泛使用的傳感器接口之一。它是一種高帶寬、點(diǎn)對(duì)點(diǎn)協(xié)議,旨在通過(guò)多個(gè)差分串行通道傳輸圖像傳感器或顯示數(shù)據(jù)。
協(xié)議層:MIPI 跨各種 OSI 模型層運(yùn)行,最低的是 DPHY 層。
DPHY 定義了通道數(shù)、時(shí)鐘以及差分信號(hào) (SLVS) 與單端信號(hào) (LVCMOS) 之間的轉(zhuǎn)換。
該組合支持CSI-2(攝像機(jī)串行接口)和DSI(顯示器串行接口)等協(xié)議的高帶寬數(shù)據(jù)傳輸。
低速通信允許以較低的功率水平有效傳輸控制信息。
表現(xiàn):
每個(gè) MIPI DPHY 鏈路可支持 1 至 4 個(gè)高速串行通道,每通道運(yùn)行速度高達(dá) 2.5 Gbps,或四通道運(yùn)行速度高達(dá) 10 Gbps。
數(shù)據(jù)傳輸以?xún)杀稊?shù)據(jù)速率進(jìn)行,與時(shí)鐘通道同步。
FPGA支持:
AMD UltraScale+ 設(shè)備和 Versal 自適應(yīng) SoC 原生支持 MIPI DPHY。
對(duì)于 AMD 7 系列 FPGA 和 UltraScale 設(shè)備,可以使用外部電阻網(wǎng)絡(luò)或定制 DPHY 電路實(shí)現(xiàn) MIPI DPHY。
利用可編程邏輯和 IP 庫(kù)
FPGA的核心理念是盡可能多地利用 Vivado 設(shè)計(jì)套件和 Vitis 平臺(tái) IP 庫(kù)中的現(xiàn)有 IP(知識(shí)產(chǎn)權(quán))。這些庫(kù)提供了豐富的預(yù)設(shè)計(jì)組件,能夠高效地實(shí)現(xiàn)復(fù)雜的功能。
用于視頻傳輸?shù)?AXI Stream
視頻處理流水線(xiàn)中的大多數(shù)接口都使用 AXI Stream 協(xié)議在模塊之間傳輸視頻流。AXI Stream 的核心操作主要使用以下信號(hào):
TData:將數(shù)據(jù)有效載荷從主機(jī)傳送到從機(jī)。
TValid:表示 TData 總線(xiàn)上有有效數(shù)據(jù)。
TReady:來(lái)自從屬設(shè)備的信號(hào),表示它已準(zhǔn)備好接受數(shù)據(jù)。
視頻數(shù)據(jù)標(biāo)記
對(duì)于視頻流,需要額外的標(biāo)記來(lái)指示幀的開(kāi)始和行的結(jié)束,以便可以構(gòu)建和處理完整的 2D 圖像。
為了實(shí)現(xiàn)這一目標(biāo),AXI Stream 引入了:
TUse信號(hào):表示新幀的開(kāi)始。
TLast信號(hào):標(biāo)記視頻流中一行的結(jié)束。
這些標(biāo)記確保視頻數(shù)據(jù)的正確同步和重建,使 AXI Stream 協(xié)議非常適合處理 FPGA 中的 2D 圖像和視頻處理。
了解了 AXI Stream 的概念及其在圖像處理流傳輸中的應(yīng)用后,我們現(xiàn)在可以探索如何利用 FPGA 的并行特性。一種有效的方法是將多個(gè)像素包含在單個(gè) AXI Stream 數(shù)據(jù)流中。
通過(guò)每個(gè)時(shí)鐘周期傳輸多個(gè)像素,可以顯著提高圖像處理管道的吞吐量。
在 AXI Stream 中利用 FPGA 并行性
了解了 AXI Stream 的概念及其在圖像處理流傳輸中的應(yīng)用后,我們現(xiàn)在可以探索如何利用 FPGA 的并行特性。一種有效的方法是將多個(gè)像素包含在單個(gè) AXI Stream 數(shù)據(jù)流中。
通過(guò)每個(gè)時(shí)鐘周期傳輸多個(gè)像素,可以顯著提高圖像處理管道的吞吐量。
AXI Stream 中的像素并行性
通常,AXI Stream 可以配置為每個(gè)時(shí)鐘周期傳輸 1、2 或 4 個(gè)像素,具體取決于應(yīng)用和系統(tǒng)要求。例如,當(dāng)每個(gè)時(shí)鐘周期輸出 4 個(gè)像素時(shí),整體數(shù)據(jù)速率和處理效率會(huì)顯著提高,如下例所示。
這種并行性不僅增強(qiáng)了基于 FPGA 的圖像處理流水線(xiàn)的性能,而且還確保了高分辨率和高幀率視頻流的無(wú)縫處理。
FPGA 圖像處理流水線(xiàn)架構(gòu)
在可編程邏輯中實(shí)現(xiàn)圖像處理流水線(xiàn)時(shí),需要考慮兩種主要架構(gòu):
1. 直接架構(gòu)
在直接架構(gòu)中,輸入直接連接到處理階段和輸出,具有最少的緩沖并且沒(méi)有幀緩沖。
優(yōu)點(diǎn):這種方法提供了輸入和輸出之間的最低延遲,使其成為延遲至關(guān)重要的應(yīng)用的理想選擇,例如自動(dòng)駕駛汽車(chē)或?qū)崟r(shí)視頻分析。
局限性:由于沒(méi)有幀緩沖,這種架構(gòu)對(duì)于需要時(shí)間數(shù)據(jù)存儲(chǔ)或同步的任務(wù)來(lái)說(shuō)靈活性較差。
2. 幀緩沖架構(gòu)
幀緩沖架構(gòu)利用內(nèi)存來(lái)緩沖一個(gè)或多個(gè)幀。
優(yōu)點(diǎn):在以下情況下使用此方法:
需要向相關(guān)處理系統(tǒng)中的處理器提供該圖像。
需要修改視頻流的輸出時(shí)間(例如,為了同步或與其他組件兼容)。
用例:幀緩沖架構(gòu)在靈活性和時(shí)間調(diào)整比延遲問(wèn)題更重要的應(yīng)用中很常見(jiàn)。
管道配置
無(wú)論選擇哪種圖像處理架構(gòu)(直接還是幀緩沖),設(shè)計(jì)中使用的 IP 核都需要通過(guò) AXI Lite 進(jìn)行正確的配置。
AXI Lite 配置:
設(shè)置圖像尺寸(寬度和高度)。
啟用 IP 核功能。
控制核心的處理算法。
示例:直接方法圖像處理管道
對(duì)于此應(yīng)用程序,我們將創(chuàng)建一個(gè)使用直接方法實(shí)現(xiàn)的示例圖像處理管道。
這意味著從輸入到輸出無(wú)需幀緩沖,從而確保從輸入幀到輸出幀的最小延遲。為了實(shí)現(xiàn)這一點(diǎn),我們必須最大限度地減少整個(gè)流水線(xiàn)的緩沖。
目標(biāo)設(shè)備
該設(shè)計(jì)的目標(biāo)設(shè)備是 AMD Kintex 7 FPGA,具體使用 Digilent Genesys 2 開(kāi)發(fā)板,其特點(diǎn)是:
HDMI 輸入和輸出接口:非常適合從運(yùn)動(dòng)相機(jī)或測(cè)試設(shè)備捕捉圖像并將其顯示在屏幕上。
該設(shè)計(jì)將利用 Vivado,并可分為兩個(gè)主要部分:
圖像處理管道
使用 AMD MicroBlaze V 進(jìn)行控制和配置
管道設(shè)計(jì)
該管道將:
通過(guò) HDMI 接收數(shù)據(jù):將其從具有垂直和水平同步信號(hào)的并行視頻格式轉(zhuǎn)換為 AXI 流。
將視頻流轉(zhuǎn)換為 AXI Stream:AXI Stream 是大多數(shù)圖像處理塊使用的標(biāo)準(zhǔn)接口。
通過(guò) AXI Stream 將數(shù)據(jù)輸出到視頻輸出:這在視頻時(shí)序發(fā)生器的控制下生成并行視頻。
使用 AMD MicroBlaze V 處理器進(jìn)行控制
管道和相關(guān)的視頻時(shí)序生成器將由基于 RISC-V 指令集架構(gòu)的 AMD MicroBlaze V 處理器控制。
與之前使用 VDMA(視頻直接內(nèi)存訪(fǎng)問(wèn))的示例不同,此應(yīng)用程序?qū)⒉皇褂?VDMA 來(lái)確保輸入和輸出之間的最低延遲。
AMD Vivado 設(shè)計(jì)套件組件
圖像處理流水線(xiàn)將使用以下IP核:
DVI2RGB:用于將 DVI 轉(zhuǎn)換為 RGB 格式的 Digilent IP 核。
視頻輸入到 AXI Stream:Vivado Design Suite IP 塊用于將 RGB 視頻轉(zhuǎn)換為 AXI Stream 格式。
AXI Stream 到視頻輸出:Vivado Design Suite IP 塊用于將 AXI Stream 轉(zhuǎn)換回 RGB 格式。
視頻時(shí)序控制器:配置用于檢測(cè)輸入時(shí)序并生成輸出時(shí)序。如有需要,此配置還將支持未來(lái)的 VDMA 應(yīng)用。
AXI Stream FIFO:以數(shù)據(jù)包模式配置,在線(xiàn)路通過(guò)之前對(duì)其進(jìn)行緩沖。
AXIS 寄存器切片:在管道內(nèi)添加以幫助時(shí)序收斂。
AMD MicroBlaze V 處理器子系統(tǒng)
AMD MicroBlaze V 處理器控制器子系統(tǒng)配置為微控制器。此配置支持 AXI 外設(shè)數(shù)據(jù)和指令接口,并通過(guò) AXI 互連連接到:
UartLite:用于 UART 控制臺(tái)通信的 Vivado Design Suite IP 塊。
AXI GPIO:監(jiān)控顯示器和攝像頭熱插拔檢測(cè)信號(hào)。
AXI 中斷控制器:處理處理器中斷。
MicroBlaze V 處理器調(diào)試模塊:支持使用 Vitis 平臺(tái)進(jìn)行調(diào)試。
設(shè)備利用率如下所示:
該軟件運(yùn)行在AMD Vitis平臺(tái)開(kāi)發(fā)的AMD MicroBlaze V處理器上。
#include#include"platform.h" #include"xil_printf.h" #include"xvtc.h" #include"xgpio.h" #include"vga.h" #include"xparameters.h" XVtc VtcInst; XVtc_Config *vtc_config ; XGpio hpd_in; XVtc_SourceSelect SourceSelect; intmain() { u16 result; VideoMode video; XVtc_Timing vtcTiming; init_platform(); printf("Setting up VTC "); vtc_config = XVtc_LookupConfig(XPAR_XVTC_0_BASEADDR); XVtc_CfgInitialize(&VtcInst, vtc_config, vtc_config->BaseAddress); //configure and assert the HPD XGpio_Initialize(&hpd_in, XPAR_XGPIO_0_BASEADDR); XGpio_DiscreteWrite(&hpd_in,1,0x1); sleep(20); XGpio_DiscreteWrite(&hpd_in,2,0x1); ///needs time here video = VMODE_1280x720; vtcTiming.HActiveVideo = video.width; /**< Horizontal Active Video Size */ ?vtcTiming.HFrontPorch = video.hps - video.width; /**< Horizontal Front Porch Size */ ?vtcTiming.HSyncWidth = video.hpe - video.hps; ?/**< Horizontal Sync Width */ ?vtcTiming.HBackPorch = video.hmax - video.hpe + 1; ?/**< Horizontal Back Porch Size */ ?vtcTiming.HSyncPolarity = video.hpol; /**< Horizontal Sync Polarity */ ?vtcTiming.VActiveVideo = video.height; /**< Vertical Active Video Size */ ?vtcTiming.V0FrontPorch = video.vps - video.height; /**< Vertical Front Porch Size */ ?vtcTiming.V0SyncWidth = video.vpe - video.vps; /**< Vertical Sync Width */ ?vtcTiming.V0BackPorch = video.vmax - video.vpe + 1;; /**< Horizontal Back Porch Size */ ?vtcTiming.V1FrontPorch = video.vps - video.height; /**< Vertical Front Porch Size */ ?vtcTiming.V1SyncWidth = video.vpe - video.vps; /**< Vertical Sync Width */ ?vtcTiming.V1BackPorch = video.vmax - video.vpe + 1;; /**< Horizontal Back Porch Size */ ?vtcTiming.VSyncPolarity = video.vpol; /**< Vertical Sync Polarity */ ?vtcTiming.Interlaced = 0; ? ? memset((void *)&SourceSelect, 0, sizeof(SourceSelect)); ?SourceSelect.VBlankPolSrc = 1; ?SourceSelect.VSyncPolSrc = 1; ?SourceSelect.HBlankPolSrc = 1; ?SourceSelect.HSyncPolSrc = 1; ?SourceSelect.ActiveVideoPolSrc = 1; ?SourceSelect.ActiveChromaPolSrc= 1; ?SourceSelect.VChromaSrc = 1; ?SourceSelect.VActiveSrc = 1; ?SourceSelect.VBackPorchSrc = 1; ?SourceSelect.VSyncSrc = 1; ?SourceSelect.VFrontPorchSrc = 1; ?SourceSelect.VTotalSrc = 1; ?SourceSelect.HActiveSrc = 1; ?SourceSelect.HBackPorchSrc = 1; ?SourceSelect.HSyncSrc = 1; ?SourceSelect.HFrontPorchSrc = 1; ?SourceSelect.HTotalSrc = 1; ?XVtc_RegUpdateEnable(&VtcInst); ?XVtc_SetGeneratorTiming(&VtcInst, &vtcTiming); ?XVtc_SetSource(&VtcInst, &SourceSelect); ?XVtc_EnableGenerator(&VtcInst); ?XVtc_Enable(&VtcInst); ?XVtc_EnableDetector(&VtcInst); ?XVtc_Enable(&VtcInst); ?xil_printf("Video Mode = %i ", result); ?xil_printf(" "); ? ??printf("VTC Set Up "); ? ? cleanup_platform(); ? ??return?0; }
-
FPGA
+關(guān)注
關(guān)注
1650文章
22204瀏覽量
626684 -
CMOS
+關(guān)注
關(guān)注
58文章
6094瀏覽量
240598 -
二極管
+關(guān)注
關(guān)注
149文章
10232瀏覽量
174856 -
圖像傳感器
+關(guān)注
關(guān)注
68文章
2007瀏覽量
131608
原文標(biāo)題:燈光、鏡頭和FPGA邏輯
文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ISSCC上的最新圖像傳感器技術(shù)

CCDCMOS圖像傳感器基礎(chǔ)與應(yīng)用
CCD圖像傳感器的工作原理和特點(diǎn)
美光引領(lǐng)圖像傳感器市場(chǎng)
從傳感器的實(shí)際工作環(huán)境談稱(chēng)重傳感器選用
線(xiàn)性溫度傳感器大的工作原理及應(yīng)用
安森美半導(dǎo)體的標(biāo)準(zhǔn)及定制CMOS圖像傳感器方案
CCD圖像傳感器,CCD圖像傳感器原理什么?
稱(chēng)重傳感器實(shí)際電路原理分析

評(píng)論