一种总线数据解码及存储的结构和方法与流程

    专利查询2022-09-01  78



    1.本发明属于集成电路设计领域,具体属于一种总线数据解码及存储的结构和方法。


    背景技术:

    2.在串行总线的设计中,如何对总线进行解码和数据存储是重要的设计问题之一。在总线接收过程中,由于受到各类扰动以及时钟精度的影响,导致对flexray总线的解码存在较大的困难,主要面临两方面的问题,一是高频时钟对低频时钟的采样问题,flexray总线的系统时钟频率固定是80mhz,波特率通常可以配置为10mbps、5mbps和2.5mbps,如何使用高频时钟对低频总线进行采样是一个重要的问题。二是数据的检验和存储问题,即如何对数据进行校验,并将其保存至配置的空间中,也是一个重要的问题。
    3.现有文献中,仅有部分文献对总线的采样进行了简单的描述,而没有对数据解码以及存储进行说明。


    技术实现要素:

    4.为了解决现有技术中存在的问题,本发明提供一种总线数据的解码及存储方法,解决了flexray总线接收过程中的数据解码、数据采样和数据校验问题。
    5.为实现上述目的,本发明提供如下技术方案:
    6.一种总线数据解码及存储的结构,包括如下模块:总线滤波模块、总线采样模块、数据解码模块、数据采集模块、数据校验模块和数据存储模块;
    7.所述总线滤波模块用于对输入的接收总线rx进行滤波;
    8.所述总线采样模块用于对滤波后的总线进行采样;
    9.所述数据解码模块用于对采样模块输出的信号进行解码;
    10.所述数据采集模块用于对总线采样模块输出的信号进行数据采集,按8位输出数据;
    11.所述数据校验模块用于对数据进行校验;
    12.所述数据存储模块用于对数据进行存储。
    13.优选的,所述总线滤波模块,采用两级寄存器对总线rx进行滤波,并输出滤波后的信号rx_flt。
    14.优选的,所述总线采样模块包括移位寄存器和计数器,移位寄存器用于当时钟上升沿来临时,将rx_flt的值存储至移位寄存器的最后一位;
    15.计数器用于对移位寄存器中的0和1进行计数;如果移位寄存器中0的个数大于2,则采样值rx_sp为0;如果移位寄存器中1的数量大于2,则采样值rx_sp为1。
    16.优选的,所述数据解码模块用于识别rx_sp中的tss标记和符号帧,数据解码模块的状态机为idle、s_tss,s_bss和s_symbol组成。
    17.优选的,数据采集模块对rx_sp进行数据采集,输出位采样信号bitstrobe、8位采
    集数据data以及位采样完成信号byte_finish。
    18.优选的,所述数据校验模块包括状态机控制模块、帧头crc校验模块和数据crc校验模块;
    19.所述状态机控制模块用于控制状态机的跳转并生成校验用的控制信号;
    20.所述帧头crc校验模块用于校验接收数据中的帧头校验位;
    21.所述数据crc校验模块用于校验接收数据中的数据校验位。
    22.优选的,所述状态机控制模块由ilde、s_wait_tss、s_header1、s_header2、s_header3、s_header4、s_header5、s_data、crc1、crc2、crc3状态组成。
    23.优选的,所述帧头crc校验模块循环使用1位的数据计算11位的校验元。
    24.优选的,所述数据crc校验模块循环使用8位的数据计算24位的校验元。
    25.一种总线数据解码及存储的方法,包括以下过程,
    26.接收总线rx经过总线滤波模块进行滤波;滤波后的总线进行总线采样模块进行采样;总线采样模块采样后输出的信号经过数据解码模块进行解码;
    27.解码后的信号经过数据采集模块进行数据采集,按8位输出数据;输出数据经过总线校验模块进行校验;根据校验结果和数据,将数据写入配置的空间中。
    28.与现有技术相比,本发明具有以下有益的技术效果:
    29.本发明提供了一种总线数据解码及存储的结构,通过对总线滤波模块消除了总线上的毛刺和干扰,通过总线采样模块实现了高频时钟对低频数据的采样,通过数据采集模块实现了对数据的串并转换,通过数据解码模块实现了对总线接收帧的识别,通过数据校验模块实现了帧头crc的校验和数据crc的双重校验,在数据校验过程中,利用总线的串行特性,使用较少逻辑实现了数据的校验;通过存储模块,在帧头crc和数据crc校验均正确的情况下,才会对总线数据进行存储,提高了数据存储的安全性和可靠性。实现了对flexray接收总线的数据采样和数据解码;实现了对采样后数据的校验和存储。
    附图说明
    30.图1为本发明一种总线数据解码及存储的结构示意图;
    31.图2为本发明总线滤波模块的结构示意图;
    32.图3为本发明数据解码模块状态机示意图;
    33.图4为本发明状态机控制模块状态机示意图;
    34.图5为本发明帧头crc校验模块的流程图;
    35.图6为本发明数据crc校验模块的流程图。
    具体实施方式
    36.下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
    37.图1是本发明的一种总线数据解码及存储的结构,包括如下模块:总线滤波模块、总线采样模块、数据解码模块、数据采样模块。数据校验模块和数据存储模块组成。
    38.总线滤波模块对输入总线rx总线进行滤波;
    39.总线采样模块对滤波后的总线进行采样;
    40.数据解码模块对采样模块输出的信号进行解码,
    41.数据采集模块对总线采样模块输出的信号进行数据采集,按8位输出数据。
    42.总线校验模块对数据进行校验。
    43.数据存储模块,根据校验结果和数据,将数据写入配置的空间中。
    44.总线滤波模块,
    45.采用两级寄存器对输入总线rx进行滤波。
    46.图2是总线滤波模块结构示意图。输入为rx,输出为rx_flt;
    47.总线采样模块:
    48.对滤波后的总线值rx_flt进行采样,生成采样值rx_sp;
    49.设置一个5位的移位寄存器,当时钟上升沿来临时,将rx_flt的值存储至移位寄存器的最后一位。
    50.同时设置2个计数器,分别对移位寄存器中的0和1进行计数。
    51.如果移位寄存器中0的个数大于2,则采样值rx_sp为0;
    52.如果移位寄存器中1的数量大于2,则采样值rx_sp为1;
    53.数据解码模块用于识别rx_sp中的tss标记和符号帧。
    54.其状态机为idle、s_tss,s_bss和s_symbol组成。
    55.s_idle状态:
    56.初始状态为idle:当rx_sp为0时,进入s_tss状态;
    57.s_tss状态:
    58.如果bitstrobe为1,且bitvalue为1,则tss_symbol为1,并进入s_bss状态;
    59.如果bitstrobe为1,且bitvalue为0,且持续时间大于gdtsstransmitter,则进入s_symbol状态;
    60.s_bss状态:
    61.如果bitstrobe为1,且bitvalue为1,且持续时间大于3,则进入s_idle状态;
    62.s_symbol状态:
    63.如果bitstrobe为1,且bitvalue为0,且持续时间大于cdcasrxlowmin,则表示收到符号帧;否则进入idle状态。
    64.数据采集模块对rx_sp进行数据采集,输出位采样信号bitstrobe、8位采集数据data以及位采样完成信号byte_finish。(这里采集模块的输出bitstrobe会作为数据解码模块的输入)
    65.该模块中首先设置2个计数器x8bitcounter和bitcounter。
    66.x8bitcounter用于对采样时钟进行计数,范围是1~8,初始值为1。
    67.bitcounter用于对比特位进行计数,范围是0~11;初始值为0;
    68.当时钟上升沿到来时,x8bitcounter计数器加1;当x8bitcounter为4时,生成位采样信号bitstrobe;同时将rx_sp的值保存至bitvalue中;
    69.当tss符号帧有效时,将bitcounter设置为1;x8bitcounter设置为2;
    70.当x8bitcounter为5时,bitcounter加1操作;同时将rx_sp的值赋值给移位寄存器的末位。
    71.当bitcounter为10时,单次采样完成信号byte_finish为1,同时将10移位寄存器
    的低8位作为数据data输出;
    72.数据校验模块由三个模块组成,分别是状态机控制模块、帧头crc校验模块和数据crc校验模块。
    73.状态机控制模块控制状态机的跳转并生成校验用的控制信号,主要由ilde、s_wait_tss、s_header1、s_header2、s_header3、s_header4、s_header5、s_data、crc1、crc2、crc3状态组成。
    74.ilde:状态机初始化为idle,data_counter为0;当检测到rx_sp为低时,进入s_wait_tss状态;
    75.s_wait_tss状态:如果检测到tss_symbol,则跳转至s_header1状态;
    76.s_header1状态:如果检测到byte_finish信号,则将data保存至headerbyte1当中,同时产生data_valid信号;然后状态机跳入s_header2状态;
    77.s_header2状态:如果检测到byte_finish信号,则将data保存至headerbyte2当中;同时产生data_valid信号;然后状态机跳入s_header3状态;
    78.s_header3状态:如果检测到byte_finish信号,则将data保存至headerbyte3当中;同时产生data_valid信号;然后状态机跳入s_header3状态;
    79.s_header4状态:如果检测到byte_finish信号,则将data保存至headerbyte4当中;同时产生data_valid信号和header_valid信号;然后状态机跳入s_header4状态;
    80.s_header5状态:如果检测到byte_finish信号,则将data保存至headerbyte5当中;同时产生data_valid信号;然后状态机跳入s_data状态;
    81.s_data状态;如果检测到byte_finish信号,则将data_counter加1,同时产生data_valid信号;同时将data保存至data_pl[7:0][n]中,其中n从0开始,每检测到byte_finish信号,n进行加1;
    [0082]
    如果data_counter的值与headerbyte3的[7:1]*2相等,状态机跳转至crc1中;
    [0083]
    crc1状态:如果byte_finish信号有效,将data保存至trailerbyte1中,状态机跳入crc2中;
    [0084]
    crc2:如果byte_finish信号有效,将data保存至trailerbyte2中,跳入crc3中;
    [0085]
    crc3:如果byte_finish信号有效,将data保存至trailerbyte3中,将trailercrc_received信号置为有效;状态机跳入idle中;
    [0086]
    帧头crc校验模块:该模块循环使用1位的数据计算11位的校验元。当检测到header_valid信号时,将headerbyte1[4:0]、headerbyte2、headerbyte3[7:1]拼接为一个20位的数据header_data[19:0],同时设置一个初始值为19的计数器cnt。初始校验元为0x01a,每当有时钟上升沿时,取header_data[cnt]作为输入,计算帧头crc,生成header_crc[10:0],然后cnt进行减1操作。
    [0087]
    当cnt为0时,表示已经完成帧头crc的计算,此时用header_crc与headerbyte3[0]&headerbyte4&data[7:6]进行比较,则表示帧头校验成功,此时header_received为1,否则帧头校验失败,header_received为0。
    [0088]
    数据crc校验模块:该模块循环使用8位的数据计算24位的校验元。其中通道a的初始校验元为0xfedcba,通道b的初始校验元为0xabcdef。每检测到data_valid信号时,将当前数据data作为输入,计算数据crc,生成frame_crc[23:0]。
    [0089]
    当检测到trailercrc_received时,比较数据crc校验模块与trailerbyte1&trailerbyte2&trailerbyte3的结果,如果相等,则表示数据校验成功,此时frame_received为1,否则数据校验失败,frame_received为0。
    [0090]
    本发明采用如下的方法计算crc,其中f_pre是前一个周期header_crc的值。初始值为0x01a。
    [0091]
    数据存储模块:
    [0092]
    数据存储模块将解析的结果进行保存。
    [0093]
    首先判断当前时隙是否配置了接收,然后判断header_received和frame_received是否有效,如果均有效,则首先存储header1,即5位帧头 fid[10:8],然后存储header2,即fid[7:0];然后存储header3,即7位pl值和headercrc[10]位,然后存储header5,即headercrc[9:2],然后存储header5,即headercrc[1:0]和6位的周期,然后存储数据,即将取data_pl[n][7:0]的数据,进行存储。

    技术特征:
    1.一种总线数据解码及存储的结构,其特征在于,包括如下模块:总线滤波模块、总线采样模块、数据解码模块、数据采集模块、数据校验模块和数据存储模块;所述总线滤波模块用于对输入的接收总线rx进行滤波;所述总线采样模块用于对滤波后的总线进行采样;所述数据解码模块用于对采样模块输出的信号进行解码;所述数据采集模块用于对总线采样模块输出的信号进行数据采集,按8位输出数据;所述数据校验模块用于对数据进行校验;所述数据存储模块用于对数据进行存储。2.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述总线滤波模块,采用两级寄存器对总线rx进行滤波,并输出滤波后的信号rx_flt。3.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述总线采样模块包括移位寄存器和计数器,移位寄存器用于当时钟上升沿来临时,将rx_flt的值存储至移位寄存器的最后一位;计数器用于对移位寄存器中的0和1进行计数;如果移位寄存器中0的个数大于2,则采样值rx_sp为0;如果移位寄存器中1的数量大于2,则采样值rx_sp为1。4.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述数据解码模块用于识别rx_sp中的tss标记和符号帧,数据解码模块的状态机为idle、s_tss,s_bss和s_symbol组成。5.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,数据采集模块对rx_sp进行数据采集,输出位采样信号bitstrobe、8位采集数据data以及位采样完成信号byte_finish。6.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述数据校验模块包括状态机控制模块、帧头crc校验模块和数据crc校验模块;所述状态机控制模块用于控制状态机的跳转并生成校验用的控制信号;所述帧头crc校验模块用于校验接收数据中的帧头校验位;所述数据crc校验模块用于校验接收数据中的数据校验位。7.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述状态机控制模块由ilde、s_wait_tss、s_header1、s_header2、s_header3、s_header4、s_header5、s_data、crc1、crc2、crc3状态组成。8.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述帧头crc校验模块循环使用1位的数据计算11位的校验元。9.根据权利要求1所述的一种总线数据解码及存储的结构,其特征在于,所述数据crc校验模块循环使用8位的数据计算24位的校验元。10.一种总线数据解码及存储的方法,其特征在于,包括以下过程,接收总线rx经过总线滤波模块进行滤波;滤波后的总线进行总线采样模块进行采样;总线采样模块采样后输出的信号经过数据解码模块进行解码;解码后的信号经过数据采集模块进行数据采集,按8位输出数据;输出数据经过总线校验模块进行校验;根据校验结果和数据,将数据写入配置的空间中。

    技术总结
    本发明提供一种总线数据解码及存储的结构和方法,包括如下模块:总线滤波模块、总线采样模块、数据解码模块、数据采集模块、数据校验模块和数据存储模块;总线滤波模块用于对输入的接收总线RX进行滤波;总线采样模块用于对滤波后的总线进行采样;数据解码模块用于对采样模块输出的信号进行解码;数据采集模块用于对总线采样模块输出的信号进行数据采集,按8位输出数据;数据校验模块用于对数据进行校验;数据存储模块用于对数据进行存储。解决了FlexRay总线接收过程中的数据解码、数据采样和数据校验问题。和数据校验问题。和数据校验问题。


    技术研发人员:张斌 娄冕 崔媛媛 李磊 杨靓 黄巾 许辉勇 刘晨 徐晚成
    受保护的技术使用者:西安微电子技术研究所
    技术研发日:2022.02.16
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-12110.html

    最新回复(0)