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