flexray协议翻译.doc_第1页
flexray协议翻译.doc_第2页
flexray协议翻译.doc_第3页
flexray协议翻译.doc_第4页
flexray协议翻译.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录防止冲突符号/媒介通路测试(CAS/MTS),采用一样的符号解码方式.2 唤醒符号解码(WUP) 解码错误3.3编码与解码4 帧格式5.1通讯周期5.1.4 动态部分5.3.2静态部分相关状态动态部分的传输条件与帧打包5.3.5 节点空闲时间6帧与符号操作模式解码事件时间相关事件6.2.3状态数据6.3帧与符号的处理过程6.3.4 FSP:decoding in progress状态在non-TDMA状态下的帧接收检查6.3.6 State FSP:wait for transmission end7.1主机唤醒 POC:wakeup listen状态 POC:wakeup send状态 The POC:wakeup detect state.2双线节点.2.2由通讯控制器接收唤醒模式唤醒模式的重发送7.2通讯开始与恢复7.2.3冷启动禁止模式初始化冷启动节点的路径整合冷启动节点的路径非冷启动节点的路径7POC:coldstart consistency check状态 POC:integration coldstart check状态0POC:coldstart join状态1 POC:integration listen状态2POC:integration consistency check状态需要重新看的地方:1编码流程图2编码流程图3编解码流程图(79-84页)4 采样流程图(87页)5 唤醒流程图(89页)6 CRC生成程序:7单时槽帧8dynamic slot idle phase9 MAC:standby状态10静态部分的流程图11帧打包流程图12动态时槽的流程图13符号窗口流程图14空闲时间流程图:15(7.1.1 Principles)16启动状态图防止冲突符号/媒介通路测试(CAS/MTS),采用一样的符号解码方式。因为符号编码是一系列紧跟在TSS后面的低电平。因为TSS也是低电平而且在节点接收到的TSS是不定长的(当然也是有一定长度的范围限定),控制器不好寻找TSS和符号的分界线。于是当检测到低连续电平时间在cdCASRxLowMin 和gdCASRxLowMax 之间时被认为检测到了符号电平输出参数 涉及的应用函数idle end on A to the POC processCE start on A to the MAC processsymbol decoded on A to the POC processCHIRP on A to the POC process.2 唤醒符号解码(WUP)唤醒信号如下:1. A LOW level with a duration of at least gdWakeupSymbolRxLow is detected.2. This is followed by a duration of at least gdWakeupSymbolRxIdle at the HIGH level.Registered copy for 3. This is followed by a duration of at least gdWakeupSymbolRxLow at the LOW level. 4. All of the preceding are received within a window with a duration of at most gdWakeupSymbolRxWin-dow.输出参数, 涉及到的函数WUP decoded on A to the POC process 解码错误解码包括:SYMBOL_DECODINGFSS_BSS_DECODING HEADER_DE-CODINGPAYLOAD_DECODING TRAILER_DECODING其中任何一个解码过程出错,就会放弃或者重新启动解码(在这之前要先通知FSP解码错误)。当检测到解码错误的时候,节点把第一个错误位当成当前连通的最后一个通讯元素,然后就会结束通讯元素解码 并把节点置于等待位,直到侦测到总线空闲在TSS后面连接出现两个高位(一个是frame首位,一个是字节首位)被误测成一个高位或者三个高位(因为线路初始导通,传输过程中会导致的TSS长度不定而导致),会被忽略而不需要调用解码出错处理程序正常出现两个高位也可能被采样到【1. (2 * cSamplesPerBit - 1),2. (2 * cSamplesPerBit) or 3. (2 * cSamplesPerBit + 1)个位.3.2.7信号的完整性1 当同步时钟偏差在一个采样周期内的时候,解码程序还能够正常解码2 由于不对称的延迟(如果前面和后面延迟时间一样就不会影响采样结果了),会导致一个位边沿发生比预期早或者晚些。为了避免这种误差带来的传输错误,必须把这种误延控制在一定的范围内3.3编码与解码 1 模式选择 通过POC来设置CODEC的模式CODEC的模式包括(iterals STANDBY, WAKEUP, NORMAL, READY)newtype T_CodecModeliterals STANDBY, WAKEUP, NORMAL, READY;endnewtype;1) STANDBY mode:CODEC以及其子程序都处于暂停状态2) READY mode:采样函数以及唤醒侦测函数开始执行,但是CODEC还处于READY状态3) NORMAL mode:CODEC和采样函数处于执行状态,但是唤醒侦测函数处于STANDBY状态4) WAKEUP mode,:所有函数都处于执行状态3.3.2编码与解码动作详解:解码结束:POC发出一个结束信号terminate CODEC_A到CODEC,然后CODEC再给子函数发结束信号,然后结束CODEC函数的运行?没看懂的地方?newtype T_TransmitFramestructHeader T_Header;Payload T_Payload;endnewtype;?编码过程:1.当收到信号transmit frame on A后。函数prepbitstream被调用,该函数调用MAC准备的帧框架vTF,并准备好要传输的字节流zBitStream ,T_BitStreamArray是zBitStream的类型。同时计算出字节长度(zBitStreamLength)。Prepbitstream把要传输的数据划分成一个一个的字节并为每个字节加上BSS,并加上TSS, FSS 。并计算CRC字节,并把除扩展字节外的数据组装成字节流,扩展字节有CRC,由CODEC组装增加到帧里面去2 prepCASstream 为符号帧增加TSS 编码流程图传输信息可以分成四类:1. STATFRAME - transmit a frame in the static segment (transmit frame on A(vType, vTF),2. DYNFRAME - transmit a frame in the dynamic segment (transmit frame on A(vType, vTF), 3. SYMBOL - transmit a symbol in the symbol window (transmit symbol on A(vType),4. WUP - transmit a wakeup pattern (transmit symbol on A(vType).传输器通过设置TxEN 成低电平来启动传输开始位CE从来开始传输数据传输器通过设置TxEN 成高电平来启动传输开始位CE从而结束传输数据3.4 采样BITSTRB是采样函数一共两种状态newtype T_StrbModeliterals STANDBY, GO;endnewtype;CODEC从standby转化成ready状态的时候设置成GO状态开始采样CODEC从任何一种状态转化成standby时,设置成standby状态停止采样4 帧格式帧头(Hesder segment):5个字节保留位(Reserved-1bit):传输节点把该位设置成 “0”,接收节点忽略该位。syntype T_Reserved = Integerconstants 0 : 1endsyntype;有效位载荷指示(Payload preamble indicator -1 bit):当它为1时,在静态时槽中表示网络管理矢量的存在;在动态时槽中表示消息ID的存在。当它为0时,分别表示不存在syntype T_PPIndicator = Integerconstants 0 : 1endsyntype空帧指示位(Null frame indicator -1 bit):当它为“0”,表明该帧为空帧。帧的负载部分全部为 0;当它为“1”,表明它不是空帧。当它为空帧的时候,该帧还可以用来同步时钟的计算。syntype T_NFIndicator = Integerconstants 0 : 1endsyntype;同步帧指示位(Sync frame indicator -1 bit):为“0”的时候,对同步时钟无用,为“1”的时候,说明是同步帧,可以用来同步时钟以及同步的相关程序,同步帧不在静态时槽中发送syntype T_SyFIndicator = Integerconstants 0 : 1endsyntype;启动帧指示位(Startup frame indicator-1 bit):当该位为“1”表明该帧为启动帧,只有冷启动节点才允许传输。该位只会在冷启动的同步帧里设置成1,所以启动帧和同步帧通常是同一帧,启动帧指示位和同步帧指示位是同时设置成1。(如果设置了三个冷启动节点,里面的配置可以避免一些故障的发生,也可以设置成三个以上的冷启动节点,但是这种避免故障发生的机制就不起作用了)syntype T_SuFIndicator = Integerconstants 0 : 1endsyntype;帧的ID(Frame ID -11 bits):帧的ID决定了该帧在哪个时槽传输。ID取值范围:1 -2047,0是无效的。传输的时候从高位开始传输syntype T_FrameID = Integerconstants 0 : 2047 endsyntype;载荷长度(Payload length -7 bits):当设置成cPayloadLengthMax。实际长度是2* cPayloadLengthMax在静态时槽中的每个帧的载荷长度是固定的,都是gPayload-LengthStatic.在动态时槽中各帧载荷长度不同传送的时候,也是从高位开始传syntype T_Length = Integerconstants 0 : cPayloadLengthMaxendsyntype;循环冗余检验码:(Header CRC -11 bits):用来计算(the sync frame indicator, the startup frame indicator, the frame ID, and the payload length.)在发送端的cc不会为帧计算CRC,CRC是通过离线计算并用配置的方式发送给接收端,对于配置好的通道,都是采用一样的计算方法,方程式如下:用ox01A来保存 CRC的报头矩阵。出于对CRC报头的考虑,the sync frame indicator最先被转送,然后依次是:the startup frame indicator, the most significant bit of the frame ID, subsequent bits of the frame ID, the most significant bit of the payload length, subsequent bits of the payload length.CRC报头也是从最高位(the most significant bit)往低位传送syntype T_HeaderCRC = Integerconstants 0 : 2047 endsyntype;周期数(Cycle count -6 bits):从高位开始往低位依次传送syntype T_CycleCounter = Integerconstants 0 : 63 endsyntype;newtype T_HeaderstructReserved T_Reserved;PPIndicator T_PPIndicator;NFIndicator T_NFIndicator;SyFIndicator T_SyFIndicator;SuFIndicator T_SuFIndicator;FrameID T_FrameID;Length T_Length;HeaderCRC T_HeaderCRC;CycleCount T_CycleCounter;endnewtype;flexray有效载荷(FlexRay payload segment (0 - 254 bytes)):该部分包括0-254个字节,也就是0到127个双字节。由于payload length是按双字节来算,payload segment一共包含偶数个字节:Date0 Date1,.对于有效载荷直到248并包含248的,CRC有六位的代码间距,如果高于248,CRC是4位代码间距在动态时槽中传输的帧,第一第二个字节可能用来传送ID,payload preamble indicator用来指示第一第二字节是否传送ID在静态时槽中,前面的0到12字节,可以用来传送网络管理矢量payload preamble indicator用来指示该帧的载荷部分是否包含网络管理矢量,而网络管理矢量的长度gNetworkManagementVectorLength是在POC:config中配置的,而它是不可以在其它任何状态里改变的。gNetworkManagementVectorLength可以配置成0到12的任意一个数传送过程是从Date0开始,每个字节从高位往低位传送主机接口规范决定了各个字节在buffer中以及在payload segment中的位置有效载荷里面的字节未必都有用,当所要传送的数据少于the payload segment的时候,会调用一个填充程序来填充那些没有数据的位newtype T_PayloadArray(T_Length, Integer)endnewtype;NMVector -Network Management Vector(可选):在静态时槽中传输的帧的很多字节可以用作网络管理矢量。NMVector的长度在POC:config下由参数gNetworkManagementVectorLength配置的,所有的节点必须把该参数配置成和它一样的数值。NMVector只会在静态时槽传输的帧中用到在发送节点上NMVector是被主机当成 应用数据写入的,通讯控制器不知道NMVector的信息,在传输层中,只有ORing function是基于ORing function的。payload preamble indicator用来指示NMVector是否存在。发送的时候按字节从低字节往高字节发送。每个字节里按从高位往低位发送的方式发送信息ID(Message ID- 16 bits-可选):在动态时槽中用来辨别消息内容的。在发送段被当成应用数据发送,接收端和所有的传送机制中都不了解Message ID的任何信息。在接收端有一个过滤程序可以识别Message ID并用来判断是否存储当前的帧。Message ID的第一位存放在he payload segment的第一个字节的第一位,并按顺序排列下去。帧的结尾部分(FlexRay trailer segment):只包含了一个24位的CRC部分。CRC的计算是包括填充载荷的。两根通道线上的值都是由同一个多项式产生,节点针对不同的传输通道使用不同的初始化矩阵:channel A0xFEDCBAchannel B0xABCDEF 帧数据按照网络上的传输顺序输入的生成器从而计算生成。传输是从高位往低位传输。syntype T_FrameCRC = Integerconstants 0x000000 : 0xFFFFFFendsyntype;计算:是由附加到帧上,在接受端也由来计算是否匹配。通过对vNextBit的校验,把帧按照网络顺序一位一位的传送到的寄存器中去,vNextBit是按帧在网络上传输的顺序取值从保留位到the last byte of the payload segment.CRC生成程序:vCrcReg(vCrcSize - 1 : 0) = vCrcInit; / Initialize the CRC registerwhile(vNextBit)/ determine if the CRC polynomial has to be applied by taking / the exclusive OR of the most significant bit of the CRC register / and the next bit to be fed into the register vCrcNext = vNextBit EXOR vCrcReg(vCrcSize - 1);/ Shift the CRC register left by one bit vCrcReg (vCrcSize - 1 : 1) = vCrcReg(vCrcSize - 2 : 0);vCrcReg(0) = 0;/ Apply the CRC polynomial if necessary if vCrcNext vCrcReg(vCrcSize - 1 : 0) = vCrcReg(vCrcSize - 1 : 0) EXOR vCrcPolynomial;end; / end ifend; / end while loopvCrcSize = cHCrcSize; / (= 11) size of the register is 11 bitsvCrcInit = cHCrcInit; / (= 0x1A) initialization vector of header / CRC for both channels vCrcPolynomial = cHCrcPolynomial; / (= 0x385) hexadecimal representation of / the header CRC polynomialCRC还有一个用处就是用来防止同步指示位,帧开始指示位的被传输控制器(CC)不恰当的移动,cc不参与CRC的计算,而会为帧配置host传过来的CRC。当CC接收到帧的时候,会计算CRC是否匹配5.1通讯周期一个通讯周期包括:静态部分,动态部分,符号窗口,网络空闲时间。静态部分里面分为多个静态时槽,动态部分里分为多个动态时槽。符号窗口用来传输符号信息。网络空闲时间是自由传输时间。静态时槽动态时槽,符号窗口网络空闲又是由macrotick组成macrotick边沿成为动作边沿静态部分里面的macrotick还分为microtick5.2 通讯周期的执行除了在启动中,通讯周期被定期的执行,而定期时间又由一系列macroticks组成。而通讯周期被标标为0到cCycleCountMax在静态部分和动态部分的仲裁是基于对不同的通道不同的节点分配不同的帧标志符,以及对时槽的计数。帧的标识符决定了该帧在哪个时槽传输,同时也就决定了传输时间以及在那个时部传输。帧的ID取值是从0到cSlotIDMax.。每个传输周期都会包含静态部分,而静态部分包含了gNumberOfStaticSlots个时槽,gNumberOfStaticSlots是被配置的一个数据。任何一个静态时槽又是由一系列相同个macroticks组成传输周期可能可能包含动态部分,动态部分由gNumberOfMinislots 个 minislots组成。Minislots也是由一系列相同个macroticks组成,如果没有申请动态部分,gNumberOfMinislots被设置成0。一个传输周期可能包含符号窗口。符号窗口由配置的gdSymbolWindow个 macroticks.组成. 如果没有申请符号窗口,of macroticks.被设置成0.传输周期一定包含网络空闲时间。网络空闲时间包含了一个传输周期中所有没有被分配给静态部分,动态部分,符号窗口的macroticks5.1.3静态部分:在静态部分,所有传输时槽是相同的,确定的时长,所有的帧是确定的长度在静态部分传输有以下限制条件:1同步帧在所有连接的通道上传输2非同步帧可能在任何一通道上传输,也可能在两个通道上一起传输3一个帧的ID只对应一个节点,并在一给定的通道上传输4如果主机被配置成单时槽,所有非同步节点必须指定一帧作为单时槽帧静态部分的计时与执行通道A与通道B都是又一个参数vSlotCounter来纪录时槽,在每个周期开始的时候设置vSlotCounter为1每个时槽结束的时候给它加1每个静态时槽由gdStaticSlot 个macroticks组成。gdStaticSlot是主机里面的一个全局变量。gdStaticSlot的配置必须在最坏的情况下满足边沿安全的考虑。pKeySlotId:一静态时槽pKeySlotUsedForSync:定义一静态时槽是否包含同步帧pKeySlotUsedForStartup:定义一静态时槽是否包含起始帧gdActionPointOffset:静态时槽中先空gdActionPointOffset个macroticks才传输帧,表示帧的开始传输点5.1.4 动态部分动态部分传输的时段是不定的,主要是用来适应传输不同长度的帧。两个计数器在静态部分是同时增加,在动态部分是不一定同时增加的。两根总线在动态部分的访问也不一定同步。每个minislot都包含 gdMinislot个 macroticks,gdMinislot是主机的全局变量。如果没有通讯的情况下,动态时槽由一个minislot组成,剩余的时槽总线被置于空闲状态。当有信息通讯的时候,动态时槽由多个minislot组成每个minislot都包含action point,触发点由主机的全局变量gdMinislotActionPointOffset 决定,一个动态时槽开始后gdMinislotActionPointOffset个macroticks为action point在动态时槽里,传输从一个minislot 中的action poin开始,并在某一个minislot 中的action poin结束,通常会有动态结尾序列DTS决定了它一直到到action poin位置才结束。动态部分分为动态传输相,和动态空闲相。动态传输相包括从从动态开始到传输结束的动态时槽minislot,动态空闲结束动态部分结束动态时槽gdActionPointOffset:在静态时槽结束后,必须经历gdActionPointOffset才开始动作。gdMinislotActionPointOffset:是动态时槽部分开始后经历gdMinislotActionPointOffset个macroticks后才开始动作(注意:动作触发点最终是以gdMinislotActionPointOffset为准如下图)dynamic slot idle phase的意义以及占了多少个minislot动态部分的时槽计数器vSlotCounter再每过一个时槽都会加1当vSlotCounter的值达到cSlotIDMax的时候或者当动态部分达到gNumberOfMinislots个minislot的时候(也就是动态部分达到了规定的时间长度)此时,把vSlotCounter置0。仲裁程序会确保让正常接受的节点知道传输是从那个动态时槽开始的。进一步,所有的无故障节点都会统一接受使时槽计数器在同一minislot复位。从而保证所有的无故障接收节点和所有的无故障传输节点的时槽计数器,以及帧里面的ID号一致5.1.5符号窗口在符号窗口有可能会发送一个符号。如果存在多个发送节点的时候,这个发送仲裁权不是由协议决定,仲裁权由一个高电平来选择一个符号窗口包含gdSymbolWindow个macroticks,gdSymbolWindow是主机的一个全局变量。符号的发送有个触发点gdActionPointOffset,符号窗口开始后必须经过gdActionPointOffset个macroticks后才开始发送符号,此处的gdActionPointOffset和静态时槽中的gdActionPointOffset是一样的5.1.6网络空闲时间网络空闲时间用来计算和时钟校正,也可能用来实施与具体通讯周期相关的任务。网络空闲是包含了一个通讯周期中除了静态,动态,符号窗口之外的所有时间5.2 通道控制1 在standby模式下,通道被有效的遏制2在noce模式下,程序被执行,但是没有帧或者符号在通道上传输3在startupframecas模式下,如果节点被配置发送启动帧,那么在此模式下每个周期的传送仅限于一个启动开始的的空帧传输。另外就是在第一个通讯周期之前,节点会发送CAS(避免冲突符号)的初始符4 在startupframe模式下,如果节点被配置发送启动帧,那么在此模式下每个周期的传送仅限于一个启动开始的的空帧传输。5 在singleslot模式下,如果节点被配置发送同步帧,那么在此模式下每个周期的传送仅限于一个同步帧的传输。如果节点被配置支持单槽模式,那么在此模式下每个周期的传送仅限于一个特殊的单槽帧的传输。6在任何模式下的帧或者符号传输,都必须符合时槽的分配。MAC传输模式的宏定义newtype T_MacModeliterals STANDBY, NOCE, STARTUPFRAMECAS, STARTUPFRAME, SINGLESLOT, ALL;endnewtype;5.2.2重要事件通道控制必须要能够处理一些重要事件,主要有接受相关事件,发送相关时间,计时相关事件。 接受相关事件针对A通道,主要包括:1 在A通道上传输元素开始(CE start on A)2 potential idle start on channel A (signal potential idle start on A)3 A通道空闲识别点检测(CHIRP on A)B通道和A通道一样5.2.2 发送相关事件发送端的特殊事件主要就是DTS的发送开始(DTS start on A)-(对于动态部分当一个帧发送完后还没有到gdMinislotActionPoint需要开始发送DTS直到gdMinislotActionPoint才结束发送。)而对于B通道: (DTS start on B)5.2.3计时相关事件每个传输周期的开始驱动事件,就是决定在一个周期的什么位置开始传输数据(signal cycle start (vCycleCounter))5.3MAC包括如下一些状态:1. a MAC:standby state,2. a MAC:wait for CAS action point state,3. a MAC:wait for the cycle start state,4. a MAC:wait for the action point state,5. a MAC:wait for the static slot boundary state,6. a MAC:wait for the end of the dynamic segment offset state,7. a MAC:wait for the AP transmission start state,8. a MAC:wait for the DTS start state,9. a MAC:wait for the AP transmission end state,10. a MAC:wait for the end of the dynamic slot tx state,11. a MAC:wait for the end of the dynamic segment state,12. a MAC:wait for the end of the minislot state,13. a MAC:wait for the end of the reception state,14. a MAC:wait for the end of the dynamic slot rx state,15. a MAC:wait for the symbol window action point state , and,16. a MAC:wait for the end of the symbol window state.5.3.1 MAC:standby状态5.3.2静态部分相关状态静态部分的流程图待传输的数据宏定义如下newtype T_TransmitFrame struct Header T_Header;Payload T_Payload;endnewtype;时钟计数器宏定义如下:syntype T_SlotCounter = Integerconstants 0 : 2047 endsyntype;静态部分帧的组装与传输条件。帧的打包程序:ASSEMBLE_STATIC_FRAME_A.在静态部分是否传输数据主要由当前的操作状态决定,如果通道状态是:NOCE,将没有帧传输,如果是STARTUPFRAMECAS或者 STARTUPFRAME状态,如果在通讯配置了启动时槽,这时帧将在两根线上传输。如果通道在ALL模式中操作,在被分配到时槽的情况下,它将在一条通道上传输帧。数据元素有通过通道从CHI导入,并与通道,时槽,通讯周期相关。被传送的数据(T_CHITransmission)从主机控制接口(CHI)返回newtype T_CHITransmission structAssignment T_Assignment;TxMessageAvailable Boolean;PPIndicator T_PPIndicator;HeaderCRC T_HeaderCRC;Length T_Length;Message T_Message;endnewtype;newtype T_Assignmentliterals UNASSIGNED, ASSIGNED;endnewtype; 假如从CHI导入了一个T_CHITransmission的变量vTCHI,同时如果vTCHI!Assignment 被设置成 ASSIGNED,这时:1 保留位被设置成0 (1位)2 如果pKeySlotId 等于 vSlotCounter: a:开始帧指示位将按照pKeySlotUsedForStartup来设置 b:同步帧指示位将依照pKeySlotUsedForSync来设置在其它的情况下:开始帧指示位和同步帧指示位将被设置成03帧的ID被设置成当前的时槽计数器的值vSlotCounter.4程度将被设置成gPayloadLengthStatic.5 CRC 被设置成由CHI检测到的数据vTCHI!HeaderCRC 6 周期域被设置成当前的周期数vCycleCounter.7 如果主机有可用数据(vTCHI!TxMessageAvailable被设置成1): a 空帧指示位被设置成1 b 负荷指示位被设置成由CHI导入的vTCHI!PPIndicator值 c 两字节(two-byte)长度vTCHI!Length由vTCHI!Message拷贝到vTF!Payload, d 任何剩余的载荷数据字将被设置成填充模式0x00,如果主机没有有效数据vTCHI!TxMessageAvailable 被设置成false这时: e 空指针位将被设置成0 f 负荷指示位将被设置成0 g 所有的负荷字被设置成填充模式0x00帧打包流程图5.3.3动态部分相关状态:动态部分的状态及其关联在动态部分的时槽计数器会在每个时槽结束的时候增1.当它增加到超过最大的时槽ID值(cSlotIDMax)的时候,将被设置成0,并保持着这个结果知道动态部分结束。动态时槽的流程图动态部分的传输条件与帧打包对A通道的打包程序:ASSEMBLE_DYNAMIC_FRAME_A,B通道类似在动态部分,只有当通道状态被设置成ALL状态的时候,才传输帧数据如果动态部分还没有超过pLatestTx(节点的一个特殊上限),节点又满足当前时槽,又有从CHI导入的有效载荷数据,同时满足vTCHI!Assignment =ASSIGNED,vTCHI!TxMessageAvailable =true,节点将会按照一下方式给动态部分发送的数据打包:1 保留位为 02 同步帧指示位为 03开始帧指示位为 04 负荷指示位被设置成来自CHI的vTCHI!PPIndicator5 ID被设置成当前的时槽计数器值vSlotCounter.6 长度域被设置成来自CHI的vTCHI!Length7 header CRC被设置成来自CHI的vTCHI!HeaderCRC。8 周期数被设置成当前的周期计数器的vCycleCounter9 空帧指示位被设置成110 两字长度vTCHI!Length由vTCHI!Message拷贝到 vTF!Payload.5.3.4 符号窗口相关状态主要相关状态:在符号窗口开始的时候,节点把时槽计数器vSlotCounter设置成0符号窗口流程图当通道被设置成ALL模式,并且有符号被释放出用来传输。节点就会传输一个符号5.3.5 节点空闲时间:在NIT开始的的时候节点把食草计数器vSlotCounter设置成0空闲时间流程图:6帧与符号操作模式1在STANDBY模式下帧与符号的执行都停止2 在STARTUP模式下帧与符号处理将被执行,但是CHI没有更新3 在GO模式下帧与符号处理将被执行同时CHI将更新 newtype T_FspModeliterals STANDBY, STARTUP, GO;endnewtype;对于通道A:接受节点主要包含如下事件:1 A线传输元素开始(CE start on A)2 A通道上的帧解码(frame decoded on A (vRF))该处的vRF提供了关于主时间参考点的信息。以及帧头和帧的载荷时间参考3 A通道上的的符号解码(symbol decoded on A)4 A通道解码错误(decoding error on A)5 A通道空闲识别侦测点(CHIRP on A)6B通道内容错误用来应付通道对同步帧不断的检查(content error on B)对于通道B:1 CE start on A 2 frame decoded on A (vRF)3 symbol decoded on A4 decoding error on A5 CHIRP on A6 content error on Bnewtype T_ReceiveFramestructPrimaryTRP T_MicrotickTime;Channel T_Channel;Header T_Header;Payload T_Payload;endnewtype;解码事件对于A通道:1 A通道解码暂停(decoding halted on A)2 A解码开始(decoding started on A)B通道类似时间相关事件如图:对于A通道的相关事件:1 A通道静态时槽开始(static segment start on A (vCycleCounter, vSlotCounter))vCycleCounter记录周期数,vSlotCounter记录当前周期中的时槽数。2 A通道时槽界线(slot boundary on A (vSlotCounter))由vSlotCounter 数值决定3 A通道静态部分时槽开始(dynamic segment start on A (vSlotCounter))4 A通道上符号窗口开始(symbol window start on A (vSlotCounter))在这里vSlotCounter一直为05 A通道网络空闲开始(NIT start on A (vSlotCounter))在这里vSlotCounter一直为0B通道类似6.2.3状态数据时槽状态数据由CHI更新时槽状态包括:1 通道标识符,就是用来标注用哪条通道(Channel)2 时槽计数值3 周期计数值4 用来决定传输元素以及类型是否有效的计数5用来决定石槽中是否有同步错误被接受的标志6用来决定石槽中是否有内容错误被接受的标志7用来决定石槽中是否有边界冲突的帧被接受的标志8用来决定石槽中是否有冲突的帧被接受的标志newtype T_SlotStatusstructChannel T_Channel;SlotCount T_SlotCounter;CycleCount T_CycleCounter;ValidFrame Boolean;ValidMTS Boolean;SyntaxError Boolean;ContentError Boolean;BViolation Boolean;TxConflict Boolean;Segment T_Segment;endnewtype;ValidFrame(false,true)用来标注是否接受了一个有效帧ValidMTS(false,true)用来标注在符号窗口是否接收了一个有效的MTSSyntaxError用来标注是否发生了同步错误,如果发生下面的情况就会发生了同步错误,当发生了同步错误的时候,被设置成true,没有发生同步错误时,被设置成false1当通道在不是在空闲状态下的时候,节点启动传输开始2解码错误3帧解码发生符号窗口或者网络空闲时间4 符号解码发生在静态部分,或者动态部分,或者网络空闲时间5一个帧在一个一个已经接收了一个正确帧的时槽里被接收了。6两个或者两个以上的符号在符号窗口里被接收。注意:SyntaxError = true and ValidFrame = true的情况是有可能发生的,比如,在节点接受了一个语法不正确的帧后,在这同一个时槽里又接收了另外一个语法正确又同步的帧。这时候:ValidFrame = true, SyntaxError = true, and ContentError = false.ContentError用来标注是否发生了内容错误,当如下情况发生的时候,就表示发生了内容错误1在静态部分,当收到一个帧头长度不匹配gPayloadLengthStatic2在静态部分,当接收了一个帧,开始帧标志位被设置成1,而同步帧标志位被设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论