《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高性能視頻信號(hào)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的高性能視頻信號(hào)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2012年第6期
徐國(guó)強(qiáng),張 萌
(江蘇自動(dòng)化研究所,江蘇 連云港222006)
摘要: 介紹了一種基于FPGA的高性能視頻信號(hào)采集與顯示系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn),模數(shù)轉(zhuǎn)換系統(tǒng)采用高性能的A/D采集電路,通過高速的FPGA控制,將采集到的數(shù)據(jù)進(jìn)行處理后,通過系統(tǒng)中的PCI接口傳輸給監(jiān)控系統(tǒng)以供顯示、監(jiān)控等功能的實(shí)現(xiàn)。本模塊已經(jīng)投入運(yùn)行,性能穩(wěn)定。
Abstract:
Key words :

摘  要: 介紹了一種基于FPGA的高性能視頻信號(hào)采集與顯示系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn),模數(shù)轉(zhuǎn)換系統(tǒng)采用高性能的A/D采集電路,通過高速的FPGA控制,將采集到的數(shù)據(jù)進(jìn)行處理后,通過系統(tǒng)中的PCI接口傳輸給監(jiān)控系統(tǒng)以供顯示、監(jiān)控等功能的實(shí)現(xiàn)。本模塊已經(jīng)投入運(yùn)行,性能穩(wěn)定。
關(guān)鍵詞: 視頻;FPGA;高速A/D;PCI


    近年來,伴隨著計(jì)算機(jī)技術(shù)、圖像處理技術(shù)、網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的發(fā)展普及,興起了數(shù)字化視頻處理的浪潮。隨著數(shù)字圖像處理技術(shù)和數(shù)字電路技術(shù)的發(fā)展,利用高性能處理器實(shí)現(xiàn)數(shù)字視頻信號(hào)采集與顯示系統(tǒng)已成為現(xiàn)實(shí)[1]。數(shù)字視頻信號(hào)采集與處理系統(tǒng)符合信息產(chǎn)業(yè)的未來發(fā)展趨勢(shì),蘊(yùn)含著巨大的商機(jī)和經(jīng)濟(jì)效益。
    由于FPGA本身功能強(qiáng)大,使模塊具備良好的可擴(kuò)展性,可以在不修改硬件設(shè)計(jì)的情況下通過修改FPGA邏輯,提供更加豐富的功能[2]。
    本文采用Xilinx公司的FPGA與一些外圍器件實(shí)現(xiàn)一種數(shù)字視頻信號(hào)采集模塊。介紹了FPGA邏輯的實(shí)現(xiàn)、驅(qū)動(dòng)程序開發(fā)的過程以及模塊的調(diào)試記錄與經(jīng)驗(yàn)。
1 設(shè)計(jì)原理
    系統(tǒng)主要由ADC模塊、時(shí)鐘電路模塊、存儲(chǔ)模塊、接口模塊以及可編程邏輯控制模塊組成, 系統(tǒng)總體框圖如圖1所示。

    系統(tǒng)由PMC連接器供電,完成64 bit、66 MHz或者32 bit、33 MHz PCI數(shù)據(jù)通信;系統(tǒng)由兩路A/D采集器、時(shí)鐘電路、SDRAM存儲(chǔ)器、Flash存儲(chǔ)器和PMC接口電路實(shí)現(xiàn)。FPGA是整個(gè)模塊的核心,所有信號(hào)圍繞FPGA輸入輸出。來自系統(tǒng)的復(fù)位信號(hào)和手動(dòng)復(fù)位一起作為FPGA的復(fù)位源。電源經(jīng)過轉(zhuǎn)換模塊轉(zhuǎn)換以后,提供給FPGA使用。FPGA時(shí)鐘信號(hào)本板產(chǎn)生。模塊上設(shè)置了JTAG接口和E2PROM接口。PCI接口采用PMC規(guī)范接口。
2 實(shí)現(xiàn)方法
2.1 器件選型

    設(shè)計(jì)通信接口模塊時(shí),為了提高設(shè)計(jì)的集成度以及靈活性,采用FPGA來實(shí)現(xiàn)。FPGA實(shí)現(xiàn)功能包括:PMC接口、中斷以及控制寄存器、2路模數(shù)轉(zhuǎn)換接口、外部存儲(chǔ)器接口。因此要選用資源豐富、速度較快、RAM容量較大的FPGA。Xilinx公司Virtex-4 系列完全可以勝任上述工作,在Virtex-4器件中,含有特定的硬件知識(shí)產(chǎn)權(quán)(IP),支持多種主要協(xié)議,包括PCI,其內(nèi)嵌的RAM可以作為FIFO或者雙口RAM使用,此外還具備豐富的資源。綜合考慮,F(xiàn)PGA采用Xilinx公司的XC4VSX35
2.2 PCI接口電路
    本系統(tǒng)中采用PCI9656作為PCI接口芯片,此芯片為PLX公司生產(chǎn)的比較新的產(chǎn)品。PCI9656支持64 bit、66 MHz的PCI總線和32 bit、66 MHz的Local總線接口,兼容PCI R2.2規(guī)范,支持PICMG 2.1 R2.0熱交換功能,支持三種局部總線類型:M模式、C模式和J模式,支持異步的PCI和Local總線時(shí)鐘,支持三種數(shù)據(jù)傳輸方式:Direct Master、Direct Slave和DMA,寄存器向下兼容PCI9054、PCI9056、PCI9060和PCI9080等。
2.3 模數(shù)轉(zhuǎn)換器電路設(shè)計(jì)
    A/D的選擇既要考慮A/D自身的性能又要滿足系統(tǒng)所要求的動(dòng)態(tài)范圍和性能指標(biāo)。評(píng)價(jià)A/D轉(zhuǎn)換器的性能指標(biāo)主要有:A/D轉(zhuǎn)換位數(shù)、無寄生動(dòng)態(tài)范圍(SFDR)、信噪比(SNR)、轉(zhuǎn)換速率、量化靈敏度等。一般來說,A/D的轉(zhuǎn)換位數(shù)越高越好, 轉(zhuǎn)換位數(shù)越多其動(dòng)態(tài)范圍就越高。
    AD6645芯片是美國(guó)ADI公司生產(chǎn)的高速、高性能單片模數(shù)轉(zhuǎn)換器,是一種性能優(yōu)良、具有14 bit分辨率、105 MS/s抽樣率的模數(shù)轉(zhuǎn)換器,是繼AD9042、AD6640、AD6644之后的第四代寬帶ADC產(chǎn)品[3]。其原理框圖如圖2所示,主要特點(diǎn)有:

 

 

    (1)中頻采樣率可達(dá)105 MS/s;
    (2)多音無雜散動(dòng)態(tài)范圍(SFDR)為100 dB;
    (3)采樣抖動(dòng)0.1 ps;
    (4)芯片功耗1.5 W;
    (5)差分模擬輸入。
2.4 復(fù)位電路
    模塊復(fù)位電路原理如圖3所示。

    模塊電路中有兩種復(fù)位情況:手動(dòng)復(fù)位和系統(tǒng)復(fù)位。系統(tǒng)復(fù)位信號(hào)與手動(dòng)復(fù)位輸入相遇,作為復(fù)位器件的輸入,其輸出作為FPGA復(fù)位輸入信號(hào),保證在主機(jī)側(cè)出現(xiàn)冷復(fù)位和要求本板單獨(dú)復(fù)位的情況下,所有的器件都處于復(fù)位狀態(tài)。
2.5 時(shí)鐘電路
    FPGA有2路輸入時(shí)鐘,分別是66 MHz和100 MHz由外部晶振提供的PCI總線時(shí)鐘和FPGA系統(tǒng)內(nèi)部工作頻率。
2.6 電源電路
    由于模塊中存在對(duì)噪聲敏感的ADC采樣電路等模擬電路,故數(shù)字電路部分可以采用DC-DC電路來完成供電,選取Linear公司的LTC3545作為1.2 V、1.5 V、1.8 V電壓轉(zhuǎn)換芯片,其具有95%以上的轉(zhuǎn)換效率、2.5%以下的紋波電壓等特點(diǎn)[4];而模擬電路部分的ADC電路需要特別對(duì)噪聲等干擾做濾化處理,故選取德州儀器(TI)的UCC284作為-5 V的電壓轉(zhuǎn)換芯片[5],將PMC接口的-12 V電壓作為UCC284的輸入,UCC284具有非常好的性能,線性調(diào)整為5 mV,負(fù)載調(diào)整率在0.1%。
3 FPGA設(shè)計(jì)
    Xilinx公司的XC4VSX35可編程控制器邏輯代碼是整個(gè)系統(tǒng)的核心,系統(tǒng)邏輯結(jié)構(gòu)如圖4所示。

    FPGA代碼設(shè)計(jì)主要分為時(shí)鐘模塊、模數(shù)轉(zhuǎn)換通道1、模數(shù)轉(zhuǎn)換通道2和PCI接口四個(gè)模塊。
    在頂層模塊,主要進(jìn)行各模塊的端口映射以及相關(guān)信號(hào)的賦值和取值工作。時(shí)鐘模塊將幾路時(shí)鐘的輸出校正到預(yù)定的頻率上,模數(shù)轉(zhuǎn)換時(shí)鐘100 MHz,F(xiàn)PGA工作時(shí)鐘100 MHz等。模數(shù)轉(zhuǎn)換通道1、模數(shù)轉(zhuǎn)換通道2在電源和時(shí)鐘正常的情況下不斷向FPGA提供采樣數(shù)據(jù),同時(shí)FPGA對(duì)兩路ADC及其相關(guān)的FIFO進(jìn)行設(shè)置,包括FIFO的深度以及讀寫的閾值都對(duì)DMA傳輸具有重要的作用。PCI接口模塊主要由FPGA與PCI9656的接口代碼組成,包括總線的數(shù)據(jù)命令操作,PCI9656接受上位機(jī)PC驅(qū)動(dòng)對(duì)它的設(shè)置后工作于J模式(LAD地址數(shù)據(jù)復(fù)合使用),通過上位機(jī)對(duì)PCI9656寄存器的設(shè)置,可使其工作于DMA模式,相關(guān)的寄存器在下節(jié)介紹。根據(jù)Local Bus的時(shí)序描述,F(xiàn)PGA作為L(zhǎng)ocal Bus的從設(shè)備一直工作在命令等待狀態(tài),并對(duì)接收到的命令數(shù)據(jù)進(jìn)行解析后做出相關(guān)的動(dòng)作。
    系統(tǒng)FPGA邏輯代碼的整體結(jié)構(gòu)如圖5所示,A/D系統(tǒng)在上電后首先校正時(shí)鐘,保證PCI9656和ADC采樣能夠正常運(yùn)行,然后通過PCI9656的局部總線查詢其內(nèi)部寄存器,確定系統(tǒng)采用的觸發(fā)方式是采用內(nèi)部硬件觸發(fā)還是外部軟件觸發(fā),若采用內(nèi)部硬件中斷,則將內(nèi)部硬件100 MHz時(shí)鐘進(jìn)行8分頻,即生成12.5 MHz時(shí)鐘以供ADC后端的鎖存器時(shí)鐘輸入端使用;與此同時(shí)本板上的ADC采樣工作在一直進(jìn)行著,同時(shí)刷新FPGA內(nèi)部生成的FIFO,鑒于ADC采樣的14 bit數(shù)據(jù)和Local總線的32 bit寬度,生成32 768×32 bit(Local端)和65 536×16 bit(ADC鎖存器端)即128 KB大小的FIFO緩沖區(qū),邏輯上將14 bit采樣數(shù)據(jù)擴(kuò)充為16 bit數(shù)據(jù)以便數(shù)據(jù)處理和傳輸,通過空和滿的信號(hào)量控制PCI總線上的DMA工作。另外系統(tǒng)中的PCI9656邏輯控制單元負(fù)責(zé)完成Local總線端的讀寫,包括寄存器的讀寫和DMA操作的執(zhí)行。

4 采樣數(shù)據(jù)分析與驗(yàn)證
    系統(tǒng)工作過程中產(chǎn)生一個(gè)數(shù)據(jù)文件用于保存視頻采集的數(shù)據(jù),將數(shù)據(jù)通過Matlab工具繪出采樣到的數(shù)據(jù)波形,如圖6所示。從圖中可以看到,系統(tǒng)采樣的16 bit數(shù)據(jù),采樣值在-32 768~32 767之間,橫坐標(biāo)表示采樣的點(diǎn)數(shù)共5×105,而硬件時(shí)鐘為100 MHz,AD6645采樣電路輸出的數(shù)據(jù)通過鎖存器送給FPGA處理,鎖存器的使能信號(hào)為8分頻的時(shí)鐘信號(hào),可以得出12.5 MHz的采樣頻率,一次采樣2 B數(shù)據(jù),波形中一個(gè)點(diǎn)表示1 B的數(shù)據(jù),故可知5×105點(diǎn)表示采樣時(shí)間為40 ms,正好是兩行PAL信號(hào)的時(shí)間,符合PAL的標(biāo)準(zhǔn)[6],驗(yàn)證信號(hào)采集結(jié)果正確。
    將圖6中兩行波形放大,可以看到此圖中顯示的是一行信號(hào)完整波形的部分圖形,需要5個(gè)前均衡脈沖、5個(gè)同步高脈沖、5個(gè)后均衡脈沖和17個(gè)色同步消隱脈沖,然后是285.5行,同時(shí)在試驗(yàn)中發(fā)現(xiàn),若一次DMA數(shù)據(jù)包長(zhǎng)太小,將導(dǎo)致采集的數(shù)據(jù)不完整,無法正常顯示;若一次DMA數(shù)據(jù)包長(zhǎng)太大,每次傳輸之間的間隔時(shí)間比一次DMA傳輸數(shù)據(jù)的顯示時(shí)間長(zhǎng)得多,圖像顯示會(huì)有間隔,導(dǎo)致無法正常顯示。因此,系統(tǒng)設(shè)計(jì)中每次DMA數(shù)據(jù)包長(zhǎng)要視DMA的傳輸時(shí)間和顯示時(shí)間而定。

5 軟件設(shè)計(jì)
    上位機(jī)先初始化PCI9656芯片,查詢狀態(tài)寄存器(StatusReg)中時(shí)鐘是否穩(wěn)定,即時(shí)鐘穩(wěn)定狀態(tài)位是否為1,當(dāng)AD時(shí)鐘穩(wěn)定后,查詢FIFO是否采集滿,如果狀態(tài)寄存器中通道1狀態(tài)位為1,則表示通道1的FIFO數(shù)據(jù)已滿,然后初始化一個(gè)Descriptor用于進(jìn)行DMA傳輸,然后發(fā)起Scatter/Gather模式DMA[7]。系統(tǒng)軟件運(yùn)行流程如圖7所示。

    以讀取通道1數(shù)據(jù)為例,具體的初始化流程如下:
    (1)對(duì)PCI9656使能IO空間讀寫;
    (2)讀取時(shí)鐘穩(wěn)定狀態(tài)位,如果ADC時(shí)鐘工作穩(wěn)定,繼續(xù)進(jìn)行下一步的工作;
    (3)初始化一個(gè)Descriptor的結(jié)構(gòu)體設(shè)置,用于進(jìn)行DMA傳輸;
    (4)打開DMA通道,設(shè)置DMA傳輸結(jié)束中斷使能DMA Scatter/Gather模式;
    (5)清空模數(shù)轉(zhuǎn)換通道1的FIFO;
    (6)觸發(fā)AD通道1數(shù)據(jù)采集啟動(dòng);
    (7)讀取狀態(tài)寄存器以確定板上狀態(tài);
    (8)如果FIFO已滿,則設(shè)置DMA相關(guān)寄存器,開始DMA傳輸;
    (9)等待中斷,查詢DMA結(jié)束標(biāo)志位有效,確定一次DMA傳輸完成;
    (10)重新初始化Descriptor,以進(jìn)行下一個(gè)DMA操作,重復(fù)步驟(4)以后的過程。
6 模塊的調(diào)試及性能
    模塊設(shè)計(jì)完成后,在基于PMC接口的CompactPCI總線架構(gòu)的工控機(jī)箱內(nèi)對(duì)其進(jìn)行測(cè)試。利用外部設(shè)備和通訊接口模塊進(jìn)行通訊,然后實(shí)測(cè)視頻數(shù)據(jù)波形,如圖8所示。

    分析結(jié)果顯示模塊工作正常,與采樣的數(shù)據(jù)波形一致,達(dá)到了設(shè)計(jì)要求。
    本設(shè)計(jì)充分體現(xiàn)高性能視頻信號(hào)采集與顯示系統(tǒng)的工作特點(diǎn),整個(gè)設(shè)計(jì)結(jié)構(gòu)緊湊,性能穩(wěn)定,抗干擾能力強(qiáng),并且適用于各種工業(yè)控制場(chǎng)合。本設(shè)計(jì)已經(jīng)在工業(yè)控制環(huán)境下多次應(yīng)用,在不同主機(jī)環(huán)境下運(yùn)行測(cè)試程序,經(jīng)長(zhǎng)時(shí)間考核,A/D采樣數(shù)據(jù)傳輸速率穩(wěn)定,模塊運(yùn)行穩(wěn)定可靠。
參考文獻(xiàn)
[1] 錢敏,李富華,黃秋萍,等.基于HDL的PAL制數(shù)字視頻圖像采集控制器設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2007,24(12):191-194.
[2] 孟憲元,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[3] Analog devices.AD6645 datasheet[EB/OL].[2003-02-20]. //http:www.Analog devices.com.
[4] Linear technology.LTC3545 datasheet[EB/OL].[2008-01-30].www.Linear technology.com.
[5] Texas Instruments.UCC284 datasheet[EB/OL].[2000-01-30]. //http:www.Texas Instruments.com.
[6] 趙堅(jiān)勇.電視原理與接收技術(shù)[M].北京:國(guó)防工業(yè)出版社,2007.
[7] PLX Tech.PCI9656 datasheet[EB/OL].[2009-01-28].//http:www.PLX Technology.com.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。