摘 要: 介紹了一種基于FPGA的高性能視頻信號采集與顯示系統(tǒng)的硬件設(shè)計與實現(xiàn),,模數(shù)轉(zhuǎn)換系統(tǒng)采用高性能的A/D采集電路,,通過高速的FPGA控制,將采集到的數(shù)據(jù)進行處理后,,通過系統(tǒng)中的PCI接口傳輸給監(jiān)控系統(tǒng)以供顯示,、監(jiān)控等功能的實現(xiàn)。本模塊已經(jīng)投入運行,,性能穩(wěn)定,。
關(guān)鍵詞: 視頻,;FPGA,;高速A/D;PCI
近年來,,伴隨著計算機技術(shù),、圖像處理技術(shù)、網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的發(fā)展普及,,興起了數(shù)字化視頻處理的浪潮,。隨著數(shù)字圖像處理技術(shù)和數(shù)字電路技術(shù)的發(fā)展,利用高性能處理器實現(xiàn)數(shù)字視頻信號采集與顯示系統(tǒng)已成為現(xiàn)實[1],。數(shù)字視頻信號采集與處理系統(tǒng)符合信息產(chǎn)業(yè)的未來發(fā)展趨勢,,蘊含著巨大的商機和經(jīng)濟效益。
由于FPGA本身功能強大,,使模塊具備良好的可擴展性,,可以在不修改硬件設(shè)計的情況下通過修改FPGA邏輯,提供更加豐富的功能[2],。
本文采用Xilinx公司的FPGA與一些外圍器件實現(xiàn)一種數(shù)字視頻信號采集模塊,。介紹了FPGA邏輯的實現(xiàn)、驅(qū)動程序開發(fā)的過程以及模塊的調(diào)試記錄與經(jīng)驗,。
1 設(shè)計原理
系統(tǒng)主要由ADC模塊,、時鐘電路模塊、存儲模塊,、接口模塊以及可編程邏輯控制模塊組成, 系統(tǒng)總體框圖如圖1所示,。
系統(tǒng)由PMC連接器供電,完成64 bit,、66 MHz或者32 bit,、33 MHz PCI數(shù)據(jù)通信;系統(tǒng)由兩路A/D采集器,、時鐘電路,、SDRAM存儲器、Flash存儲器和PMC接口電路實現(xiàn)。FPGA是整個模塊的核心,,所有信號圍繞FPGA輸入輸出,。來自系統(tǒng)的復(fù)位信號和手動復(fù)位一起作為FPGA的復(fù)位源。電源經(jīng)過轉(zhuǎn)換模塊轉(zhuǎn)換以后,,提供給FPGA使用,。FPGA時鐘信號本板產(chǎn)生。模塊上設(shè)置了JTAG接口和E2PROM接口,。PCI接口采用PMC規(guī)范接口,。
2 實現(xiàn)方法
2.1 器件選型
設(shè)計通信接口模塊時,為了提高設(shè)計的集成度以及靈活性,,采用FPGA來實現(xiàn),。FPGA實現(xiàn)功能包括:PMC接口、中斷以及控制寄存器,、2路模數(shù)轉(zhuǎn)換接口,、外部存儲器接口。因此要選用資源豐富,、速度較快,、RAM容量較大的FPGA。Xilinx公司Virtex-4 系列完全可以勝任上述工作,,在Virtex-4器件中,,含有特定的硬件知識產(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ù)據(jù)傳輸方式:Direct Master,、Direct Slave和DMA,寄存器向下兼容PCI9054、PCI9056,、PCI9060和PCI9080等,。
2.3 模數(shù)轉(zhuǎn)換器電路設(shè)計
A/D的選擇既要考慮A/D自身的性能又要滿足系統(tǒng)所要求的動態(tài)范圍和性能指標(biāo)。評價A/D轉(zhuǎn)換器的性能指標(biāo)主要有:A/D轉(zhuǎn)換位數(shù),、無寄生動態(tài)范圍(SFDR),、信噪比(SNR)、轉(zhuǎn)換速率,、量化靈敏度等,。一般來說,A/D的轉(zhuǎn)換位數(shù)越高越好,, 轉(zhuǎn)換位數(shù)越多其動態(tài)范圍就越高,。
AD6645芯片是美國ADI公司生產(chǎn)的高速、高性能單片模數(shù)轉(zhuǎn)換器,,是一種性能優(yōu)良,、具有14 bit分辨率、105 MS/s抽樣率的模數(shù)轉(zhuǎn)換器,,是繼AD9042、AD6640,、AD6644之后的第四代寬帶ADC產(chǎn)品[3],。其原理框圖如圖2所示,主要特點有:
(1)中頻采樣率可達(dá)105 MS/s,;
(2)多音無雜散動態(tài)范圍(SFDR)為100 dB,;
(3)采樣抖動0.1 ps;
(4)芯片功耗1.5 W,;
(5)差分模擬輸入,。
2.4 復(fù)位電路
模塊復(fù)位電路原理如圖3所示。
模塊電路中有兩種復(fù)位情況:手動復(fù)位和系統(tǒng)復(fù)位,。系統(tǒng)復(fù)位信號與手動復(fù)位輸入相遇,,作為復(fù)位器件的輸入,其輸出作為FPGA復(fù)位輸入信號,,保證在主機側(cè)出現(xiàn)冷復(fù)位和要求本板單獨復(fù)位的情況下,,所有的器件都處于復(fù)位狀態(tài)。
2.5 時鐘電路
FPGA有2路輸入時鐘,,分別是66 MHz和100 MHz由外部晶振提供的PCI總線時鐘和FPGA系統(tǒng)內(nèi)部工作頻率,。
2.6 電源電路
由于模塊中存在對噪聲敏感的ADC采樣電路等模擬電路,故數(shù)字電路部分可以采用DC-DC電路來完成供電,,選取Linear公司的LTC3545作為1.2 V,、1.5 V、1.8 V電壓轉(zhuǎn)換芯片,其具有95%以上的轉(zhuǎn)換效率,、2.5%以下的紋波電壓等特點[4],;而模擬電路部分的ADC電路需要特別對噪聲等干擾做濾化處理,故選取德州儀器(TI)的UCC284作為-5 V的電壓轉(zhuǎn)換芯片[5],,將PMC接口的-12 V電壓作為UCC284的輸入,,UCC284具有非常好的性能,線性調(diào)整為5 mV,,負(fù)載調(diào)整率在0.1%,。
3 FPGA設(shè)計
Xilinx公司的XC4VSX35可編程控制器邏輯代碼是整個系統(tǒng)的核心,系統(tǒng)邏輯結(jié)構(gòu)如圖4所示,。
FPGA代碼設(shè)計主要分為時鐘模塊,、模數(shù)轉(zhuǎn)換通道1、模數(shù)轉(zhuǎn)換通道2和PCI接口四個模塊,。
在頂層模塊,,主要進行各模塊的端口映射以及相關(guān)信號的賦值和取值工作。時鐘模塊將幾路時鐘的輸出校正到預(yù)定的頻率上,,模數(shù)轉(zhuǎn)換時鐘100 MHz,,F(xiàn)PGA工作時鐘100 MHz等。模數(shù)轉(zhuǎn)換通道1,、模數(shù)轉(zhuǎn)換通道2在電源和時鐘正常的情況下不斷向FPGA提供采樣數(shù)據(jù),,同時FPGA對兩路ADC及其相關(guān)的FIFO進行設(shè)置,包括FIFO的深度以及讀寫的閾值都對DMA傳輸具有重要的作用,。PCI接口模塊主要由FPGA與PCI9656的接口代碼組成,,包括總線的數(shù)據(jù)命令操作,PCI9656接受上位機PC驅(qū)動對它的設(shè)置后工作于J模式(LAD地址數(shù)據(jù)復(fù)合使用),,通過上位機對PCI9656寄存器的設(shè)置,,可使其工作于DMA模式,相關(guān)的寄存器在下節(jié)介紹,。根據(jù)Local Bus的時序描述,,F(xiàn)PGA作為Local Bus的從設(shè)備一直工作在命令等待狀態(tài),并對接收到的命令數(shù)據(jù)進行解析后做出相關(guān)的動作,。
系統(tǒng)FPGA邏輯代碼的整體結(jié)構(gòu)如圖5所示,,A/D系統(tǒng)在上電后首先校正時鐘,保證PCI9656和ADC采樣能夠正常運行,,然后通過PCI9656的局部總線查詢其內(nèi)部寄存器,,確定系統(tǒng)采用的觸發(fā)方式是采用內(nèi)部硬件觸發(fā)還是外部軟件觸發(fā),若采用內(nèi)部硬件中斷,,則將內(nèi)部硬件100 MHz時鐘進行8分頻,,即生成12.5 MHz時鐘以供ADC后端的鎖存器時鐘輸入端使用,;與此同時本板上的ADC采樣工作在一直進行著,同時刷新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ù)擴充為16 bit數(shù)據(jù)以便數(shù)據(jù)處理和傳輸,,通過空和滿的信號量控制PCI總線上的DMA工作,。另外系統(tǒng)中的PCI9656邏輯控制單元負(fù)責(zé)完成Local總線端的讀寫,包括寄存器的讀寫和DMA操作的執(zhí)行,。
4 采樣數(shù)據(jù)分析與驗證
系統(tǒng)工作過程中產(chǎn)生一個數(shù)據(jù)文件用于保存視頻采集的數(shù)據(jù),,將數(shù)據(jù)通過Matlab工具繪出采樣到的數(shù)據(jù)波形,如圖6所示,。從圖中可以看到,,系統(tǒng)采樣的16 bit數(shù)據(jù),采樣值在-32 768~32 767之間,,橫坐標(biāo)表示采樣的點數(shù)共5×105,,而硬件時鐘為100 MHz,AD6645采樣電路輸出的數(shù)據(jù)通過鎖存器送給FPGA處理,,鎖存器的使能信號為8分頻的時鐘信號,,可以得出12.5 MHz的采樣頻率,一次采樣2 B數(shù)據(jù),,波形中一個點表示1 B的數(shù)據(jù),,故可知5×105點表示采樣時間為40 ms,正好是兩行PAL信號的時間,,符合PAL的標(biāo)準(zhǔn)[6],驗證信號采集結(jié)果正確,。
將圖6中兩行波形放大,,可以看到此圖中顯示的是一行信號完整波形的部分圖形,需要5個前均衡脈沖,、5個同步高脈沖,、5個后均衡脈沖和17個色同步消隱脈沖,然后是285.5行,,同時在試驗中發(fā)現(xiàn),,若一次DMA數(shù)據(jù)包長太小,將導(dǎo)致采集的數(shù)據(jù)不完整,,無法正常顯示,;若一次DMA數(shù)據(jù)包長太大,每次傳輸之間的間隔時間比一次DMA傳輸數(shù)據(jù)的顯示時間長得多,,圖像顯示會有間隔,,導(dǎo)致無法正常顯示,。因此,系統(tǒng)設(shè)計中每次DMA數(shù)據(jù)包長要視DMA的傳輸時間和顯示時間而定,。
5 軟件設(shè)計
上位機先初始化PCI9656芯片,,查詢狀態(tài)寄存器(StatusReg)中時鐘是否穩(wěn)定,即時鐘穩(wěn)定狀態(tài)位是否為1,,當(dāng)AD時鐘穩(wěn)定后,,查詢FIFO是否采集滿,如果狀態(tài)寄存器中通道1狀態(tài)位為1,,則表示通道1的FIFO數(shù)據(jù)已滿,,然后初始化一個Descriptor用于進行DMA傳輸,然后發(fā)起Scatter/Gather模式DMA[7],。系統(tǒng)軟件運行流程如圖7所示,。
以讀取通道1數(shù)據(jù)為例,具體的初始化流程如下:
(1)對PCI9656使能IO空間讀寫,;
(2)讀取時鐘穩(wěn)定狀態(tài)位,,如果ADC時鐘工作穩(wěn)定,繼續(xù)進行下一步的工作,;
(3)初始化一個Descriptor的結(jié)構(gòu)體設(shè)置,,用于進行DMA傳輸;
(4)打開DMA通道,,設(shè)置DMA傳輸結(jié)束中斷使能DMA Scatter/Gather模式,;
(5)清空模數(shù)轉(zhuǎn)換通道1的FIFO;
(6)觸發(fā)AD通道1數(shù)據(jù)采集啟動,;
(7)讀取狀態(tài)寄存器以確定板上狀態(tài),;
(8)如果FIFO已滿,則設(shè)置DMA相關(guān)寄存器,,開始DMA傳輸,;
(9)等待中斷,查詢DMA結(jié)束標(biāo)志位有效,,確定一次DMA傳輸完成,;
(10)重新初始化Descriptor,以進行下一個DMA操作,,重復(fù)步驟(4)以后的過程,。
6 模塊的調(diào)試及性能
模塊設(shè)計完成后,在基于PMC接口的CompactPCI總線架構(gòu)的工控機箱內(nèi)對其進行測試,。利用外部設(shè)備和通訊接口模塊進行通訊,,然后實測視頻數(shù)據(jù)波形,如圖8所示,。
分析結(jié)果顯示模塊工作正常,,與采樣的數(shù)據(jù)波形一致,,達(dá)到了設(shè)計要求。
本設(shè)計充分體現(xiàn)高性能視頻信號采集與顯示系統(tǒng)的工作特點,,整個設(shè)計結(jié)構(gòu)緊湊,,性能穩(wěn)定,抗干擾能力強,,并且適用于各種工業(yè)控制場合,。本設(shè)計已經(jīng)在工業(yè)控制環(huán)境下多次應(yīng)用,在不同主機環(huán)境下運行測試程序,,經(jīng)長時間考核,,A/D采樣數(shù)據(jù)傳輸速率穩(wěn)定,模塊運行穩(wěn)定可靠,。
參考文獻
[1] 錢敏,,李富華,黃秋萍,,等.基于HDL的PAL制數(shù)字視頻圖像采集控制器設(shè)計[J].微電子學(xué)與計算機,,2007,24(12):191-194.
[2] 孟憲元,,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計[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] 趙堅勇.電視原理與接收技術(shù)[M].北京:國防工業(yè)出版社,2007.
[7] PLX Tech.PCI9656 datasheet[EB/OL].[2009-01-28].//http:www.PLX Technology.com.