<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的高速多路視頻數據采集系統設計

基于FPGA的高速多路視頻數據采集系統設計

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

工業(yè)現場(chǎng)因為環(huán)境復雜,實(shí)時(shí)性要求高,常常需要對一處或多處重要位置同時(shí)進(jìn)行監控,且能夠在需要時(shí)切換其中一幅畫(huà)面全屏顯示。這就要求設計一種實(shí)時(shí)視頻監控系統,既能夠滿(mǎn)足工業(yè)現場(chǎng)應用的特殊環(huán)境,具有體積小、功耗低、可定制的特點(diǎn),又能夠對多點(diǎn)進(jìn)行同時(shí)采集和同屏顯示以及對其中的一路進(jìn)行切換。

國內現有的視頻監控方案一般是采用CCD攝像頭+視頻解碼芯片(如SAA7113H/ADV7181B)+FPGA/CPLD+DSP的模式實(shí)現,其中視頻解碼芯片用來(lái)對CCD攝像頭采集的模擬信號進(jìn)行AD轉換,FPGA/CPLD對數據采集進(jìn)行控制,DSP最終對數據進(jìn)行處理。這種方法開(kāi)發(fā)周期長(cháng),成本高,且可更改性差。

本文介紹的系統主要由兩片Altera公司的系列的EP2C8Q20818和飛利浦公司的視頻解碼芯片SAA7113H以及外存儲器件SRAM等組成。兩片FPGA分別完成前端圖像的采集和后端數據的處理,視頻解碼芯片完成模擬信號向數據信號的轉換,存儲器件在FPGA的控制下起到數據緩存作用。

本文引用地址:http://dyxdggzs.com/article/201706/348868.htm

1 系統描述

系統主要分為采集模塊、解碼模塊、數據格式轉換模塊、存儲模塊、UART模塊和LCD/VGA顯示模塊,如下圖1所示。四片視頻解碼芯片在FPGA1的控制下通過(guò)I2C總線(xiàn)完成配置和初始化過(guò)程,輸出8位與CCIR656兼容的YCrCb 4:2:2格式的視頻數據,同時(shí)還包括行同步HS、場(chǎng)同步VS和奇偶場(chǎng)RTS0等信號。由于顯示終端支持的是標準的RGB格式的數據,所以要對視頻解碼芯片輸出的YCrCb 4:2:2格式數據進(jìn)行轉換。經(jīng)轉換所得的RGB數據在FPGA2的控制下,配合相應的時(shí)序信號,截取要顯示的有效的640x480個(gè)像素,乒乓存入兩個(gè)SRAM中,并最終在:LCD /VGA顯示模塊的控制下將數據顯示在屏幕上。UART通訊模塊集成在FPGA里,通過(guò)PC機的串口發(fā)送相應的控制命令,FPGA接收后切換相應通道的畫(huà)面。


2 系統軟件結構

系統軟件主要由采集模塊、解碼模塊、存儲模塊、顯示模塊和UART模塊組成,軟件結構如圖2所示。


3 ITU656解碼

ITU656解碼模塊根據ITU656標準將4:2:2的數據流解碼成ITU656標準視頻流。ITU656并行接口除了傳輸4:2:2的YCbCr視頻流外,還有行、場(chǎng)同步所用的控制信號。PAL制式的圖像一幀有625行,每秒掃描25幀;每行數據由1128字節的數據塊組成。其中,PAL制式23~311行是偶數場(chǎng)視頻數據,312~552行是奇數場(chǎng)視頻數據,其余為垂直控制信號。
圖3為ITU656每行的數據結構。每行數據包含水平控制信號和YCbCr視頻數據信號。視頻數據字是以27兆字/秒的速率傳送的,其順序是:Cb,Y,Cr,Y,Cb,Y,Cr,…其中,Cb,Y.Cr這3個(gè)字指的是同址的亮度和色差信號取樣,后面的Y字對應于下一個(gè)亮度取樣。每行開(kāi)始的288字節為行控制信號,開(kāi)始的4字節為EAV信號(有效視頻結束),緊接著(zhù)280個(gè)固定填充數據,最后是4字節的SAV信號(有效視頻起始)。

SAV和EAV信號有3字節的前導:FF、FF、00;最后1字節XY表示該行位于整個(gè)數據幀的位置及如何區分SAV、EAV。在每個(gè)時(shí)鐘的上升沿讀取從解碼芯片傳來(lái)的8位數據。當檢測到一行數據的開(kāi)始標志FF0000XY時(shí),檢測到SAV信號或EAV信號,提取H、F、V信號。然后發(fā)出開(kāi)始命令,同時(shí)開(kāi)啟行列計數器,開(kāi)始對接下來(lái)的圖像數據進(jìn)行解碼,根據每個(gè)8位數據自身帶的信息,判斷該數據為Y,Cr還是Cb,從而得到Y,Cr,Cb各分量的值。解碼流程如圖4所示。


4 幀存儲控制器與LCD/VGA顯示控制器的設計

4.1 數據格式的轉換

根據前面第2節的介紹,從ITU656解碼模塊出來(lái)的數據為8位4:2:2的YUV空間圖像數據,而LCD/VGA顯示器只能接收RGB數據。因為Y-CrCb4:2:2格式不能直接轉換為RGB,所以需要先轉換為YCrCb4:4:4格式。

我們知道解碼芯片得到的視頻數據是順序為Cb,Y,Cr,Y,Cb,Y,Cr,……的序列,存儲的時(shí)候將一個(gè)Y與一個(gè)C(Cb或Cr)結合起來(lái)組成一個(gè)16位的數據。而當數據被讀出來(lái)時(shí)就要將這些視頻數據轉換為每個(gè)像素占24位(Y、Cb、Cr各占8位)的4:4:4的數據流。4:2:2到4:4:4的轉換采用最簡(jiǎn)單的插值算法,在采樣的時(shí)候,每隔一個(gè)像素才采一次色度值(Cb和Cr)。在轉化時(shí),直接將前一個(gè)有色度信息的像素點(diǎn)的Cr以及Cb的值直接賦給后一個(gè)像素的Cr和Cb,這樣就能得到4:4:4的像素數據,每個(gè)像素占用24位位寬。

4.2 幀存儲控制器

作為系統的重要組成部分,幀存儲控制器主要用來(lái)進(jìn)行有效數據的緩存。視頻數據在FPGA1的控制下乒乓寫(xiě)入兩片SRAM。乒乓技術(shù)應用的關(guān)鍵在于乒乓切換信號frame的產(chǎn)生,本系統中根據視頻解碼芯片的奇偶場(chǎng)信號RTS0來(lái)產(chǎn)生幀切換frame信號,也就是一個(gè)RTS0周期切換一次。一個(gè)RTS0周期由一個(gè)奇場(chǎng)和一個(gè)偶場(chǎng)組成,是一副完整的畫(huà)面。當frame為1是,FPGA通過(guò)計數器的計數截取最終顯示所需要的有效的像素點(diǎn)信息按照SRAM的控制時(shí)序寫(xiě)入SRAM1,同樣當frame為0時(shí),將對應的像素信息寫(xiě)入SRAM2,如圖5所示。

系統加電的同時(shí),4片視頻解碼芯片同時(shí)工作,為了保證數據采集的準確性和顯示的同步性,系統內生成一個(gè)八倍于像素時(shí)鐘的寫(xiě)時(shí)鐘信號write_clk,這樣,在一個(gè)像素時(shí)鐘周期,寫(xiě)時(shí)鐘信號已經(jīng)過(guò)了八個(gè)周期,而每?jì)蓚€(gè)周期分別完成一路圖像數據的寫(xiě)過(guò)程。
由于SRAM是一維存儲空間,一個(gè)地址對應一個(gè)數據。所以在寫(xiě)入數據時(shí)將SRAM的地址空間劃分為4段,每一段用來(lái)存儲一路圖像數據。

用程序實(shí)現比較簡(jiǎn)單,設置一個(gè)地址寄存器sram_addr_reg,將它賦給SRAM的地址控制信號sram_addr。然后在對每一路圖像寫(xiě)入時(shí),將對應的SRAM的起始地址加上一個(gè)固定的基數。如:

這樣就保證了SRAM中對應地址的數據和屏幕上顯示位置的一一對應關(guān)系,在讀程序中,只需要按照順序讀SRAM即可,如圖6所示。


4.3 LCD/VGA顯示控制器

本模塊主要是用FPGA來(lái)產(chǎn)生LCD/VGA顯示時(shí)所需要的時(shí)鐘信號CLK(像素時(shí)鐘信號)、VSYNC(幀同步信號)、HSYNC(行同步信號)和使能信號(VDEN),并在相應控制時(shí)序的作用下,依次將顯示緩存即SRAM中的數據依次讀出,輸出到LCD上的過(guò)程。LCD顯示所需的主要時(shí)序信號的關(guān)系如圖7所示。

在系統中,LCD屏幕分辨率為640x480,像素時(shí)鐘CLK為25MHz,由于FPGA的主時(shí)鐘輸入選用了20 MHz的有源時(shí)鐘,那么就要求利用Cyclone芯片的內部邏輯資源來(lái)實(shí)現時(shí)鐘倍頻,以產(chǎn)生所需要的CLK(25 MHz)、用Verilog語(yǔ)言編寫(xiě)參數化的時(shí)序生成模塊,產(chǎn)生HSYNC(32 kHz)及VHY-NC(60 Hz)時(shí)鐘信號,如圖8所示。

VGA顯示原理與LCD相似,除了在硬件上正確連接ADV7125芯片電路外根據需要的分辨率來(lái)生成相應時(shí)鐘信號即可。

5 圖像抖動(dòng)的分析與解決

在系統完成后軟硬件聯(lián)調時(shí),出現畫(huà)面抖動(dòng)現象,其中以RTSO為基準而產(chǎn)生乒乓切換的那一路圖像穩定,其他三路都出現不同程度的抖動(dòng)現象。對此我們做了深入的分析和實(shí)驗,分析整個(gè)系統的結構可知,系統在多個(gè)時(shí)鐘控制下共同工作,也就是所說(shuō)的典型的異步系統。我們知道,數據在異步系統傳輸時(shí)對時(shí)鐘要求非常嚴格,稍微的一點(diǎn)時(shí)鐘偏差都會(huì )帶來(lái)對有效像素截取的偏差,最終影響圖像的顯示質(zhì)量。

解決的辦法有兩個(gè),一是加入緩沖機制,利用FIFO對數據存儲的特性來(lái)實(shí)現數據在異步時(shí)鐘之間的無(wú)縫傳輸;二是同步時(shí)鐘,利用狀態(tài)機等方法使得異步系統的時(shí)鐘能夠盡可能同步。采用第二種方法對系統進(jìn)行改進(jìn),首先系統中所有的分頻、倍頻盡量使用Quartus 6.0自帶的PLL產(chǎn)生,并且使用專(zhuān)用時(shí)鐘引腳進(jìn)行時(shí)鐘輸出;其次把寫(xiě)時(shí)鐘write_clk降為54M,也就是每隔一個(gè)像素采集一次。最終,四路圖像都能穩定顯示。

6 結束語(yǔ)

本文實(shí)現了一種結合Altera公司生產(chǎn)的CycloneII系列FPGA與視頻解碼芯片ADV7181B的嵌入式圖像采集系統。系統具有低功耗、低成本、高可靠和靈活性好等特點(diǎn)?;贔PGA的多路圖像采集系統采用兩片FPGA作為主控芯片,完成四路視頻畫(huà)面的同時(shí)顯示和切換,實(shí)現兩個(gè)FPGA的級聯(lián)配置,采用Verilog語(yǔ)言編寫(xiě)的控制邏輯解決了畫(huà)面抖動(dòng)問(wèn)題。系統軟件集成度高,硬件結構清晰簡(jiǎn)單,即可滿(mǎn)足一般監控場(chǎng)合對多處位置進(jìn)行實(shí)時(shí)監控的需求,又能為功能更復雜的圖像處理、壓縮、傳輸系統提供前端圖像數據采集。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>