基于DSP和FPGA的磁浮列車485通信研究
0引言
在高速磁浮交通系統(tǒng)中,車載測速定位單元對車輛的位置和速度進行實時測量,并將位置和速度信號通過無線電系統(tǒng)傳送至地面上的牽引控制系統(tǒng)和運行控制系統(tǒng),以用于長定子直線同步電機牽引的反饋控制及車輛運行的指揮和安全防護。測速定位單元是牽引和運控系統(tǒng)閉環(huán)控制的核心和關(guān)鍵。
測速定位單元緊鄰懸浮電磁鐵及長定子繞組和鐵心,處于懸浮磁場和牽引磁場中,電磁環(huán)境非常復(fù)雜,對其通信設(shè)備的電磁兼容性能提出了很高的要求。另外,為滿足牽引控制系統(tǒng)的需求,測速定位信號的精度要求相當(dāng)高。因此,對測速定位信號傳輸?shù)乃俣?、實時性及可靠性都有非常高的要求。
1同步485的實現(xiàn)方法
考慮到測速定位單元的工作環(huán)境及通信功能需求,在選擇其與車載無線電系統(tǒng)之間的通信方式時,經(jīng)過分析和比較,決定采用傳輸速率較高的同步通信方式,并使用屏蔽性能較好的雙絞線實現(xiàn)RS-485平衡型差分傳輸。
1.1接口設(shè)計及通信協(xié)議
測速定位單元與車載無線電控制單元之間的通信接口關(guān)系如圖1所示。車載無線電控制單元為主控方,車輛測速與定位單元為受控方。通信雙方均由收發(fā)器和控制器構(gòu)成,收發(fā)器之間采用RS-485同步串行接口方式,每個接口有4對差分線。
圖1通信接口關(guān)系示意圖
圖1中,CLK為時鐘信號,ANF為無線電請求信號,UEF為門控信號,DATA為數(shù)據(jù)信號。車輛測速定位單元每20ms向無線電控制單元發(fā)送一次數(shù)據(jù),傳輸速率為512kbps。為了防止信號干擾的小脈沖,ANF信號的寬度為10個CLK信號;在ANF信號變?yōu)榈托盘柡?,等?0個CLK信號寬度后,UEF才開始跳變?yōu)橛行?。ANF、UEF、DATA信號均在CLK的上升沿變化,在無信號傳輸時,UEF、DATA、ANF均為低電平,時鐘信號保持傳輸。數(shù)據(jù)傳輸時,采用左移方式,即先傳高位,后傳低位。信息幀格式如表1所示:
表1信息幀格式
1.2同步485的收發(fā)器實現(xiàn)
在本文所論述的通信系統(tǒng)中,在車輛測速定位單元及車載無線電控制單元雙方均采用Xilinx公司的XC2S100作為通信的收發(fā)器,模擬同步485的發(fā)送與接收時序。同步485的FPGA設(shè)計主要是基于Verilog硬件描述語言,所使用的EDA工具包括ISE(含其內(nèi)部集成工具)、Modelsim。
?。?)時鐘及定時信號的的產(chǎn)生:
對于車載無線電控制單元需要產(chǎn)生512k速率的時鐘信號與20ms一次的ANF(無線電請求)信號。另外,對于該單元在串行接收定位數(shù)據(jù)時其接收時鐘應(yīng)為512k(波特率時鐘)的16倍,即8M。因此,分頻器在同步485通信方式中得到廣泛應(yīng)用。
1)偶數(shù)分頻較為簡單,只需設(shè)計一個計數(shù)器進行計數(shù),待計數(shù)至分頻數(shù)的二分之一時使分頻后的時鐘電平翻轉(zhuǎn)即可;奇數(shù)分頻較為復(fù)雜,因為計數(shù)器不能對非整數(shù)進行計數(shù),需使用一定的算法進行處理。對奇數(shù)分頻模塊進行功能仿真后的波形如圖2所示:
圖2分頻模塊仿真波形
2)ANF信號的產(chǎn)生:ANF信號每隔20ms發(fā)送一次,每次發(fā)送脈寬為10個時鐘周期。ANF信號的產(chǎn)生可以分成兩部分實現(xiàn),首先產(chǎn)生每隔20ms的脈沖信號,然后把此脈沖信號的寬度變成10個時鐘周期。
(2)串行數(shù)據(jù)的發(fā)送與接收
1)串行數(shù)據(jù)的產(chǎn)生:根據(jù)通信協(xié)議的要求,測速定位單元每隔20ms應(yīng)串行移出72bits數(shù)據(jù)。如果每個發(fā)送時鐘周期移出一位,則需要72個時鐘周期才能全部移出,因此門控信號也需要保持72個時鐘周期的寬度。
2)串行數(shù)據(jù)的接收:同步串行接收一幀(72bits)數(shù)據(jù)與異步串行接收是不同的。由于收發(fā)時鐘不是異步的,因此不能以判斷在空閑態(tài)以后出現(xiàn)的第一個低電平作為一幀的開始,而是以門控信號(UEF)的上升沿作為一幀數(shù)據(jù)到來的判斷。為了避免數(shù)據(jù)傳輸過程中毛刺的影響,仍以波特率時鐘的16倍進行接收,即每隔16個波特率時鐘周期采樣一次,因此每個數(shù)據(jù)將在傳輸?shù)拿恳晃坏闹悬c處被采樣。
串行數(shù)據(jù)發(fā)送與接受的仿真時序圖如圖3所示。
圖3同步485仿真時序圖
1.3收發(fā)器與控制器之間的數(shù)據(jù)交換
基于RS-485的同步通信時序是用FPGA作為通信收發(fā)器來模擬的,但是通信數(shù)據(jù)最終是與系統(tǒng)的CPU進行數(shù)據(jù)交換的。在該通信方式的設(shè)計中,通信雙方均采用TI公司的TMS320F2812作為處理器,即通信的控制器。FPGA與DSP的數(shù)據(jù)交換必須滿足一定的時序,才能保證測速定位單元向車載無線電控制單元實時地傳輸位置及速度信號。本系統(tǒng)中,DSP控制器采用C語言進行軟件設(shè)計。
?。?)測速定位單元側(cè)DSP與FPGA的數(shù)據(jù)交換
TMS320F2812的外部存儲器XINTF可供選擇的外部地址空間有XINTF0,XINTF2,XINTF6。其中XINTF0使用XZCS0AND1作為片選信號,外部存儲器擴展空間為8K;XINTF2與XINTF6分別使用XZCS2、XZCS6AND7作為片選信號,外部存儲器擴展空間均為0.5M。測速定位單元在發(fā)送位置速度信息時,是通過DSP的數(shù)據(jù)線傳輸?shù)紽PGA,DSP根據(jù)相應(yīng)的外部存儲器片選信號找出對應(yīng)的地址,在從底層傳感器得到一個新的定位數(shù)據(jù)后寫入該地址。相對應(yīng)的硬件連接框圖如圖4所示:
圖4車輛測速定位單元DSP控制器向FPGA收發(fā)器寫數(shù)據(jù)的硬件連接示意圖
根據(jù)協(xié)議要求,定位信息每次發(fā)送時包括5個字節(jié)的用戶數(shù)據(jù)和2個字節(jié)的CRC校驗,因此16bits數(shù)據(jù)線至少需要連續(xù)發(fā)送四次才能將底層的定位信息完整地傳送到FPGA。
為了減少硬連線,這里只連接地址線的高五位,對其中的低四位地址線進行4-16譯碼,最高位地址線作為該譯碼器的使能信號。取對應(yīng)于一個外部存儲器片選信號的四個地址,比如片選信號XZCS2為低(對應(yīng)的外部存儲器地址范圍:0x080000—0x100000),即可選用0xe0000,0xe4000,0xe8000,0xec000四個地址作為DSP向FPGA寫數(shù)據(jù)的地址。
由于每個不同的地址都對應(yīng)一個地址譯碼值,當(dāng)四個譯碼值都出現(xiàn)后才可認為一次定位信息傳送完成。這時把連續(xù)接收到的七個字節(jié)加上幀頭及幀尾作為測速定位單元發(fā)送給車載無線電控制單元的一幀數(shù)據(jù)。相對應(yīng)的地址譯碼值如表2所示。
表2地址譯碼值
(2)車載無線電控制單元側(cè)DSP與FPGA的數(shù)據(jù)交換
由于采樣時間為毫秒級,為了避免占用過多的CPU資源,車載無線電控制單元中DSP從FPGA讀數(shù)據(jù)時不采用查詢方式,而采用外部中斷來接收數(shù)據(jù)。將DSP的16bits數(shù)據(jù)線與FPGA連接,DSP的XINT1也連接到FPGA的I/O管腳。若選用XZCS0AND1作為外部存儲器片選信號,則DSP從FPGA讀數(shù)據(jù)的尋址空間范圍為0x002000—0x004000,這個地址范圍內(nèi)所讀出的數(shù)據(jù)即為數(shù)據(jù)線上傳送到DSP的定位數(shù)據(jù)。相對應(yīng)的硬件連接框圖如下:
圖5車載無線電傳輸單元DSP控制器從FPGA收發(fā)器讀數(shù)據(jù)的硬件連接示意圖
由于FPGA傳送到DSP的一幀數(shù)據(jù)為72bits,因此通過16bits數(shù)據(jù)線傳輸需要分5次才能傳送完,每16bits數(shù)據(jù)到達時產(chǎn)生一次外部中斷。設(shè)波特率時鐘為512k,假設(shè)來自定位單元完整的一幀數(shù)據(jù)為0x02123456789abcde03,車載無線電單元通過16bits數(shù)據(jù)線分次轉(zhuǎn)發(fā)到DSP的數(shù)據(jù)則為0x0002,0x1234,0x5678,0x9abc,0xde03。數(shù)據(jù)及中斷信號產(chǎn)生的時序如圖6所示。由圖6可以看出,每對應(yīng)移出一次dataout,都會相應(yīng)地發(fā)出一個外部中斷信號xint1,DSP一旦接收到外部中斷便在中斷服務(wù)子程序中從16bits數(shù)據(jù)線讀取信號值。為了完整的接收一幀信號,可在外部中斷服務(wù)程序中定義一個16級FIFO,當(dāng)從FIFO的最底層讀出的數(shù)據(jù)為0x02時,便可以判斷一幀數(shù)據(jù)的開始(若在用戶數(shù)據(jù)和校驗值中存在0x02則要進行相應(yīng)的字符轉(zhuǎn)義),依次接收以下的數(shù)據(jù)便得到完整的一幀定位信息。
圖6車載無線電傳輸單元DSP控制器從FPGA收發(fā)器讀數(shù)據(jù)的仿真波形
2通信雙方的原理圖
根據(jù)以上對同步485實現(xiàn)方法的描述,在ISE中利用ECS工具所描繪的頂層原理圖如下,包括測速定位單元同步數(shù)據(jù)發(fā)送和車載無線電控制單元同步數(shù)據(jù)接收。
定位測速單元同步數(shù)據(jù)發(fā)送方的原理圖如圖7所示。
圖7同步數(shù)據(jù)發(fā)送方原理圖
圖7中,addr_decode為地址譯碼模塊,用于從DSP完整地接收一幀定位信息;tra485data為串行數(shù)據(jù)及門控信號發(fā)送模塊。其中,din(15:0)直接來自DSP的16bits數(shù)據(jù)線;addr(3:0)與DSP的A17-A14地址線相連;clkin及anfin信號由車載無線電控制單元提供。輸出的dataout及uefout經(jīng)過輸出緩沖及差分電平轉(zhuǎn)換后送給車載無線電控制單元。
車載無線電控制單元同步數(shù)據(jù)接收方的原理圖如圖8所示。
圖8同步數(shù)據(jù)接收方原理圖
圖8中,divide_512k為發(fā)送時鐘產(chǎn)生模塊,產(chǎn)生通信所需的波特率時鐘;anf_shift用于產(chǎn)生無線電請求信號;rec485data用于串行接收定位信息并通過dataconvert模塊轉(zhuǎn)發(fā)到通信控制器。其中,Dataout(15:0)直接通過數(shù)據(jù)線連到DSP,Xint1則連到DSP的外部中斷1。anfout和clkout由輸入的晶振頻率分頻后得到,經(jīng)輸出緩沖及差分電平轉(zhuǎn)換后送給車輛測速定位單元。
3結(jié)束語
在高速磁浮列車特殊的通信環(huán)境中,基于RS-485物理層的同步通信方式體現(xiàn)出其抗干擾性強、實時性好,誤碼率低等優(yōu)點,且實現(xiàn)原理簡單,硬件連接也不復(fù)雜。利用FPGA所實現(xiàn)的通信收發(fā)器設(shè)計靈活、可靠性高,其功能在實際應(yīng)用中已得到驗證,且效果良好。
評論