一种环形总线数据报文crc校验字的动态修正方法

文档序号:7697776阅读:207来源:国知局
专利名称:一种环形总线数据报文crc校验字的动态修正方法
技术领域
本发明涉及现场总线领域,尤其涉及一种环形总线数据报文CRC校验 字的动态修正方法。
背景技术
高档数控系统内部控制器和伺服驱动器之间大都采用现场总线的数字 通信方式。如FANUC采用FSSB总线,SIMENS采用PR0FINET等现场总线。 和模拟量、脉冲串方式相比,现场总线具有较高的实时性和可靠性,能满 足数控机床高速、高精度的加工要求。
在这种总线式数控系统中,控制装置和伺服驱动器或I/O设备之间通 过现场总线联网形成网络。通常,经由现场总线进行的数据交换按照主从 原则执行。在总线网络中,主导总线上的数据传输的站点称为主站,如数 控系统中的控制装置。而被动执行数据传输的站点称为从站,即它们只被 允许应主站要求确认收到信号或者转发信号,如数控系统中的伺服驱动器 或I/O设备。
通常,为了避免布线复杂化,具有主从结构的现场总线网络采用环形 拓扑结构,所有总线用户都连接到一个环形传输路径,如图1所示。 然而网络通信中,由于信道传输特性不理想以及噪声、电磁干扰等问 题,导致传输信号发生畸变,从而产生误码。为了保证信息可靠传输,须 采取措施使数据接收方能实时检测出误码,并采取相应的补救措施。通常 的做法是在数据帧中设有一个帧校验码字段,并规定它所采用的帧校验码 编码方法。在数据传输时,发送端对数据帧中的数据码进行帧校验编码, 编码结果存放在帧校验码字段上,并随数据帧一起传送给接收端。接收端 接收到带有校验码的数据帧后,采用相同的编码方法对数据帧中的数据码进行编码,并与帧校验码字段上的校验码进行比较,以检验它们之间的一
致性。如果不一致,则说明传输有差错。循环冗余校验方法(Cyclical Redundancy Check,縮写为CRC)因为具有编码和解码方法简单,检错和纠 错能力强等特点,在网络通信中得到了广泛的应用。常用的CRC校验方法 有CRC-32、 CRC-16等。
在图1所示的环形结构中,主站将需要发送给各从站的数据信息按照 一定的规则打成一个如图2所示的数据包发送给环形传输路径,环形网络 中各从站在数据包经过时,无需接收全部数据包,而是在报文经过其节点 时只下载属于本站的编址数据,并将需要上传的数据插入至报文相应的位 置之中,并将数据包转发给与其相连的下一个站点,数据包最后由主站的 另一个端口接收。数据包从主站发出,依次不停留地通过各个从站,以近 似均匀的速度在网络中流动,从站在数据包经过时,与数据包进行实时的 数据交换,这种传输方式称为"飞读"。
然而,由于数据报文在经过各从站时,从站与数据报文交换了数据, 数据报文的数据内容发生了变化,因而,数据报文中的CRC校验字也必须 相应的进行修改,以确保后续站点能正确的对数据报文进行校验。这就要 求从站能根据数据报文的内容,对数据报文中的CRC校验字进行动态修正, 并将整个报文顺利发送到下一个站点。

发明内容
本发明的目的在于提供一种环形总线数据报文CRC校验字的动态修正 方法,该方法可以实时计算并动态修正数据报文中CRC校验字。
本发明提供的环形总线数据报文CRC校验字的动态修正方法,各从站 按照下述过程进行处理
第1步等待接收网络报文;
第2步当网络报文到达时,判断是否接收数据,如果是,则并发执行过程A和过程B,否则返回第l步;
过程A包括下述第A1步至第A 6步
第A1步提取网络报文中数据中的地址信息;
第A2步判断提取的地址信息与本站的地址是否匹配;是者执行第A3 步;否则丢弃该报文数据,结束过程A;
第A3步从网络报文下载属于本站点的数据至双端口RAM,同时将本站 点需要上传的数据插入报文;
第A4步将经过第A3步处理后的网络报文除原CRC校验字之外的部分 按网络芯片的工作时钟发送给下一站,同时计算新的CRC校验字;
第A5步将新的CRC校验字按网络芯片的工作时钟紧随网络报文数据 发给下一站;
第A6步过程A结束;
过程B包括第B1步至第B3步
第B1步对本站接收到的网络报文进行实时硬件CRC校验; 第B2步判断CRC校验是否正确,是,则提示本从站的CPU从双端口RAM 里下载数据,否则丢弃双端口RAM里的数据; 第B3步过程B结束。
"飞读"传输方式要求通信站点能够对CRC校验字进行动态修正。以 往的各种CRC校验方法一般都有比较长的延时,不能满足"飞读"传输方 式的要求。本发明方法基于环形网络在"飞读"通信状态,对数据报文动 态读取,依据变化了的数据报文内容,可以实时计算并动态修正数据报文 中CRC校验字。


图1为现场总线环形网物理连接结构图; 图2为现场总线数据帧格式;图3为CRC校验字数据格式示意图4为实时CRC计算及动态修正程序模块划分示意图5为CRC校验字动态修正方法的流程图6为CRC校验字计算流程图7为飞读方式下按位实时CRC计算时序图与接收转发方式下按位CRC 计算时序图。
具体实施例方式
CRC校验字是一组线性、分组的系统码,通常前k位为信息码元,后r 位为监督码元(如图3所示)。CRC校验采用多项式编码方法,被处理的n 个比特的数据,可以看做一个(N-l)阶多项式。如IIOI OlOl对应的多项 式为义7+义6+义4+^+1。 CRC校验一般采用二进制模2运算法则,在该法 则下,多项式乘法和除法运算与普通代数式的乘除法运算是一样的。多项 式的加减运算以2为模,加减时不带进位,这种加减运算实际上就是逻辑 上的异或运算,加法和减法等价。
CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位 二进制码序列,以约定的生成多项式G(x)产生一个校验用的r位CRC校验 字,并附在二进制码序列末尾,构成一个新的(k+r)位二进制码序列,最后 发送出去。在接收端,用G(x)去除接收到的k+r位的信息,若有余数,则 传输出错。
设K位二进制信息码元对应的多项式为M0c) , CRC校验字的产生规则 是,先将要发送K位信息码元左移r位,即将M(x)乘以x:然后将M(x)xl余 以生成多项式G(;c),得到的余数i Oc)就是CRC校验字。如(1)式所示。其 中M(x)表示k位的二进制信息码元,G(x)为生成多项式,e(x)为商多项式, i (x)是余数多项式(即CRC校验字)。
<formula>formula see original document page 7</formula>(1)
把(l)式移项得
<formula>formula see original document page 7</formula>) (2)由于模2的加法、减法运算等价,所以(2)式可表示为 M(x)V + = = r(x) (3)
7X;c)就是发送方要发送的数据,与图3所示的格式一致。 由(3)式可知,如果通信过程没有错误,接收方收到的信息r(x)应该等
于roo,即能被g(x)整除,余数为0。如果余数不为0,则rw不等于r(x), 表明通信过程发生了错误。
根据生成多项式G(x)的不同,CRC校验方法可分为CRC-32、 CRC-16、 等。CRC-32的生成多项式G(x—:c32 +x23 +;c22 +x16 + J +x8 +/ +x5 + x4十;c2 + l , CRC-16的生成多项式附=jc16 + ;c12 + x5 +1 。
CRC校验在工程实现上,常用的两种方式分别是按位计算法和查表计算 法。本发明采用的是按位计算法,即把每一个比特都作为一个数据来处理。
对于先接收再转发的网络通信模式,从站是先接收整个数据报文,然 后对数据进行替换和CRC校验字修改后,再将整个数据报文转发出去。在 这种通信模式中,CRC的计算和修改可按照传统的按位计算法和查表计算法 进行,但数据报文在本从站点有一定时间的延时。而在"飞读"通信方式 中,网络上的报文比特流不允许在从站"停留",从站必须在报文比特流 不停留地通过本从站点时实时计算并动态修正CRC校验字。
为了解决这种"飞读"通信模式中,数据报文的校验问题,本发明提 出一种实时计算和动态修正CRC校验字的方法。
该方法采用按位计算法并利用FPGA实现。图4为实时CRC计算及动态 修正程序模块划分示意图。它包括CRC计算模块,网络延时模块和发送控 制模块。CRC计算模块采用按位计算法,实时计算CRC校验字,并把更新的 临时CRC值存放在移位寄存器中,当CRC计算过程完成后,门1开,将存 放在移位寄存器中的CRC校验字传送给发送控制模块。在发送控制模块中, 信息比特流和新的CRC值按图3所示格式要求组合后被发送给下一站,实 现CRC校验字的动态修正。由于该方法采用的是按位计算CRC法,在进行 CRC计算时须在比特流后增加r位0,所以会带来了几个phy一clk(网络芯片 工作时钟)的延时,这个延时取决于CRC计算频率和CRC校验类型,本发明的实施例采用8倍频的phy—clk作为CRC计算频率,这样网络延时就是r/ (2X8) 二r/16个phy—clk。所以CRC-32校验的网络延时是2个phy一clk, CRC-16校验的网络延时则是1个phy_clk。 CRC的计算频率可以根据具体的 硬件条件采用更高倍phy—elk倍频,倍频系数越高,网络延时越短。为了 使CRC校验码紧随信息码元,有必要对信息比特流加一个时延为r/16个 phy—elk的延时补偿模块,如图4中所示。
下面结合附图以CRC-32 (32位CRC校验)为例对本发明提出的方法的 实施方式进行详细说明。
环形总线数据报文CRC校验字的动态修正通常由从站在数据处理过程 中完成。如图5所示,本发明方法的流程包括
步骤l,等待网络报文;
步骤2,当网络报文到达时,判断是否接收数据,如果是,则并发执行 过程A和过程B,否则返回步骤l; 过程A包括下述步骤A1 A 6; Al提取网络报文中数据中的地址信息;
A2判断提取的地址信息与本站的地址是否匹配;是者执行步骤A3;否 则丢弃该报文数据,结束过程A;
A3从网络报文下载属于本站点的数据至双端口RAM,同时将本站点需 要上传的数据插入报文;
A4将经过歩骤A3处理后的网络报文(不包含原CRC校验字)按网络芯 片(PHY)的工作时钟发送给下一站,同时计算新的CRC校验字。
该步骤中的网络报文数据发送和新的CRC校验字的计算是并发进行的, 这是实现数据报文CRC动态修正的关键;
A5将新的CRC校验字按PHY的时钟紧随网络报文数据发给下一站;
A6,过程A结束。
过程B包括B1 B3
Bl实时硬件CRC校验;B2判断CRC校验是否正确,是,则提示CPU对双端口RAM里的数据进行 相关处理;否,丢弃双端口RAM里的数据; B3过程B结束。
如图6所示,步骤A4中,新的CRC校验字计算过程包括 步骤①,CRC校验字运算开始;
步骤②,将数据长度寄存器(16位)、临时数据寄存器(32位)及CRC 计算移位寄存器(33位)初始化为0;
步骤③,将报文比特流长度值赋给数据长度寄存器;
步骤 ,将报文比特流(不包含原CRC校验字)按位存放在临时数据寄存 器,并在其尾部添加32位比特0,作为待发送比特流;
步骤⑤,将待发送比特流按位写入CRC计算移位寄存器最低(右)位;其 中,报文比特流的写入频率为网络芯片工作时钟phy—clk, 32位尾比特0的 写入频率为8Xphy—clk。
步骤⑥,CRC计算移位寄存器左移一位;
步骤⑦,判断CRC计算移位寄存器移出比特是否为1,是,则执行(CRC 计算移位寄存器低32位数据)二 (CRC计算移位寄存器低32位数据)异或 (CRC生成多项式),然后进入步骤8;否则判断信息比特流是否处理完毕, 是,则CRC计算移位寄存器中低32位为新的CRC校验字,再进入步骤8; 否则返回歩骤5;
步骤8,程序结束。
图7为飞读方式下按位实时CRC计算时序图与转发方式下按位CRC计
算时序图,其中
Phy—clk为网络芯片(PHY)的工作时钟; Data一in[l. . 0]为从站接收的网络报文比特流; Data—valid为接收数据有效电平;
Crc—:111[1..0]为经过从站数据处理后需要发送的数据加上32位尾比特0,.也就是流入图5所示寄存器数组二的比特流;
Data一out[l.. 0]为该站发送给下一站的网络报文比特流; Crc—temp为图5中CRC计算移位寄存器中的临时CRC计算结果; 飞读方式下,从站CRC校验是在从站开始接收网络数据时就开始。如 图6所示,当Data_valid由低电平跳变到高电平时,即Data—in[l. . O]报 文比特流开始被从站接收时,CRC校验字的实时计算就开始进行。经过从 站数据"飞读飞写"模块后,原来的网络报文中的数据Data一in[l..O]按网 络芯片工作时钟phy—elk依次被更换,形成需要发送的报文比特流。按照 CRC校验字的计算规则,为了进行按位CRC校验,须在其后加上32位尾比 特0,需要发送的报文比特流及后面的32位尾比特0 —起构成 Crc_in[l.. 0]。此时CRC计算移位寄存器按照如图5所示的程序流程移位, 按位将Crc_in[l.. O]读入寄存器的最低位(需要发送的报文比特流读入频 率为phy—clk, 32位尾比特0的读入频率为8*phy—elk)。同时将最高位移, 如果移出位为1,则执行(CRC计算移位寄存器低32位数据)二 (CRC计算 移位寄存器低32位数据)异或(CRC生成多项式)。如果移出位为0,则继 续移位。
由于该方法采用的是按位计算CRC法,在报文比特流后增加了 32位0, 所以会带来了几个phy_clk的延时,这个延时取决于CRC计算频率,本发 明的实施例采用8倍频的phy_clk作为CRC计算频率,这样网络延时就是 r/^*8= r/16个phy—clk。所以CRC-32校验的网络延时是2个phy—clk, CRC-16校验的网络延时则是1个phy_clk。 CRC的计算频率可以根据具体的 硬件条件采用更高倍phy—clk倍频,倍频系数越高,网络延时越短。
为了使CRC校验码紧随报文比特流,必须对报文比特流进行2个 phy—elk的延时,如图6所示的Data—out [1. . 0]。这种方式能保证当需要 发送的报文比特流按网络芯片的时钟phy—elk发送到最后一位时,CRC校验 字(Crc—temp[l..O]最后一个数据)恰好计算完毕,CRC校验字可以紧随报文比特流一起发出。
以上所述为本发明的较佳实施例而已,但本发明不应该局限于该实施 例和附图所公开的内容。所以凡是不脱离本发明所公开的精神下完成的等 效或修改,都落入本发明保护的范围。
权利要求
1、一种环形总线数据报文CRC校验字的动态修正方法,各从站按照下述过程进行处理第1步 等待接收网络报文;第2步 当网络报文到达时,判断是否接收数据,如果是,则并发执行过程A和过程B,否则返回第1步;过程A包括下述第A1步至第A 6步第A1步 提取网络报文中数据中的地址信息;第A2步 判断提取的地址信息与本站的地址是否匹配;是者执行第A3步;否则丢弃该报文数据,结束过程A;第A3步 从网络报文下载属于本站点的数据至双端口RAM,同时将本站点需要上传的数据插入报文;第A4步 将经过第A3步处理后的网络报文除原CRC校验字之外的部分按网络芯片的工作时钟发送给下一站,同时计算新的CRC校验字;第A5步 将新的CRC校验字按网络芯片的工作时钟紧随网络报文数据发给下一站;第A6步 过程A结束;过程B包括第B1步至第B3步第B1步 对本站接收到的网络报文进行实时硬件CRC校验;第B2步 判断CRC校验是否正确,是,则提示本从站的CPU从双端口RAM里下载数据,否则丢弃双端口RAM里的数据;第B3步 过程B结束。
2、 根据权利要求1所述的环形总线数据报文CRC校验字的动态修正方 法,其特征在于第A4步按照下述过程计算新的CRC校验字第C1步将数据长度寄存器、临时数据寄存器及CRC计算移位寄存器初始化为0;第C2步将报文比特流长度值赋给数据长度寄存器;第C3步除去报文比特流中的原CRC校验字,并在其尾部添加32位尾比 特0,并按位存放到临时数据寄存器,作为待发送比特流;第C4步将待发送比特流按位写入CRC计算移位寄存器最低位,其中, 报文比特流的写入频率为网络芯片工作时钟,32位尾比特0的写入频率为报 文比特流的写入频率的4至16倍;第C5步CRC计算移位寄存器从最高位移出一位;第C6步判断CRC计算移位寄存器移出的一位是否为1,是,则执行式 (1),然后进入第C7步;否则判断待发送比特流是否处理完毕,是,贝l」CRC 计算移位寄存器中低32位为新的CRC校验字,再进入第C7步,否则返回 第C4步;(CRC计算移位寄存器低32位数据)=(CRC计算移位寄存器低32位数 据)异或(CRC生成多项式) 第C7步结束。
全文摘要
本发明提出一种环形总线数据报文CRC校验字的动态修正方法,该方法采用FPGA实现。当网络报文经过各从站点时,网络报文与从站完成数据交换并被发送给下一站,与此同时,从站根据交换数据后的新网络报文的数据计算新的CRC校验字,新的CRC校验字的计算采用按位计算法,并采用4至16倍网络芯片工作时钟作为CRC的高频计算频率,减少了CRC校验字的计算时间,在网络报文几乎无延时等待的情况下,实现新的CRC校验字紧随网络报文发送给下一站,从而实现CRC校验字的动态修正。网络报文延时和CRC高频计算频率和CRC类型有关,8倍网络芯片工作时钟下,CRC-32校验的网络延时是2个网络芯片工作时钟。本发明数据报文的延时很短,几乎可以忽略不计,非常适合于“飞读”通信模式。
文档编号H04L1/00GK101630997SQ20091006165
公开日2010年1月20日 申请日期2009年4月14日 优先权日2009年4月14日
发明者周会成, 周向东, 唐小琦, 唐玉枝, 宝 宋, 肖志鹏, 欢 胡, 金宏星, 陈吉红, 陈天航 申请人:华中科技大学;武汉华中数控股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1