[王琛 蔣蔚 楊乾遠(yuǎn)]
近場無線光通信是一種利用激光作為信息載體在近距離空域通信的通信方式,與電磁波相比有速率高、保密性好、使用方便的優(yōu)點(diǎn)[1],可用在一些通信基站、高鐵站、機(jī)場、飛機(jī)試驗場和武器試驗基地等,用來傳輸大量數(shù)據(jù)(語言、圖像、高清視頻、文件等);目前,這些領(lǐng)域采用大多采用wifi、4G 網(wǎng)絡(luò)、5G 網(wǎng)絡(luò)[2,3]或者是人工拷貝的方式,在大容量數(shù)據(jù)轉(zhuǎn)存情況下,不僅速率慢,而且安全性低,無法滿足用戶高效傳輸數(shù)據(jù)的需求,而近場無線光通信技術(shù)恰好能克服以上缺點(diǎn)和不足,能滿足大容量數(shù)據(jù)傳輸要求[4]。
由于近場無線光通信系統(tǒng)應(yīng)用環(huán)境復(fù)雜,溫濕度變化大,像高鐵站、機(jī)場和飛機(jī)試驗場存在較大的震動,要能保存穩(wěn)定的通信速率,對無線光通信設(shè)備的跟蹤精度有較高的要求,而傳統(tǒng)的通信設(shè)備定位算法精度不夠,幀頻低,很難保證足夠的跟蹤精度和穩(wěn)定性,這些因素導(dǎo)致通信設(shè)備難以適用;為了滿足近場無線光通信設(shè)備對跟蹤精度和穩(wěn)定性的需求,高幀率采集和高精度定位成為解決上述問題的關(guān)鍵技術(shù)。因此,基于FPGA 和DSP 平臺設(shè)計了一套CMOS 傳感器高幀頻跟蹤系統(tǒng)[5,6],并通過實驗分析了相機(jī)幀頻、亞像素光斑定位算法對系統(tǒng)跟蹤精度和穩(wěn)定性的影響,對近場無線光通信設(shè)備的研制具有重要指導(dǎo)意義。
系統(tǒng)結(jié)構(gòu)原理圖如圖1所示,由TI 的多核定點(diǎn)/浮點(diǎn)DSP TMS3206678、Xilinx Kintex-7 FPGA、CMOS 圖像傳感器、二維云臺和上位機(jī)組成。
圖1 系統(tǒng)結(jié)構(gòu)原理圖
TMS320C6678 是TI KeyStone 架構(gòu)8 核DSP 處理器[7],當(dāng)內(nèi)核主頻為1.4 GHz 時,理論上具有179.2 GFLOP 和358.4 GMAC 的處理性能;每個核都有32 KB 一級緩存L1 和512 KB 二級緩存L2,具備4 MB 的多核共享存儲器MSM(multicore share memory)SRAM,DDR2(double data rate 2)最大支持8GB;內(nèi)部集成了RapidIO、千兆以太網(wǎng),性能強(qiáng),外設(shè)豐富,能滿足圖像處理和傳輸需求;FPGA 型號為XC7K325T-2FFG900I,具有478 K 邏輯單元,34 Mb 塊RAM,1920 DSP 片,2845 GMAC/s DSP性 能,32 個收發(fā)器,10 個MMCMs(mixed-mode clock manager)和PLL(phase locked loop),500 個I/O 引腳,速度等級為2,支持12.5 Gbit/s 收發(fā)器速度,800 Gbit/s 串行帶寬,運(yùn)行頻率最大470.37 MHz,能滿足高幀頻圖像采集和傳輸需求;圖像傳感器采用比利時Xenics 公司的Wildcat 640 系列InGaAs 相機(jī),默認(rèn)分辨率為640×512,位寬為16 bit,幀頻達(dá)220 Hz。
系統(tǒng)利用FPGA 對CMOS 圖像傳感器進(jìn)行開窗、采集、圖像乒乓緩存,通過SRIO(serial rapidIO)接口發(fā)送給DSP,DSP 進(jìn)行目標(biāo)跟蹤和亞像素質(zhì)心定位,再通過RS422 輸出給電機(jī)驅(qū)動控制云臺跟蹤目標(biāo),最后用網(wǎng)口輸出處理后的圖像至上位機(jī)顯示。
高幀頻采集模塊是通過對圖像傳感器開窗來提高幀頻,然后按照時序進(jìn)行圖像采集;相機(jī)開窗模式由內(nèi)部4 個16 位寄存器控 制,分別為RoiXStart、RoiYStart、RoiXSize、RoiYSize,可通過RS232 接口設(shè)置開窗的起始位置、寬度和高度,默認(rèn)分辨率為640×512 的幀頻可達(dá)220 fps,開窗為80×80 時幀頻大于10 000 fps。
相機(jī)圖像采集依據(jù)相機(jī)的幀有效標(biāo)識FVAL 和行有效標(biāo)識LVAL 進(jìn)行采集,F(xiàn)VAL 上升沿表示一幀圖像開始輸出,在FVAL 為高電平期間,LVAL 上升沿表示一行圖像開始輸出;在LVAL 為高電平期間,每個時鐘(80 MHz)周期上升沿輸出一個像素,一行輸出完,LVAL 變低電平,間隔一個行消隱時間TLB后LVAL 變高電平,開始下一行輸出;當(dāng)LVAL 為低電平時,輸出無效像素;當(dāng)一幀圖像輸出完成后,F(xiàn)VAL 變低電平,間隔一個幀消隱時間TFB后,F(xiàn)VAL 再次有效,開始下一幀圖像輸出。讀取一幅圖像的時間等于幀消隱時間加上讀取一行的時間再加上各行消隱時間。一幀圖像的輸出周期可以表示為:
其中TFB和TLB分別為幀消隱和行消隱時間,Nrow、Ncol分別為行數(shù)和列數(shù),Tclk為時鐘周期。
在640×512 分辨率下,根據(jù)公式(1)可計算輸出一幀所耗時間為:
通過開窗,將圖像分辨率設(shè)置為80×80 時,根據(jù)公式(1)可計算輸出一幀所耗時間為:
串行RapidIO 協(xié)議[8~10](Serial RapidIO,簡稱SRIO)是新一代嵌入式高性能互連技術(shù),與傳統(tǒng)PCIE 總線、CPU 訪問總線相比,引腳數(shù)少、時延低、軟件開銷低、打包效率高,支持1x、2x 與4x 三種模式,可選1.25 Gbit/s、2.5 Gbit/s、3.25 Gbit/s 和5 Gbit/s 四種速度。SRIO 主 要有兩種傳輸機(jī)制:一是直接IO/DMA(Direct IO/ Direct Memory Access)機(jī)制,主設(shè)備知道被訪問設(shè)備的存儲器映射地址,不經(jīng)處理器直接讀寫存儲器,主要由硬件實現(xiàn),因此延遲小;另一種是消息傳遞(message passing)機(jī)制,通過源ID、目標(biāo)ID 與存儲器的地址映射,將數(shù)據(jù)拷貝到相應(yīng)存儲區(qū),軟件開銷大;所以選用直接IO/DMA 機(jī)制;傳輸中僅用SWRIT、ENREAD 和DOORBEL 3種事務(wù)。
如圖2 所示,為FPGA 和DSP 之間的SRIO 傳輸流程,首先對FPGA 的SRIO IP 核和DSP 的SRIO 模塊配置和初始化,配置成相同速率才能通信;FPGA 采樣速率為1.1 Gbit/s(640×512×16 bit×220 f/s/8/1 024/1 024),因此配置速率必須遠(yuǎn)大于1.1 Gbit/s;因為SRIO 物理層存在8 b/10 b 編解碼,實際速率約為1.0 Gbit/s、2.0 Gbit/s、2.5 Gbit/s、4.0 Gbit/s,所以將SRIO 配置為1×2.5G 模式,才能滿足要求,如圖3 所示,為SRIO 1x 模式,連接方式簡單;當(dāng)SRIO IP 核的port_initialized 端口信號為高時,表示FPGA 和DSP 連接成功,可傳輸數(shù)據(jù);FPGA 采集圖像通過SWRITE 事務(wù)包發(fā)向DSP 中DDR2 的地址,DSP接收到SWRITE 包后以DMA 的方式將圖像存入DDR2;在FPGA 寫DDR2 時,DSP 不可訪問相應(yīng)存儲區(qū);寫完一幀數(shù)據(jù)后,發(fā)送一個DOORBELL 事務(wù)通知DSP,DSP接收到DOORBELL 包后響應(yīng)中斷進(jìn)入中斷函數(shù)處理圖像,保證了FPGA 與DSP 同步;FPGA 發(fā)送完DOORBELL 便準(zhǔn)備下一次發(fā)送,DSP 響應(yīng)中斷后,清空中斷響應(yīng)標(biāo)志,等待下次中斷。
圖2 SRIO 傳輸流程
圖3 SRIO 1x 模式
在測試中,作為從端的DSP 只需要運(yùn)行SRIO 建立連接的代碼,響應(yīng)主設(shè)備請求,由作為主端的FPGA 發(fā)起SWRITE 事務(wù)包;在1×2.5G 模式下進(jìn)行數(shù)據(jù)傳輸測試,實際速率達(dá)到1.86 Gbit/s,數(shù)據(jù)打包效率達(dá)93%,能夠滿足1.1 Gbit/s 的圖像數(shù)據(jù)傳輸。
上節(jié)解決了高速傳輸圖像的帶寬問題,而圖像處理大多以幀為單位,一些相關(guān)跟蹤算法還涉及多幀同時處理,F(xiàn)PGA 無法存下整幅圖像,需擴(kuò)充外部存儲器空間,同時必須保證對外部存儲器有足夠的讀寫速率和帶寬;采用兩塊基本數(shù)據(jù)緩存單元為16 bit 的DDR2 存儲器完成數(shù)據(jù)高速緩存,在200 MHz 主頻下,數(shù)據(jù)率最高可達(dá)200×2×2=800 MB/s,能夠滿足系統(tǒng)圖像的實時讀寫要求。
要在FPGA 和DSP 之間共享存儲[11],需在FPGA 工程中添加IP 核MPMC(multi-port memory controller),F(xiàn)PGA 通過NPI 接口(MPMC 本地端口接口)可訪問DDR2,同時DSP 通過SRIO 與FPGA 建立互連后,也能通過NPI 接口讀寫DDR2;實現(xiàn)了共享存儲。使用兩片DDR2 以乒乓方式對緩存圖像,過程是將圖像交替存入DDR2_1 和DDR2_2;圖像在寫入DDR2_1 的同時讀取DDR2_2 中圖像;同理,圖像寫入DDR2_2 的同時讀取DDR2_1 中圖像,如此乒乓交替讀寫實現(xiàn)數(shù)據(jù)流輸入輸出無縫緩沖,提高了圖像存儲、傳輸和處理的速度。乒乓讀寫 DDR2 的原理如圖4 所示,實線和虛線表示輪流執(zhí)行。經(jīng)過驗證分析,F(xiàn)PGA 和DSP 設(shè)計的數(shù)據(jù)緩存模塊能在400 MHz 數(shù)據(jù)率下正常傳輸數(shù)據(jù)。
圖4 乒乓讀寫原理圖
采用一種針對光斑圖像的算法,首先用形心法計算出光斑中心,然后以中心像素點(diǎn)分別進(jìn)行在水平曲線擬合和垂直曲線擬合,得到二次曲線的頂點(diǎn)坐標(biāo),便可計算出光斑亞像素中心。
首先介紹形心法,形心法常用于定位圖像中的光斑中心,基本原理如下[12,13]。
其中R為目標(biāo)區(qū)域,(χc,yc)為R的形心,i,j是像素坐標(biāo),I(i,j)是像素灰度值。
激光光斑成像像素灰度分布近似于高斯分布,高斯曲線可用公式(4)表示。
上式的積分計算復(fù)雜,對其兩端取對數(shù)化簡得到關(guān)于的二次曲線:
由上式可看出,只需針對目標(biāo)進(jìn)行曲線擬合,大大減少了計算量;以水平方向舉例,可將(5)式表示成如下二次曲線形式:
通過下式計算出每個像素的灰度值:
上文形心法得出的坐標(biāo)為(χc,yc),令其灰度值為g0χ,由式(7)可以得:
以該點(diǎn)為中心點(diǎn),左右各取一個像素點(diǎn)分別為g-1χ和g1χ,由式(8)可以得:
根據(jù)(8)、(9)、(10)公式,得:
計算出曲線頂點(diǎn)橫坐標(biāo)值為:
用對數(shù)替代(11)式中的灰度值,便得到橫坐標(biāo)的亞像素中心為:
同理,可在垂直方向上進(jìn)行曲線擬合,得到縱坐標(biāo)上的亞像素中心值為:
上述計算利用了目標(biāo)灰度特性和形狀特性對圖像目標(biāo)進(jìn)行處理,采用浮點(diǎn)運(yùn)算確定與目標(biāo)特征最穩(wěn)定的位置,可實現(xiàn)優(yōu)于整個像素精度的定位。如圖5 所示,為光斑跟蹤視頻圖像。
圖5 光斑跟蹤圖像
DSP 將處理后的圖像通過網(wǎng)口發(fā)往PC 端,由于TCP存在流量控制機(jī)制,易出現(xiàn)卡頓現(xiàn)象,適合實時性不高,但內(nèi)容完整的應(yīng)用;而UDP 無連接、無重傳確認(rèn)、效率高、延時小,適合實時性高的應(yīng)用。
在0 核上(NDK 僅支持0 核)建立UDP NDK 協(xié)議棧,C6678 基于SYS/BIOS 系統(tǒng)建立UDP/IP 服務(wù)端[14],用于發(fā)送圖像,PC 端基于MFC 建立UDP/IP 客戶端,用于接收圖像。DSP 初始化CPPI,PA 等資源,配置并初始化協(xié)議棧,設(shè)置IP 地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān),發(fā)送緩存等,完成后開啟網(wǎng)絡(luò)功能,便能發(fā)送圖像到PC 端。在NDK 默認(rèn)配置下,UDP 數(shù)據(jù)包大小不能超過1 472 字節(jié),導(dǎo)致通信速度僅有50 Mbit/s 左右,無法滿足實時要求,需要采用UDP 巨型包(Jumbo Packet)傳輸提高網(wǎng)絡(luò)速率,C6678 的UDP NDK 巨型包最大可配置成65 535 字節(jié),可以大幅度提高網(wǎng)絡(luò)使用率。
相機(jī)圖像分辨率為640×512,幀率為220 fps,傳輸16 bit 圖像理論速率在1 100 Mbit/s,已超過PC 端千兆以太網(wǎng)最大傳輸速率,為了減少數(shù)據(jù)量,同時便于在PC 端顯示,DSP 將16 bit 圖像轉(zhuǎn)為8 bit 圖像,此時理論速度在550 Mbit/s 左右。測試PC 端在接收20 000 個數(shù)據(jù)包后,繼續(xù)接收1 000 個包,測出的速度為563 Mbit/s,與理論值相當(dāng)。
實驗CMOS 探測器像素邊長為5μm,光學(xué)系統(tǒng)焦距為20 mm,空間分辨率為0.25 mrad:兩臺設(shè)備相距60 m進(jìn)行實驗,實驗?zāi)M場景設(shè)置頻率為10 Hz,幅度為1 mrad的擾動,選擇6 種不同幀頻測試對跟蹤精度的影響。如表1 所示,是實驗數(shù)據(jù),設(shè)光斑定位的標(biāo)準(zhǔn)差分別為σx和σy,令表示總的標(biāo)準(zhǔn)差,σ1表示采用傳統(tǒng)形心法定位的標(biāo)準(zhǔn)差,σ2表示算法定位的標(biāo)準(zhǔn)差,從表中數(shù)據(jù)可以看出形心定位法隨著幀率從220 f/s 提高到10 000 f/s,跟蹤標(biāo)準(zhǔn)差從2.42 個像素降低到0.58 個像素,而本文采用的算法計算出的跟蹤標(biāo)準(zhǔn)差從0.40 個像素降低到0.08 個像素,證明了提高幀率可以提高跟蹤精度;僅用形心定位法比本文采用的算法標(biāo)準(zhǔn)差大2.02~0.5 個像素,說明定位算法的選取對跟蹤精度有很大影響,針對性設(shè)計光斑中心定位算法可以顯著改善跟蹤效果。
表1 不同幀頻定位標(biāo)準(zhǔn)差
根據(jù)近場無線光通信設(shè)備對跟蹤精度和穩(wěn)定性的要求,采用不同方法提高速率,并介紹了其實現(xiàn)過程,使相機(jī)固定幀率提升近50 倍,使跟蹤精度提高了4~5 倍,同時采用一種基于目標(biāo)灰度特性和形狀特性的亞像素光斑定位算法,相對于傳統(tǒng)形心定位算法,跟蹤精度提高了6~7倍,當(dāng)幀頻提高到10 000 f/s 以上時,定位誤差小于0.1 個像素,是一種實用的高精度定位算法;該系統(tǒng)能有效地提高無線光通信設(shè)備的跟蹤精度和跟蹤穩(wěn)定性,使近場無線光通信設(shè)備具備了實用性,可以取代特定場合的人工拷貝、4G 網(wǎng)絡(luò)、5G 網(wǎng)絡(luò)等數(shù)據(jù)轉(zhuǎn)存方式。