蘇寧,趙利
(桂林電子科技大學(xué) 信息與通信學(xué)院,桂林541004)
蘇寧(研究生),研究方向?yàn)榍度胧较到y(tǒng)開發(fā);趙利(教授),研究方向?yàn)橐苿?dòng)通信及網(wǎng)絡(luò)。
引 言
數(shù)字視頻通信系統(tǒng)較傳統(tǒng)模擬視頻通信系統(tǒng)而言,具有抗干擾、抗噪聲能力強(qiáng)、便于計(jì)算機(jī)處理等優(yōu)點(diǎn)。隨著數(shù)字技術(shù)的發(fā)展、特別是高效的音視頻壓縮技術(shù)的發(fā)展,數(shù)字視頻通信系統(tǒng)需要較大帶寬和設(shè)備復(fù)雜的問(wèn)題得到了很好的解決。由于計(jì)算機(jī)與大規(guī)模集成電路的快速發(fā)展,高效能的嵌入式系統(tǒng)不斷涌現(xiàn),從成本和技術(shù)上為原有模擬視頻傳輸系統(tǒng)的改造提供了基礎(chǔ)。針對(duì)采用模擬技術(shù)體制的某微波視頻傳輸系統(tǒng),存在占用帶寬寬、鄰道干擾嚴(yán)重、圖像質(zhì)量差等問(wèn)題,需對(duì)該系統(tǒng)進(jìn)行數(shù)字化改造。
在保留原系統(tǒng)射頻模塊和主要功能不變的基礎(chǔ)上,以基于Linux的Cortex-A8嵌入式平臺(tái)為核心,完成音視頻數(shù)字化采集、壓縮處理以及收發(fā)處理功能,實(shí)現(xiàn)了高幀率、高分辨率的音視頻采集、壓縮/解壓及微波傳輸?shù)臄?shù)字視頻無(wú)線通信系統(tǒng)。采用mmap視頻采集、多線程、CP-FSK調(diào)制解調(diào)和USB轉(zhuǎn)UART 等關(guān)鍵技術(shù),系統(tǒng)具有硬件電路簡(jiǎn)單、成本低、易開發(fā)、高速傳輸、實(shí)時(shí)性好等優(yōu)點(diǎn),具有重要的工程設(shè)計(jì)參考價(jià)值。
①RF通道:發(fā)送端中頻頻率為60MHz,接收端中頻頻率為38 MHz,中頻帶寬為8 MHz。
②數(shù)字調(diào)制:調(diào)制方式為CP-FSK,中心頻率為中頻60或38 MHz,頻偏為±2 MHz,調(diào)制速率為4 Mbps。
③音視頻:音頻編碼格式為L(zhǎng)PCM,視頻編碼格式為H.264,視頻分辨率為640×480,視頻幀率為25fps。
在以Linux為操作系統(tǒng)的Cortex-A8嵌入式平臺(tái)上,采用USB攝像頭和麥克風(fēng)分別實(shí)現(xiàn)視頻和音頻的數(shù)字化采集,同時(shí)進(jìn)行本地視頻回放。對(duì)采集所得的視頻數(shù)據(jù)進(jìn)行H.264壓縮處理,并與音頻進(jìn)行音視頻組幀發(fā)送。經(jīng)組幀的音視頻數(shù)據(jù)通過(guò)USB 轉(zhuǎn)UART 接口傳送至CPFSK 調(diào)制模塊。USB 轉(zhuǎn)UART 接口采用能實(shí)現(xiàn)高速異步通信的XR21V1410 芯片實(shí)現(xiàn),CP-FSK 調(diào)制模塊采用體積小、低功耗和控制靈活的AD9959DDS芯片實(shí)現(xiàn)。微波系統(tǒng)的中頻和射頻電路保持不變,實(shí)現(xiàn)一個(gè)傳輸速率達(dá)到4 Mbps的數(shù)字音視頻微波發(fā)送端,發(fā)送端的方案框圖如圖1所示。
圖1 發(fā)送端方案框圖
三星公司的S5PV210處理器具有高性能的圖像處理器SGX540,支持USB2.0 接口,有豐富的接口、完善的BSP、齊全的開發(fā)文檔,最高可支持1080p@30fps硬件解碼視頻流暢播放,格式可為MPEG4、H.263、H.264等[1],因此高清視頻的采集與壓縮可以采用S5PV210處理器。
異步串行通信相比于同步串行通信,具有實(shí)現(xiàn)簡(jiǎn)單、使用方便和成本低等優(yōu)點(diǎn)。單純地使用開發(fā)平臺(tái)上的UART 接口無(wú)法滿足系統(tǒng)對(duì)傳輸速率的設(shè)計(jì)要求,可以通過(guò)USB轉(zhuǎn)UART 方式來(lái)提高串口傳輸速率。采用單片XR21V1410實(shí)現(xiàn)USB轉(zhuǎn)UART,傳輸速率最高可達(dá)4 Mbps,且該芯片體積小、硬件電路設(shè)計(jì)簡(jiǎn)單。
為了抑制帶外輻射、避免領(lǐng)道干擾,同時(shí)易于實(shí)現(xiàn),選用頻帶利用率高、帶外衰減快的CP-FSK 調(diào)制方式。為了滿足高達(dá)4 Mbps的高速CP-FSK 的技術(shù)要求,采用DDS技術(shù)來(lái)實(shí)現(xiàn)CP-FSK 全數(shù)字調(diào)制。ADI公司的AD9959 DDS芯片具有功耗低、體積小、控制靈活、成本低等優(yōu)點(diǎn),可以執(zhí)行高達(dá)16階的頻率、相位或幅度調(diào)制(FSK、PSK、ASK),很容易實(shí)現(xiàn)信號(hào)全數(shù)字調(diào)制,成為系統(tǒng)實(shí)現(xiàn)CPFSK 全數(shù)字調(diào)制的一個(gè)選擇。
原有系統(tǒng)中,中頻及射頻電路保持不變。采用由SAW 和補(bǔ)償放大器組成的鄰道濾波器抑制鄰道干擾;采用中頻CP-FSK 解調(diào)方式,中心頻率為38 MHz,頻偏±2 MHz,實(shí)現(xiàn)速度為4 Mbps的FSK 解調(diào);解調(diào)電路采用集成PPL的單片NE564芯片實(shí)現(xiàn);異步串行通信接收采用基于XR21V1410芯片的USB 轉(zhuǎn)UART 接口實(shí)現(xiàn);音視頻的接收和解碼采用以S5PV210 芯片為主處理器的Linux嵌入式平臺(tái)來(lái)實(shí)現(xiàn),并完成音視頻的本地回放。接收端的框圖如圖2所示。
XR21V1410有自己的內(nèi)部時(shí)鐘,可精確產(chǎn)生任何波特率,提供大容量FIFO,可實(shí)現(xiàn)速率高達(dá)12Mbps的異步串行數(shù)據(jù)通信[1]。圖3為芯片內(nèi)部結(jié)構(gòu)框圖。
圖3 XR21V1410內(nèi)部結(jié)構(gòu)框圖
電路設(shè)計(jì)需注意:
①芯片的工作電壓為2.97~3.63V,所以引腳VCC接3.3V 電源,如果沒有合適的電源,需多加一個(gè)電源電路;
②引腳USBD+和USBD-與開發(fā)板的USB 接口連接;
③RX和TX為UART 的異步串行收發(fā)引腳;
④可以加一個(gè)ESD 保護(hù)電路,保護(hù)USBD+和USBD-這兩條高速數(shù)據(jù)免受靜電放電和其他瞬變的影響;
⑤Lowpower引腳接一個(gè)外部上拉電阻,兩個(gè)GND引腳接地,同時(shí)SDA、SCL、GPIO0~GPIO5引腳懸空。
CP-FSK 調(diào)制電路選用ADI公司的AD9959DDS芯片,該芯片是一款4通道、內(nèi)部時(shí)鐘頻率高達(dá)500 MHz的直接數(shù)字頻率合成器芯片。每個(gè)通道均可提供獨(dú)立的頻率、相位和幅度控制,這種靈活性可用于校正信號(hào)之間由濾波、放大等模擬處理或PCB 布局失配而引起的不平衡問(wèn) 題[2-3]。CP-FSK 調(diào) 制 器 采 用 微 控 制 器 與AD9959構(gòu) 成的硬件電路實(shí)現(xiàn),其中Atmel公司的微控制器ATmega32用于DDS的配置,通過(guò)合理的設(shè)計(jì),實(shí)現(xiàn)以60 MHz為中心、±2 MHz的兩個(gè)副載波頻率之間的高速切換,并保持碼元間相位的連續(xù)。此外,DDS的輸出是高速D/A 轉(zhuǎn)換后的信號(hào),含有較多高次諧波分量,需外接低通濾波器(LPF)剔除信號(hào)中的雜波和噪聲。
CP-FSK 調(diào)制器的硬件結(jié)構(gòu)框圖如圖4所示。
圖4 CP-FSK調(diào)制器的硬件結(jié)構(gòu)圖
其中,P0~P3用于控制調(diào)制方式的選擇,IO_UPDATA 為寄存器刷新線,SCLK 為串口同步信號(hào),MARST_RESET 為復(fù)位信號(hào)。
CP-FSK 信號(hào)的解調(diào)方式有很多種,內(nèi)部有電壓比較器、有與TTL電平相匹配的輸入/輸出端、集成了鎖相環(huán)的NE564芯片是一種很好的選擇方案。芯片NE564 由輸入限幅器、鑒相器、壓控振蕩器、放大器、直流恢復(fù)電路和施密特觸發(fā)器6部分組成[4]。圖5為CP-FSK 解調(diào)電路。從射頻電路接收到的FSK 信號(hào)經(jīng)聲表濾波器(SAW)和補(bǔ)償放大電路(ERA)處理后,接入NE564芯片的6引腳進(jìn)行解調(diào)處理。
圖5 CP-FSK解調(diào)電路
中心頻率為38 MHz的CP-FSK 解調(diào)電路的電路參數(shù)取值,關(guān)鍵要確定4、5引腳和12、13引腳處的電容值,其他外圍器件大小的變化不大,影響比較小。計(jì)算方法如下:壓控振蕩器的固有頻率與接在12、13 端的定時(shí)電容CT=C6+C7有關(guān):
中心頻率f0為38MHz,可得CT=11.96pF,則可以選擇6.8pF和20pF的可調(diào)電容來(lái)調(diào)節(jié)VCO的中心頻率。通過(guò)可變電容調(diào)節(jié)VCO的頻率到所需要的中心頻率。
對(duì)于影響環(huán)路濾波器的接在4、5引腳上的C3、C4容值的選擇,可以根據(jù)芯片資料推導(dǎo)出計(jì)算方法如下:當(dāng)規(guī)定環(huán)路的增益k=0.5,芯片供電電壓為5V,且調(diào)節(jié)2引腳電位器使其對(duì)應(yīng)電流I2為200μA后,可計(jì)算電容來(lái)調(diào)節(jié)中心頻率。此時(shí),4、5引腳的電容大小,可用下式計(jì)算得到:
其計(jì)算值為4.67pF。
軟件系統(tǒng)包括:應(yīng)用程序、庫(kù)、操作系統(tǒng)和驅(qū)動(dòng)程序,其層次關(guān)系略——編者注。系統(tǒng)在應(yīng)用層可以實(shí)現(xiàn)視頻圖像的采集、壓縮/解壓和顯示,聲音采集和播放,視頻格式轉(zhuǎn)換和串口發(fā)送接收等應(yīng)用。使用到的庫(kù)有進(jìn)行H.264視頻編解碼的編解碼庫(kù)等,系統(tǒng)采用的內(nèi)核版本為L(zhǎng)inux-3.0.8,驅(qū)動(dòng)程序有USB 攝像頭驅(qū)動(dòng)、音頻驅(qū)動(dòng)、7寸LCD彩色觸屏驅(qū)動(dòng)和USB轉(zhuǎn)UART 接口驅(qū)動(dòng)等。
3.2.1 視頻采集模塊設(shè)計(jì)
V4L2是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng)。在Linux系統(tǒng)中,視頻設(shè)備以設(shè)備文件的形式存在于/dev目錄下,視頻的采集可以通過(guò)對(duì)視頻設(shè)備文件進(jìn)行讀寫等操作來(lái)實(shí)現(xiàn)。根據(jù)V4L2 接口編寫視頻圖像采集程序,主要包括打開設(shè)備文件、取得設(shè)備功能信息、設(shè)置圖像格式、向驅(qū)動(dòng)申請(qǐng)幀緩沖、申請(qǐng)物理內(nèi)存、采集圖像數(shù)據(jù)、停止采集和關(guān)閉設(shè)備等[5]。流程圖略——編者注,具體操作如下:
①打開視頻設(shè)備文件,獲取攝像頭基本信息,并設(shè)置采集視頻的格式等參數(shù)。
②向驅(qū)動(dòng)申請(qǐng)幀緩沖,并將申請(qǐng)到的幀緩沖映射到用戶空間。
③將申請(qǐng)到的幀緩沖全部放入隊(duì)列,并啟動(dòng)視頻采集。
④開始視頻采集,把采集到的視頻數(shù)據(jù)幀緩沖從buf中出隊(duì)列,獲得視頻數(shù)據(jù),處理完畢后,將空的緩沖再次放入隊(duì)列,循環(huán)往復(fù)采集連續(xù)的視頻數(shù)據(jù)。
⑤停止視頻的采集和關(guān)閉視頻設(shè)備。
3.2.2 視頻硬件編解碼
S5PV210處理器采用了強(qiáng)大的信號(hào)處理擴(kuò)展集,為H.264等媒體編解碼提供加速。根據(jù)S5PV210處理器的用戶手冊(cè),H.264編碼的具體步驟、流程圖略——編者注。
解碼部分的步驟與編碼大致相同,具體步驟、流程圖略——編者注。
3.2.3 音頻采集
脈沖編碼調(diào)制PCM 是對(duì)語(yǔ)音信號(hào)進(jìn)行采樣,并對(duì)每個(gè)采樣值進(jìn)行量化編碼。在Linux-3.0.8中,已經(jīng)存在音頻驅(qū)動(dòng),可以很方便地對(duì)音頻文件進(jìn)行讀寫操作,從而進(jìn)行音頻應(yīng)用程序的開發(fā)。使用系統(tǒng)的設(shè)備文件接口為“/dev/dsp”,聲 音 采 集 的流程步驟大致如下:①打開設(shè)備文件;②配置參數(shù),包括采樣頻率、量化位數(shù)和聲道數(shù)目等;③采集聲音;④停止采集并關(guān)閉設(shè)備。流程圖如圖6所示。
具體編程時(shí),用ioctl()函數(shù)進(jìn)行參數(shù)調(diào)用和配置生效,采集函數(shù)使用read(),播放函數(shù)使用write()。
圖6 聲音采集流程圖
3.2.4 音視頻數(shù)據(jù)發(fā)送與接收處理
(1)數(shù)據(jù)的組幀與分段
音視頻組幀方式采用聲音+視頻的方式,每個(gè)音視頻幀的前端放聲音,后面加入視頻數(shù)據(jù)。為了便于進(jìn)行音視頻數(shù)據(jù)的串口收發(fā)和接收后對(duì)音視頻數(shù)據(jù)的后續(xù)操作,傳輸前需對(duì)音視頻幀數(shù)據(jù)分段處理。采用每次串口發(fā)送512字節(jié)的數(shù)據(jù)長(zhǎng)度進(jìn)行分段。每次串口發(fā)送的數(shù)據(jù)幀中有3個(gè)字節(jié)的幀頭和3個(gè)字節(jié)的幀尾,2個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度表示數(shù)據(jù)幀實(shí)際發(fā)送的數(shù)據(jù)長(zhǎng)度(最多可為504字節(jié)),數(shù)據(jù)幀合計(jì)共512個(gè)字節(jié)。具體的示意圖如圖7所示。
圖7 組幀與分段示意圖
另外,在對(duì)音視頻幀數(shù)據(jù)進(jìn)行分段時(shí)需要考慮兩種情況:一是數(shù)據(jù)能整除劃分;二是數(shù)據(jù)不能整除劃分。整除劃分的可以直接發(fā)送,不能整除的音視頻幀需要在音視頻幀的最后一段數(shù)據(jù)塊N 補(bǔ)夠相對(duì)應(yīng)的數(shù)據(jù),湊夠504個(gè)字節(jié)數(shù)據(jù)后方可傳輸。
(2)UART接口的收發(fā)
串口在嵌入式系統(tǒng)中有廣泛的應(yīng)用。串口屬于字符設(shè)備,同其他設(shè)備一樣,在Linux系統(tǒng)中以設(shè)備文件的形式存在,可以利用文件操作調(diào)用,包括常用的open()、close()、read()、write()等,比如以讀寫方式打開串口(int fd=open("/dev/ttyUSB0",O_RDWR);)。
最基本的設(shè)置串口包括波特率、校驗(yàn)位和停止位設(shè)置,主要是設(shè)置structtermios結(jié)構(gòu)體的各成員值。read()、write()用來(lái)實(shí)現(xiàn)串口的收發(fā)數(shù)據(jù)功能。實(shí)現(xiàn)串口收、發(fā)的基本流程圖略——編者注。
基于XR21V1410芯片的USB轉(zhuǎn)UART 接口驅(qū)動(dòng)屬于Linux 的 字 符 設(shè) 備。Linux-3.0.8 內(nèi) 核 版 本 無(wú)XR21V1410芯片的驅(qū)動(dòng),需要從芯片廠商提供的源碼進(jìn)行驅(qū)動(dòng)移植。驅(qū)動(dòng)移植和制作新鏡像可以進(jìn)行如下操作:
①把下載所得的適合該版本內(nèi)核的驅(qū)動(dòng)放到/Linux-3.0.8/driver/usb/serial/下;
②修改/Linux-3.0.8/driver/usb/serial/下的Kconfig和Makefile文件;
③切換到Linux-3.0.8 主目錄下,在終端執(zhí)行命令cp mini210_linux_defconfig.config;
④Linux-3.0.8主目錄下,在終端執(zhí)行命令make menuconfig,在圖形界面中找到需要選中的名稱進(jìn)行配置;
⑤在終端執(zhí)行命令make zImage;
⑥ 編 譯 完 成 后,進(jìn) 入 到/Linux-3.0.8/arch/arm/boot/下即可看到新生成的zImage文件,這就是剛編譯好的鏡像。
結(jié) 語(yǔ)
該數(shù)字微波視頻傳輸系統(tǒng)選用Linux操作系統(tǒng)以及Cortex-A8內(nèi)核的處理器S5PV210,利用其內(nèi)部集成的H.264硬件編/解碼器,極大地提高視頻編碼效率。在分辨率為640×480、幀率為25fps的情況下,系統(tǒng)聯(lián)調(diào)測(cè)試結(jié)果表明,音視頻的無(wú)線微波傳輸可靠、圖像清晰流暢、實(shí)時(shí)性良好,達(dá)到了系統(tǒng)設(shè)計(jì)要求。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]EXAR company.XR21V1410 1-CH FULL-SPEED USB UART datasheet[EB/OL].[2015-02].http://www.exar.com/connectivity/uart-and-bridging-solutions/usb-uarts/xr21v1410/.
[2]陳嘉佳,潘志浩,王天麟.一種基于DDS 芯片AD9959 的高精度信號(hào)發(fā)生器[J].自動(dòng)化儀表,2007(4):24-28.
[3]孫文友,宋祖勛,段鵬.基于DDS技術(shù)的2CPFSK 調(diào)制器的實(shí)現(xiàn)[J].通信技術(shù),2006(S1).
[4]盧盛杰,宋剛.單片集成鎖相環(huán)NE564在通信中的應(yīng)用[J].黑龍江通信報(bào),1995(3).
[5]王建新,張凱,王秀.基于S3C2440的視頻采集及傳輸系統(tǒng)設(shè)計(jì)[J].電子器件,2013,36(3):367-370.