微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > FlexRay -设计、功能和应用

FlexRay -设计、功能和应用

时间:02-15 来源:Freescale Semiconductor, Inc. 点击:

图2:带静态和动态段的通信循环

除了静态部分以外,通信循环还选择性地组成动态部分。所谓的"小时槽法"用来访问动态部分的通信媒介。呼出消息永远分配给动态时槽。与大小都相同、始终用于传输的静态时槽相反,只要时槽分配给了节点,动态部分就只能在需要时才进行传输。因此,动态部分的可用带宽是动态分配的。如果消息号码(ID)和时槽号码对应,带有待发呼出消息的节点就会进行传输。如果没有节点传输,所有节点就会等候,等待的时间长度正是时槽的长度,然后它们的时槽读数也会增加。在时槽读数增加以后,所有节点都将检查该时槽号码是否与呼出消息对应。如果两者匹配,该节点将发送消息。所有节点接受这条消息,并且一直等到它们完全接收了这条消息后再增加时槽读数。这一过程将会持续,直至到达动态部分。如果在循环中,没有或者只有少数节点传输消息,在动态部分的结尾,就会达到更高的时槽数量。如果有大量节点进行传输,则到达的时槽数量就比较少。因此,拥有较高编号的(即优先权较低)呼出消息的节点可能在一个循环中传输,而不在另一个循环中传输,具体取决于动态部分在其之前已经传输的节点的数量。要确定消息已经传输,用户必须在静态部分发送该消息,或者必须将它分配给动态部分中的较低消息编号(即优先权较高)。

时钟同步

如果使用基于TDMA的通信协议,则通信媒介的访问在时间域中控制。因此,每个节点都必须保持时间同步,这一点非常重要。所有节点的时钟必须同步,并且最大偏差必须在限定范围内,这是实现时钟同步的前提条件。最大偏差称为精确。

图3:时钟同步机制

时钟偏差可以分为相位和频率偏差。相位偏差是两个时钟在某一特定时间的绝对差别。频率偏差是相位偏差随着时间推移的变化。它反映了相位偏差在特定时间的变化。

有多种方法可以通过相位纠正和频率纠正实施时钟同步。FlexRay使用了一种综合方法,同时实施相位纠正和频率纠正。时钟同步是一个控制环路,与其它控制环路一样,它也由测量、计算和设定功能组成。

要测量每个时钟与其它时钟的偏差,所有节点都要在接收期间测量消息的到达时间。通过静态部分的定时机制,每个节点都知道消息应当何时到达。如果消息比预计时间早到或晚到,将能测量得出实际时间与预定时间之间的偏差。该偏差代表了传输和接收节点之间的时钟偏差。借助获得的测量值,可用容错平均算法计算出每个节点的纠正值[2]。

在频率纠正中,需要使用两个通信循环的测量值。这些测量值之间的差值反映每个通信循环中的时钟偏差变化。它通常用于计算双循环结束时的纠正值(见上文提及的方法)。在整个后来的双循环中,都使用该纠正值。

相位纠正值的计算只需一个循环周期的测量值,一旦接收了所有测量值,即可开始实施计算,并且它必须在开始相位纠正前完成。在通信循环末尾,网络闲置时间(NIT)的一部分被保留,用于相位纠正。相位纠正要相隔一个循环实施,避免影响时钟频率偏差的确定。

图3概述了时钟同步的相位,以及不同访问方法的分配。如需了解时钟同步机制的详细消息,请参见[3]。

集群启动

与许多技术流程或程序一样,FlexRay中的启动阶段同样也是最复杂的操作阶段之一。这是因为FlexRay中的通信基于同步时钟体制,但在启动阶段,这种体制还未建立。由于具备容错功能,FlexRay中不存在主时钟,因而时基不是由主时钟定义的。

启动集群时,将会启动"coldstarter"程序,该程序始终会出现在多个实例中。首先,启动传输消息的coldstarter被称为"引导coldstarter",其它coldstarter则被称为"后续coldstarter"。

一旦节点被唤醒并完成初始化,它就能在发出相应的主机命令后进入启动流程。不属于coldstarter的节点会等候,直到它们至少识别到两个相互通讯的coldstarter为止。coldstarter自己会监控两个通信循环的传输信道,以确定其它节点是否正在传输。如果没有,该节点会开始进行传输,从而成为主要coldstarter。主要coldstarter首先会传输无格式符号,向其它节点说明:目前它正在启动该集群,作为主要coldstarter。在传输符号后(符号即特定数量的无效位),该节点开始启动它自己的时钟,并且开始第一个通信循环。根据预先定义的集群范围的通信机制,主要coldstarter将在其分配的时槽中传输,与其它所有节点一样,它将只在一个时槽的启动阶段传输。

主要coldstarter发送的消息可由后续coldstarter接收。在消息身份识别号码(ID)(该号码与时槽编号相同)的帮助下,接收器能够确定发送器位于哪个时槽。传输节点的当前循环编号附带在每条消息中发送。在接收第一条消息后,其它节点等待在下一个通信循环中发送的第二条消息。一旦收到第二条消息,后续coldstarter将开始启动他们的时钟,该时钟由循环编号和接收消息的时槽编号进行初始化。这样就可以为传输器和接收器之间的同步时间操作奠定基础。此外,接收节点会测量第一条消息和第二条消息之间的时间,该时间与通信循环的循环时间对应。测量出的时间与本地coldstarter时间进行比较。还可以通过减法确定可能偏差,频率纠正机制使用该偏差值作为纠正值。因此,下列coldstarter不能使用接收到的循环号码和时间值(与传输的时间槽对应)来启动时钟,但是它会修改其时基的频率,使它尽可能地接近主要coldstarter的值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top