本文介紹了一種基于FPGA的視頻、音頻、反向數(shù)據(jù)的遠(yuǎn)程傳輸系統(tǒng)的研究與設(shè)計(jì),該系統(tǒng)在實(shí)際中得到了應(yīng)用,具有良好的穩(wěn)定性、實(shí)用性和可靠性。
引言
目前在高速公路、交通、電子警察、監(jiān)控、安防、工業(yè)自動(dòng)化、電力、海關(guān)、水利、銀行等領(lǐng)域視頻圖像、音頻、數(shù)據(jù)、以太網(wǎng)、電話等光端機(jī)開始普遍大量應(yīng)用。
由于數(shù)字光端機(jī)具有傳輸信號(hào)質(zhì)量高,沒(méi)有模擬調(diào)頻、調(diào)相、調(diào)幅光端機(jī)多路信號(hào)同傳時(shí)交調(diào)干擾嚴(yán)重、容易受環(huán)境干擾影響、傳輸質(zhì)量低劣、長(zhǎng)期工作穩(wěn)定性差的缺點(diǎn),因此許多大型重點(diǎn)工程已普遍采用數(shù)字光端機(jī)。
系統(tǒng)框架與工作原理
整個(gè)系統(tǒng)由核心控制模塊FPGA、音頻采樣編解碼模塊、視頻分離模塊、視頻放大模塊、視頻A/D和D/A轉(zhuǎn)換模塊、并串/串并轉(zhuǎn)換模塊、光纖調(diào)制收發(fā)模塊、電源控制模塊和485數(shù)據(jù)傳輸模塊。圖1是該系統(tǒng)的系統(tǒng)框圖。
圖1 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)的工作原理為:光端機(jī)系統(tǒng)分為兩部分,分別為:發(fā)射機(jī)和接收機(jī)。在發(fā)射端,來(lái)自監(jiān)視器或其他視頻源的視頻信號(hào)首先經(jīng)過(guò)發(fā)射板上的視頻濾波網(wǎng)絡(luò)去除噪聲干擾信號(hào),然后對(duì)該視頻信號(hào)進(jìn)行視頻分離和視頻放大。視頻分離模塊得到視頻信號(hào)的行、場(chǎng)同步信號(hào)以及奇偶場(chǎng)信號(hào)、視頻鉗位等重要的視頻信息。接下來(lái),對(duì)放大后的視頻信號(hào)進(jìn)行A/D轉(zhuǎn)換,得到的數(shù)字化的視頻信號(hào)送入系統(tǒng)主控核心FPGA中。與此同時(shí),如果系統(tǒng)檢測(cè)到了有音頻信號(hào)的存在,則對(duì)其進(jìn)行音頻濾波、音頻數(shù)字化采樣以及音頻PCM編碼。經(jīng)過(guò)PCM編碼后的音頻信號(hào),送入系統(tǒng)主控核心FPGA中。反向數(shù)據(jù)傳輸主要是485信號(hào),該信號(hào)也送入到FPGA。這樣,系統(tǒng)主控核心FPGA對(duì)來(lái)自不同模塊的視頻、音頻、數(shù)據(jù)等信號(hào)整合,時(shí)分復(fù)用地將各個(gè)信號(hào)編碼成8位并行信號(hào)流送入到并串轉(zhuǎn)換模塊。信號(hào)流經(jīng)過(guò)并串轉(zhuǎn)換后變成高速的LVDS信號(hào)驅(qū)動(dòng)光纖收發(fā)模塊以波分復(fù)用的方式完成了電/光變化和光發(fā)射。在光端機(jī)的接收端,經(jīng)過(guò)以上的逆過(guò)程,完成對(duì)原始信號(hào)的恢復(fù)。
系統(tǒng)硬件組成
1 FPGA核心控制器
系統(tǒng)的核心控制部分是整個(gè)系統(tǒng)的心臟,為了滿足對(duì)高速、多路數(shù)據(jù)流的實(shí)時(shí)處理,要求系統(tǒng)核心控制器必須有較高的工作頻率和反應(yīng)能力。其次,對(duì)于系統(tǒng)時(shí)分復(fù)用部分,為了信號(hào)的同步化,需要系統(tǒng)核心控制器內(nèi)嵌RAM和FIFO等功能塊。此外,同時(shí)作為嵌入式系統(tǒng),處理器必須有著低功耗的要求。目前,F(xiàn)PGA處理器已經(jīng)遍及工業(yè)控制、消費(fèi)電子產(chǎn)品、通信系統(tǒng)等各類產(chǎn)品市場(chǎng)。按照低成本、低功耗、小體積、多功能及較為強(qiáng)大的數(shù)據(jù)處理能力,Altera公司CycloneII系列的EP1C3144是一個(gè)非常好的選擇。
圖2 視頻分離硬件電路
2 視頻分離模塊
視頻信號(hào)中除了包含圖像信號(hào)之外,還包括了行同步信號(hào)、行消隱信號(hào)、場(chǎng)同步信號(hào)、場(chǎng)消隱信號(hào)以及槽脈沖信號(hào)、前均衡脈沖、后均衡脈沖等,因此,若要對(duì)視頻信號(hào)進(jìn)行采集,就必須準(zhǔn)確地把握各種信號(hào)間的邏輯關(guān)系。LM1881就是針對(duì)視頻信號(hào)的同步分離而生產(chǎn)的,它為視頻信號(hào)的處理提供了極大的方便。此處電路設(shè)計(jì)如圖2所示。
LM1881可以從0.5~2V的標(biāo)準(zhǔn)負(fù)極性NTSC制、PAL制、SECAM制視頻信號(hào)中提取復(fù)合同步場(chǎng)同步、奇偶場(chǎng)識(shí)別等信號(hào),這些信號(hào)都是圖像數(shù)字采集所需要的同步信號(hào),有了它們,便可確定采集點(diǎn)在哪一場(chǎng),哪一行。LM1881也能對(duì)非標(biāo)準(zhǔn)的視頻信號(hào)進(jìn)行同步分離,通過(guò)固定的時(shí)間延遲產(chǎn)生默認(rèn)的輸出作為場(chǎng)同步輸出。
圖3 A/D轉(zhuǎn)換硬件電路
3 A/D和D/A轉(zhuǎn)換模塊
此處的A/D轉(zhuǎn)換電路主要用來(lái)對(duì)視頻濾波,放大后的視頻信號(hào)進(jìn)行數(shù)字化變換。電視圖像信號(hào)的帶寬理論計(jì)算值為7.37MHz,實(shí)際取5.5275MHz。由香農(nóng)定理知,ADC的采樣頻率應(yīng)該大于2倍的圖像最高頻率,所以ADC采用ADI公司的AD9280,工作頻率為32MHz。該ADC具有良好的差分非線性度、模擬輸入超出轉(zhuǎn)換量程提示、內(nèi)建自流電平回復(fù)和可調(diào)片內(nèi)電壓基準(zhǔn)源等優(yōu)勢(shì)。
此處A/D轉(zhuǎn)換電路設(shè)計(jì)如圖3所示。
接收端A/D轉(zhuǎn)換電路主要完成對(duì)數(shù)字化后的視頻信號(hào)的模擬變換,還原出標(biāo)準(zhǔn)的視頻信號(hào)。此處選用的DAC為ADI公司的高速AD9708。
AD9708采用+3V或+5V單電源供電,兩路電流輸出,轉(zhuǎn)換速率高達(dá)125MHz,建立時(shí)間不大于35ns,轉(zhuǎn)換精度為1/4 LSB。在+5V電源供電的情況下,其功耗為175mW;在+3V電源供電的情況下,其功耗為45mW。
為了特殊的需要,AD9708還兼容8位、10位和12位并行數(shù)據(jù)輸入。當(dāng)AD9708被設(shè)置成8位數(shù)據(jù)輸入時(shí),只要把管腳1設(shè)為最高輸入有效數(shù)據(jù)位(MSB),管腳8設(shè)為最低輸入有效數(shù)據(jù)位(LSB)即可。引腳1(DB13):最高輸入有效數(shù)據(jù)位;引腳2~13(DB12~DB1):數(shù)據(jù)輸入端;引腳14(DB0):最低輸入有效。
4 并串/串并模塊
低壓差分信號(hào)是由ANSI/TIA/EIA-644-1995定義的用于高速數(shù)據(jù)傳輸?shù)奈锢韺咏涌跇?biāo)準(zhǔn)(LVDS)。它具有超高速(速率可達(dá)1.4Gb/s)、超低功耗和低電磁輻射等特性,因而是在銅介質(zhì)上實(shí)現(xiàn)千兆位速率通信的優(yōu)選方案。而總線形低壓差分信號(hào)LVDS是LVDS技術(shù)在多點(diǎn)通信領(lǐng)域的擴(kuò)展,它要求有更大的驅(qū)動(dòng)電流(10mA)和更好的阻抗匹配設(shè)計(jì)。
SN65LV1023和SN65LV1224是TI公司推出的10位總線型低壓差分信號(hào)的應(yīng)用芯片組。其中SN65LV1023是可將10位并行CMOS或TTL數(shù)據(jù)轉(zhuǎn)換為具有內(nèi)嵌時(shí)鐘的高速串行差分?jǐn)?shù)據(jù)流的串化器;而SN65LV1224則是接收該差分?jǐn)?shù)據(jù)流并將它們轉(zhuǎn)換為并行數(shù)據(jù)的解串器,它同時(shí)又可以重建并行時(shí)鐘。采用該器件組進(jìn)行數(shù)據(jù)串化時(shí)采用的是內(nèi)嵌時(shí)鐘,這樣可有效地解決由于時(shí)鐘與數(shù)據(jù)的不嚴(yán)格同步而制約高速傳輸?shù)钠款i問(wèn)題。此處的硬件電路設(shè)計(jì)如圖4所示。
圖4 并串轉(zhuǎn)化硬件示意圖
系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要是對(duì)系統(tǒng)控制核心的FPGA的編程。整個(gè)程序基于模塊化、結(jié)構(gòu)化的軟件開發(fā)思想編寫。所用的開發(fā)工具是Altera公司出品的FPGA集成開發(fā)環(huán)境QuartusII,開發(fā)語(yǔ)言采用當(dāng)今比較流行的大規(guī)模集成電路Verilog開發(fā)語(yǔ)言。
系統(tǒng)軟件功能實(shí)現(xiàn)了A/D控制模塊、語(yǔ)音編碼控制模塊、并串轉(zhuǎn)換控制模塊、串并轉(zhuǎn)換控制模塊、D/A控制模塊、語(yǔ)音解碼控制模塊和反向數(shù)據(jù)的收發(fā)控制模塊。
1 A/D控制模塊
A/D控制模塊以FPGA為主控核心,為AD9280提供采樣時(shí)鐘;同時(shí)采集AD9280A/D轉(zhuǎn)換后的數(shù)字量。
FPGA系統(tǒng)時(shí)鐘頻率為32MHz,對(duì)于AD9280的采樣時(shí)鐘為16MHz,對(duì)系統(tǒng)時(shí)鐘進(jìn)行二分頻后提供給AD9280。同時(shí),在分頻后的輸出時(shí)鐘的上升沿對(duì)A/D轉(zhuǎn)換的結(jié)果進(jìn)行讀取,讀取的結(jié)果存入FPGA中進(jìn)行下一步應(yīng)用。程序如下所示。
module AdControl(clk_in,reset,ad_data,clk_out,data_reg);
input clk_in,reset;
input [0:7]ad_data;
output clk_out;
output [0:7]data_reg;
reg [0:7]data_reg;
reg clk_out;
always@(posedgeclk_in)
begin
if(reset)
clk_out<=0;
else
clk_out<=~clk_out;
end
always@(posedgeclk_out)
begin
data_reg<=ad_data;
end
endmodule
其中,clk_in為FPGA系統(tǒng)輸入時(shí)鐘;clk_out為分頻后提供給ADC的采樣時(shí)鐘;reset為復(fù)位端,高電平復(fù)位;ad_data是A/D轉(zhuǎn)換后得到的數(shù)字量;data_reg
用來(lái)存儲(chǔ)A/D轉(zhuǎn)換后的數(shù)字量。
2 語(yǔ)音編碼控制模塊
語(yǔ)音編碼控制模塊主要完成對(duì)PCM編碼芯片提供數(shù)據(jù)編碼時(shí)鐘、數(shù)據(jù)使能控制以及編碼后的數(shù)據(jù)接收。
此處程序如下所示。
module PcmControl(clk_in,reset,tdd,tdc,tde,pcm_data);
……
always@(posedgeclk_in)
begin
if(reset)
begintdc<=0; end
elsebegin
if(cnt0==7)
begin
tdc<=~tdc;
cnt0<=0;
end
else
cnt0<=cnt0+1;
end
end
always@(posedgetdc)
begin
if(cnt1==140)
begin
tde<=~tde;
cnt1<=0;
end
else
cnt1<=cnt1+1;
end
always@(posedgetdc)
begin
pcm_data<=tdd;
end
endmodule
其中,clk_in是FPGA系統(tǒng)時(shí)鐘,reset為系統(tǒng)復(fù)位信號(hào)。信號(hào)tdd是PCM編碼芯片的輸出;信號(hào)pcm_data用來(lái)存放PCM編碼數(shù)據(jù);信號(hào)tdc是PCM編碼時(shí)鐘信號(hào);信號(hào)tde是PCM編碼使能時(shí)鐘。
3 并串轉(zhuǎn)換控制模塊
系統(tǒng)主控核心FPGA對(duì)數(shù)字化的視頻、語(yǔ)音信號(hào)進(jìn)行時(shí)分復(fù)用后,將視頻語(yǔ)音混合信號(hào)送給并串轉(zhuǎn)換器。并串轉(zhuǎn)換模塊主要實(shí)現(xiàn)對(duì)并串轉(zhuǎn)換器的時(shí)序控制,使能控制和數(shù)據(jù)輸入控制。此處的部分程序如下所示。
moduleSnControl (clk_in,fpga_data,sn_clk,sn_data,sncontrol);
input clk_in;
input [0:9]fpga_data;
output [0:9]sn_data;
output sn_clk,sncontrol;
reg sn_clk,sncontrol;
reg [0:9]sn_data;
always@(posedgeclk_in)
begin
sn_clk<=~sn_clk;
end
always
begin
sncontrol<=1;
end
always@(posedgesn_clk)
begin
sn_data<=fpga_data;
end
endmodule
其中,clk_in是FPGA系統(tǒng)時(shí)鐘,信號(hào)sn_clk是并串轉(zhuǎn)換器的轉(zhuǎn)換時(shí)鐘;信號(hào)fpga_data是FPGA對(duì)視頻、語(yǔ)音時(shí)分復(fù)用編碼后的數(shù)據(jù);信號(hào)sn_data是并串轉(zhuǎn)換器的輸入數(shù)據(jù);信號(hào)sncontrol是并串轉(zhuǎn)換器的編碼使能時(shí)鐘。
4 D/A控制模塊
D/A控制模塊主要用來(lái)控制AD9708,對(duì)來(lái)自串并轉(zhuǎn)換后的數(shù)據(jù),F(xiàn)PGA首先進(jìn)行時(shí)分解復(fù)用,然后將視頻信號(hào)部分發(fā)送給AD9708,同時(shí)配合DAC的轉(zhuǎn)換時(shí)鐘,該時(shí)鐘信號(hào)是通過(guò)并串轉(zhuǎn)換器恢復(fù)出來(lái)的發(fā)射端系統(tǒng)的發(fā)射時(shí)鐘。
結(jié)語(yǔ)
此套數(shù)字式光端機(jī)系統(tǒng),實(shí)現(xiàn)了各個(gè)監(jiān)控點(diǎn)和總監(jiān)控室的信號(hào)遠(yuǎn)程傳輸。各監(jiān)控點(diǎn)的攝像頭傳回視頻信號(hào),總監(jiān)控室通過(guò)485數(shù)據(jù)接口線對(duì)各個(gè)攝像頭進(jìn)行遠(yuǎn)程控制。遠(yuǎn)程兩端之間還可以進(jìn)行話音通信。具有一定的使用價(jià)值和工程意義。