摘 要: 介紹了一種基于FPGA的高性能視頻信號采集與顯示系統(tǒng)的硬件設計與實現(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)絡技術(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本身功能強大,使模塊具備良好的可擴展性,可以在不修改硬件設計的情況下通過修改FPGA邏輯,提供更加豐富的功能[2]。
本文采用Xilinx公司的FPGA與一些外圍器件實現(xiàn)一種數(shù)字視頻信號采集模塊。介紹了FPGA邏輯的實現(xiàn)、驅(qū)動程序開發(fā)的過程以及模塊的調(diào)試記錄與經(jīng)驗。
1 設計原理
系統(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)的復位信號和手動復位一起作為FPGA的復位源。電源經(jīng)過轉(zhuǎn)換模塊轉(zhuǎn)換以后,提供給FPGA使用。FPGA時鐘信號本板產(chǎn)生。模塊上設置了JTAG接口和E2PROM接口。PCI接口采用PMC規(guī)范接口。
2 實現(xiàn)方法
2.1 器件選型
設計通信接口模塊時,為了提高設計的集成度以及靈活性,采用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)換器電路設計
A/D的選擇既要考慮A/D自身的性能又要滿足系統(tǒng)所要求的動態(tài)范圍和性能指標。評價A/D轉(zhuǎn)換器的性能指標主要有: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)中頻采樣率可達105 MS/s;
(2)多音無雜散動態(tài)范圍(SFDR)為100 dB;
(3)采樣抖動0.1 ps;
(4)芯片功耗1.5 W;
(5)差分模擬輸入。
2.4 復位電路
模塊復位電路原理如圖3所示。
模塊電路中有兩種復位情況:手動復位和系統(tǒng)復位。系統(tǒng)復位信號與手動復位輸入相遇,作為復位器件的輸入,其輸出作為FPGA復位輸入信號,保證在主機側(cè)出現(xiàn)冷復位和要求本板單獨復位的情況下,所有的器件都處于復位狀態(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,負載調(diào)整率在0.1%。
3 FPGA設計
Xilinx公司的XC4VSX35可編程控制器邏輯代碼是整個系統(tǒng)的核心,系統(tǒng)邏輯結(jié)構(gòu)如圖4所示。
FPGA代碼設計主要分為時鐘模塊、模數(shù)轉(zhuǎn)換通道1、模數(shù)轉(zhuǎn)換通道2和PCI接口四個模塊。
在頂層模塊,主要進行各模塊的端口映射以及相關(guān)信號的賦值和取值工作。時鐘模塊將幾路時鐘的輸出校正到預定的頻率上,模數(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進行設置,包括FIFO的深度以及讀寫的閾值都對DMA傳輸具有重要的作用。PCI接口模塊主要由FPGA與PCI9656的接口代碼組成,包括總線的數(shù)據(jù)命令操作,PCI9656接受上位機PC驅(qū)動對它的設置后工作于J模式(LAD地址數(shù)據(jù)復合使用),通過上位機對PCI9656寄存器的設置,可使其工作于DMA模式,相關(guān)的寄存器在下節(jié)介紹。根據(jù)Local Bus的時序描述,F(xiàn)PGA作為Local Bus的從設備一直工作在命令等待狀態(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邏輯控制單元負責完成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之間,橫坐標表示采樣的點數(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的標準[6],驗證信號采集結(jié)果正確。
將圖6中兩行波形放大,可以看到此圖中顯示的是一行信號完整波形的部分圖形,需要5個前均衡脈沖、5個同步高脈沖、5個后均衡脈沖和17個色同步消隱脈沖,然后是285.5行,同時在試驗中發(fā)現(xiàn),若一次DMA數(shù)據(jù)包長太小,將導致采集的數(shù)據(jù)不完整,無法正常顯示;若一次DMA數(shù)據(jù)包長太大,每次傳輸之間的間隔時間比一次DMA傳輸數(shù)據(jù)的顯示時間長得多,圖像顯示會有間隔,導致無法正常顯示。因此,系統(tǒng)設計中每次DMA數(shù)據(jù)包長要視DMA的傳輸時間和顯示時間而定。
5 軟件設計
上位機先初始化PCI9656芯片,查詢狀態(tài)寄存器(StatusReg)中時鐘是否穩(wěn)定,即時鐘穩(wěn)定狀態(tài)位是否為1,當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)體設置,用于進行DMA傳輸;
(4)打開DMA通道,設置DMA傳輸結(jié)束中斷使能DMA Scatter/Gather模式;
(5)清空模數(shù)轉(zhuǎn)換通道1的FIFO;
(6)觸發(fā)AD通道1數(shù)據(jù)采集啟動;
(7)讀取狀態(tài)寄存器以確定板上狀態(tài);
(8)如果FIFO已滿,則設置DMA相關(guān)寄存器,開始DMA傳輸;
(9)等待中斷,查詢DMA結(jié)束標志位有效,確定一次DMA傳輸完成;
(10)重新初始化Descriptor,以進行下一個DMA操作,重復步驟(4)以后的過程。
6 模塊的調(diào)試及性能
模塊設計完成后,在基于PMC接口的CompactPCI總線架構(gòu)的工控機箱內(nèi)對其進行測試。利用外部設備和通訊接口模塊進行通訊,然后實測視頻數(shù)據(jù)波形,如圖8所示。
分析結(jié)果顯示模塊工作正常,與采樣的數(shù)據(jù)波形一致,達到了設計要求。
本設計充分體現(xiàn)高性能視頻信號采集與顯示系統(tǒng)的工作特點,整個設計結(jié)構(gòu)緊湊,性能穩(wěn)定,抗干擾能力強,并且適用于各種工業(yè)控制場合。本設計已經(jīng)在工業(yè)控制環(huán)境下多次應用,在不同主機環(huán)境下運行測試程序,經(jīng)長時間考核,A/D采樣數(shù)據(jù)傳輸速率穩(wěn)定,模塊運行穩(wěn)定可靠。
參考文獻
[1] 錢敏,李富華,黃秋萍,等.基于HDL的PAL制數(shù)字視頻圖像采集控制器設計[J].微電子學與計算機,2007,24(12):191-194.
[2] 孟憲元,錢偉康.FPGA嵌入式系統(tǒng)設計[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.