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