漂移使通信時鐘離標準時鐘越來越遠,通信時鐘初始相位的負值代表它比標準時間延遲(如圖1所示)。在延遲超過1個cycle時就會使上次寫入的幀還未發出就被覆蓋。以cycle=5 ms、100次校正漂9.3 μs計,53763次校正會漂1個cycle,這就是說,8.96 min會產生一次丟幀。由于節點都是同步的,每個slot都會發生丟幀,如果每個cycle有91個靜態slot,那么意味著每8.96 min丟失91個幀--平均每6 s丟一幀。而且,如果host時鐘是偏快方向漂移,那么丟幀的頻度還要增大。
補償過頭時URT為負值,通信時鐘將比標準時間提前。這種情況一般不會發生,因為規定選延遲的最小值作pDelayCompensation。但是這里又出現了host時鐘的漂移問題:所有同步幀的內容是由host寫入的,host必須在相應slot的開始前使同步幀的內容就緒。最壞情況是原來host在slot開始前寫入,漂移超過了gDACtionPointOffset就會產生同步幀未寫入的情況。FlexRay的幀頭部有一位標志null frame. indicator,當幀內容未更新時,這一位自動設為0,同步幀還是發出去,所以并不影響同步幀的個數。
6 頻率校正中的問題
頻率校正時采用了連續2個cycle的同一同步節點的相位差,將這兩個相位差的差作原始數據,用類似算法計算校正量,然后按死區與限幅的方法實施校正。在同一同步節點的相位差的減法中,系統性偏差URT互相抵消,因此不引起頻率的漂移。但是,在接收節點測取BSS的跳變沿時存在誤差的可能性(如圖1所示),BSS的跳變沿的誤差直接影響到倒推ActionPointOffset的位置,從而進入eRT:
式中Uglitch為毛刺造成的誤差,奇數cycle和偶數cycle的Uglitch可能是不同幅值和符號的。BSS的跳變沿是在經濾波后的zVotedVal上采取的,毛刺長度小于3個位采樣周期時被濾掉,大于3個位采樣周期時就可以見到。毛刺的存在位置有如下幾種可能:
① “0“毛刺在TSS之前,真正TSS的跳變沿被解讀為BSS中的跳變沿。此時讀到的相位差較大,但是后續BSS以及其它的幀檢查會發現此幀有接收錯。
② “1“毛刺在TSS之中,毛刺的1/0跳變沿被解讀為BSS中的跳變沿。此時讀到的相位差比上述情況小,同樣可檢查出有錯。
③ “0“毛刺使BSS內的跳變沿提前,或“1“毛刺使BSS內的跳變沿推后,當提前或推后的量較大時,后續BSS以及其它的幀檢查會發現此幀有接收錯。
④ 毛刺使BSS跳變沿變化量小于0.5位時,后續BSS以及其他的幀檢查不會發現此幀有接收錯,所以此幀會被用于時鐘同步。
一個接收節點在同一cycle里受到毛刺干擾而造成有幾個同步幀受影響是可能的。此時盡管有最大最小頻率差的丟棄,毛刺造成的誤差仍可能要進入校正量的計算。
易于導出頻率校正的狀態方程,它與(4)式的形式類似。因此FlexRay的頻率校正可使簇內的頻率趨于一致,但是仍有頻率相對于標準值漂移的可能性,此漂移的方向是不定的,受毛刺出現的情況而變。
參考文獻[6]進行了FlexRay的頻率校正的軟件仿真試驗,對節點頻率作階躍變化、斜坡變化的試驗結果是令人滿意的。但是它并未考慮過毛刺影響。
7 時變傳遞矩陣的漂移
如(5)式所示的傳遞矩陣還有非常多的形式,由于FlexRay在選取作校正計算時要用丟棄排序后的最大最小二個誤差,實際采用的同步節點的可能性組合很多。例如對4個同步節點的簇,對每個同步節點(矩陣A的一行)將有6種可能的系數,整個簇的傳遞矩陣A將有64=1296種可能。對矩陣A求特征根時可以發現它們都有λ=1的臨界穩定的特征根:實際上每行系數的和都等于1,在用行列式求特征根時就可以將λ-1提出來。而由于FlexRay在每次排序后選中的同步節點可能不同,傳遞矩陣是時變的,那么是否還有漂移呢?為此按照算法作了含有排序的程序,這是相位校正的算法(不含頻率校正的非線性部分)。
8.結語
FlexRay采用分布式時鐘的本意是強化對抗失效的能力:有F個同步幀發送節點失效時,只要同步幀發送節點為3F+1個,簇內的時鐘仍是正確同步的,因此可以保證簇內的正常通信服務。但是根據本文的動態分析,時鐘相位會由于延遲補償誤差而漂移,與真實時鐘有頻差。這種延遲補償誤差是無法消除的,而已有頻率校正方法無法發現通信時鐘對真實時間的頻差,因此通信時鐘會與host的時鐘越離越遠,導致發送幀被新幀覆蓋,或者時隙到達時消息尚未就緒。這些漂移引起的出錯發生頻率是相當高的。
由于毛刺引起的頻率漂移可以用死區算法克制,但是其他各種毛刺的情況會使有效的同步幀數目減少,使容錯中值算法的魯棒性下降。按容許F個錯需要3F+1個同步幀計算,同時有2個錯對4個同步節點的簇就不能保證同步精度了。
用戶評論
共 0 條評論