磁浮列車(chē)同步485通信方式的研究
?。?)串行數(shù)據(jù)的發(fā)送與接收
1) 串行數(shù)據(jù)的產(chǎn)生:根據(jù)通信協(xié)議的要求,測(cè)速定位單元每隔20ms應(yīng)串行移出72bits數(shù)據(jù)。如果每個(gè)發(fā)送時(shí)鐘周期移出一位,則需要72個(gè)時(shí)鐘周期才能全部移出,因此門(mén)控信號(hào)也需要保持72個(gè)時(shí)鐘周期的寬度。
2) 串行數(shù)據(jù)的接收:同步串行接收一幀(72bits)數(shù)據(jù)與異步串行接收是不同的。由于收發(fā)時(shí)鐘不是異步的,因此不能以判斷在空閑態(tài)以后出現(xiàn)的第一個(gè)低電平作為一幀的開(kāi)始,而是以門(mén)控信號(hào)(UEF)的上升沿作為一幀數(shù)據(jù)到來(lái)的判斷。為了避免數(shù)據(jù)傳輸過(guò)程中毛刺的影響,仍以波特率時(shí)鐘的16倍進(jìn)行接收,即每隔16個(gè)波特率時(shí)鐘周期采樣一次,因此每個(gè)數(shù)據(jù)將在傳輸?shù)拿恳晃坏闹悬c(diǎn)處被采樣。
串行數(shù)據(jù)發(fā)送與接受的仿真時(shí)序圖如圖3所示。
圖3同步485仿真時(shí)序圖
1.3收發(fā)器與控制器之間的數(shù)據(jù)交換
基于RS-485的同步通信時(shí)序是用FPGA作為通信收發(fā)器來(lái)模擬的,但是通信數(shù)據(jù)最終是與系統(tǒng)的CPU進(jìn)行數(shù)據(jù)交換的。在該通信方式的設(shè)計(jì)中,通信雙方均采用TI公司的TMS320F2812作為處理器,即通信的控制器。FPGA與DSP的數(shù)據(jù)交換必須滿足一定的時(shí)序,才能保證測(cè)速定位單元向車(chē)載無(wú)線電控制單元實(shí)時(shí)地傳輸位置及速度信號(hào)。本系統(tǒng)中,DSP控制器采用C語(yǔ)言進(jìn)行軟件設(shè)計(jì)。
?。?) 測(cè)速定位單元側(cè)DSP與FPGA的數(shù)據(jù)交換
TMS320F2812的外部存儲(chǔ)器XINTF可供選擇的外部地址空間有XINTF0,XINTF2,XINTF6。其中XINTF0 使用XZCS0AND1作為片選信號(hào),外部存儲(chǔ)器擴(kuò)展空間為8K;XINTF2與XINTF6分別使用XZCS2、XZCS6AND7作為片選信號(hào),外部存儲(chǔ)器擴(kuò)展空間均為0.5M。測(cè)速定位單元在發(fā)送位置速度信息時(shí),是通過(guò)DSP的數(shù)據(jù)線傳輸?shù)紽PGA,DSP根據(jù)相應(yīng)的外部存儲(chǔ)器片選信號(hào)找出對(duì)應(yīng)的地址,在從底層傳感器得到一個(gè)新的定位數(shù)據(jù)后寫(xiě)入該地址。相對(duì)應(yīng)的硬件連接框圖如圖4所示:
圖4 車(chē)輛測(cè)速定位單元DSP控制器向FPGA收發(fā)器寫(xiě)數(shù)據(jù)的硬件連接示意圖
根據(jù)協(xié)議要求,定位信息每次發(fā)送時(shí)包括5個(gè)字節(jié)的用戶數(shù)據(jù)和2個(gè)字節(jié)的CRC校驗(yàn),因此16bits數(shù)據(jù)線至少需要連續(xù)發(fā)送四次才能將底層的定位信息完整地傳送到FPGA。
為了減少硬連線,這里只連接地址線的高五位,對(duì)其中的低四位地址線進(jìn)行4-16譯碼,最高位地址線作為該譯碼器的使能信號(hào)。取對(duì)應(yīng)于一個(gè)外部存儲(chǔ)器片選信號(hào)的四個(gè)地址,比如片選信號(hào)XZCS2為低(對(duì)應(yīng)的外部存儲(chǔ)器地址范圍:0x080000―0x100000),即可選用0xe0000,0xe4000,0xe8000,0xec000四個(gè)地址作為DSP向FPGA寫(xiě)數(shù)據(jù)的地址。
由于每個(gè)不同的地址都對(duì)應(yīng)一個(gè)地址譯碼值,當(dāng)四個(gè)譯碼值都出現(xiàn)后才可認(rèn)為一次定位信息傳送完成。這時(shí)把連續(xù)接收到的七個(gè)字節(jié)加上幀頭及幀尾作為測(cè)速定位單元發(fā)送給車(chē)載無(wú)線電控制單元的一幀數(shù)據(jù)。相對(duì)應(yīng)的地址譯碼值如表2所示。
表2 地址譯碼值
(2) 車(chē)載無(wú)線電控制單元側(cè)DSP與FPGA的數(shù)據(jù)交換
由于采樣時(shí)間為毫秒級(jí),為了避免占用過(guò)多的CPU資源,車(chē)載無(wú)線電控制單元中DSP從FPGA讀數(shù)據(jù)時(shí)不采用查詢方式,而采用外部中斷來(lái)接收數(shù)據(jù)。將DSP的16bits數(shù)據(jù)線與FPGA連接,DSP的XINT1也連接到FPGA的I/O管腳。若選用XZCS0AND1作為外部存儲(chǔ)器片選信號(hào),則DSP從FPGA讀數(shù)據(jù)的尋址空間范圍為0x002000―0x004000,這個(gè)地址范圍內(nèi)所讀出的數(shù)據(jù)即為數(shù)據(jù)線上傳送到DSP的定位數(shù)據(jù)。相對(duì)應(yīng)的硬件連接框圖如下:
圖5 車(chē)載無(wú)線電傳輸單元DSP控制器從FPGA收發(fā)器讀數(shù)據(jù)的硬件連接示意圖
由于FPGA傳送到DSP的一幀數(shù)據(jù)為72bits,因此通過(guò)16bits數(shù)據(jù)線傳輸需要分5次才能傳送完,每16bits數(shù)據(jù)到達(dá)時(shí)產(chǎn)生一次外部中斷。設(shè)波特率時(shí)鐘為512k,假設(shè)來(lái)自定位單元完整的一幀數(shù)據(jù)為0x02123456789abcde03,車(chē)載無(wú)線電單元通過(guò)16bits數(shù)據(jù)線分次轉(zhuǎn)發(fā)到DSP的數(shù)據(jù)則為0x0002, 0x1234, 0x5678, 0x9abc,0xde03 。數(shù)據(jù)及中斷信號(hào)產(chǎn)生的時(shí)序如圖6所示。由圖6可以看出,每對(duì)應(yīng)移出一次dataout,都會(huì)相應(yīng)地發(fā)出一個(gè)外部中斷信號(hào)xint1,DSP一旦接收到外部中斷便在中斷服務(wù)子程序中從16bits數(shù)據(jù)線讀取信號(hào)值。為了完整的接收一幀信號(hào),可在外部中斷服務(wù)程序中定義一個(gè)16級(jí)FIFO,當(dāng)從FIFO的最底層讀出的數(shù)據(jù)為0x02時(shí),便可以判斷一幀數(shù)據(jù)的開(kāi)始(若在用戶數(shù)據(jù)和校驗(yàn)值中存在0x02則要進(jìn)行相應(yīng)的字符轉(zhuǎn)義),依次接收以下的數(shù)據(jù)便得到完整的一幀定位信息。
評(píng)論