专利名称:用于控制对通信组件的消息存储器的数据访问的消息管理器和方法
技术领域:
本发明从根据独立权利要求
的前序部分的、用于控制对通信组件的消息存储器的数据访问的消息管理器和方法出发。
背景技术:
近年来在现代汽车的制造中或者在机械制造中、尤其是在机床领域以及在自动化中借助通信系统和总线系统、也即借助通信连接使控制设备、传感器和执行机构联网已显著增加。在此情况下能够实现通过使功能分布到多个控制设备上而产生的协同效应。在此情况下称为分布式系统。不同站之间的通信越来越多地通过总线系统、也即通信系统来进行。总线系统上的通信业务量、访问和接收机制以及错误处理通过协议来进行调节。用于此的已知协议为CAN协议或TTCAN协议以及FlexRay协议,其中目前基于FlexRay协议规范V2.0。在此,FlexRay是一种快速的、确定性的和容错的总线系统,尤其用于应用在汽车中。FlexRay协议按照时分多址(TDMA)方法工作,其中固定的时隙被分配给部件、也即用户或要传输的消息,在这些时隙中它们可以专有地访问通信连接。可比较地,这在TTCAN的情况下也被实现。在此,所述时隙以规定的周期重复,使得可以精确地预言消息通过总线被传输的时间点并确定性地进行总线访问。为了最佳地利用总线系统上用于消息传输的带宽,FlexRay把周期划分为静止部分和动态部分。固定的时隙在此位于总线周期开头的静止部分。在动态部分中,时隙被动态地分配。其中现在能够分别仅仅在短的时间、所谓的微时隙内实现专有的总线访问。只有当在一个微时隙内进行总线访问时,该时隙才被延长所需要的时间。因此也只有当带宽实际被需要时它才被消耗。在此,FlexRay通过两个物理上分开的线路以分别最大为每秒10MB的数据速率来通信。这两个信道在此对应于尤其是OSI(Open System Architecture,开放系统体系结构)层模型的物理层。这些物理层现在主要用于消息的冗余的并且因此容错的传输,但也可以传输不同的消息,由此数据速率于是将加倍。但是FlexRay也可以以较低的数据速率运行。
为了实现同步功能并且为了通过两个消息之间的小的间隔来优化带宽,分布在通信网络中的部件、也即用户需要共同的时间基准、即所谓的全球时间。为了时钟同步,同步消息在周期的静止部分中被传输,其中借助特殊的算法按照FlexRay规范如此来校正部件的本地时间,使得所有的本地时钟与全球时钟同步运行。这种同步可比较地也在TTCAN网络中进行。
FlexRay网络节点或FlexRay用户或主机包含用户处理器、也即主机处理器、FlexRay控制器或通信控制器、以及在总线监控的情况下包括总线监护器。在此,该主机处理器、也即用户处理器提供并处理通过FlexRay通信控制器所传输的数据。为了在FlexRay网络中进行通信,消息或消息对象可以配置有例如最多254个数据字节。为了现在在物理层、也即通信连接和主机处理器之间传输这些消息或消息对象,采用通信组件、尤其是通信控制器。
发明内容现在本发明的任务在于,如此控制数据传输,使得保证数据完整性并优化传输速度。
本发明从具有消息存储器的通信组件的消息管理器和用于控制对消息存储器的数据访问的方法出发,在该消息存储器中在访问时数据被输入或输出。在此,该消息存储器与第一缓冲存储器装置和第二缓冲存储器装置相连接,其中通过该第一或第二缓冲存储器装置来进行对数据的访问,其中该消息管理器有利地包含至少一个第一状态机或有限状态机,该第一状态机或有限状态机控制通过该第一缓冲存储器装置对消息存储器的访问,并且该消息管理器包含至少一个第二有限状态机或状态机,该第二有限状态机或状态机控制通过第二缓冲存储器装置的访问,其中该至少一个第一有限状态机和至少一个第二有限状态机提出访问请求,并且设置有第三有限状态机或状态机,该第三有限状态机或状态机根据该至少一个第一和第二状态机或有限状态机的访问请求给该至少一个第一和第二状态机或有限状态机分配对消息存储器的访问。
也即,本发明描述了一种方法和一种装置,用于如此来控制消息存储器、也即消息RAM与输入和输出缓冲器之间以及消息存储器与通向通信总线的发送和接收单元之间的数据传输,使得保证要存储的消息的所要求的数据完整性和高传输速度。
合宜地,所述数据受消息管理器控制通过第一缓冲存储器装置在分别具有两个数据方向的两个数据路径中被传输,其中第一缓冲存储器装置包含用于第一数据路径的第一缓冲存储器和用于第二数据路径的第二缓冲存储器,并且这些数据路径分别设置有第一状态机或有限状态机,使得产生用于第一缓冲存储器装置的两个状态机,其中这两个第一状态机或有限状态机中的每一个都控制通过各一个缓冲存储器对消息存储器的访问。
合宜地,设置有时钟装置,通过该时钟装置在可预先给定的时钟周期内传输数据,其中所述第三状态机或有限状态机根据每个第一有限状态机和每个第二有限状态机的访问请求依次给每个第一有限状态机和每个第二有限状态机相应地分配时钟周期。
整个访问时间有利地由第三有限状态机或状态机根据同时的访问请求的数量均匀地对应于该数量进行分配,其中针对被分配时钟周期的每个有限状态机、也即状态机总是同时只允许一个访问请求。
所述的方法和所述的消息管理器以及具有这种消息管理器的相应的通信组件能够使主机CPU在持续运行中读或写每个任意的消息对象、也即消息存储器中的每个任意的消息,而所选择的消息对象在主机CPU的访问的持续时间内不会由于参与诸如FlexRay总线的两个信道上的数据交换、也即物理层上的数据交换而被阻断。同时通过逐时钟的交替来保证存放在消息存储器中的数据的完整性并保证高的传输速率。
其它优点和有利的扩展参见说明以及权利要求
的特征。
本发明借助附图中的下列图来更详细地阐述。其中图1以示意图示出通信组件及其到物理层的连接、也即通信连接以及通信用户或主机用户。
图2更详细地示出在一种特殊的实施形式中图1的通信组件及其连接。
在图3中示出了消息存储器的结构。
图4至6示意性地示出在从用户到消息存储器的方向上数据访问的结构及过程。
图7至9示意性地示出在从消息存储器到用户的方向上数据访问的结构和过程。
在图10中示意性地示出了消息管理器和其中所包含的有限状态机。
图11再次示意性地示出了通信组件的元件以及用户和相应的通过消息管理器所控制的数据路径。
图12描述与图11中的数据路径有关的访问分配。
具体实施方式下面借助实施例来更详细地描述本发明。
图1示意性地示出用于把用户或主机102连接到FlexRay通信连接101、也即FlexRay的物理层上的FlexRay通信组件100。为此FlexRay通信组件100通过连接107与用户或用户处理器102相连接,并通过连接106与通信连接101相连接。为了进行一方面就传输时间而言并且另一方面就数据完整性而言无问题的连接,示意性地基本上区分FlexRay通信组件中的三个装置。在此,第一装置105用于存储、尤其是中间存储要传输的消息的至少一部分。在用户102和该第一装置105之间通过连接107和108连接有第二装置104。同样在用户101和该第一装置105之间通过连接106和109连接有第三装置103,由此可以实现在最佳速度的情况下将数据作为消息、尤其是FlexRay消息的一部分非常灵活地输入到第一装置105中或从第一装置105中输出而同时保证数据完整性。
在图2中再次更详细在一种优选实施形式中示出了该通信组件100。同样更详细地示出了各个连接106至109。该第二装置104在此包含输入缓冲存储器201(Input Buffer IBF)、输出缓冲存储器202(Output Buffer OBF)以及由两部分203和204组成的接口组件,其中一部分组件203不依赖于用户,而第二部分组件204是用户特有的。该用户特有的部分组件204(Customer CPU Interface CIF)将用户特有的主机CPU 102、也即客户特有的用户与FlexRay通信组件相连接。为此设置有双向数据线216、地址线217以及控制输入218。同样以219设置有中断输出。用户特有的部分组件204与不依赖于用户的部分组件203(Generic CPU Interface,GIF)处于连接中,也即FlexRay通信组件或FlexRay-IP模块拥有一般的、也即普通的CPU接口,其中大量不同的客户特有的主机CPU可以通过相应的用户特有的部分组件、也即Customer CPU Interface CIF连接到该CPU接口上。由此只须根据用户来改变部分组件204,这意味着明显更少的花费。
输入缓冲存储器201和输出缓冲存储器202可以被构造在存储器组件或分离的存储器组件中。在此,输入缓冲存储器201用于中间存储传输至消息存储器200的消息。在此,该输入缓冲存储器优选地如此来构造,使得它可以存储两个完整的消息,其中该消息分别由尤其具有配置数据的报头段和数据段或有效载荷段组成。在此,该输入缓冲存储器分两部分(子缓冲存储器和影子存储器)来构造,由此可以通过交替地写输入缓冲存储器的两个部分或通过交替访问来加速用户CPU 102和消息存储器200之间的传输。同样,该输出存储器(Output-Buffer OBF)用于中间存储从消息存储器200向用户CPU 102传输的消息。在此,该输出缓冲器202也如此来设计,使得可以存储两个完整的消息,其中该消息由尤其具有配置数据的报头段和数据段、也即有效载荷段组成。这里该输出缓冲存储器202也被分为两个部分、即子缓冲存储器和影子存储器,由此这里也可以通过交替地读这两个部分或者通过交替访问来加速用户或主机CPU 102和消息存储器200之间的传输。由模块201至204组成的该第二装置104与第一装置105如所示的那样相连接。
装置105由消息管理器200(Message Handler MHD)和消息存储器300(Message RAM)组成。该消息管理器控制输入缓冲存储器201以及输出缓冲存储器202与消息存储器300之间的数据传输。同样地,它控制在另一方向上通过第三装置103的数据传输。该消息存储器优选地作为单端口RAM来实施。该RAM存储器将消息或消息对象、也即真正的数据与配置和状态数据一起进行存储。消息存储器300的确切结构在图3中更详细地被示出。
第三装置由模块205至208组成。对应于FlexRay物理层的两个物理信道,该装置103被划分为各具有两个数据方向的两个数据路径。这通过连接213和214而变得清楚,其中示出了信道A的两个数据方向、即用于接收(RxA)和发送(TxA)的RxA和TxA以及信道B的两个数据方向、即RxB和TxB。用连接215来表示可选的双向控制输入。第三装置103的连接通过用于信道B的第一缓冲存储器205和用于信道A的第二缓冲存储器206来实现。这两个缓冲存储器(Transient Buffer RAM`sRAM A和RAM B)用作用于来自或通向第一装置105的数据传输的中间存储器。对应于这两个信道,这两个缓冲存储器205和206与各一个接口组件207和208相连接,其中该接口组件包含由发送/接收移位寄存器和FlexRay协议有限状态机组成的FlexRay协议控制器或总线协议控制器。因此,这两个缓冲存储器205和206用作接口组件或FlexRay协议控制器207和208的移位寄存器与消息存储器300之间的数据传输的中间存储器。这里也有利地由每个缓冲存储器205或206来存储两个FlexRay消息的数据区、也即有效载荷段或数据段。
此外在通信组件100中以209示出了全球时间单元(Global TimeUnit GTU),该全球时间单元负责显示FlexRay中的全球时间帧、也即微标记(Mikrotick)μT和宏标记MT。同样通过全球时间单元209来调节周期计数器(Cycle Counter)的容错时钟同步和对FlexRay的静止和动态段中的时间过程的控制。
用模块210示出了通用系统控制装置(System Universal ControlSUC),通过该通用系统控制装置来控制FlexRay通信控制器的运行模式。属于该运行模式的有唤醒、启动、重新整合或整合、正常运行(normaloperation)和被动运行(passive operation)。
模块211示出如在FlexRay协议规范v2.0中所述的网络和差错管理装置(Network-und Error Management MEM)。最后,模块212示出中断控制装置(Interrupt Control INT),该中断控制装置管理状态和差错中断标志(status and error interrupt flags)并控制至用户CPU102的中断输出219。所述模块212此外还包含用于产生时间中断或计时器中断的绝对和相对计时器。
对于FlexRay网络中的通信来说,消息对象或消息(MessageBuffer)可以配置有多至254个数据字节。消息存储器300尤其是消息RAM存储器(Message RAM),该存储器例如可以存储直至最多64个消息对象。为消息管理器200实现本身涉及消息的处理或管理的所有功能。这例如是在所述两个FlexRay协议控制器模块207和208与消息存储器300、也即消息RAM之间消息的接收过滤、传输以及对发送顺序的控制和配置数据或状态数据的提供。
外部CPU、也即用户处理器102的外部处理器可以通过用户接口、利用用户特有的部分204直接访问FlexRay通信组件的寄存器。在此使用多个寄存器。这些寄存器被用于配置和控制FlexRay协议控制器、也即接口组件207和208、消息管理器(Message Handler MHD)200、全球时间单元(Global Time Unit GTU)209、通用系统控制器(SystemUniversal Controller SUC)210、网络和差错管理单元(Network undError Management Unit NEM)211、中断控制器(Interrupt ControllerINT)212以及对消息RAM、也即消息存储器300的访问,并且同样被用于显示相应的状态。在图4至6和7至9中至少对这些寄存器的一部分还进行更详细的探讨。这种所描述的、根据本发明的FlexRay通信组件使得能够简单地实现FlexRay规范v2.0,由此可以简单地产生具有相应FlexRay功能的ASIC或微控制器。
在图3中详细描述了消息存储器300的划分。对于FlexRay通信控制器的按照FlexRay协议规范所要求的功能来说,需要用于提供要发送的消息(Transmit Buffer)以及存储无差错地接收的消息(ReceiveBuffer)的消息存储器。FlexRay协议允许具有数据区域、也即0至254个字节的有效载荷区域的消息。如图2中所示,该消息存储器是FlexRay通信组件100的一部分。下面所述的方法以及相应的消息存储器描述尤其在采用随机存取存储器(RAM)的情况下要发送的消息以及所接收的消息的存储,其中通过根据本发明的机制可以在预先给定大小的消息存储器中存储数量可变的消息。在此,可存储的消息的数量取决于各个消息的数据区域的大小,由此一方面所需的存储器的大小可以被最小化而无需限制消息的数据区域的大小,另一方面实现存储器的最佳利用。在下文中现在将更详细描述用于FlexRay通信控制器的尤其基于RAM的消息存储器的可变的划分。
为了实施,现在示例性地预先给定具有规定的n位、例如8位、16位、32位等等的字宽以及预先给定的m个字的存储器深度(m、n为自然数)的消息存储器。在此,该消息存储器300被划分为两个段、即报头段HS和数据段DS(有效载荷部分、有效载荷段)。因此为每个消息都设置一个报头区域HB和一个数据区域DB。因此为消息0、1至k(k为自然数)设置报头区域HB0、HB1至HBk和数据区域DB0、DB1至DBk。因此,在一个消息中,在第一和第二数据之间进行区分,其中第一数据对应于关于FlexRay消息的配置数据和/或状态数据并分别被存放在报头区域HB(HB0、HB1、...、HBk)中。对应于真正的应当被传输的数据的第二数据被相应地存放在数据区域DB(DB0、DB1、...、DBk)中。因此为每个消息的第一数据产生第一数据范围(以位、字节或存储器字来测量),并为消息的第二数据产生第二数据范围(同样以位、字节或存储器字来测量),其中每个消息的第二数据范围可以是不同的。现在,在消息存储器300中,报头段HS和数据段DS之间的划分是可变的,也即,在所述区域之间不存在预先给定的界限。报头段HS和数据段DS之间的划分按照本发明取决于消息的数量k以及第二数据范围、也即真正数据的、即一个消息或全部k个消息共同的范围。现在根据本发明把指针元素或数据指针DP0、DP1至DBk分别直接分配给各个消息的配置数据KD0、KD1至KDk。在特殊的扩展方案中,每个报头区域HB0、HB1至HBk被分配固定数量的存储器字,这里为两个,使得在一个报头区域HB中总是共同存放一个配置数据KD(KD0、KD1、...、KDk)和一个指针元素DP(DP0、DP1、...、DPk)。用于存储真正的消息数据D0、D1至Dk的数据段DS连接在具有报头区域HB的报头段HS之后,其中该报头区域的大小或第一数据范围取决于要存储的消息的数量k。该数据段(或数据部分)DS在其数据范围方面取决于所存储的消息数据的相应的数据范围,这里例如在DB0中为六个字,在DB1中为一个字,在DBk中为两个字。各个指针元素DP0、DP1至DPk因此总是指向开头,也即指向各个数据区域DP0、DB1至DBk的起始地址,其中在所述数据区域中存放有各个消息0、1、至k的数据D0、D1至Dk。因此消息存储器在报头段HS和数据段DS之间的划分是可变的,并且取决于消息本身的数量以及消息的相应的数据范围,并且因此取决于整个第二数据范围。如果配置较少的消息,那么报头段就变得较小,并且消息存储器中变得空闲的区域可以作为数据段DS的补充被用于存储数据。通过这种可变性可以保证最佳的存储器利用,由此也可以采用较小的存储器。同样取决于所存储的消息的数量k和消息的相应的第二数据范围的组合的、空闲的数据段FDS、尤其是其大小因此是最小的并且甚至可以变为0。
除了使用指针元素外,也可以按可预先给定的顺序存放第一和第二数据、也即配置数据KD(KD0、KD1、...、KDk)和真正的数据D(D0、D1、...、Dk),使得报头区域HB0至HBk在报头段HS中的顺序以及数据区域DB0至DBk在数据段DS中的顺序分别是相同的。于是在某些情况下甚至可以舍弃指针元素。
在一个特殊的扩展方案中,给消息存储器分配差错标识生成器、尤其是奇偶位生成器单元、和差错标识检验器、尤其是奇偶位检验单元,以便通过以下方式保证在HS和DS中所存储的数据的正确性,即每个存储器字或每个区域(HB和/或DB)可以一起存放正好尤其是作为奇偶位的校验和。其它的控制标识、例如CRC(Cyclic redundancy check,循环冗余校验)或更强大的标识、例如ECC(Error Code Correction,误码校正)也是可设想的。因此相对于消息存储器的固定的划分得到以下优点用户在编程时可以决定他想使用较大数量的具有小的数据区的消息还是想使用较小数量的具有大的数据区的消息。在配置具有不同大小的数据区域的消息时,现有的存储容量被最佳地利用。用户可以为不同的消息共同使用一个数据存储区。
在集成电路上实施通信控制器时,可以通过使所使用的存储器的存储器深度匹配于应用的需要来匹配消息存储器的大小,而无需改变通信控制器的另外的功能。
此外,现在借助图4至6以及7至9来更详细地描述主机CPU访问、也即配置数据或状态数据和真正的数据通过缓冲存储器装置201和202的写和读。在此,目的在于,这样建立就数据传输而言的去耦,使得可以保证数据完整性并同时保证高的传输速度。该过程的控制通过消息管理器200来实现,这稍后还要在图10、11和12中更详细地描述。
在图4、5和6中首先更详细地说明由用户CPU 102的主机CPU通过输入缓冲存储器201对消息存储器300的写访问。为此图4再次示出通信组件100,其中出于清楚起见的原因仅示出了通信组件100的在此相关的部分。这一方面是负责过程控制的消息管理器200以及两个控制寄存器403和404,这两个控制寄存器可以如所示的那样被安置在通信组件100中在消息管理器200之外,但也可以被包含在消息管理器200本身之中。在此,403是输入请求寄存器(Input Buffer Command RequestRegister),404是输入屏蔽寄存器(Input Buffer Command MaskRegister)。主机CPU 102对消息存储器300(Message RAM)的写访问因此通过中间连接的输入缓冲存储器201(Input Buffer)来实现。该输入缓冲存储器201现在被设计为分布式的或双重的,并且更确切地说被设计为子缓冲存储器400和属于该子缓冲存储器的影子存储器401。因此可以如下所述进行主机CPU 102对消息存储器300的消息或消息对象或数据的连续访问,并因此保证数据完整性和加速的传输。通过输入请求寄存器403并通过输入屏蔽寄存器404来进行对访问的控制。这里示例性地针对32位的宽度在寄存器403中用数字0至31来表示403中的各个位。同样的内容适用于寄存器404以及404中的位0至31。
根据本发明,现在寄存器403的位0至5、15、16至21和31示例性地就过程控制而言获得特殊的功能。这样在寄存器403的位0至5中可以录入作为消息标识的标识IBRH(Input Buffer Request Host)。同样在寄存器403的位16至21中也可以录入标识IBRS(Input BufferRequest Shaddow)。同样在403的寄存器位15中录入IBSYH并且在403的寄存器位31中录入IBSYS作为访问标识。寄存器404的位0至2也被标记,其中在位0和1中用LHSH(Load Header Section Host)和LDSH(Load Data Section Host)录入作为数据标识的其它标识。这些数据标识在此以最简单的形式、也即分别作为1位被构造。在寄存器404的位2中用STXRH(Set Transmission X Request Host)来写入开始标识。
此外,现在描述通过输入缓冲器对消息存储器的写访问过程。
主机CPU 102把要传输的消息的数据写入输入缓冲存储器201中。在此,主机CPU 102可以仅仅针对消息存储器的报头段HS写入配置和报头数据KD,或者可以仅仅针对消息存储器的数据段DS写入消息的真正的、要传输的数据,或者可以针对两者来进行写入。应当传输消息的哪一部分、也即配置数据和/或真正的数据通过输入标记寄存器404中的特殊的数据标识LHSH和LDSH来确定。在此,通过LHSH(Load HeaderSection Host)来确定是否应当传输报头数据、也即配置数据KD,并通过LDSH(Load Data Section Host)来确定是否应当传输数据D。通过把输入缓冲存储器201分成两部分利用缓冲存储器400的部分和属于该缓冲存储器400的影子存储器401来构造并且应当进行交替的访问,作为LHSH和LDSH的配对物设置有另外两个现在与影子存储器401有关的数据标识区域。寄存器404的位16和17中的这些数据标识用LHSS(Load Header Section Shadow)和LDSS(Load Data Section Shadow)来表示。因此通过这些数据标识来对有关影子存储器401的传输过程进行控制。
如果现在在输入屏蔽寄存器404的位2中设置开始位或开始标识STXRH(Set Transmission X Request Host),那么在进行了各个要传输的配置数据和/或真正的数据的传输之后在消息存储器300中为相应的消息对象自动设置发送请求(Transmission Request)。也即,通过该开始标识STXRH来控制、尤其是开始要传输的消息对象的自动发送。
对于影子存储器来说与此相应的配对物是开始标识STXRS(SetTransmission X Request Shadow),该开始标识示例性地被包含在输入标记寄存器404的位18中,并且这里在最简单的情况下也正好作为1位来构造。STXRS的功能与STXRH的功能相类似,仅仅涉及影子存储器1。
如果主机CPU 102把消息标识、尤其是消息存储器300中消息对象的编号写入到输入请求寄存器403的位0至5中,也即写向IBRH,那么输入缓冲存储器201的子缓冲存储器400和所属的影子存储器401被交换或者主机CPU 102和消息存储器300对这两个子存储器400和401的相应访问被交换,如通过半圆形箭头来表示的,其中输入缓冲存储器201的数据应当被传输到该消息存储器300中。同时例如还开始至消息存储器300的数据传输。至消息存储器300的数据传输本身从影子存储器401开始进行。同时寄存器区域IBRH和IBRS被交换。同样将LHSH和LDSH与LHSS和LDSS相交换。同样将STXRH与STXRS交换。IBRS因此指示消息的标识、也即正从影子存储器401传输的消息对象的编号、或者作为最后的数据(KD和/或D)已经从影子存储器401收到哪些消息对象、也即消息存储器中的哪些区域。通过输入请求寄存器403的位31中的标识(这里又例如为1位)IBSYS(Input Buffer Busy Shadow)来指示是否恰好进行有影子存储器401参与的传输。因此例如在IBSYS=1时恰好从影子存储器传输,并且在IBSYS=0时正好没有传输。该位IBSYS例如通过写IBRH、也即寄存器403中的位0至5来设置,以便指示在影子存储器401和消息存储器300之间正进行传输。在至消息存储器300的该数据传输结束之后,IBSYS又被复位。
在正好从影子存储器401进行数据传输期间,主机CPU 102可以把下一要传输的消息写入到输入缓冲存储器或子缓冲存储器400中。借助例如在寄存器403的位15中的另一访问标识IBSYH(Input Buffer BusyHost)还可以把标识进一步细化。如果在影子存储器401和消息存储器300之间进行传输、也即IBSYS=1期间主机CPU 102正好写IBRH、也即寄存器403的位0至5,那么在输入请求寄存器403中设置IBSYH。一旦所进行的传输结束,那么就开始所请求的传输(通过STXRH的请求,参见上文)并且位IBSYH被复位。该位IBSYS在整个时间期间保持被设置,以便指示向消息存储器传输数据。所有实施例的所有所使用的位在此也可以被构造为具有多于1位的标识。1位解决方案由于存储器和处理经济的原因而是有利的。
这样所描述的机制允许主机CPU 102连续地传输位于消息存储器中的由报头区域HB和数据区域DB组成的消息对象中的数据,其前提是主机CPU 102对输入缓冲存储器的访问速度小于或等于FlexRay-IP模块、也即通信组件100的内部数据传输速率。
在图7、8和9中现在更详细解释由主机CPU或用户CPU 102通过输出缓冲存储器202对消息存储器300的读访问。为此图7再次示出通信组件100,其中出于清楚起见的原因这里也仅仅示出了通信组件100的相关的部分。这一方面是负责过程控制的消息管理器200以及两个控制寄存器703和704,这两个控制寄存器可以如所示的那样被安置在通信组件100中在消息管理器200之外,但也可以被包含在消息管理器200本身之中。在此,703是输出请求寄存器(Output Buffer Command RequestRegister),而704是输出屏蔽寄存器(Output Buffer Command MaskRegister)。主机CPU 102对消息存储器300的读访问因此通过中间连接的输出缓冲存储器202(Output Buffer)来实现。该输出缓冲存储器202现在同样被设计为分布式的或双重的,并且更确切地说被设计为子缓冲存储器701和属于该子缓冲存储器的影子存储器700。因此这里也可以如下所述进行主机CPU 102对消息存储器300的消息或消息对象或数据的连续访问,并且因此现在在从消息存储器到主机的相反方向上保证数据完整性和加速的传输。通过输出请求寄存器703并通过输入屏蔽寄存器704来进行对访问的控制。这里示例性地针对32位的宽度在寄存器703中也用数字0至31来表示703中的各个位。同样的内容适用于寄存器704以及704中的位0至31。
根据本发明,现在寄存器703的位0至5、8和9、15和16至21示例性地就读访问的过程控制而言获得特殊的功能。这样在寄存器703的位0至5中可以录入作为消息标识的标识OBRS(Output Buffer RequestShadow)。同样在寄存器703的位16至21中也可以录入标识OBRH(OutputBuffer Request Host)。在寄存器703的位15中可以录入OBSYS(OutputBuffer Busy Shadow)来作为访问标识。输出屏蔽寄存器704的位0和1也被标记,其中在位0和1中用RDSS(Read Data Section Shadow)和RHSS(Read Header Section Host)录入作为数据标识的其它标识。其它数据标识例如在位16和17中用RDSH(Read Data Section Host)和RHSH(Read Header Section Host)来设置。这些数据标识在此也示例性地以最简单的形式、也即分别作为1位来构造。在寄存器703的位9中录入开始标识REQ。此外还设置有转换标识VIEW,该转换标识示例性地被录入在寄存器703的位8中。
主机CPU 102通过以下方式请求消息存储器300中的消息对象的数据,即它把所期望的消息的标识、也即尤其是所期望的消息对象的编号写向OBRS,也即写入寄存器703的位0至5。在此情况下该主机CPU也可以如在相反方向上那样仅仅从报头区域中读取消息的状态或配置数据和报头数据KD或者仅仅从数据区域中读取消息的真正要传输的数据D或者也可以两者都读取。应当从报头区域和/或数据区域中传输数据的哪一部分在此情况下与相反方向可比较地通过RHSS和RDSS来确定。也即RHSS说明是否应当读取报头数据,而RDSS说明是否应当读取真正的数据。
开始标识用于开始从消息存储器至影子存储器700的传输。也即如果如在最简单的情况下那样使用1位来作为标识,那么通过在输出请求寄存器703的位9中设置位REQ来开始从消息存储器300至影子存储器700的传输。正进行的传输又通过访问标识、这里又在最简单的情况下通过寄存器703中的位OBSYS来表示。为了避免冲突,有利的是,只有当OBSYS没有被设置、也即正好没有进行传输时,才可以设置位REQ。在此,于是也进行消息存储器300和影子存储器700之间的消息传输。真正的过程现在可以一方面与如按照图4、5和6所述的相反方向可比较地来控制(互补的寄存器布局)和进行,或者在一个变型方案中通过附加的标识、也即寄存器703的位8中的转换标识VIEW来控制和进行。也即在传输结束之后,位OBSYS被复位,并通过在输出请求寄存器703中设置位VIEW来交换子缓冲存储器701和所属的影子存储器700或者交换对其的访问,并且主机CPU 102现在可以从子缓冲存储器701中读出向消息存储器请求的消息对象、也即相应的消息。在此情况下,这里也与图4至6中的相反传输方向可比较地将寄存器单元OBRS和OBRH相交换。作为保护机制这里也可以规定只有当OBSYS没有被设置、也即没有发生正进行的传输时,才可以设置位VIEW。
因此主机CPU 102对消息存储器300的读访问通过中间连接的输出缓冲存储器202来进行。该输出缓冲存储器与输入缓冲存储器一样是双重地或分两部分来设计,以便保证主机CPU 102对存放在消息存储器300中的消息对象的连续访问。这里也获得高数据完整性和加速传输的优点。
通过采用上述的输入和输出缓冲器来保证,尽管存在模块内部的等待时间,但主机CPU能够不中断地访问消息存储器。
为了保证这种数据完整性,数据传输、尤其是转发在通信组件100中通过消息管理器200(Message Handler MHD)来进行。为此在图10中示出了该消息管理器200。该消息管理器在其功能方面可以通过多个状态机或状态自动机、也即有限自动机、所谓的有限状态机(FSM)来表示。在此设置有至少三个状态机,并且在一个特殊的实施方案中设置有四个有限状态机。第一有限状态机是IOBF-FSM并用501来表示(Input/Output Buffer State Maschine)。该IOBF-FSM也可以按照就输入缓冲存储器或输出缓冲存储器而言的传输方向被划分为两个有限状态机、即IBF-FSM(Input Buffer FSM)和OBF-FSM(Output Buffer FSM),其中最多五个状态自动机(IBF-FSM、OBF-FSM、TBF1-FSM、TBF2-FSM、AFSM)是可设想的。但优选地应设置一个共同的IOBF-FSM。这里在优选的实施例的过程中,至少第二有限状态机被划分为两个模块502和503,并用于与存储器205和206有关的两个信道A和B,如关于图2所描述的。在此可以设置一个有限状态机,以便用于两个信道A和B,或者如在优选形式中那样用于信道A的有限状态机TBF1-FSM用502来表示(临时缓冲1(206,RAM A)状态机),而用于信道B的TBF2-FSM用503来表示(临时缓冲2(205,RAM B)状态机)。
在优选的实施例中,仲裁器有限状态机、所谓的AFSM用于控制三个有限状态机501-503的访问,其中该仲裁器有限状态机用500来表示。数据(KD和/或D)在由诸如VCO(压控振荡器)、振荡石英等等的时钟装置所产生的或由该时钟装置所匹配的时钟中在通信组件中被传输。该时钟T在此可以在组件中产生,或者从外部、例如作为总线时钟来预先给定。该仲裁器有限状态机AFSM 500交替地、尤其是分别在时钟周期T内向三个有限状态机501-503之一提供对消息存储器的访问。也即,可供使用的时间根据各个状态自动机501、502、503的访问请求而分配给这些请求的状态自动机。如果由仅仅一个有限状态机进行访问请求,那么该有限状态机获得100%的访问时间,也即所有的时钟T。如果由两个状态自动进行访问请求,那么每个有限状态机获得50%的访问时间。最后,如果由三个状态自动机进行访问请求,那么每个有限状态机获得1/3的访问时间。由此,分别可供使用的带宽被最佳地利用。
用501、也即IOBF-FSM来表示的第一有限状态机在需要时执行以下动作-从输入缓冲存储器201到消息存储器300中的所选择的消息对象的数据传输。
-从消息存储器300中的所选择的消息对象到输出缓冲存储器202的数据传输。
用于信道A的状态机502、也即TBF1FSM执行以下动作-从消息存储器300中的所选择的消息对象到信道A的缓冲存储器206的数据传输。
-从缓冲存储器206到消息存储器300中的所选择的消息对象的数据传输。
-在消息存储器中搜索合适的消息对象,其中在接收时在接收过滤的范围内搜索用于存储在信道A上所接收的消息的消息对象(接收缓冲器),并且在发送时搜索下一个要在信道A上发送的消息对象(发送缓冲器)。
TBF2-FSM、也即模块503中的用于信道B的有限状态机的动作与此相类似。该TBF2-FSM执行从消息存储器300中的所选择的消息对象到信道B的缓冲存储器205的数据传输,并执行从缓冲存储器205到消息存储器300中的所选择的消息对象的数据传输。搜索消息存储器中的合适的消息对象的功能也与TBF1-FSM相类似,其中在接收时在接收过滤的范围内搜索用于存储在信道B上所接收的消息的消息对象(接收缓冲器),并且在发送时搜索下一个要在信道B上发送的消息或消息对象(发送缓冲器)。
现在在图11中再次示出了该过程和传输路径。所述三个状态机501-503控制各个部分之间的相应数据传输。在此又用102来表示主机CPU,用201来表示输入缓冲存储器,用202来表示输出缓冲存储器。用300来表示消息存储器,信道A和信道B的两个缓冲存储器用206和205来表示。接口单元207和208同样被示出。用501来表示的第一状态自动机IOBF-FSM控制数据传输Z1A和Z1B,也即从输入缓冲存储器201至消息存储器300和从消息存储器300至输出缓冲存储器202的数据传输。该数据传输在此通过具有例如32位的字宽的数据总线来进行,其中也可以实现任何其它的位数。同样的内容适用于消息存储器和缓冲存储器206之间的数据传输。该数据传输通过TBF1-FSM、也即用于信道A的状态机502来控制。消息存储器300和缓冲存储器205之间的传输Z3通过状态自动机TBF2-FSM、也即503来控制。在此,该数据传输也通过具有例如32位的字宽的数据总线来进行,其中这里也可以实现任何其它的位数。完整的消息对象通过所述传输路径的传输通常需要多个时钟周期T。因此通过仲裁器、也即AFSM 500来进行就时钟周期T而言的传输时间的分配。在图11中因此示出了由消息管理器控制的存储器件之间的数据路径。为了保证存储在消息存储器中的消息对象的数据完整性,应当有利地在同一时间仅在所示路径、也即Z1A和Z1B以及Z2和Z3之一上同时交换数据。
在图12中借助例子示出,可供使用的系统时钟T如何由仲裁器、也即AFSM 500分配给三个请求的状态自动机。在阶段1中,由状态自动机501和状态自动机502进行访问请求,也即整个时间分别二等分地被分配给两个请求的状态自动机。就阶段1中的时钟周期而言这意味着状态自动机501在时钟周期T1和T3中获得访问,而状态自动机502在时钟周期T2和T4中获得访问。在阶段2中,仅仅由状态机501进行访问,使得所有三个时钟周期、也即从T5至T7的100%的访问时间都分摊到IOBF-FSM上。在阶段3中,所有三个状态自动机501至503都进行访问请求,使得进行总访问时间的三等分。于是该仲裁器AFSM例如如此分配访问时间,使得在时钟周期T8和T11中有限状态机501获得访问,在时钟周期T9和T12中有限状态机502获得访问,以及在时钟周期T10和T13中有限状态机503获得访问。最后,在阶段4中,进行两个状态自动机502和503对通信组件的两个信道A和B的访问,使得时钟周期T14和T16的访问被分配给有限状态机502,而T15和T17中的访问被分配给有限状态机503。
仲裁器状态自动机AFSM 500因此负责,针对三个状态自动机中有多于一个的状态自动机提出访问消息存储器300的请求的情况逐时钟地并且交替地将访问分配给请求的状态机。这种处理方法保证存放在消息存储器中的消息对象的完整性、也即数据完整性。如果例如主机CPU 102想在所接收的消息正好被写入消息对象期间通过输出缓冲存储器202读出该数据对象,那么根据哪个请求首先开始来读出老的状态或新的状态,而不会使消息存储器中的消息对象的访问本身产生冲突。
所述方法能够使主机CPU在持续运行中读或写消息存储器中的每个任意的消息对象,而所选择的消息对象在主机CPU的访问的持续时间内不会由于参与FlexRay总线的两个信道上的数据交换而被阻断(BufferLocking)。同时通过访问的逐时钟的交替保证存放在消息存储器中的数据的完整性,并且还通过整个带宽的充分利用来提高传输速度。
权利要求
1.具有消息存储器(300)的通信组件(100)的消息管理器(200),在所述消息存储器(300)中在访问时数据被输入或输出,其中所述消息存储器(300)与第一缓冲存储器装置(205,206)和第二缓冲存储器装置(201,202)相连接,并且对数据的访问通过所述第一或所述第二缓冲存储器装置来进行,其特征在于,在所述消息管理器(200)中,-设置有至少一个第一有限状态机(502,503),该第一有限状态机控制通过所述第一缓冲存储器装置(205,206)对所述消息存储器的访问,并且至少-设置有第二有限状态机(501),该第二有限状态机控制通过所述第二缓冲存储器装置(201,202)的访问,其中所述至少一个第一有限状态机和所述第二有限状态机提出访问请求,并且-设置有第三有限状态机,该第三有限状态机根据所述至少一个第一有限状态机和所述第二有限状态机的访问请求给所述至少一个第一有限状态机和所述第二有限状态机分配对所述消息存储器的访问。
2.根据权利要求
1所述的消息管理器(200),其特征在于,所述数据通过所述第一缓冲存储器装置(205,206)在分别具有两个数据方向的两个数据路径中被传输,并且所述第一缓冲存储器装置(205,206)包含用于第一数据路径的第一缓冲存储器(206)和用于第二数据路径的第二缓冲存储器(205),并且每个数据路径分别设置有第一有限状态机(502,503),其中两个第一有限状态机中的每一个都控制通过各一个缓冲存储器对所述消息存储器的访问。
3.根据权利要求
1或2所述的消息管理器(200),其特征在于,设置有时钟装置,通过该时钟装置在可预先给定的时钟周期(T)中传输数据,并且所述第三有限状态机(500)根据每个第一有限状态机(502,503)和所述第二有限状态机(501)的访问请求给每个第一有限状态机(502,503)和所述第二有限状态机(501)依次分配时钟周期(T1-T17)。
4.根据权利要求
1或2所述的消息管理器(200),其特征在于,整个访问时间由所述第三有限状态机(500)根据同时的访问请求的数量均匀地对应于该数量进行分配,其中针对每个有限状态机总是同时仅允许一个访问请求。
5.具有根据权利要求
1所述的消息管理器的通信组件。
6.用于通过消息管理器(200)来控制对通信组件的消息存储器(300)的数据访问的方法,其中在访问时数据被输入到该消息存储器(300)中或被输出,其中所述消息存储器与第一缓冲存储器装置和第二缓冲存储器装置相连接,并且对所述数据的访问通过所述第一或所述第二缓冲存储器装置来进行,其特征在于,在所述消息管理器中,-设置有至少一个第一有限状态机,该第一有限状态机控制通过作为第一访问路径的所述第一缓冲存储器装置对所述消息存储器的访问,并且-设置有第二有限状态机,该第二有限状态机控制通过作为第二访问路径的所述第二缓冲存储器装置的访问,其中在同一时间仅在所述访问路径之一上访问所述数据。
7.根据权利要求
6所述的方法,其特征在于,所述数据通过所述第一缓冲存储器装置在分别具有两个数据方向的两个数据路径中被传输,并且所述第一缓冲存储器装置包含用于第一数据路径的第一缓冲存储器和用于第二数据路径的第二缓冲存储器,并且每个数据路径分别设置有第一有限状态机,其中两个第一有限状态机中的每一个都控制通过各一个缓冲存储器对所述消息存储器的访问,由此产生第三访问路径,并且这里在同一时间也仅在所述访问路径之一上访问所述数据。
专利摘要
用于控制对消息存储器的数据的访问的方法和具有在访问时数据被输入或输出的消息存储器(300)的通信组件(100)的消息管理器(200),其中所述消息存储器(300)与第一缓冲存储器装置(205,206)和第二缓冲存储器装置(201,202)相连接,并且对数据的访问通过所述第一或所述第二缓冲存储器装置来进行,其中在所述消息管理器(200)中设置有至少一个第一有限状态机(502,503),该第一有限状态机控制通过所述第一缓冲存储器装置(205,206)对消息存储器的访问,并且至少设置有第二有限状态机(501),该第二有限状态机控制通过所述第二缓冲存储器装置(201,202)的访问,其中所述至少一个第一有限状态机和所述第二有限状态机提出访问请求,并且设置有第三有限状态机,该第三有限状态机根据所述至少一个第一和第二有限状态机的访问请求给所述至少一个第一和第二有限状态机分配对消息存储器的访问。
文档编号G06F13/16GK1993687SQ20058002637
公开日2007年7月4日 申请日期2005年6月29日
发明者F·哈特维希, C·霍尔斯特, F·拜勒, M·伊勒 申请人:罗伯特·博世有限公司导出引文BiBTeX, EndNote, RefMan