霍立剛,周云飛,劉廣斗
(華中科技大學機械科學與工程學院,湖北武漢430074)
在一些實時性要求很高的運動控制系統(tǒng)中,控制任務極其復雜,同時要求高速度,高精度。例如光刻機的步進掃描運動控制,需控制多達15軸的運動,要求在高加速度(1.5g)、高速 (1.2m/s)運行條件下達到納米級的運動精度控制。要實現(xiàn)這樣的要求,高速高精度的位置反饋是必須的[1]。EnDat2.2同步雙向數(shù)字接口可以為數(shù)字驅動系統(tǒng)提供極高精度的位置信息,高速光纖通信提供編碼器到位置伺服計算處理器的通信通道,實現(xiàn)位置值的高速可靠的傳輸。光纖作為傳輸介質(zhì),傳輸速率高、傳輸容量大、衰減小,傳輸距離長、抗干擾能力強、耐高溫、抗腐蝕、工作可靠、成本低廉,對現(xiàn)場復雜的實時性要求很高的控制系統(tǒng)可謂是完美的解決方案[1-4]。
現(xiàn)場可編程邏輯門陣列FPGA具有容量大,編程靈活,并行處理能力強的特點,在各種通信協(xié)議的實現(xiàn)方面得到廣泛應用。本文中最關鍵的內(nèi)核,光纖通信內(nèi)核與En-Dat2.2內(nèi)核都是在FPGA上編程實現(xiàn)的,因此協(xié)議具有靈活可配置的特點[5]。
位置獲取與傳輸系統(tǒng)的整體結構如圖1所示,主要分為以下幾個部分:
(1)串并轉換器:串并轉換 (Serializer/Des erializer)簡稱SerDes,是高速串行通信中最關鍵的部件。在本文中我們選取德州儀器TI的TLK1221來完成串并轉換的功能。TLK1221是千兆以太網(wǎng)收發(fā)器,用于高速全雙工的點對點數(shù)據(jù)傳輸,支持0.6Gbps-1.3Gbps的數(shù)據(jù)速率,基帶傳輸特征阻抗為50Ω,這一點要在制板的時候得到保證。在發(fā)送端,經(jīng)過8B/10B編碼的并行10位數(shù)據(jù)在發(fā)送參考時鐘TBC的上升沿被鎖存,然后將數(shù)據(jù)以參考時鐘的10倍頻將串行化并通過PECL兼容的電平差分信號進行傳輸;在接收端,將隱藏在串行數(shù)據(jù)流中的時鐘信號提取出來。該時鐘信號是從發(fā)送端的時鐘信號經(jīng)過相位內(nèi)插調(diào)整相位關系而來,與10位的恢復并行數(shù)據(jù)的字節(jié)邊界對齊,因此被形象的稱為恢復字節(jié)時鐘RBC[6]。
圖1 位置獲取與傳輸系統(tǒng)總體結構
(2)激光收發(fā)器:選取安捷倫公司的HFBR53A3完成電信號與光信號的轉換。HFBR53A3是一款多模光纖接口的光纖收發(fā)器,兼容ANSIX3.297-1996標準的光纖通道物理接口,支持300m長的62.5/125um MMF光纜和500m長的50/125um MMF光纜,本文中采用的是前者,長度為3米。
(3)光纖通信內(nèi)核:該通信內(nèi)核在 Altera公司的EP3C16F484C8型號的FPGA上實現(xiàn),是系統(tǒng)傳輸模塊中最核心的部分。內(nèi)核完成最上層控制單元DSP與傳輸模塊之間的通信連接,控制著通信數(shù)據(jù)包格式、發(fā)送接收機制、鏈路物理診斷、及通信錯誤情況處理等最核心的功能。
(4)位置獲取模塊:EnDat協(xié)議內(nèi)核也是在FPGA上實現(xiàn),完成從位置編碼器高速可靠地獲取位置值的功能。根據(jù)EnDat接口規(guī)范,采用RS485通信接口,RS485平衡發(fā)送和差分接收,具有很強的抑制共模干擾的能力。為匹配線路特征阻抗 (characteristic impedance),在數(shù)據(jù)和時鐘的差分線路端部,各需加一個120Ω的電阻,同時各線路應加一個330pF的電容,以濾除高頻干擾。由于采用串行數(shù)據(jù)傳輸方式,故只需要4條信號線,接口十分簡單可靠。
圖2 光纖通信內(nèi)核
光纖通信內(nèi)核包含通信的物理層和傳輸協(xié)議控制層兩個層面,基于FPGA和SerDes的傳輸模塊,完成數(shù)據(jù)包的傳輸控制,并行串行轉換,編解碼、時鐘信號的恢復提取、字節(jié)的相位對齊等一系列核心的功能。如圖2所示,通信內(nèi)核包含發(fā)送與接收控制、編解碼、串并轉換、錯誤處理、及數(shù)據(jù)緩沖等模塊。發(fā)送控制器由最上層控制單元DSP通過外部存儲器接口EMIF進行控制,如被觸發(fā),立即將保存在發(fā)送FIFO中的數(shù)據(jù),按照內(nèi)核協(xié)議規(guī)定好的數(shù)據(jù)包格式進行打包,然后再經(jīng)過8B/10B編碼,最后在發(fā)送參考時鐘TBC上節(jié)拍下,將并行的數(shù)據(jù)經(jīng)過SerDes串行的輸出到光纖通道。接收控制器則不受最上層控制單元DSP的直接控制,其接收邏輯由狀態(tài)機實現(xiàn),通過檢測幾個特殊字符來判斷不同的接收邏輯,內(nèi)核用到的特殊編碼字符將在后面詳細介紹。接收控制器在恢復時鐘RBC的節(jié)拍下將串行的數(shù)據(jù)流反串行化之后正確地對齊10位數(shù)據(jù)的邊界,然后經(jīng)過8B/10B譯碼,最后將校驗正確的數(shù)據(jù)保存到接收緩沖區(qū)中,同時產(chǎn)生應答信號,發(fā)送應答字符給對方,表示本次接收已成功完成。數(shù)據(jù)保存到接收緩沖區(qū)之后,會硬件產(chǎn)生數(shù)據(jù)接收中斷,以告知最上層控制單元DSP數(shù)據(jù)接收完畢,可以讀取處理。在圖2中,用不同顏色標識的兩個區(qū)域,分別代表發(fā)送時鐘域和接收時鐘域,這兩個時鐘域由不同的時鐘基準,因此是不相關的,信號在兩個時鐘域直接傳遞就涉及跨時鐘域信號傳遞的問題。
應答信號由接收時鐘域產(chǎn)生,要傳遞到發(fā)送時鐘域。為了最大限度地減少由于亞穩(wěn)態(tài)造成的設計失敗,我們采用了兩級同步寄存器鏈,同步寄存器鏈允許額外的時間來讓亞穩(wěn)態(tài)信號到達一個確定的狀態(tài),使得設計更加安全。
高速光纖通信屬于串行通信方式,數(shù)據(jù)通過差分線路發(fā)送和接收。未經(jīng)編碼的數(shù)據(jù)會產(chǎn)生直流偏移,這將影響在接收端的信號質(zhì)量,使得時鐘和數(shù)據(jù)的提取變得異常困難。本文所述系統(tǒng)采用IBM提出的標準8B/10B編碼方式。在圖2中,發(fā)送控制器送出的8位并行數(shù)據(jù)在送往串并轉換器SerDes之前必須經(jīng)過8B/10B編碼,然后將編碼后的10位并行數(shù)據(jù)串行化發(fā)送。8B/10B編碼支持8位數(shù)據(jù)的256種編碼組合,除此之外還有一些編碼組合用以特殊的功能,故被稱之為特殊字符。采用8B/10B編碼的目的是提高信號在光纖信道上的傳輸特性。該編碼方式保證了串行數(shù)據(jù)流有足夠的跳變密度,從而有利于接收端的時鐘恢復;最大運行長度 (Run Length)即連續(xù)的0或者1的個數(shù)為5,可以有效的抑制串行數(shù)據(jù)流的頻譜范圍和碼間干擾 (inter-symbol interference,ISI);由于0和1的數(shù)量相同,故達到了直流平衡,提供足夠的驅動能力。8B/10B編碼詳細編碼方式見參考文獻[3],在此不再贅述,只列出本文中位置獲取與傳輸系統(tǒng)用到的特殊字符,其余特殊字符暫作保留,待擴展使用[7]。系統(tǒng)涉及到的特殊字符見表1。
表1 系統(tǒng)涉及到的特殊字符
數(shù)據(jù)包的傳輸格式與編碼方式及這些特殊字符有著密切的關系。串并轉換器TLK1221采用IEEE 802.3千兆以太網(wǎng)預定義的10位K28.5字符作為字對齊的解決方案。在接收端,時刻監(jiān)測該字符,當K28.5字符落在期望的字邊界,說明10位的字邊界正確對齊,不需要重新校正對齊;當K28.5字符橫跨在期望字邊界上時,需要重新校正對齊字邊界。在收到K28.5字符后,通過重新調(diào)整恢復時鐘與字邊界的相位關系,當前的數(shù)據(jù)被縮短或延長,數(shù)據(jù)出現(xiàn)損壞,但K28.5字符之后的數(shù)據(jù)又重新對齊了字邊界[8]。
數(shù)據(jù)包傳輸格式如圖6所示,由數(shù)據(jù)包開始標識符SOF、數(shù)據(jù)包結束標識符EOF、32位的幀頭、32位的有效數(shù)據(jù)、字對齊字符K28.5及各自的校驗字符組成。其中32位的有效數(shù)據(jù)可以通過幀頭的最高8位數(shù)據(jù)長度由DSP從1到255自由配置。對每個32位的有效數(shù)而言,傳輸總是以最低8位開始,最高8位結束。校驗字符由4個8位數(shù)據(jù)相加得到,溢出位自動忽略,因此校驗字符長度也是8位。
然而,在每個32位的有效數(shù)據(jù)之后都要插入一個字節(jié)的校驗字符,這也就意味著校驗消耗了1/5的通信鏈路帶寬。同時,為了對齊正確的字邊界,在每個校驗字符后面又插入了字對齊字符K28.5,連同校驗字符一樣,消耗了有效的通信鏈路帶寬。但對于高速高可靠性的控制系統(tǒng)而已,這樣的協(xié)議開銷是值得的,也是必須的[9]。
EnDat協(xié)議內(nèi)核為數(shù)字驅動系統(tǒng)的反饋環(huán)提供快速高可靠性地位置值傳輸,為了使系統(tǒng)更加可靠,同時提供錯誤檢測和診斷的功能。圖3所示為EnDat協(xié)議內(nèi)核的結構圖,由時序控制模塊、發(fā)送模塊、接收模塊、時鐘生成模塊、相關寄存器及其與光纖通信內(nèi)核的邏輯接口模塊組成。
在內(nèi)核結構圖的左側,是內(nèi)核與同步串行雙向接口的物理層接口信號,包括發(fā)送信號線、接收信號線、時鐘信號線及其各自的使能信號。在右側,則是與光纖通信內(nèi)核連接的并行接口,包括了各種控制信號,8位的地址總線,32位的數(shù)據(jù)總線。其中地址總線為8位寬度,對應于傳輸數(shù)據(jù)包格式中有效數(shù)據(jù)的個數(shù)被限定在255以內(nèi)。
發(fā)送寄存器、模式指令寄存器和配置寄存器保存著待發(fā)送的數(shù)據(jù)。一旦觸發(fā),這些數(shù)據(jù)被轉為串行數(shù)據(jù)流在時序控制模塊的控制下由發(fā)送模塊串行發(fā)送給編碼器,同時時鐘生成模塊生成所需個數(shù)的時鐘脈沖。接收模塊在時序控制下將串行的數(shù)據(jù)流進行串并轉換,并將并行的數(shù)據(jù),依據(jù)不同的含義,分配在3個寄存器中,同時更新狀態(tài)寄存器和中斷寄存器,并產(chǎn)生中斷或觸發(fā)信號給光纖通信內(nèi)核。
根據(jù) EnDat協(xié)議規(guī)范,采用5位的循環(huán)冗余檢驗(CRC)碼來完成串行通信的數(shù)據(jù)校驗功能。將接收到的CRC碼與之前接收到的串行數(shù)據(jù)流在本地生成的CRC碼進行比較,即可檢驗通信的正確與否。CRC校驗可以檢測出數(shù)據(jù)傳輸中的所有單一錯誤,是正確快速地獲取位置值的保證[10]。CRC校驗結果保存在如圖3所示的狀態(tài)寄存器中。
圖3 EnDat協(xié)議內(nèi)核
系統(tǒng)傳輸流程及位置獲取流程如圖4、圖5所示。本文位置獲取與傳輸系統(tǒng)中,最上層控制單元為DSP,所有的數(shù)據(jù)傳輸進程都受其控制。數(shù)據(jù)傳輸按數(shù)據(jù)流的方向分為上行數(shù)據(jù)進程和下發(fā)數(shù)據(jù)進程。下發(fā)數(shù)據(jù)進程即DSP向EnDat內(nèi)核下發(fā)各種配置數(shù)據(jù)的過程;上行數(shù)據(jù)進程即DSP向位置獲取模塊發(fā)送請求位置數(shù)據(jù)的過程,在此詳細論述上行數(shù)據(jù)進程,下行數(shù)據(jù)進程與之類似,在此不再贅述。DSP下發(fā)請求位置數(shù)據(jù)命令,光纖通信內(nèi)核A收到觸發(fā),發(fā)送請求數(shù)據(jù)字符K28.2即TTC特殊字符。經(jīng)過高速光纖通道,接收端光纖內(nèi)核B收到該特殊字符,立即啟動EnDat內(nèi)核向位置編碼器的位置請求過程,完成后開始向模塊A按照圖6所示的數(shù)據(jù)包格式發(fā)送位置數(shù)據(jù)及相關狀態(tài)信息,模塊A接收完畢數(shù)據(jù),產(chǎn)生中斷,觸發(fā)DSP讀取數(shù)據(jù)開始處理過程。
位置獲取時序系統(tǒng)測試結果如圖7所示,為簡便起見,模式指令選取無附加信息的位置值請求指令。從時序圖上可以清楚的看到位置值按照EnDat規(guī)定的時序傳輸,長時間穩(wěn)定無誤。
數(shù)據(jù)包的傳輸時序如圖8所示,該圖由Altera公司的在線邏輯分析儀測試而來,從中可以明確地看到數(shù)據(jù)在狀態(tài)機的控制下按照圖6的格式進行傳輸,測試結果表明,數(shù)據(jù)傳輸正確,且長時間測試無誤碼產(chǎn)生,傳輸穩(wěn)定可靠。
圖5 位置獲取流程
對位置獲取與傳輸系統(tǒng)的實現(xiàn)方案進行了介紹,給出了若干關鍵技術的實現(xiàn)方案,詳細描述了光纖通信內(nèi)核以及EnDat通信協(xié)議內(nèi)核的原理結構及其FPGA的實現(xiàn)方法。1.25Gbps的樣機測試結果表明系統(tǒng)工作穩(wěn)定,可以實現(xiàn)對編碼器位置值準確高速地獲取與傳輸,滿足強實時性控制系統(tǒng)對位置反饋環(huán)高速高精度的要求,對于超精密運動控 制系統(tǒng)具有重要作用。
圖6 傳輸數(shù)據(jù)包格式
圖7 位置獲取時序
圖8 光纖傳輸數(shù)據(jù)包時序
[1]CHENG Xin,ZHOU Yunfei,HU Yongbing,et al.Synchronous measurement and control mechanism based on high-speed fiber channel link [J].China Mechanical Engineering,2011,22(19):2325-2330(in Chinese).[程鑫,周云飛,胡永兵,等.基于高速光纖鏈路的同步測控機制 [J].中國機械工程,2011,22(19):2325-2330.]
[2]SU Shaojing,GUO Xiye,ZHANG Shimeng,et al.Data acquisition system of ultra-high speed optical communication [J].Journal of Data Acquisition & Processing,2007,22(3):374-377(in Chinese).[蘇紹璟,郭熙業(yè),張世猛,等.超高速光纖通信數(shù)據(jù)采集系統(tǒng) [J].數(shù)據(jù)采集與處理,2007,22(3):374-377.]
[3]MIN Xiaoping,LU Da,HONG Hongrong.Implementation of highspeed optical communication system based on field programmable gates array(FPGA) [J].Journal of Xiamen University(Natural Science),2007,46(4):491-495(in Chinese).[閔小平,陸達,洪鴻榕.基于現(xiàn)場可編程門陣列的高速光纖通信的實現(xiàn)[J].廈門大學學報 (自然科學版),2007,46(4):491-495.]
[4]ZHOU Ping,WANG Meng.Design of a data collection system with high-speed transfer function [J].Fire Control Radar Technology,2009,38(2):53-59(in Chinese).[周萍,王萌.具有高速傳輸功能的數(shù)據(jù)采集板的設計[J].火控雷達技術,2009,38(2):53-59.]
[5]XIA Yuwen.Verilog digital system design tutorial[M].Beijing:Press of Beihang University,2008(in Chinese).[夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,2008.]
[6]Roosevelt G,Roper W,Romanko T.Optimizing high speed serial communication using Honeywell Rad Hard SerDes[C]//NASA/ESA Conference on Adaptive Hardware and Systems,2011:215-219.
[7]CHEN Zhangjin,ZHONG Guohai,BIZhuo.A high speed 8B/10B encoder/decoder design based on low cost FPGA[J].Microcomputer Information,2012,28(10):361-367(in Chinese).[陳章進,鐘國海,畢卓.一種基于低成本FPGA的高速8B/10B編解碼器設計 [J].微計算機信息,2012,28(10):361-367.]
[8]Haller I,Baruch Z F.High-speed clock recovery for low-cost FPGAs[C]//Design,Automation & Test in Europe Confe-rence & Exhibition,2010:610-613.
[9]LUO Fuyuan,ZHOU Yunfei,Yin Juan.Design and implementation of HSSL communication in distributed motion control system [J].Computer Engineering and Applications,2007,43(2):205-208(in Chinese).[羅福源,周云飛,尹涓.分布式運動控制系統(tǒng)HSSL通信設計與實現(xiàn) [J].計算機工程與應用,2007,43(2):205-208.]
[10]ZHANG Shugang,ZHANG Suinan,HUANG Shitan.CRC parallel computation implementation on FPGA [J].Computer Techno-logy and Development,2007,17(2):56-62(in Chinese).[張樹剛,張遂南,黃士坦.CRC校驗碼并行計算的FPGA實現(xiàn)[J].計算機技術與發(fā)展,2007,17(2):56-62.]