一种总线的宏节拍和周期生成方法技术

技术编号:31984240 阅读:17 留言:0更新日期:2022-01-20 02:02
本发明专利技术公开了一种总线的宏节拍和周期生成方法,本发明专利技术能够生成FlexRay总线中基础的时间uT、MT和时钟周期,并将rate修正值和offset修正值应用到周期长度的修正之中,为FlexRay总线数据的接收和发送提供了时间依据。本发明专利技术针对FlexRay总线中的主导冷启动节点和非主导冷启动节点,均可以生成总线的uT、MT和周期,增强了应用的广泛性;本发明专利技术针对单通道和双通道,均可以产生uT、MT和周期;本发明专利技术将周期分为奇数周期和偶数周期,将rate修正值应用于全周期中;将offset修正值应用于奇数周期中,有效解决了系统纠正值的应用问题。有效解决了系统纠正值的应用问题。有效解决了系统纠正值的应用问题。

【技术实现步骤摘要】
一种总线的宏节拍和周期生成方法


[0001]本专利技术属于集成电路设计领域,具体涉及一种总线的宏节拍和周期生成方法。

技术介绍

[0002]在现有总线系统中,时间触发类总线由于其基于时分多址的控制思想,使同一网络内的所有节点均可以公平的使用总线,解决了基于事件触发类总线的带来的节点对总线的竞争问题,越来越多的应用到工业领域及国防领域。
[0003]FlexRay总线作为时间触发类总线的典型代表,由于其双通道冗余传输的特点以及将时间触发和事件触发相结合的工作方式,逐渐从车载领域蔓延到其他工业和国防领域。
[0004]FlexRay总线在工作时,消息均在确定的时间点进行发送。如何进行时间的产生并保持其稳定,是FlexRay总线设计当中面临的首要问题。现有文献中,没有考虑总线的同步状态,也并没有考虑纠正值的应用问题。

技术实现思路

[0005]本专利技术的目的在于解决FlexRay总线的时间生成问题,提供一种总线的宏节拍和周期生成方法,通过对总线初始状态的判断,实现了不同条件下宏节拍和周期的生成,为FlexRay总线的数据发送和数据接收提供了时间依据,可以使数据的接收和发送均在有效且受控的时间内进行。
[0006]为了达到上述目的,本专利技术包括以下步骤:
[0007]S1,初始化,配置总线的协议参数,完成后进入initial状态;
[0008]S2,检测通道A和通道B接收端总线的状态,如果通道A或者通道B总线空闲且该空闲时间持续pdListenTimeout时,则执行S3的coldstart_leading状态;如果通道A或者通道B收到同步帧时并且该帧头部位的周期数为偶数时,则执行S4的coldstart_following1状态;否则,保持在initial状态;
[0009]S3,判断节点是否配置了启动同步帧pKeySlotID,并且是否允许进行启动操作,如果满足,则标记leading为1,并执行S6的para_init状态;如果不满足,则返回initial状态;
[0010]S4,将计数器ut_temp初始化值为0,计数器cnt1和计数器cnt2初始化分别为1,对80MHz的时钟进行计数;
[0011]当计数器cnt1与gdSampleClockPeriod相等时且计数器cnt2与pSamplesPerMicrotick相等时,计数器ut_temp的值进行加1操作;同时判断通道A或者通道B上是否收到第二帧同步帧,如果收到同步帧,则执行S5的coldstart_following2状态;如果没有收到同步帧,则保持当前状态;
[0012]S5,如果计数器ut_temp小于周期uT个数pMicroPerCycle与pdMaxDrift之和,并且计数器ut_temp大于周期uT个数pMicroPerCycle与pdMaxDrift之差时,则标记following为1,将接收到的同步帧的帧ID保存至zID中,将帧头中的周期保存至zCC中,并执行S6的para_
init状态;否则,返回initial中;
[0013]S6,进行变量初始化,对leading和following进行判断:
[0014]如果following为1,则MT初始化为(zID

1)*gdStaticSlot+pMacroInitialOffset,如果是通道A,则pMacroInitialOffset为pMacroInitialOffset[A];如果是通道B,则pMacroInitialOffset为pMacroInitialOffset[B];周期vCycleCounter初始化为zCC;同时跳转至S7的gen_ut状态中
[0015]S7,启动ut的计数,初始值为0,根据gdSampleClockPeriod和pSamplesPerMicrotick的配置,生成ut;
[0016]S8,将MT的值加1,并将zMicroDistribution赋值为zMicroDistribution与zMicroPeriod之和;
[0017]并对MT的值进行判断,当MT的值与gOffsetCorrectionStart的值相等时,且当前周期vCycleCounter为奇数时,则跳转至S10的app_dev状态中;
[0018]当MT的值与gMacroPercyle的值相等时,则机跳转至S9的gen_CC状态中;
[0019]S9,将zMicroPeriod赋值为pMicroPerCycle与rate修正值之和,然后判断周期vCycleCounter是否为63,如果相等,则vCycleCounter置为0;如果不相等,则vCycleCounter增加1;同时将ut和MT初始化为0;然后返回S7的gen_ut状态;
[0020]S10,将zMicroDistribution赋值为0;将zMicroPeriod赋值为pMicroPerCycle、rate修正值和offset修正值之和减去当前的uT计数值;将zMacroPeriod赋值为gMacroPercyle与gOffsetCorrectionStart之差,然后返回S7的gen_ut状态。
[0021]S1中,总线的协议参数包括周期uT个数pMicroPerCycle、周期MT个数gMacroPerCycle、采样周期gdSampleClockPeriod、采样次数pSamplesPerMicrotick、监听时间pdListenTimeout和波特率。
[0022]S1中,在波特率为10Mbps情况下,配置gdSampleClockPeriod为1;配置pSamplesPerMicrotick配置为2;
[0023]波特率为5Mbps情况下,配置gdSampleClockPeriod为2;配置pSamplesPerMicrotick配置为1;
[0024]波特率为2.5Mbps情况下,配置gdSampleClockPeriod为4;配置pSamplesPerMicrotick配置为1。
[0025]进入S5的coldstart_following2时,必须满足在同一通道上连续收到两个同步帧,否则保持在S4的coldstart_following1状态。
[0026]S6中,进行变量初始化时,将zMicroPeriod初始化为协议参数pMicroPerCycle,将zMacroPeriod初始化为协议参数gMacroPercyle。
[0027]S7中,将计数器cnt1_temp和计数器cnt2_temp,初始化分别为1,分别对80MHz的时钟进行计数,当计数器cnt1_temp与gdSampleClockPeriod相等且计数器cnt2_temp与pSamplesPerMicrotick相等时,ut的值进行加1操作;同时zMicroDistribution的值减去zMacroPeriod,当zMicroDistributio本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种总线的宏节拍和周期生成方法,其特征在于,包括以下步骤:S1,初始化,配置总线的协议参数,完成后进入initial状态;S2,检测通道A和通道B接收端总线的状态,如果通道A或者通道B总线空闲且该空闲时间持续pdListenTimeout时,则执行S3的coldstart_leading状态;如果通道A或者通道B收到同步帧时并且该帧头部位的周期数为偶数时,则执行S4的coldstart_following1状态;否则,保持在initial状态;S3,判断节点是否配置了启动同步帧pKeySlotID,并且是否允许进行启动操作,如果满足,则标记leading为1,并执行S6的para_init状态;如果不满足,则返回initial状态;S4,将计数器ut_temp初始化值为0,计数器cnt1和计数器cnt2初始化分别为1,对80MHz的时钟进行计数;当计数器cnt1与gdSampleClockPeriod相等时且计数器cnt2与pSamplesPerMicrotick相等时,计数器ut_temp的值进行加1操作;同时判断通道A或者通道B上是否收到第二帧同步帧,如果收到同步帧,则执行S5的coldstart_following2状态;如果没有收到同步帧,则保持当前状态;S5,如果计数器ut_temp小于周期uT个数pMicroPerCycle与pdMaxDrift之和,并且计数器ut_temp大于周期uT个数pMicroPerCycle与pdMaxDrift之差时,则标记following为1,将接收到的同步帧的帧ID保存至zID中,将帧头中的周期保存至zCC中,并执行S6的para_init状态;否则,返回initial中;S6,进行变量初始化,对leading和following进行判断:如果following为1,则MT初始化为(zID

1)*gdStaticSlot+pMacroInitialOffset,如果是通道A,则pMacroInitialOffset为pMacroInitialOffset[A];如果是通道B,则pMacroInitialOffset为pMacroInitialOffset[B];周期vCycleCounter初始化为zCC;同时跳转至S7的gen_ut状态中S7,启动ut的计数,初始值为0,根据gdSampleClockPeriod和pSamplesPerMicrotick的配置,生成ut;S8,将MT的值加1,并将zMicroDistribution赋值为zMicroDistribution与zMicroPeriod之和;并对MT的值进行判断,当MT的值与gOffsetCorrectionStart的值相等时,且当前周期vCycleCounter为奇数时,则跳转至S10的app_dev状态中;当MT的值与gMacroPercyle的...

【专利技术属性】
技术研发人员:张斌崔媛媛娄冕许辉勇杨靓黄巾王会敏徐晚成
申请(专利权)人:西安微电子技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1