申曉燕,胡炳樑
(1.中國(guó)科學(xué)院西安光學(xué)精密機(jī)械研究所光譜成像技術(shù)實(shí)驗(yàn)室,陜西西安710119;2.中國(guó)科學(xué)院研究生院,北京100049)
多光譜成像儀獲得的圖片信息既包括空間信息又包括不同譜段的光譜信息,它能夠同時(shí)反映物體表面的形狀特征和物質(zhì)組成。本文中提到的自適應(yīng)多光譜成像儀根據(jù)所采用的Hadamard變換階數(shù)的不同,對(duì)同一目標(biāo)物成像產(chǎn)生的數(shù)據(jù)量不同,階數(shù)越高,光譜信息越多,數(shù)據(jù)量也越大。由于板上數(shù)據(jù)存儲(chǔ)空間有限且需要連續(xù)不斷地進(jìn)行拍攝記錄,所以需要高速數(shù)據(jù)傳輸系統(tǒng)將光譜數(shù)據(jù)傳出[1]。通常采用的高速數(shù)據(jù)傳輸系統(tǒng)有USB、Camera link、以太網(wǎng)和IEEE 1394等[2-5],USB2.0的最大傳輸速率480 Mb/s,幾乎每臺(tái)計(jì)算機(jī)上都配置了USB接口,但其最大傳輸距離只有5 m,如果超過(guò)這個(gè)距離則數(shù)據(jù)傳輸不穩(wěn)定。在66 MHz的工作頻率上Camera link的最大傳輸速率為680 Mb/s,其傳輸距離也只有10 m,而且由于其接口本身的機(jī)械尺寸很大,其在微嵌入式系統(tǒng)中并不常用。IEEE1394a的最大傳輸速率為400 Mb/s,但是其應(yīng)用非常的少,幾乎沒(méi)有PC機(jī)集成了IEEE 1394接口;且它使用時(shí)占用大量資源,需要高速的CPU;節(jié)點(diǎn)之間的傳輸距離也只有4.5 m,雖然能夠使用中繼器,其最大傳輸距離也只有72 m。以太網(wǎng)已經(jīng)能夠?qū)崿F(xiàn)千兆,甚至萬(wàn)兆的傳輸速率,網(wǎng)絡(luò)成熟,傳輸距離可以達(dá)到100 m,且能夠通過(guò)交換機(jī)達(dá)到更遠(yuǎn)的距離[6];接口是普通的RJ45接口,價(jià)格低廉,即插即用,所以本文采用百兆以太網(wǎng)。
此自適應(yīng)多光譜成像儀采用Hadamard變換,它是一種n·n階矩陣方程[7],是由0和1作為陣列元素構(gòu)造的n階循環(huán)編碼模板,用來(lái)代替常規(guī)光譜儀的入射狹縫或出射狹縫。將反射光柵出來(lái)的光譜信息進(jìn)行循環(huán)編碼,得到能量增強(qiáng)的混合光譜圖像,在地檢設(shè)備接收到以后,將混合光譜信息進(jìn)行解碼,得到n幅對(duì)應(yīng)不同譜段的光譜圖,這樣就得到了既有一維光譜信息又有二維空間信息的光譜圖像。本系統(tǒng)中Hadamard編碼模板是用數(shù)字微鏡器件(Digital Micro-mirror Device,DMD)實(shí)現(xiàn)的,它通過(guò)數(shù)字電壓信號(hào)控制微鏡片偏轉(zhuǎn)實(shí)現(xiàn)光路的選通和關(guān)閉,以此實(shí)現(xiàn)對(duì)光信號(hào)的編碼。本系統(tǒng)選用的是德州儀器的專利產(chǎn)品編碼矩陣對(duì)應(yīng)的0,1編碼模板下載到DMD器件,通過(guò)DMD控制電路控制DMD的鏡片偏轉(zhuǎn),來(lái)實(shí)現(xiàn)哈達(dá)碼編碼。
本系統(tǒng)中自適應(yīng)多光譜成像儀由兩大部分組成:光譜儀主體和信號(hào)處理器。光譜儀主體包括:前置鏡、準(zhǔn)直鏡、反射光柵、會(huì)聚鏡、數(shù)字微鏡陣列、成像電路;信號(hào)處理器包括:數(shù)據(jù)處理和分發(fā)系統(tǒng)、電源系統(tǒng)等。系統(tǒng)組成示意圖如圖1所示。
圖1 自適應(yīng)多光譜成像儀完整系統(tǒng)框圖Fig.1 Integrated system block diagram of adaptive spectral imager
在此自適應(yīng)多光譜成像儀的光學(xué)系統(tǒng)中,主要是DMD代替常規(guī)狹縫實(shí)現(xiàn)了Hadamard編碼,將目標(biāo)物成像在線陣CMOS探測(cè)器上,經(jīng)過(guò)數(shù)據(jù)采集系統(tǒng)將目標(biāo)物成像信息經(jīng)LVDS傳送到信號(hào)處理電路。經(jīng)過(guò)壓縮編碼等處理后將圖像通過(guò)以太網(wǎng)數(shù)據(jù)傳輸系統(tǒng)傳送到PC機(jī)上,進(jìn)行觀察和評(píng)估。
本系統(tǒng)實(shí)現(xiàn)的是100 Mb/s的以太網(wǎng),圖2是以太網(wǎng)數(shù)據(jù)傳輸系統(tǒng)總體實(shí)現(xiàn)結(jié)構(gòu)圖,它包括總線接口,存儲(chǔ)模塊,收發(fā)控制模塊和MII接口[8]。它通過(guò)PLB總線與上層MicroBlaze Processor連接,通過(guò)MII接口與物理層芯片DP83865連接,實(shí)現(xiàn)以太網(wǎng)功能。
圖2 總體結(jié)構(gòu)設(shè)計(jì)圖Fig.2 Design diagram of overall structure of Ethernet
總線接口:連接層和主機(jī)的接口,本文層與Processor的連接使用的是PLB4.6總線接口,實(shí)現(xiàn)百兆的以太網(wǎng)。在EDK10.1中,MicroBlaze軟核的OPB總線被PLB總線代替,plbv46_slave_single也可以被優(yōu)化成節(jié)省FPGA資源,減小延時(shí)的點(diǎn)到點(diǎn)連接的設(shè)計(jì)。
發(fā)送控制模塊:控制以太幀的封裝,自動(dòng)添加前導(dǎo)碼,定界符,不滿足最小包長(zhǎng)要求的時(shí)候自動(dòng)填充,完成CRC校驗(yàn)等發(fā)送功能。
接收控制模塊:控制以太幀的接收,自動(dòng)去除前導(dǎo)碼,定界符,校驗(yàn)CRC驗(yàn)證碼看是否在傳輸過(guò)程中發(fā)生錯(cuò)誤。
雙向memory:發(fā)送和接收數(shù)據(jù)的存儲(chǔ)介質(zhì),狀態(tài)信息寄存器。將要發(fā)送或者接收無(wú)誤的信息存儲(chǔ)在雙向memory中,發(fā)送數(shù)據(jù)經(jīng)過(guò)發(fā)送控制模塊添加前導(dǎo)碼、定界符、自動(dòng)填充信息、CRC校驗(yàn),送往TX Bus FIFO,以nibble格式經(jīng)MII口傳送給PHY層。接收數(shù)據(jù)是經(jīng)過(guò)接收控制模塊驗(yàn)證的正確的接收信息,它將被送往MAC上層進(jìn)行處理。另外接收和發(fā)送的狀態(tài)信息也存儲(chǔ)在此memory中,有固定的存儲(chǔ)位置,通過(guò)改寫這些狀態(tài)來(lái)控制數(shù)據(jù)的收發(fā)。
Pong memory:是接收和發(fā)送的第2片緩存,用來(lái)和上面的雙向memory交替使用,以提高傳輸?shù)乃俾?。其功能和雙向memory基本一致,除了個(gè)別的狀態(tài)信息由雙向memory單獨(dú)控制。
MII接口:媒體無(wú)關(guān)接口,連接MAC層和PHY層,它能夠屏蔽PHY層的差異,實(shí)現(xiàn)MAC與不同的PHY層相連接。
以太網(wǎng)發(fā)送控制模塊包括發(fā)送狀態(tài)機(jī)模塊,計(jì)數(shù)器模塊,CRC校驗(yàn)?zāi)K如圖3所示。其中計(jì)數(shù)器模塊包括幀長(zhǎng)計(jì)數(shù)器、重發(fā)計(jì)數(shù)器、IPG計(jì)數(shù)器和延遲計(jì)數(shù)器。發(fā)送狀態(tài)機(jī)通過(guò)在不同的狀態(tài)之間切換控制整個(gè)發(fā)送過(guò)程的完成,如圖4是發(fā)送狀態(tài)機(jī)的狀態(tài)圖。CRC校驗(yàn)?zāi)K通過(guò)計(jì)算產(chǎn)生32 bit的校驗(yàn)碼,完成要發(fā)送數(shù)據(jù)的校驗(yàn)。自動(dòng)生成前導(dǎo)碼和定界符模塊是在發(fā)送信號(hào)有效的時(shí)候產(chǎn)生前導(dǎo)碼和定界符自動(dòng)地嵌入到要發(fā)送的數(shù)據(jù)的前面,達(dá)到同步和指示有效信號(hào)來(lái)臨的作用。幀長(zhǎng)計(jì)數(shù)器對(duì)發(fā)送的數(shù)據(jù)幀進(jìn)行長(zhǎng)度計(jì)算,當(dāng)不滿46 Bytes時(shí)轉(zhuǎn)到填充狀態(tài)對(duì)數(shù)據(jù)幀進(jìn)行填充以達(dá)到最小幀的要求。IPG計(jì)數(shù)器是幀間隔計(jì)數(shù)器,在每一幀傳輸完成之后都要等待一個(gè)幀間隔的時(shí)間才能進(jìn)行下一幀的傳輸,IPG的設(shè)計(jì)是96 bits信號(hào)傳輸所使用的時(shí)間,這里100 Mb/s的以太網(wǎng)需等待0.96 μs[9]。重發(fā)計(jì)數(shù)器是沖突發(fā)生次數(shù)的計(jì)數(shù),沖突發(fā)生次數(shù)越多等待的時(shí)間越長(zhǎng),這個(gè)等待時(shí)間是由二進(jìn)制指數(shù)退避算法產(chǎn)生的,最大的重發(fā)次數(shù)是16次,當(dāng)超過(guò)這個(gè)值之后,此幀將被丟棄不再重發(fā)。延遲計(jì)數(shù)器是沖突發(fā)生后二進(jìn)制指數(shù)退避算法根據(jù)重發(fā)次數(shù)產(chǎn)生的重發(fā)等待時(shí)間[10]。
圖3 發(fā)送控制模塊Fig.3 Send control module
圖4 發(fā)送狀態(tài)機(jī)Fig.4 Send state machine
以太網(wǎng)接收控制模塊包括接收狀態(tài)機(jī)模塊,CRC校驗(yàn)?zāi)K,地址檢測(cè)模塊以及自動(dòng)去除前導(dǎo)碼、定界符和pad模塊,如圖5所示。CRC校驗(yàn)?zāi)K對(duì)接收的數(shù)據(jù)進(jìn)行32 bits的CRC校驗(yàn),與接收的CRC校驗(yàn)碼進(jìn)行對(duì)比,一致則證明傳輸過(guò)程中沒(méi)有發(fā)生錯(cuò)誤,不一致則說(shuō)明有錯(cuò)誤發(fā)生,將錯(cuò)誤信息送往上層,由上層決定發(fā)送重發(fā)信號(hào)還是丟棄。自動(dòng)去除前導(dǎo)碼、定界符、pad模塊在接收過(guò)程中取出前導(dǎo)碼、定界符、pad信息,將剩余的有用數(shù)據(jù)存儲(chǔ)在接收緩存中。接收狀態(tài)機(jī)是接收控制模塊的重點(diǎn)部分,它控制完成整個(gè)接收過(guò)程,圖6是接收狀態(tài)機(jī)圖,它通過(guò)在不同的狀態(tài)之間進(jìn)行轉(zhuǎn)換來(lái)完成接收。地址檢測(cè)模塊檢測(cè)接收到的目的地址,若為本機(jī)MAC地址或者是廣播地址則繼續(xù)接收數(shù)據(jù),若不是則放棄后續(xù)數(shù)據(jù)的接收。接收幀長(zhǎng)計(jì)數(shù)器對(duì)接收的數(shù)據(jù)幀長(zhǎng)度進(jìn)行計(jì)數(shù),如果接收到的數(shù)據(jù)幀的長(zhǎng)度沒(méi)有超過(guò)最小幀的要求,認(rèn)為是幀的碎片,丟棄。如果超過(guò)最大幀的限制,則在傳輸過(guò)程中發(fā)生錯(cuò)誤,也丟棄。
圖5 接收控制模塊Fig.5 Receive control module
圖6 接收狀態(tài)機(jī)Fig.6 Receive state machine
圖7是chipscope捕獲的波形圖,首先接收到的是前導(dǎo)碼7 Bytes的“10101010”然后是1 Byte的“10101011”然后是目的地址{0x00,0x1E,0xC9,0x5C,0x04,0x71},地址傳輸?shù)臅r(shí)候是先傳Byte的低4位后傳Byte的高4位,所以我們看到的是“1110”和“0001”即“1E”。傳輸結(jié)果和發(fā)送數(shù)據(jù)一致,說(shuō)明從MAC到PHY傳輸正確。
圖7 Chipscope捕捉波形圖Fig.7 Waveform captured by chipscope
計(jì)算機(jī)上抓包工具Etherpeek捕獲的以太幀,最下面的數(shù)據(jù)欄中接收到的數(shù)據(jù)和程序中發(fā)送的數(shù)據(jù)包完全一致。
實(shí)驗(yàn)發(fā)現(xiàn)計(jì)算機(jī)上抓獲的以太網(wǎng)數(shù)據(jù)幀和發(fā)送的數(shù)據(jù)包一致,此以太網(wǎng)系統(tǒng)可行且可靠。光譜圖像大小是610×288,每個(gè)點(diǎn)是8 bits,每秒傳輸25幀,需要總的帶寬約為34 M,開(kāi)發(fā)的百兆以太網(wǎng)完全滿足實(shí)驗(yàn)要求。將以太網(wǎng)系統(tǒng)應(yīng)用在多光譜成像儀上能夠滿足要求。將以太網(wǎng)系統(tǒng)編譯完成后顯示的FPGA內(nèi)部資源利用率僅為20%的slices,3%的DSP48As,17%的外部IOBs。說(shuō)明基于FPGA開(kāi)發(fā)的以太網(wǎng)占用少量的片上資源就能夠?qū)崿F(xiàn)傳輸系統(tǒng),可以和其他系統(tǒng)一起利用FPGA的片內(nèi)資源,使用一塊FPGA控制多個(gè)功能系統(tǒng),使整體系統(tǒng)能夠占用更少的空間,簡(jiǎn)化設(shè)計(jì)。圖8是工作圖片。
圖8 工作圖片F(xiàn)ig.8 Working picture
通過(guò)對(duì)實(shí)驗(yàn)結(jié)果的分析,說(shuō)明整個(gè)系統(tǒng)的可行性和以太網(wǎng)傳輸?shù)恼_性。本文實(shí)現(xiàn)的多光譜成像儀,采用DMD實(shí)現(xiàn)7階哈達(dá)瑪編碼,在進(jìn)行目標(biāo)物探測(cè)的時(shí)候因?yàn)楣庾V范圍的限制存在一定的誤差。由于采用的是7階哈達(dá)瑪編碼,所以編碼階數(shù)較低,光譜分辨率低,對(duì)細(xì)微的光譜差異分辨不出來(lái)。后期我們采用了15階哈達(dá)瑪編碼,成像較之7階編碼有明顯的優(yōu)勢(shì)。以太網(wǎng)技術(shù)發(fā)展十分成熟,主要的發(fā)展方向是在嵌入式中的應(yīng)用,其簡(jiǎn)單的原理,高速的傳輸速率,傳輸距離遠(yuǎn),分布式采集數(shù)據(jù)集中處理的優(yōu)勢(shì)使得它能夠很好地滿足很多地檢設(shè)備的要求。后期的發(fā)展方向主要是更高速度的以太網(wǎng)技術(shù)在嵌入式系統(tǒng)中的實(shí)現(xiàn),可以配合高光譜成像儀和超光譜成像儀的海量數(shù)據(jù)的傳輸。
[1]馬冬梅,高偉,王欣峰.基于PCI總線的成像光譜數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2005,21(8-2):1.
MA Dong-mei,GAO Wei,WANG Xin-feng.The development of interference imaging spectrum data transmission card based on PCI bus[J].MI,2005,21(8-2):1.
[2]蔣薇薇,黃志文.IEEE1394火線技術(shù)與USB串行接口的比較[J].微機(jī)發(fā)展,2003,13(3):1-2.
JIANG Wei-wei,HUANG Zhi-wen.The comparison of IEEE 1394 and USB[J].Microcomputer Development,2003,13(3):1-2.
[3]胡云.對(duì)IEEE1394總線技術(shù)的研究[J].科學(xué)技術(shù)與工程,2007,7(3):2-3.
HU Yun.Research on IEEE 1394 bus technique[J].Science Technology and Engineering,2007,7(3):2-3.
[4]陳啟美,王剛,丁傳鎖,等.USB技術(shù)概況[J].電力自動(dòng)化設(shè)備,
CHEN Qi-mei,WANG Gang,DING Chuan-suo,et al.An introduction to USB technology[J].Electric Power Automation Equipment,2001,21(2):1.
[5]趙貴海.基于DSP的嵌入式系統(tǒng)中千兆數(shù)據(jù)傳輸?shù)年P(guān)鍵技術(shù)研究[D].天津:天津理工大學(xué)研究生部,2008.
[6]李倩,邢維波,劉書明,等.實(shí)時(shí)信號(hào)處理系統(tǒng)千兆以太網(wǎng)接口設(shè)計(jì)[J].航空兵器,2009(6):2.
LI Qian,XING Wei-bo,LIU Shu-ming,et al.Design of gigabit ethernet interface for real-time signal processing system[J].Aero Weaponry,2009(6):2.
[7]Goldstein N,Cvijin P V.DMD-based adaptive spectral imagers for hyperspectral imagery and direct detection of spectral signatures[J].Proc.of SPIE,2009(7210):1.
[8]趙智勇,鄒文勝.基于FPGA的以太網(wǎng)接口數(shù)據(jù)采集器設(shè)計(jì)與實(shí)現(xiàn)[J].艦船電子工程,2009,29(6):2.
ZHAO Zhi-yong,ZOU Wen-sheng.Design and implementation of data acquisition by ethernet based on FPGA[J].Ship Electronic Engineering,2009,29(6):2.
[9]李文芝,劉天華.基于FPGA的10/100/1 000 M三態(tài)以太網(wǎng)卡設(shè)計(jì)[J].沈陽(yáng)師范大學(xué)學(xué)報(bào):自然科學(xué)版,2010,28(1):1.
LI Wen-zhi,LIU Tian-hua.Design of 10/100/1 000 MTri-mode Ethernet NIC based on FPGA[J].Journal of Shenyang Normal University:National Science,2010,28(1):1.
[10]張博,張琨.基于FPGA的以太網(wǎng)MAC控制器的設(shè)計(jì)[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2009,19(27):1-2.
ZHANG Bo,ZHANG Kun.The design of Ethernet MAC controller based on FPGA[J].SCI-TECH Information Development&Economy,2009,19(27):1-2.