基于DSP和FPGA的磁浮列車同步485通信方式的研究
由于FPGA傳送到DSP的一幀數據為72bits,因此通過16bits數據線傳輸需要分5次才能傳送完,每16bits數據到達時產生一次外部中斷。設波特率時鐘為512k,假設來自定位單元完整的一幀數據為0x02123456789abcde03,車載無線電單元通過16bits數據線分次轉發(fā)到DSP的數據則為0x0002, 0x1234, 0x5678, 0x9abc,0xde03 。數據及中斷信號產生的時序如圖6所示。由圖6可以看出,每對應移出一次dataout,都會相應地發(fā)出一個外部中斷信號xint1,DSP一旦接收到外部中斷便在中斷服務子程序中從16bits數據線讀取信號值。為了完整的接收一幀信號,可在外部中斷服務程序中定義一個16級FIFO,當從FIFO的最底層讀出的數據為0x02時,便可以判斷一幀數據的開始(若在用戶數據和校驗值中存在0x02則要進行相應的字符轉義),依次接收以下的數據便得到完整的一幀定位信息。
圖6 車載無線電傳輸單元DSP控制器從FPGA收發(fā)器讀數據的仿真波形
2 通信雙方的原理圖
根據以上對同步485實現方法的描述,在ISE中利用ECS工具所描繪的頂層原理圖如下,包括測速定位單元同步數據發(fā)送和車載無線電控制單元同步數據接收。
定位測速單元同步數據發(fā)送方的原理圖如圖7所示。
圖7 同步數據發(fā)送方原理圖
圖7中,addr_decode為地址譯碼模塊,用于從DSP完整地接收一幀定位信息;tra485data為串行數據及門控信號發(fā)送模塊。其中,din(15:0)直接來自DSP的16bits數據線;addr(3:0)與DSP的A17-A14地址線相連;clkin及anfin信號由車載無線電控制單元提供。輸出的dataout及uefout經過輸出緩沖及差分電平轉換后送給車載無線電控制單元。
車載無線電控制單元同步數據接收方的原理圖如圖8所示。
圖8 同步數據接收方原理圖
圖8中,divide_512k為發(fā)送時鐘產生模塊,產生通信所需的波特率時鐘;anf_shift 用于產生無線電請求信號;rec485data用于串行接收定位信息并通過dataconvert模塊轉發(fā)到通信控制器。其中,Dataout(15:0)直接通過數據線連到DSP,Xint1則連到DSP的外部中斷1。anfout和clkout由輸入的晶振頻率分頻后得到,經輸出緩沖及差分電平轉換后送給車輛測速定位單元。
3 結束語
在高速磁浮列車特殊的通信環(huán)境中,基于RS-485物理層的同步通信方式體現出其抗干擾性強、實時性好,誤碼率低等優(yōu)點,且實現原理簡單,硬件連接也不復雜。利用FPGA所實現的通信收發(fā)器設計靈活、可靠性高,其功能在實際應用中已得到驗證,且效果良好。
評論