如何解決FlexRay時(shí)鐘同步的同向漂移
隨著安全性要求的提高, CAN總線的帶寬就嫌不足,消息送達(dá)的確定性不夠。為此,一些汽車大廠和汽車電子的大廠成立了研發(fā)新型通信協(xié)議的聯(lián)盟[1],目標(biāo)是開發(fā)出稱為FlexRay的協(xié)議,使它成為下一代車用通信協(xié)議的事實(shí)上的標(biāo)準(zhǔn)。2005年聯(lián)盟推出了2.1版的規(guī)范,2009年完成3.0版規(guī)范,然后就結(jié)束了。現(xiàn)在公眾還無法見到3.0版規(guī)范,但是據(jù)介紹,關(guān)鍵部分并無大的變化。
本文引用地址:http://butianyuan.cn/article/162165.htmBMW車上在2006年已開始應(yīng)用FlexRay,各大電子器件生產(chǎn)廠開始了批量生產(chǎn)FlexRay控制器?,F(xiàn)在業(yè)界正處于爭取FlexRay技術(shù)早日成熟的階段,在系統(tǒng)設(shè)計(jì)、測試、標(biāo)定等方面開始了大量投入。因此,任何涉及FlexRay協(xié)議的基礎(chǔ)性問題的研究就格外重要,一旦有新的未發(fā)現(xiàn)的隱患披露,無疑會引起大的波動。
FlexRay是基于時(shí)間觸發(fā)的協(xié)議,節(jié)點(diǎn)間的時(shí)間同步是它的關(guān)鍵,參考文獻(xiàn)[5]是2.1版規(guī)范直接引用的主要原始資料的2009年修訂版,其主要內(nèi)容是有相位與頻率校正時(shí)誤差的靜態(tài)傳遞分析,求出可以達(dá)到的最壞或最好狀態(tài)下的簇內(nèi)時(shí)鐘差的精度。參考文獻(xiàn)[5]指出了5種計(jì)算時(shí)的誤差來源:采樣的量化誤差、微拍非均勻分布誤差、傳遞延遲誤差、整除誤差和簇漂阻尼誤差。由于時(shí)鐘校正實(shí)際上是一個(gè)反饋控制問題,但以前的研究沒有采用反饋控制的分析方法,沒有考慮同步幀發(fā)送節(jié)點(diǎn)間的交互影響,以及傳遞延遲誤差作為系統(tǒng)性誤差的長期存在,得到的結(jié)論并不全面,這是本文要重點(diǎn)討論的問題:由于系統(tǒng)性誤差的持續(xù)存在,節(jié)點(diǎn)的相位差會單向漂移,與hoST的時(shí)鐘越離越遠(yuǎn),造成新的失誤。參考文獻(xiàn)[6]用軟件仿真FlexRay時(shí)鐘頻率跳變或緩變時(shí)校正算法的有效性,它證實(shí)算法是收斂的,簇內(nèi)時(shí)鐘差校正后的精度與頻率漂移率無關(guān),跳變時(shí)有一個(gè)過渡過程,瞬態(tài)差可能超過精度范圍。參考文獻(xiàn)[7]分析了有拜占庭錯(cuò)時(shí)FlexRay容錯(cuò)中值相位校正算法的收斂性,非常有趣的是在推導(dǎo)過程中也得到了校正后cycle開始時(shí)間真值Us隨延遲補(bǔ)償不足而推遲的公式,它表明每校正一次存在的差,但是這種漂移并未受到FlexRay重視。參考文獻(xiàn)[8]是對容錯(cuò)中值算法正確性的形式化證明,該算法就是FlexRay采用的算法,在分析每輪修正后的虛擬時(shí)鐘與真實(shí)時(shí)鐘差時(shí),存在±ε的漂移,其中ε是傳送延遲。這也證實(shí)了本文分析的問題早已存在,而FlexRay未對該問題的后果有所警覺。
1 FlexRay時(shí)鐘的概念
FlexRay的時(shí)間單位是從大到小分級的:通信Cycle、通信宏拍(Macrotick,MT)和微拍(Microtick)。每一個(gè)節(jié)點(diǎn)中的振蕩器,經(jīng)過分頻之后,產(chǎn)生一個(gè)本地的微拍時(shí)鐘單位,它與位采樣數(shù)及位采樣時(shí)鐘周期有關(guān),所以節(jié)點(diǎn)中最小的時(shí)間單位是位采樣時(shí)鐘周期。各個(gè)節(jié)點(diǎn)可以有不同的微拍,簇內(nèi)共同的時(shí)間單位是MT,每個(gè)節(jié)點(diǎn)組態(tài)時(shí)定義正常時(shí)每MT內(nèi)本地微拍的個(gè)數(shù)。本地MT的生成有專門的邏輯,在每一本地微拍時(shí)執(zhí)行一次,以實(shí)現(xiàn)本地MT的修正,以保證MT盡量全局一致,并且可以保證頻率的校正均勻分布在整個(gè)cycle中。
2 FlexRay收發(fā)的同步
在收發(fā)過程中還有字節(jié)的位同步和幀開始同步來解決可能的抖動與延遲,它們極大地緩解了時(shí)鐘同步的精度要求。
在以字節(jié)為單位的幀數(shù)據(jù)傳送時(shí),每個(gè)字節(jié)的開頭有由“10”構(gòu)成的字節(jié)開始序列(BSS),這個(gè)1/0跳變沿是位時(shí)間同步用的:發(fā)現(xiàn)跳變沿后位采樣計(jì)數(shù)器就設(shè)為2,當(dāng)位采樣計(jì)數(shù)器=5時(shí),zVotedVal的值就作為當(dāng)時(shí)的位值。位采樣計(jì)數(shù)器為9后溢出復(fù)位為1。顯然,若因收發(fā)有時(shí)鐘差,而要在下一個(gè)BSS的1處采錯(cuò),需要差4個(gè)位采樣時(shí)鐘周期時(shí)才會發(fā)生。也就是說,時(shí)鐘差5%才會發(fā)生。
FlexRay的同步幀是在靜態(tài)段中傳送的,一個(gè)時(shí)隙(slot)內(nèi)實(shí)際上有很多空閑時(shí)間。首先,每個(gè)幀是在稱為actiON point offset處(gdActionPointOffset)開始發(fā)送,這是一個(gè)全局參數(shù)。幀開始是“0”表示的傳送開始序列TSS,經(jīng)過1位“1”的幀開始序列FSS,再是第一個(gè)字節(jié)開始序列BSS,它由“10”二位組成。接收節(jié)點(diǎn)要正確檢測到第一個(gè)字節(jié)開始序列BSS的1/0跳變沿才作幀接收的同步。幀的最后是“01”構(gòu)成的幀結(jié)束序列FES,然后發(fā)送器被禁止了。發(fā)送器禁止后30 ns總線處于高阻狀態(tài)。在幀傳送結(jié)束后發(fā)送節(jié)點(diǎn)要有長度為11位的通道空閑分界符(cChannelIdleDelimiter,實(shí)際上總線高阻時(shí),經(jīng)50~250 ns接收節(jié)點(diǎn)會發(fā)現(xiàn)總線空閑,然后輸出RxD=“1”。然后總線一直在空閑狀態(tài)。由于FlexRay的物理連接有可能通過有源星型耦合器,在總線空閑到總線上傳送0有一個(gè)啟動過程,再加總線上位置不同的傳送延遲差別、收發(fā)器的延遲,發(fā)送節(jié)點(diǎn)的TSS長度會與接收節(jié)點(diǎn)的長度不同,接收節(jié)點(diǎn)看到的TSS會比發(fā)送節(jié)點(diǎn)的TSS短,稱為TSS截短。只要接收節(jié)點(diǎn)看到的TSS在1~(gdTSSTransmitter + 1)之間,TSS就是有效的。所以gdActionPointOffset之前,總線也是空閑的。因此,若節(jié)點(diǎn)時(shí)鐘差不使總線上的傳送提前使gdActionPointOffset前的空閑消失,或落后使cChannelIdleDelimiter后的空閑消失,就不會產(chǎn)生2個(gè)發(fā)送幀的重疊而影響正常收發(fā)。
圖1 求取相位差的時(shí)間關(guān)系
評論