陶 沛,劉 瑩,張 頎
(中移鐵通有限公司北京通信技術(shù)中心,北京 100000)
通信技術(shù)以及互聯(lián)網(wǎng)的快速發(fā)展,使得互聯(lián)網(wǎng)網(wǎng)絡(luò)的建設(shè)規(guī)模無論是在速度的提升上,還是在規(guī)模的擴(kuò)大上都得到了很大促進(jìn)[1]。因此,設(shè)計(jì)了一個(gè)能夠?qū)崟r(shí)采集和處理的通信數(shù)據(jù)采集系統(tǒng),并根據(jù)時(shí)代的要求,設(shè)計(jì)了一個(gè)用VB控制和完成前端通信數(shù)據(jù)采集模塊的系統(tǒng)。VB的主要設(shè)計(jì)模塊包括圖形用戶界面和應(yīng)用開發(fā)系統(tǒng)[2]。通過VB無線傳感器網(wǎng)絡(luò)進(jìn)行系統(tǒng)開發(fā)可利于將DAO、RDO、ADO與數(shù)據(jù)庫建立連接,同時(shí)也為LiveX控件的建立提供便利,能夠更加高效地進(jìn)行應(yīng)用程序的開發(fā)[3]。利用VB提供的intergroup,可以快速建立應(yīng)用程序。
通過將傳統(tǒng)通信數(shù)據(jù)采集系統(tǒng)框架進(jìn)行具體分析研究,并且以此作為基礎(chǔ),最終根據(jù)實(shí)際需求采用VB方法完成通信數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)。通信數(shù)據(jù)采集與處理系統(tǒng)又可以具體劃分為數(shù)據(jù)采集、數(shù)據(jù)處理及數(shù)據(jù)輸出[4]。通信數(shù)據(jù)采集系統(tǒng)通常由數(shù)據(jù)傳感器完成,而后續(xù)關(guān)于數(shù)據(jù)的處理和輸出主要需要依靠VB模塊及外部模塊實(shí)現(xiàn)[5]。系統(tǒng)中的3種模塊還可分為幾大功能模塊,如圖1所示。
圖1 通過數(shù)據(jù)采集處理系統(tǒng)模塊劃分
(1)通信數(shù)據(jù)傳感器模塊:將光信號(hào)轉(zhuǎn)換為電信號(hào),并用句子信號(hào)輸出分類數(shù)據(jù)。
(2)實(shí)時(shí)數(shù)據(jù)采集模塊:主要對(duì)數(shù)據(jù)傳感器中輸出的信號(hào)進(jìn)行采集。由于現(xiàn)代通信信號(hào)主要分為兩種,分為為模擬信號(hào)和數(shù)字信號(hào),如采集到模擬信號(hào)還需要進(jìn)行數(shù)模轉(zhuǎn)換。
(3)智能數(shù)據(jù)緩存模塊:主要負(fù)責(zé)采集完畢數(shù)據(jù)的存儲(chǔ)。為便于系統(tǒng)運(yùn)行,可連接多個(gè)數(shù)據(jù)緩存模塊以提高數(shù)據(jù)存儲(chǔ)效率。
(4)數(shù)據(jù)預(yù)處理模塊:主要對(duì)采集后的數(shù)據(jù)進(jìn)行預(yù)處理工作。
(5)高端數(shù)據(jù)處理模塊:主要是對(duì)經(jīng)過預(yù)處理的數(shù)據(jù)進(jìn)行再次處理。
(6)數(shù)據(jù)緩存處理模塊:主要是為提升數(shù)據(jù)存儲(chǔ)效率,避免數(shù)據(jù)擁堵的模塊,即對(duì)下次需要處理的數(shù)據(jù)進(jìn)行緩存。
通信數(shù)據(jù)采集系統(tǒng)可以對(duì)正在進(jìn)行的高速運(yùn)行的數(shù)據(jù)進(jìn)行采集,并可以將數(shù)據(jù)保存下來,通過捕捉到的通信數(shù)據(jù)信息,可以分析數(shù)據(jù)的運(yùn)行狀態(tài)和運(yùn)行規(guī)律。
通信數(shù)據(jù)采集系統(tǒng)由圖形用戶界面(GUI)和快速應(yīng)用開發(fā)(RAD)系統(tǒng)組成,主要用于數(shù)據(jù)采集和數(shù)據(jù)處理[6]。數(shù)據(jù)采集部分包括主控設(shè)備FPGA定時(shí)驅(qū)動(dòng)器,其作用于通知通信數(shù)據(jù)傳感器采集通信數(shù)據(jù)并將傳感器光信號(hào)轉(zhuǎn)換為電信號(hào)[7]。數(shù)據(jù)處理包括FPGA對(duì)傳感器采集的通信數(shù)據(jù)信息進(jìn)行預(yù)處理,然后對(duì)預(yù)處理后的數(shù)據(jù)信號(hào)進(jìn)行緩沖存儲(chǔ),最終實(shí)現(xiàn)實(shí)時(shí)顯示。
本文所研究的通信數(shù)據(jù)的采集系統(tǒng)采集數(shù)據(jù)時(shí)會(huì)利用接口端將數(shù)據(jù)傳輸至上位機(jī),還有部分系統(tǒng)采用數(shù)據(jù)采集卡將數(shù)據(jù)導(dǎo)入至上位機(jī)中[8]。利用上位機(jī)對(duì)數(shù)據(jù)進(jìn)行顯示和數(shù)據(jù)處理操作。這種結(jié)構(gòu)的優(yōu)點(diǎn)是PC機(jī)的車載技術(shù)相對(duì)成熟,計(jì)算機(jī)具有巨大的資源和大量的存儲(chǔ)數(shù)據(jù)。然而,由于整個(gè)系統(tǒng)使用分立元件,而且通信數(shù)據(jù)的傳輸速度很慢,因此無法實(shí)現(xiàn)高效率。
隨著高速通信數(shù)據(jù)采集技術(shù)的發(fā)展,嵌入式技術(shù)在通信數(shù)據(jù)采集系統(tǒng)中的應(yīng)用越來越普遍[9]。本系統(tǒng)設(shè)計(jì)的通信數(shù)據(jù)采集系統(tǒng)集數(shù)據(jù)處理和存儲(chǔ)于一體,系統(tǒng)集成度高,數(shù)據(jù)傳輸速度快。
對(duì)于VB設(shè)計(jì),它通??梢苑譃閹讉€(gè)過程,即硬件語言代碼輸入、代碼模擬、合成、合成后模擬和實(shí)現(xiàn)[10]。布局布線后的模擬、下載、調(diào)試等設(shè)計(jì)步驟如圖2所示。目前可以采用的信息輸入方式有兩種,其中一種是直接輸入波形信息,而另一種是通過編寫TestBench來驗(yàn)證信息。因?yàn)檫@個(gè)波形最終的目的是服務(wù)于使用者,所以最后的輸入波形可以是所需要的測試波形,而這種波形可以運(yùn)用編輯器生成[11]??梢酝ㄟ^Verilog HDL編寫測試代碼的這個(gè)方法來完成TestBench的編寫,通過這種辦法需要測試的文件能夠被準(zhǔn)確輸入到待測模塊中來進(jìn)行仿真模擬,通過這個(gè)模擬能夠清晰地判斷這個(gè)文件是否需要修正,再將這個(gè)模擬的最終結(jié)果與實(shí)際中的數(shù)據(jù)進(jìn)行對(duì)比分析,就能看出這個(gè)文件是否與實(shí)際相匹配。
圖2 VB設(shè)計(jì)流程
(1)電路設(shè)計(jì)輸入
電路設(shè)計(jì)主要采用硬件描述語言(HDL)的方式完成輸入。硬件描述語言輸入是開發(fā)大規(guī)模邏輯模塊的一種方便方法。如果想要在秒一個(gè)狀態(tài)機(jī)、VB控制、總線協(xié)議這些方面做到又快又準(zhǔn)確,那么采用HDL方法是最好的選擇。HDL的優(yōu)勢體現(xiàn)在它可以在EDA的工具作用下做出不殘缺的、不模糊的邏輯單元,換句話說就是使數(shù)據(jù)更完整更具體。通過HDL的方式能夠更容易地做到讓Top-Down的設(shè)計(jì)更簡單,可以將代碼進(jìn)行分模塊的編寫,代碼的移植也更方便。更讓人高興地是不會(huì)再像以前一樣以器件制造的工藝的為限制,可以根據(jù)工藝的變化也隨之變化。很多人不理解原理圖的這種方式,其實(shí)它就像電子設(shè)計(jì)一樣,他們都是以EDA為基礎(chǔ)來編輯具有某種功能的原理圖。
(2)數(shù)據(jù)智能功能仿真
很多人一提到功能仿真都是一頭霧水,其實(shí)就是常說的前仿真。不是很難操作,也不難理解,就是調(diào)試輸入的邏輯關(guān)系,在這個(gè)過程不需要考慮太多,因?yàn)檫@只是第一步進(jìn)行驗(yàn)證。
(3)綜合
將硬件描述語言編譯成邏輯單元就是綜合,而與門,非門,RAM或者觸發(fā)器又構(gòu)成了這些邏輯單元。除此之外相應(yīng)的模塊單元的速度和面積也可以通過這些構(gòu)成模塊進(jìn)行得到優(yōu)化,并且還能同時(shí)輸出edf等格式的文件,最終得到滿意的硬件設(shè)計(jì)。得到符合廠家需求的網(wǎng)表文件。
(4)數(shù)據(jù)布局布線
如果根據(jù)上述步驟所產(chǎn)生的的網(wǎng)表文件跟實(shí)際器件情況有差別的話,可以借助邏輯器件里面的產(chǎn)商的軟件,通過這個(gè)軟件把綜合出來的網(wǎng)表文件裝載到邏輯器件里面,把這個(gè)步驟稱為實(shí)現(xiàn)[14]。
(5)時(shí)序仿真與驗(yàn)證
接下來再將延時(shí)信息放入到這個(gè)文件中,習(xí)慣將這樣的仿真稱為后仿真。
VB通信數(shù)據(jù)預(yù)處理主要就是數(shù)據(jù)壓縮處理。經(jīng)過A/D轉(zhuǎn)換器的轉(zhuǎn)化數(shù)據(jù)傳感器的模擬量可以得到的數(shù)據(jù)是10 bit,而經(jīng)過SRAM可以得到的數(shù)據(jù)是8 bit,而為了使數(shù)據(jù)位的匹配更加合理,還需要將10 bit的數(shù)據(jù)轉(zhuǎn)化為8 bit。
有兩種轉(zhuǎn)化方式可以將這組數(shù)據(jù)轉(zhuǎn)化,先用意識(shí)直接去2~9 bit,如果這時(shí)數(shù)據(jù)低于此數(shù)即為0,如果高于此數(shù)即為255。
這種轉(zhuǎn)化方式是一種雙曲變換,也是最為符合數(shù)據(jù)特征的比較理想的非線性傳輸變換,下面是雙曲變換的公式:
如果想將這個(gè)公式運(yùn)用到硬件電路中,由于硬件環(huán)境的限制,則只能近似地實(shí)現(xiàn)雙曲變換算法。一般來說,如果使用乘除法的話,太過于復(fù)雜,而運(yùn)用移位寄存器法操作的話就會(huì)相對(duì)簡單,但是運(yùn)用這種方法必須以2為整除數(shù)才能進(jìn)行。所以在進(jìn)行雙曲公式的近似處理時(shí),y的每段近似公式階梯型都是以2為斜率。
綜合考慮數(shù)據(jù)位轉(zhuǎn)換規(guī)則及移位寄存器特性,通過計(jì)算可以得到近似公式為:
其實(shí)以上函數(shù)就是一個(gè)簡單的選擇器,通過位移操作就能夠?qū)崿F(xiàn)這個(gè)選擇器。再運(yùn)用Matlab對(duì)線性處理、雙曲變化及擬合雙曲變換這3種算法進(jìn)行仿真,最后就可以算出具體的數(shù)據(jù)結(jié)果。這個(gè)數(shù)據(jù)結(jié)果是十分具體的,有利于數(shù)據(jù)的壓縮處理,得到最優(yōu)化的數(shù)據(jù)。
除了預(yù)處理數(shù)據(jù),在處理這個(gè)數(shù)據(jù)的同時(shí)不僅涉及到了簡單選擇器這個(gè)方面,還涉及了其他一些高級(jí)處理算法。
兩個(gè)用戶之間的通信可以通過簡單的終端、傳輸通道以及交換設(shè)備實(shí)現(xiàn)。雖然說這種操作簡單,但是如果想要保證系統(tǒng)完全自動(dòng)化地運(yùn)行,那么就必須事先做出一些規(guī)定,這些“規(guī)定”通信雙方都需要執(zhí)行,將這些“規(guī)定”稱為通信協(xié)議。
通信協(xié)議的基本要素包括以下幾個(gè)方面:
(1)語法規(guī)定,即通信雙方(或多方)之間數(shù)據(jù)傳輸?shù)母袷?、碼型以及信號(hào)電平等;
(2)語義規(guī)定,即通信雙方(或多方)規(guī)定他們之間要傳輸怎樣的控制信息以及執(zhí)行如何的動(dòng)作等;
(3)時(shí)序規(guī)定,即通信雙方(或多方)之間執(zhí)行事件的順序,傳輸數(shù)據(jù)的匹配等問題。
VB具有強(qiáng)大的網(wǎng)絡(luò)功能。利用VB的WINSOCK空間,可以有效地將任意兩個(gè)IP地址進(jìn)行數(shù)據(jù)上的連接。再運(yùn)用UDP或TCP交換數(shù)據(jù),并在分布式通信系統(tǒng)中使用。遠(yuǎn)程通信很容易實(shí)現(xiàn)。
可以通過TCP連接到額遠(yuǎn)程計(jì)算機(jī)。通過這種方式連接可以實(shí)現(xiàn)相連發(fā)的計(jì)算機(jī)之間的相互轉(zhuǎn)換。能夠傳輸任何數(shù)據(jù)。但是如果網(wǎng)絡(luò)中的接收器是錯(cuò)誤的,那么是無法接受數(shù)據(jù)的,這是因?yàn)門CP協(xié)議需要通過正確的網(wǎng)絡(luò)建立連接。當(dāng)數(shù)據(jù)被發(fā)送時(shí),它將被自動(dòng)重新傳輸,并且使用該協(xié)議可以確認(rèn)傳輸結(jié)果。網(wǎng)絡(luò)中的接收器是錯(cuò)誤的用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是一種數(shù)據(jù)無連接協(xié)議。如果要傳輸數(shù)據(jù),首先要設(shè)置接收計(jì)算機(jī)的LoacalPort屬性,然后簡單地將RemoteHost設(shè)置為接收計(jì)算機(jī)的Internet地址,并將RemotePort設(shè)置為與接收計(jì)算機(jī)的LoacalPort屬性相同的端口。調(diào)用SendData方法發(fā)送信息,接收計(jì)算機(jī)使用GetData獲取DataArrival事件中的信息。
還有一些核心模塊化系統(tǒng)組件和服務(wù),其功能如表1所示。
表1 Manager功能表
VB同步采集測試主要是測試GUI和RAD中的任意通道的信號(hào)幅度的一致性、相位一致性,模擬信號(hào)在經(jīng)過模數(shù)轉(zhuǎn)換之后就會(huì)轉(zhuǎn)變?yōu)閿?shù)字信號(hào),這樣的數(shù)字信號(hào)是無法通過傳統(tǒng)的數(shù)字示波器、相位測試儀等一起來檢測同步一致性的情況,這時(shí)候就需要把一個(gè)已知的信號(hào)一分為二,這個(gè)原理聽起來很難,其實(shí)就是首先利用發(fā)射信號(hào)源產(chǎn)生一個(gè)已知的測試信號(hào),這時(shí)候就需要把一個(gè)已知的信號(hào)將其一分為二,然后再將任意兩通道的數(shù)據(jù)段連接,通過F連接到任意兩通道的輸入端,再通過FPGA中的CHIPSCOPE軟件來實(shí)時(shí)觀察信號(hào)的采集結(jié)構(gòu)。
圖3所示的是CHIPSCOPE采集到的兩路同步測試數(shù)據(jù),由圖可知,兩路采集信號(hào)的幅度、相位上是完全相同的,為了使這個(gè)結(jié)果更加精確,一共是任意的抽取了10組VB采集信號(hào)的波形,然后再利用CHIPSCOPE這個(gè)軟件將采集到的兩路數(shù)據(jù)轉(zhuǎn)換為PRN的格式,最后再利用MATLAB軟件將采集到的兩路數(shù)據(jù)導(dǎo)入,結(jié)合精密的計(jì)算,最終所得的結(jié)果如表2所示。通過此表的測試結(jié)果可以得知,這兩個(gè)通道之間的采集信號(hào)的幅度一致性、相位一致性都滿足最開始設(shè)計(jì)的要求。
圖3 CHIPSCOPE測試VB采集數(shù)據(jù)
表2 采集同步性驗(yàn)證結(jié)果
本文完成了基于VB的通信數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),包括通信數(shù)據(jù)采集模塊、系統(tǒng)存儲(chǔ)模塊、數(shù)據(jù)顯示模塊、外圍接口模塊、電源模塊和VB核心控制器模塊。通過這些模塊可以清晰地看到VB系統(tǒng)的優(yōu)勢,VB可以提供快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),支持圖形用戶界面(GUI)系統(tǒng),可通過DAO、RDO、ADO進(jìn)行方便地?cái)?shù)據(jù)庫連接訪問,并支持Active X空間快速創(chuàng)建功能。這是VB與其他的設(shè)計(jì)系統(tǒng)相比,無可比擬的優(yōu)勢。基于此,將VB作為軟件開發(fā)的主要語言工具,不僅讓混亂代碼變得整齊,可以從最開始的時(shí)候就避免這個(gè)問題。這樣就會(huì)省掉反復(fù)改寫代碼的麻煩,可以做到省時(shí)省力地編寫語言程序。