推動(dòng)現(xiàn)代化空中交通管制 全球逐漸導(dǎo)入ADS-B
由民航機(jī)所發(fā)送出來的自動(dòng)相關(guān)監(jiān)視廣播(ADS-B),提供容易取得的無線電訊號(hào),可用來展示基于與Xilinx Zynx-7000 All Programmable SoC連接的AD9361的快速原型建構(gòu)流程。
民航機(jī)使用ADS-B傳送器向空中交通管制者(Air Traffic Controllers)報(bào)告它們的位置、速度、高度及飛機(jī)標(biāo)識(shí)符,其飛行數(shù)據(jù)格式是定義于國(guó)際民航組織(ICAO)的S模式擴(kuò)展電文(Mode S Extended Squitter)標(biāo)準(zhǔn)中。目前ADS-B正在全球各地導(dǎo)入中,以推進(jìn)空中交通管制及防撞系統(tǒng)的現(xiàn)代化。除了歐洲已正式采用外,美國(guó)也正在逐步普及中。
S模式擴(kuò)展電文標(biāo)準(zhǔn)提供RF傳送格式與編碼數(shù)據(jù)字段的細(xì)節(jié),而轉(zhuǎn)發(fā)器(Transponder)的傳送具有以下的特性:
.傳送頻率:1090MHz
.調(diào)變:脈沖位置調(diào)變(PPM)
.?dāng)?shù)據(jù)速率:1Mbit/s
.訊息長(zhǎng)度:56微秒(μs)或112μs
.24位CRC檢查總和(Checksum)
RF收發(fā)器AD9361能涵蓋整個(gè)調(diào)諧頻率(Tuning Frequency)及帶寬,而收到的I/Q取樣值,可透過多種的軟件或嵌入式平臺(tái)選項(xiàng),來加以偵測(cè)及解碼。
本文將討論如何使用基于AD9361的接收平臺(tái),來補(bǔ)捉這些S模式訊號(hào),然后再透過MATLAB及Simulink來開發(fā)能夠譯碼這些訊息的算法。此算法的最終開發(fā)目標(biāo),在于能將解決方案布局到Zynq SoC平臺(tái)上,例如Avnet的PicoZed SDR模塊化系統(tǒng)(SoM)。
克服四大挑戰(zhàn) 助S模式接收/譯碼訊息
S模式訊息短為56μs,長(zhǎng)則可達(dá)112μs。短訊息包含訊息類型、飛機(jī)標(biāo)識(shí)符、以及一循環(huán)冗余檢測(cè)(CRC)檢查總和,長(zhǎng)訊息則還包含高度、位置、速度及飛行狀態(tài)。但不論是何者,S模式傳送都是以8μs前置訊號(hào)(Preamble)為開始,接收器可使用此前置訊號(hào)的式樣(Preamble Pattern)得知有效訊息正要被傳送,此前置訊號(hào)式樣還可協(xié)助接收器判斷訊息的位何時(shí)開始。相關(guān)細(xì)節(jié)請(qǐng)參考圖1。
?
圖1 S模式訊息的架構(gòu)
?
S模式的波形相當(dāng)簡(jiǎn)單,但要成功地接收及譯碼被傳送的訊息,還是有一些挑戰(zhàn)須要克服。
一、接收環(huán)境通常包含非常短且穿插長(zhǎng)閑置期間(Idle Period)的訊息,而當(dāng)發(fā)射訊息的飛機(jī)與接收器的距離很遠(yuǎn)時(shí),接收到的訊號(hào)還可能會(huì)相當(dāng)?shù)匚⑷酢?/p>
由于舊(Legacy)波形也是以1090MHz來傳送,因此接收器必須利用前置訊號(hào),在擁塞的頻帶中辨識(shí)出高與低振幅的S模式傳送。
二、在每一個(gè)1μs的位期間內(nèi),位有兩種可能的式樣。邏輯1為第一個(gè)1/2μs為ON,而第二個(gè)1/2μs為OFF。邏輯0則是第一個(gè)1/2μs為OFF,而第二個(gè)1/2μs為ON。由于位是以時(shí)基式樣(Time-based Patterns)來進(jìn)行判定,接收器必須使用前置訊號(hào)來正確地找出訊息位開始時(shí)的I/Q取樣。
三、S模式訊息是由八十八個(gè)信息位及二十四個(gè)檢查總和位所組成。接收器必須能清除緩存器、判定位、計(jì)算檢查總和、并在正確的時(shí)間點(diǎn)讀取檢查總和緩存器。時(shí)序控制對(duì)于接收器的正常動(dòng)作而言是必要的。
四、對(duì)于嵌入式設(shè)計(jì)來說,譯碼處理必須以一個(gè)取樣接一個(gè)取樣的方式來進(jìn)行。將大量的批處理用數(shù)據(jù)儲(chǔ)存起來,對(duì)于嵌入式系統(tǒng)而言,并非切合實(shí)際的接收器設(shè)計(jì)。
將AD9361這類功能強(qiáng)大的RF前端,與MATLAB這類技術(shù)運(yùn)算語言加以結(jié)合,能減化偵測(cè)及譯碼這些傳送數(shù)據(jù)的相關(guān)問題。MATLAB及Signal Processing Toolbox所提供的功能,可用來辨識(shí)同步式樣(Sync Pattern)、計(jì)算噪聲基準(zhǔn) (Noise Floor)、判定位以及計(jì)算檢查總和。MATLAB中的條件型(Conditional)及執(zhí)行控制(Execution Control)功能,可簡(jiǎn)化控制邏輯。測(cè)試數(shù)據(jù)的取得相當(dāng)容易,包括從二進(jìn)制或文字格式的檔案,或是也可使用AD9361SDR平臺(tái)直接串流入MATLAB。最后,MATLAB的解譯特性(Interpreted Nature)有助于與數(shù)據(jù)之間的互動(dòng)、嘗試不同的方法,以及以互動(dòng)方式開發(fā)出解決方案。
MATLAB中S模式接收器算法模型化與驗(yàn)證
設(shè)計(jì)接收器算法的第一步,是取得一些資源數(shù)據(jù)(Source Data)。由于目前許多飛機(jī)都配備有S模式的轉(zhuǎn)發(fā)器,因此可以只調(diào)整接收器到1090MHz的廣播頻率,即可接收到本地傳送。舉例來說,可以使用Zynq SDR快速原型平臺(tái)。
ADI提供的MATLAB System Object,可以透過以太網(wǎng)絡(luò)從FMCOMMS平臺(tái)接收資料。
System Object能夠讓用戶可以選擇諧調(diào)頻率以及取樣率、使用無線電硬件收集接收取樣值、并且可以將接收到的取樣值直接帶入MATLAB的工作區(qū)中以作為MATLAB變量。
System Objec#e#
所需的程序代碼非常短,其中一小部份用來設(shè)置MATLAB System Object,一部份負(fù)責(zé)FMCOMMS3的設(shè)置,另外有一部份則是捕捉I/Q取樣并寫入MATLAB變數(shù)中。圖2到圖4所示為此類程序的例子。
?
圖2 用于設(shè)定MATLABS System Object的MATLAB程序代碼范例
?
?
圖3 用于配置FMCOMM3電路板的MATLAB程序代碼范例
?
?
圖4 用于捕捉I/Q取樣值并寫入Rx變量的MATLAB程序代碼范例
?
使用基于這些指令的程序,以12.5MHz的取樣率來捕捉一些數(shù)據(jù)組。之所以選擇12.5MHz的取樣率,是為提供足夠的取樣值以便微調(diào)前置訊號(hào)與第一個(gè)訊息位之間的對(duì)位,并利用平均化處理,去除掉用來判定位的取樣中的噪聲。圖5是由一百萬筆取樣值所得出的結(jié)果。
?
圖5 1090MHz上的取樣數(shù)據(jù)捕捉
?
在此短數(shù)據(jù)組中,有十四個(gè)訊號(hào)突顯于噪聲基準(zhǔn)之上,其中有兩個(gè)S模式訊息,其他則是應(yīng)被排除的舊或偽(Spurious)訊號(hào)。如果聚焦并展開取樣604000一帶的區(qū)間,可觀察到有效的訊息之一(圖6)。
?
圖6 單一S模式訊息
?
在此圖中,可清楚地看出前置訊號(hào)部份,由PPM調(diào)變所產(chǎn)生的位轉(zhuǎn)換(Transition)也明顯可見。但即使是如此干凈的訊號(hào),如果要藉由檢視方式來譯碼位,還是需要好的眼力及高的耐性。因此一套能對(duì)這些訊息進(jìn)行自動(dòng)譯碼的程序是必要的,而MATLAB正是開發(fā)此類程序的良好解決方案。
用于接收及譯碼S模式訊息的MATLAB程序代碼,其內(nèi)容可摘要說明如下。 一、使用Filter()函式,計(jì)算一短時(shí)間窗內(nèi)的噪聲基準(zhǔn)及前置訊號(hào)關(guān)聯(lián)性(Preamble Correlation)。在此解決方案中所使用的時(shí)間窗是七十五個(gè)取樣值,相當(dāng)于是6μs。
二、當(dāng)前置訊號(hào)關(guān)聯(lián)性超過噪聲基準(zhǔn)達(dá)一定程度時(shí),啟動(dòng)邏輯以尋找第一個(gè)訊息位取樣值。
a.此臨界值的選擇是很主觀的,它應(yīng)該要小到足以偵測(cè)到微弱訊號(hào),但又要大到足以避免許多的假正值(False Positive)。選擇比噪聲基準(zhǔn)大十倍以上的值來作為一合理的臨界值,以補(bǔ)捉大部份的可譯碼訊息。
b.前置訊號(hào)的式樣會(huì)產(chǎn)生多個(gè)峰值,由于最佳的符合者會(huì)出現(xiàn)在最先的6μs,因此先儲(chǔ)存第一個(gè)峰值,開始尋找第一個(gè)訊息位,并觀察在接下來的3μs內(nèi)是否有出現(xiàn)更大的峰值。如果確實(shí)有出現(xiàn),則儲(chǔ)存此新的峰值,并重置第一個(gè)訊息位起端的尋找動(dòng)作。
c.當(dāng)最大峰值出現(xiàn)時(shí),待2μs后開始訊息位的譯碼。
d.圖7中顯示了噪聲基準(zhǔn),以及將一理想的前置訊號(hào)關(guān)聯(lián)到輸入數(shù)據(jù)所得到的結(jié)果。其中有數(shù)個(gè)高過噪聲基準(zhǔn)的峰值,但關(guān)注的是具有最大振幅者。第一個(gè)訊息位的取樣值會(huì)在峰值的2μs后出現(xiàn)。
?
圖7 噪聲基準(zhǔn)的計(jì)算及前置訊號(hào)關(guān)聯(lián)性
?
三、對(duì)于每一個(gè)別的位,分別將前1/2μs及后1/2μs取樣的振幅加總,其中總和較大者決定此位是邏輯1或邏輯0。
四、在位判定完成時(shí),計(jì)算出檢查總和。這需要一些控制邏輯來負(fù)責(zé)在第一位到達(dá)時(shí)重置CRC緩存器、為88位計(jì)算出檢查總和、并為最后的24位清空CRC緩存器。當(dāng)接收到的位與檢查總和符合時(shí),ADS-B訊息才算有效。
五、根據(jù)S模式標(biāo)準(zhǔn)解析訊息位(圖8)。
?
圖8 經(jīng)譯碼的S模式訊息
?
圖8中MATLAB指令窗口所顯示的,是由一百萬筆取樣數(shù)據(jù)組中,成功譯碼出來的兩個(gè)訊息。
顯示的內(nèi)容包括了構(gòu)成88位訊息及24位檢查總和的十六進(jìn)制字符,而譯碼處理的結(jié)果則顯示了飛機(jī)ID、訊息類型、及飛行速度、高度及位置。
MATLAB提供數(shù)學(xué)及訊號(hào)處理語言,以便解決此問題。用來處理數(shù)據(jù)取樣及最終將訊息譯碼出來的MATLAB程序代碼其實(shí)很短,只有兩百行左右。此外,MATLAB的解譯特性,可讓設(shè)計(jì)構(gòu)想的交互式試作變得容易,并能很快地找出可行的解決方案。多種時(shí)序機(jī)制(Timing Mechanisms)、臨界值(Thresholds)及噪聲位準(zhǔn),會(huì)透過各種數(shù)據(jù)組來加以測(cè)試,以產(chǎn)生令人滿意的程序。
此MATLAB程序代碼已經(jīng)使用來自本地飛行區(qū)中的飛機(jī)訊號(hào)上測(cè)試過,而譯碼出來的訊息也已經(jīng)和Airframes.org及Flightaware.com等這類來源比對(duì)檢查過。依得到的結(jié)果來看,硬件與程序代碼都有較佳表現(xiàn),可對(duì)來自50英里遠(yuǎn)處飛機(jī)的訊號(hào)進(jìn)行譯碼。
完整工作流程 幫助嵌入式平臺(tái)開發(fā)
MATLAB是在個(gè)人計(jì)算機(jī)(PC)上測(cè)試設(shè)計(jì)概念并執(zhí)行算法的較佳環(huán)境,但如果最終的目標(biāo)是要產(chǎn)生用于嵌入式平臺(tái)上的軟件或HDL,特別是像Zynq SoC這類產(chǎn)品,則Simulink是較好的的解決方案。
Simulink特別適用于針對(duì)可編程組件所需的特定硬件開發(fā)的模型化。良好的工作流程,是利用MATLAB開發(fā)及驗(yàn)證算法,再將設(shè)計(jì)轉(zhuǎn)譯為Simulink,并繼續(xù)開發(fā)流程到最終硬件完成。
此算法的MATLAB程序代碼是以一次一筆取樣值的方式處理資料,因此轉(zhuǎn)換到Simulink是較直接的。相對(duì)于兩百行的MATLAB程序代碼,Simulink模型的顯示及敘述更為簡(jiǎn)單(圖9)。
?
圖9 S模式偵測(cè)及譯碼算法的Simulink模型
?
圖9中可觀察到,解碼的第一步是計(jì)算噪聲基準(zhǔn)及與前置訊號(hào)的關(guān)聯(lián)性,數(shù)字濾波功能塊可用來處理這些計(jì)算。時(shí)序(Timing)控制功能塊則是由Stateflow來完成,這是用來為其他的譯碼算法產(chǎn)生時(shí)序、重置、及控制訊號(hào)的狀態(tài)機(jī)(State Machine)工具。Stateflow對(duì)于要將控制邏輯從數(shù)據(jù)流分開來的模型而言非常有用。
一旦時(shí)序及觸發(fā)被啟動(dòng),名為BitProcess的功能塊便會(huì)開始接收輸入I/Q取樣,并計(jì)算出數(shù)據(jù)位,而CRC_Check功能塊則會(huì)計(jì)算出檢查總和。訊息分析仍會(huì)在此Simulink模型所驅(qū)動(dòng)的MATLAB腳本中進(jìn)行。
如果深入了解模型,可以發(fā)現(xiàn)Simulink的一些特性讓它適合于嵌入式的開發(fā),特別是在于將設(shè)計(jì)分割為Zynq SoC專屬的函式上,以及產(chǎn)生HDL碼及C程序代碼。
一、Simulink有定點(diǎn)(Fixed-point)支持,因此可以為設(shè)計(jì)建立并測(cè)試Bit-true的版本。個(gè)別的功能塊,能為模型中的數(shù)學(xué)運(yùn)算設(shè)定字長(zhǎng)及分?jǐn)?shù)長(zhǎng)度。其中一個(gè)例子,就是用來計(jì)算前置訊號(hào)關(guān)聯(lián)性的數(shù)字濾波器功能塊(圖10),使用者可為其運(yùn)算設(shè)定四舍五入模式及溢流(Overflow)行為(Floor及Wrap是以HDL所完成的數(shù)學(xué)中最簡(jiǎn)單的選擇)。此外,也可以為乘積及濾波器的累加器運(yùn)算,設(shè)定不同的字長(zhǎng)及分?jǐn)?shù)精準(zhǔn)度(圖11)。并能使用對(duì)應(yīng)于接收器ADC的字長(zhǎng)選擇,以便利用如Zynq SoC DSP48 Slices中的18位×25位乘法器這類的硬件乘法器。
?
圖10 用于前置訊號(hào)關(guān)聯(lián)的Simulink數(shù)字濾波器方塊和12位數(shù)據(jù)類型
?
?
圖11 固定點(diǎn)數(shù)據(jù)類型的設(shè)定
?
二、嵌入式設(shè)計(jì)通常有許多的動(dòng)作模式,及條件型執(zhí)行算法。Stateflow適合處理這些控制訊號(hào)。Stateflow提供偵測(cè)及譯碼S模式訊息所需控制邏輯的視覺表現(xiàn)。圖12中可看到邏輯的狀態(tài)為:
?
圖12 譯碼S模式訊息的Stateflow圖
?
a. SyncSearch(同步搜尋):在捕捉到的取樣中尋找前置訊號(hào)
b. WaitForT0(等待T0):尋找第一個(gè)訊息位的起始
c. BitProcess(位處理):?jiǎn)?dòng)位處理
d. EmptyReg(清空緩存器):清空檢查總和緩存器,并將這些位與位處理的輸出做比較
當(dāng)偵測(cè)與譯碼算法通過不同狀態(tài)而進(jìn)展時(shí),Stateflow功能塊會(huì)產(chǎn)生用來啟動(dòng)位處理的訊號(hào)、重置位判定計(jì)數(shù)器及檢查總和緩存器、并讀出S模式訊息尾端的檢查總和位。
三、Simulink功能塊鏈接庫為工程師提供多種高階或高度細(xì)節(jié)的工作選項(xiàng),它具有高階的功能塊,如數(shù)字式濾波器、FFT、及數(shù)值控制振蕩器,以利訊號(hào)處理設(shè)計(jì)的建立。如有需要更高精度的設(shè)計(jì)控制,像是速度或區(qū)域優(yōu)化,則可使用單位延遲(Unit delays)、邏輯操作元(Logic Operators,比方說XOR),以及切換開關(guān)等低階功能塊。此模型中的24位檢查總和,是使用這些低階功能塊所建立的回授移位寄存器(圖13)。
?
圖13 用于計(jì)算S模式檢查總和的回授平移緩存器
?
此Simulink模型是特定硬件版的MATLAB算法,它能偵測(cè)并譯碼S模式訊息。對(duì)于用MATLAB所寫成的行為算法與嵌入式硬件的完成碼之間的間隙來說,Simulink是能加以連接起來的有效工具。并可將特定硬件加工導(dǎo)入Simulink模型、運(yùn)行模型、并驗(yàn)證確認(rèn)所做的修改是否會(huì)破壞譯碼算法。
Zynq SDR快速原型建構(gòu)(Rapid Prototyping)平臺(tái)與MathWorks軟件的結(jié)合,為通訊工程師提供具彈性的方法,能將其無線接收器的設(shè)計(jì)構(gòu)想快速轉(zhuǎn)換為產(chǎn)品原型。
捷變寬帶RF收發(fā)器所提供的可編程能力與性能,以及硬件與MATLAB環(huán)境之間的簡(jiǎn)易連接性,讓工程師能取得多樣的無線電訊號(hào)。工程師能透過MATLAB,快速嘗試許多不同的設(shè)計(jì)構(gòu)想,然后再選擇其中最可行的解決方案。如果設(shè)計(jì)的終極目標(biāo)是嵌入式處理器,則工程師可使用Simulink以特定硬件構(gòu)想來優(yōu)化設(shè)計(jì),最后再產(chǎn)生可用于此處理器的程序代碼。此工作流程可降低設(shè)計(jì)無線接收器所需的技巧種類,并縮短從概念到可動(dòng)作原型所需的開發(fā)周期。
評(píng)論
查看更多