量子框架的FlexRay時鐘同步功能建模
1 量子框架
量子框架是基于事件驅動并發狀態機的一種應用框架,適用于嵌入式的可重用的基礎結構,它為外圍的應用系統提供了硬件框架。量子框架在應用系統中的地位如圖l所示。
量子框架理論將應用系統按照功能模塊分解成相互獨立的活動對象,它們之間通過量子框架提供的軟總線和可識別的事件實例來實現彼此間的通信,活動對象彼此間沒有任何的通信。事件隊列是為活動對象提供的一個外部通信接口,能夠使活動對象接收事件實例;還提供了保護內部狀態圖的緩沖空間,以防止事件的生產爆發帶來的破壞,保證了活動對象在運行過程中的完整性。
2 FlexRay時鐘同步機制
2.1 FlexRay內部結構
FlexRay按照其功能可以分成3個層次:通信接口及控制層、內部時鐘控制層和外部接口控制層,如圖2所示。
通信接口及控制層主要包括控制主機接口(CHI)和協議運行控制器(POC)。CHI主要負責內核和主機通信接口,POC是內核的控制單元。
內部時鐘控制層包括時鐘同步啟動模塊(CSS)、時鐘同步處理模塊(CSP)和時鐘發生器(MTG)。系統中各個節點的時鐘同步就是主要依靠這個層來實現的。
外部接口控制層包括多路訪問控制模塊(MAC)、數據幀與符號處理模塊(FSP)和編碼解碼處理模塊(CO―DEC)三個部分,可實現對接收發送數據信息的處理和對總線讀/寫操作的編碼解碼功能。
2.2 時鐘周期結構
每一個通信周期內包括最小時間節拍層(Microtick)、最大時間節拍層(Macrotick)、仲裁網格層(Arbitration―grid)和通信周期層4個時間等級。每個通信周期分成4個部分:靜態段、動態段、符號窗口和空閑網絡段。在靜態段中,基于時分復用(TDMA)技術將固定時槽分配給與各個節點匹配的ID,并允許節點傳輸數據。時槽大小相同,并且是從1開始向上編號。將一個或一個以上的時槽固定分配給每個節點。在運行期間,該時槽的分配不能修改,如圖3所示。
2.3 內部時鐘同步機制
節點的時鐘同步功能主要是由內部時鐘控制層實現的。其內部的MTG模塊控制周期計數器和最大時鐘節拍的計數器,并對其進行修正;CSP模塊主要完成一個通信周期開始的初始化,測量并存儲時間偏差值,計算頻率與相位的修正值;CSS模塊負責在集群啟動,或者在作為冷啟動節點時發出時鐘啟動信號。
當節點被喚醒并完成初始化后,就能在發出相應的主機命令后進入啟動流程。節點開始監控總線,如果沒有其他節點在發送數據,則自身發送數據,從而成為啟動集群的主冷啟動節點。在傳輸符號通知其他節點后,啟動自身時鐘,開始第一個通信循環,并根據預定義機制,主啟動節點將在其分配的時槽中傳輸。與其他所有節點一樣,它將只在一個時槽的啟動階段傳輸。
當節點在接收到消息識別碼(ID)和時槽編號相同時,
節點接收屬于自己的第1條消息。當接收到第2條消息時,后續的冷啟動節點啟動自身時鐘,并通過當前獲得通信循環周期號和消息的時槽編號進行初始化。兩條消息的時間差理論上應該與主冷啟動的通信周期相對應,接收節點要比較它們的可能的偏差,并通過糾正機制計算出修正值,從而通過修改內部時鐘發生器的時基頻率,使其盡可能地與主冷啟動周期值相對應。
FlexRay內部的時鐘同步機制同時采用頻率修正與相位修正兩種方法對時鐘進行修正。
2.3.1 頻率修正
在CSP模塊中,頻率偏差的測量在每個通信周期的靜態段中進行,通過內部算法在奇數周期的靜態段之后計算偏差修正值。如圖4所示,偏差的結果在Cycle(2n+1)中計算得到,在Cycle(2n+2)和Cycle(2n+3)兩個周期內MTG模塊利用此偏差值進行頻率修正,而在Cycle(2n+3)中得到的新的偏差值在接下來的2個周期中得到應用。
2.3.2 相位修正
在CSP模塊中,相位修正值的計算是在每個通信周期中都進行采集(靜態段)和計算(在開始進行相位修正之前完成)的;應用于MTG模塊的奇數周期內的NIT段,從gOffsetCorrectionStart時刻開始到下一個周期開始之前,完成相位的修正過程。
值得注意的是,MTG模塊每個周期都要進行頻率修正。為了保證兩種修正方式的正確性,頻率偏差值的更新周期和相位修正周期是分開的。圖4中,在Cycle(2n+1)周期中MTG同時進行頻率和相位的修正,但沒有進行頻率修正值的更新;而在Cycle(2n+2)周期,接收到CSP模塊發送的新頻率偏差值vRateCorrection,更新頻率偏差值,進行頻率修正,但沒有進行相位修正。也就是說,在沒有更新頻率偏差值的周期內,兩種修正同時進行;在頻率更新的周期內,不進行相位修正。另外,每個奇數周期內,CSP在靜態段之后進行相位和頻率修正值的計算。理論上這兩個計算過程沒有時間上的先后,只要確保相位修正值在應用前(gOffsetCorrectionStart)得到,而頻率偏差值在下一個周期到來之前得到。
3 基于量子框架的行為建模
3.1 有限狀態機的設計
有限狀態機是對描述對象的抽象描述,它把對象模型分解成一些能夠進行讀/寫操作或者等待外部事件的狀態,并且能夠由外部事件引起對象狀態的轉換,即在當前狀態下,由外部事件的發生并在滿足某些條件的情況下,進入第2個狀態。
3.2 對象分析
根據節點配置的不同功能,FlexRay內部的各個模塊表現為不同的狀態變化。在一個系統的眾多節點中,包括數量有限的冷啟動節點(cold start node)和普通節點。冷啟動的節點分成2種:一種是啟動整個集群的主冷啟動節點(1eading cold start node);另一種是根據其他冷啟動節點的參數來完成啟動的從冷啟動節點(following coldstart node)。這里只討論節點作為從冷啟動節點的情況。
3.3 活動對象建模
如上所述,每個活動對象都是作為一個相對獨立的任務來處理的。量子框架起到了軟件總線的作用,系統的功能擴展、分解、集成比較容易,可以方便地進行升級、裁剪。將FlexRay系統按功能模塊分解成3個活動對象,如圖5所示。
3.3.1 通信接口及控制活動對象
這個活動對象包括CHI和POC兩個模塊。CHI是主機和FlexRay內核通信接口。在實現時鐘同步過程中,該模塊主要是接收MTG的內部時鐘和CSP發送的當前接收同步幀的溢出信號,以及向CSP發送外部頻率/相位修正值。POC是FlexRay內核非常重要的控制模塊,負責協調節點內各個功能模塊有效地運行。根據節點時鐘同步流程,建立有限狀態模型,如圖6所示。
評論