基于DSP和FPGA的磁浮列車(chē)同步485通信方式研究
在高速磁浮交通系統中,車(chē)載測速定位單元對車(chē)輛的位置和速度進(jìn)行實(shí)時(shí)測量,并將位置和速度信號通過(guò)無(wú)線(xiàn)電系統傳送至地面上的牽引控制系統和運行控制系統,以用于長(cháng)定子直線(xiàn)同步電機牽引的反饋控制,以及車(chē)輛運行的指揮和安全防護。測速定位單元是牽引和運控系統閉環(huán)控制的核心與關(guān)鍵。
測速定位單元緊鄰懸浮電磁鐵及長(cháng)定子繞組和鐵心,處于懸浮磁場(chǎng)和牽引磁場(chǎng)中,電磁環(huán)境非常復雜,這對其通信設備的電磁兼容性能提出了很高的要求。另外,為滿(mǎn)足牽引控制系統的需求,測速定位信號的精度要求相當高。因此,測速定位信號傳輸的速度、實(shí)時(shí)性及可靠性都面臨挑戰?;谝陨峡紤],本文提出了基于DSP和FPGA的磁浮列車(chē)同步485通信方式的研究,以解決上述挑戰。
同步485的實(shí)現方法
考慮到測速定位單元的工作環(huán)境及通信功能需求,在選擇該單元與車(chē)載無(wú)線(xiàn)電系統之間的通信方式時(shí),經(jīng)過(guò)分析,本研究采用了傳輸速率較高的同步通信方式,并使用屏蔽性能較好的雙絞線(xiàn)實(shí)現RS-485平衡型差分傳輸。
接口設計及通信協(xié)議
測速定位單元與車(chē)載無(wú)線(xiàn)電控制單元之間的通信接口關(guān)系如圖1所示。車(chē)載無(wú)線(xiàn)電控制單元為主控方,車(chē)輛測速與定位單元為受控方。通信雙方均由收發(fā)器和控制器構成,收發(fā)器之間采用RS-485同步串行接口方式,每個(gè)接口有4對差分線(xiàn)。
圖1中,CLK為時(shí)鐘信號,ANF為無(wú)線(xiàn)電請求信號,UEF為門(mén)控信號,DATA為數據信號。車(chē)輛測速定位單元每20ms向無(wú)線(xiàn)電控制單元發(fā)送一次數據,傳輸速率為512kbps。為了防止小脈沖信號的干擾,ANF信號的寬度為10個(gè)CLK信號;在A(yíng)NF信號變?yōu)榈碗娖胶?,等?0個(gè)CLK信號寬度,UEF才開(kāi)始跳變?yōu)橛行?。ANF、UEF、DAFA信號均在CLK的上升沿變化。在無(wú)信號傳輸時(shí),UEF、DATA、ANF均為低電平,時(shí)鐘信號保持傳輸。數據傳輸采用左移方式,即先傳高位,后傳低位。信息幀格式如表1所示。

同步485的收發(fā)器實(shí)現
在本文所論述的通信系統中,車(chē)輛測速定位單元及車(chē)載無(wú)線(xiàn)電控制單元雙方均采用XC2S100作為通信收發(fā)器,模擬同步485的發(fā)送與接收時(shí)序。同步485的FPGA設計主要是基于Verilog硬件描述語(yǔ)言,所使用的EDA工具包括ISE(含其內部集成工具)、Modelsim。
時(shí)鐘及定時(shí)信號的的產(chǎn)生
車(chē)載無(wú)線(xiàn)電控制單元需要產(chǎn)生速率為512k的時(shí)鐘信號與20ms一次的ANF信號。另外,該單元在串行接收定位數據時(shí)接收時(shí)鐘應為512k(波特率時(shí)鐘)的16倍,即8M。因此,分頻器在同步485通信方式中得到有效應用。
對偶數分頻,只需設計一個(gè)計數器進(jìn)行計數,待計數至分頻數的二分之一時(shí),使分頻后的時(shí)鐘電平翻轉即可;奇數分頻較為復雜,因為計數器不能對非整數進(jìn)行計數,需使用一定的算法進(jìn)行處理。這里對奇數分頻模塊進(jìn)行功能仿真后的波形見(jiàn)圖2。
ANF信號每隔20ms發(fā)送一次,每次發(fā)送脈寬為10個(gè)時(shí)鐘周期。ANF信號的產(chǎn)生可以分成兩部分實(shí)現:首先產(chǎn)生間隔20ms的脈沖信號,然后把此脈沖信號的寬度變成10個(gè)時(shí)鐘周期。
串行數據的發(fā)送與接收
產(chǎn)生串行數據時(shí),根據通信協(xié)議的要求,測速定位單元每隔20ms應串行移出72bits數據。如果每個(gè)發(fā)送時(shí)鐘周期移出一位,則需要72個(gè)時(shí)鐘周期才能全部移出,因此門(mén)控信號也需要保持72個(gè)時(shí)鐘周期的寬度。
接收串行數據時(shí),同步串行接收一幀(72bits)數據與異步串行接收是不同的。由于收發(fā)時(shí)鐘不是異步的,因此不能以判斷在空閑態(tài)以后出現的第一個(gè)低電平作為一幀的開(kāi)始,而是以門(mén)控信號(UEF)的上升沿作為一幀數據到來(lái)的判斷。為了避免數據傳輸過(guò)程中毛刺的影響,我們仍以波特率時(shí)鐘的16倍進(jìn)行接收,即每隔16個(gè)波特率時(shí)鐘周期采樣一次,因此,每個(gè)數據將在傳輸的每一位的中點(diǎn)處被采樣。
串行數據發(fā)送與接收的仿真時(shí)序圖見(jiàn)圖3。

收發(fā)器與控制器之間的數據交換
基于RS-485的同步通信時(shí)序是用FPGA作為通信收發(fā)器來(lái)模擬的,但是通信數據最終是與系統的CPU進(jìn)行數據交換的。在該通信方式的設計中,通信雙方均采用TMS320F2812作為通信控制器。FPGA與DSP的數據交換必須滿(mǎn)足一定的時(shí)序,才能保證測速定位單元向車(chē)載無(wú)線(xiàn)電控制單元實(shí)時(shí)地傳輸位置及速度信號。本系統中,DSP控制器采用C語(yǔ)言進(jìn)行軟件設計。
測速定位單元側DSP與FPGA的數據交換
TMS320F2812的外部存儲器XINTF可供選擇的外部地址空間有XINTF0、XINTF2及XINTF6。其中XINTF0使用XZCS0AND1作為片選信號,外部存儲器擴展空間為8K;XINTF2與XINTF6分別使用XZCS2、XZCS6AND7作為片選信號,外部存儲器擴展空間均為0.5M。測速定位單元在發(fā)送位置速度信息時(shí),通過(guò)DSP的數據線(xiàn)傳輸到FPGA,DSP根據相應的外部存儲器片選信號找出對應的地址,在從底層傳感器得到一個(gè)新的定位數據后寫(xiě)入該地址。相對應的硬件連接框圖見(jiàn)圖4。
根據協(xié)議要求,定位信息每次發(fā)送時(shí)包括5個(gè)字節的用戶(hù)數據和2個(gè)字節的CRC校驗,因此,16bits數據線(xiàn)至少需要連續發(fā)送四次,才能將底層的定位信息完整地傳送到FPGA。
為了減少硬連線(xiàn),這里只連接地址線(xiàn)的高五位,對其中的低四位地址線(xiàn)進(jìn)行4~16譯碼,最高位地址線(xiàn)作為該譯碼器的使能信號。取對應于一個(gè)外部存儲器片選信號的四個(gè)地址,比如片選信號XZCS2為低,即可選用0xe0000,0xe4000,0xe8000,0xec000四個(gè)地址作為DSP向FPGA寫(xiě)數據的地址。
由于每個(gè)不同的地址都對應一個(gè)地址譯碼值,當四個(gè)譯碼值都出現后才可認為一次定位信息傳送完成。這時(shí)把連續接收到的七個(gè)字節加上幀頭及幀尾,作為測速定位單元發(fā)送給車(chē)載無(wú)線(xiàn)電控制單元的一幀數據。
車(chē)載無(wú)線(xiàn)電控制單元側DSP與FPGA的數據交換
為了避免占用過(guò)多的CPU資源,車(chē)載無(wú)線(xiàn)電控制單元中DSP從FPGA讀數據時(shí)不采用查詢(xún)方式,而采用外部中斷來(lái)接收數據。將DSP的16bits數據線(xiàn)與FPGA連接,DSP的XINT1也連接到FPGA的I/O管腳。若選用XZCS0AND1作為外部存儲器片選信號,則DSP從FPGA讀數據的尋址空間范圍為0x002000—0x004000,這個(gè)地址范圍內所讀出的數據即為數據線(xiàn)上傳送到DSP的定位數據。相對應的硬件連接框圖見(jiàn)圖5。

由于FPGA傳送到DSP的一幀數據為72bits,因此通過(guò)16bits數據線(xiàn)傳輸需要5次才能傳送完,每16bits數據到達時(shí)產(chǎn)生一次外 部中斷。設波特率時(shí)鐘為512k,假設來(lái)自定位單元完整的一幀數據為0x02123456789abcde03,車(chē)載無(wú)線(xiàn)電單元通過(guò)16bits數據線(xiàn)分次轉發(fā)到DSP的數據則為0x0002、0x1234、0x5678、0x9abc及0xde03。數據及中斷信號產(chǎn)生的時(shí)序如圖6所示。由圖6可以看出,每對應移出一次dataout,都會(huì )相應地發(fā)出一個(gè)外部中斷信號xint1,DSP一旦接收到外部中斷,便在中斷服務(wù)子程序中從16bits數據線(xiàn)讀取信號值。為了完整的接收一幀信號,可在外部中斷服務(wù)程序中定義一個(gè)16級FIFO,當從FIFO的最底層讀出的數據為0x02時(shí),便可以判斷一幀數據的開(kāi)始(若在用戶(hù)數據和校驗值中存在0x02,則要進(jìn)行相應的字符轉義),依次接收以下的數據便得到完整的一幀定位信息。
通信雙方的原理圖
根據以上對同步485實(shí)現方法的描述,在ISE中利用ECS工具所描繪的頂層原理圖如圖7和圖8所示。包括測速定位單元同步數據發(fā)送和車(chē)載無(wú)線(xiàn)電控制單元同步數據接收兩部分。
圖7中,addr_decode為地址譯碼模塊,用于從DSP完整地接收一幀定位信息;tra485data為串行數據及門(mén)控信號發(fā)送模塊。其中,din(15:0)直接來(lái)自DSP的16bits數據線(xiàn);addr(3:0)與DSP的A17~A14地址線(xiàn)相連;clkin及anfin信號由車(chē)載無(wú)線(xiàn)電控制單元提供。輸出的dataout及uefout經(jīng)過(guò)輸出緩沖及差分電平轉換后送給車(chē)載無(wú)線(xiàn)電控制單元。
在圖8所示的車(chē)載無(wú)線(xiàn)電控制單元同步數據接收方的原理圖中,divide_512k為發(fā)送時(shí)鐘產(chǎn)生模塊,產(chǎn)生通信所需的波特率時(shí)鐘;anf_shift用于產(chǎn)生無(wú)線(xiàn)電請求信號;rec485data用于串行接收定位信息并通過(guò)dataconvert模塊轉發(fā)到通信控制器。其中,Dataout(15:0)直接通過(guò)數據線(xiàn)連到DSP,Xint1則連到DSP的外部中斷1。anfout和clkout由輸入的晶振頻率分頻后得到,經(jīng)輸出緩沖及差分電平轉換后送給車(chē)輛測速定位單元。

結語(yǔ)
在高速磁浮列車(chē)特殊的通信環(huán)境中,基于RS-485物理層的同步通信方式體現出其抗干擾性強、實(shí)時(shí)性好、誤碼率低等優(yōu)點(diǎn),且實(shí)現原理簡(jiǎn)單。利用FPGA所實(shí)現的通信收發(fā)器設計靈活、可靠性高,其功能在實(shí)際應用中已得到驗證。
評論