CN103427846B - 动态可重构高速串行总线中错误控制方法 - Google Patents

动态可重构高速串行总线中错误控制方法 Download PDF

Info

Publication number
CN103427846B
CN103427846B CN201310295961.5A CN201310295961A CN103427846B CN 103427846 B CN103427846 B CN 103427846B CN 201310295961 A CN201310295961 A CN 201310295961A CN 103427846 B CN103427846 B CN 103427846B
Authority
CN
China
Prior art keywords
data
memory
circletimes
crc
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310295961.5A
Other languages
English (en)
Other versions
CN103427846A (zh
Inventor
邓哲
杜瑞
张伟功
乔永强
朱晓燕
张永祥
尚媛园
关永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Capital Normal University
Original Assignee
Capital Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Capital Normal University filed Critical Capital Normal University
Priority to CN201310295961.5A priority Critical patent/CN103427846B/zh
Publication of CN103427846A publication Critical patent/CN103427846A/zh
Application granted granted Critical
Publication of CN103427846B publication Critical patent/CN103427846B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

一种动态可重构高速串行总线中错误控制方法,该方法基于多体双口存储方式N-Memory和多通道并行CRC算法,根据数据链路层的读写请求,将N-Memory中的数据在读写过程中实时进行多通道并行CRC校验。

Description

动态可重构高速串行总线中错误控制方法
技术领域
本发明涉及一种动态可重构高速串行总线中错误控制方法,尤其是一种动态可重构高速串行总线中基于多体双口存储方式N-Memory和多通道并行CRC算法的错误控制方法。
背景技术
动态可重构高速串行总线(UM-BUS)是一种基于故障实时检测和动态重构的新型多通道高速串行总线。该总线具有线路动态检错功能,能够实时检测总线系统线路状况,并能根据线路状况将通信数据动态均衡地分配到健康的传输线路上,实现了通信线路冗余容错与高速传输的有机统一。UM-BUS总线采用多点低电压差分信号(M-LVDS,Multipoint-Low-VoltageDifferentialSignaling)传输技术,这种传输方式可满足多节点直接连接的需求,提高信号的传输速度和信号的抗噪能力。
图1示出了UM-BUS采用的基于M-LVDS技术的多节点、智能动态冗余的多通道总线拓扑结构。其中,m表示总线上的节点数,最大节点数为32;n表示通信通道数,最大通道数为32路。节点间通信过程中,如果某几条通道出现故障,可自动屏蔽无效通道,将数据动态地分配到其余有效通道上进行传输。
UM-BUS通信协议划分为3个独立层次,从上至下依次分别为:处理层、数据链路层、物理层。总线的数据传输管理部分主要负责管理处理层存储区域和物理层各个通道存储区域间传送的数据。根据各个层次内功能的实现,将数据链路层分为MAC子层和传输子层,图2所示的是UM-BUS的通信协议模型,其中发送端和接受端采用相同通信协议,由物理层采用M-LVDS技术,为设备之间数据通信提供传输媒体及互连结构,为数据传输提供可靠环境。
UM-BUS应用于高可靠嵌入式计算机主从设备通信。通信交互分为两类:主设备与从设备大包数据交互和主设备对从设备控制的命令交互。因此设计两种通信数据包,即用于大数据传输的长包数据和用于命令和状态回复的短包数据。总线协议为短包数据和长包数据(主体数据)分配了不同的数据空间,即I/O空间和存储器空间。同时,UM-BUS还定义了配置空间,配置空间可以存储设备号、销售商号、从设备基地址等信息。主设备可对这两种地址空间进行读/写访问,即配置空间读,配置空间写,I/O空间读,I/O空间写,存储器空间读,存储器空间写。配置空间和I/O空间由命令头寄存器实现,存储器空间由数据缓冲存储器实现。从设备在收到主设备的访问命令后,执行命令规定的操作后,通过应答包向主设备回复执行状态及数据,包括回复命令正确与否或者返回主设备需要的数据。从设备的应答包分为两种:带数据的状态回复和不带数据的状态回复。将这些数据统一设计为两种数据格式,即长包数据与短包数据。
如表1所示为总线通信协议数据帧格式。总线协议采用数据包的形式在协议的各层间进行数据通信。协议数据包由16B的命令头和N字节的主体数据构成。其中16B的命令头分配的地址空间为I/O空间,与处理层和数据链路层互传信息。N字节主体数据分配的地址空间为存储器空间,此空间是直接开放给上层应用的一片存储区域,属于协议的应用层,同时与数据链路层相连。N在协议实现时采用1024字节,即N=1024B。
表1通信协议数据帧格式
16Byte N Byte
命令头 主体数据
根据读写数据类型和大小的不同,UM-BUS协议定义了两种数据包,短包数据和长包数据。短包数据只包括命令头,具体格式如表2所示。
表2短包数据帧格式
长包数据包含了命令头与Nbyte的主体数据,数据包长度相对短包数据有所加大,因此称为长包数据。其帧格式如表3所示。
表3长包数据帧格式
信号在总线上传输时不可避免的会发生突发错误,因此总线的错误控制显得尤为重要。
发明内容
为了提高总线系统的可靠性,本发明提供一种动态可重构高速串行总线中的错误控制方法,实现对总线上数据实时、快捷的检错需求。
一种动态可重构高速串行总线中错误控制方法,该方法基于多体双口存储方式的N-Memory和多通道并行CRC算法,其特征在于:根据数据链路层的读写请求,将N-Memory中的数据在读写过程中实时进行多通道并行CRC校验,其中所述的读写过程中实时校验方式为:发送数据时,数据链路层对N-Memory发出读请求,读出数据并进行一次缓存,同时实时进行多通道并行CRC校验,将计算出的发送端CRC校验码插入第一通道最后一个字节进行发送;数据接收时,数据链路层对N-Memory发出写请求,根据通道配置情况将数据依次写入N-Memory,同时进行实时的多通道并行CRC校验,将计算出的接收端CRC校验码与发送端的CRC校验码进行比较,若相同则说明动态可重构高速串行总线传输无误,若不同则说明动态可重构高速串行总线传输有误,丢弃此数据并进行数据重发;所述N-Memory中的数据组织分为处理层方向和数据链路层方向,从处理层方向看过去,所述N-Memory是由一个N倍字宽的单体存储器,在深度方向扩展N倍的多体存储器及命令头寄存器构成;从数据链路层方向看过去,所述N-Memory是N个单字宽的独体FIFO。
优选地,所述基于多体双口存储方式的N-Memory根据动态可重构高速串行总线实际传输通道数、传输通道的工作时钟和管理模块的内部时钟而确定,,其存储体N数量为2、4或8;相应的多通道并行CRC算法选择通道数时基于N-Memory中N的数量,要求两者相等以保证数据链路层在读写过程中能够按照N-Memory数据存储方式进行实时的CRC校验。
优选地,在数据发送端,为了支持CRC计算的一级延迟,N-Memory之后设置一级数据缓冲器,利用预读信号进行控制,用于存储CRC计算完成的数据;预读信号对N-Memory中的数据进行读取并进行多通道CRC计算,读信号负责读取计算完成的CRC结果并将其传输到通道上。
优选地,插入2个时钟周期等待多通道并行CRC计算结果;对于命令头操作,当涉及到N-Memory第N通道-1的字节时,读操作插入2个时钟周期进行等待;对于长包数据主体部分的操作,当涉及到第N通道1024/N-1的字节时,插入2个时钟周期等待,最后将CRC计算结果作为第一通道的最后一个数据进行发送。
本发明实现的CRC编解码器已应用于UM-BUS系统中,实现对突发错误的实时检测,实时计算总线通信数据的CRC校验码,提高了整个系统的可靠性,通信速率达到100Mbps/通道。
附图说明
下面将结合附图详细描述本发明的实施方式,其中:
图1表示UM-BUS采用的基于M-LVDS技术的多节点、智能动态冗余的多通道总线拓扑结构图。
图2表示UM-BUS通信协议模型。
图3表示UM-BUS中的存储器N-Memory的示意图。
图4表示N-Memory中的单体存储器的示意图。
图5表示短包数据四通道并行CRC计算方法的示意图。
图6表示短包数据主体部分四通道并行CRC计算方法的示意图。
图7表示UM-BUS总线数据传输过程的示意图。
图8表示四通道并行CRC仿真结果的示意图。
图9表示UM-BUS错误控制模块图。
具体实施方式
本发明的实施方式涉及动态可重构高速串行总线中的错误控制方法,实现对总线上数据实时、快捷的检错需求。该方法包含UM-BUS存储方法设计和数据校验方法设计。
在UM-BUS存储方法设计方面,UM-BUS底层物理层采用8b/10b编码方式,将并行8位数据转换成串行10位数据进行传输,用于数据传输的数据链路有32条,每一条链路经过10个周期将一个10位数据传输到接收端,经过8b/10b变化以后相当于每一条链路经过10个周期传输1个字节的数据,因此UM-BUS可以在10个周期内传输32个通道中的32字节数据,UM-BUS采用4*32的开关矩阵进行数据动态分配,因此数据链路层需要4个通道进行数据传输,每个通道位宽为8位。为了UM-BUS适应数据传输速率和数据链路层的通道数量,满足UM-BUS数据传输需求,本发明利用4个存储体设计了一种新型存储模式N-Memory进行数据缓冲,很好的解决了UM-BUS总线数据缓冲的需求。
在数据校验方法设计方面,本发明采用循环冗余校验码(CRC,CyclicRedundancyCheck),它是一种误码检测能力强,抗干扰性能优异的校验码,广泛应用于网路的物理层、链路层的检错。由于传统的串行CRC校验方法无法满足总线系统多通道数据并发传送和动态组织的需要,本发明结合N-Memory的存储结构特点,设计出了满足此数据结构的并行CRC校验模块。本发明设计实现的一种四通道并行CRC算法,可以同时计算各通道的并行CRC,再依据每个通道数据块的CRC得到整个数据块的CRC,显著地提高了系统的CRC计算速度,实现了对总线通信数据的实时校验。与传统的字节串行CRC计算方法相比,传统串行CRC计算方法需要1024个周期完成CRC校验码计算,而四通道并行CRC计算方法只需要256个周期即可计算出CRC校验码,计算速度提高了4倍,具有良好的实时性,满足了UM-BUS总线数据传输实时快速的特点。
具体地,为了便于对处理层存储区数据的存取,提高数据的存储效率,用来数据存储的N-Memory采用多体双口存储方式,处理层方向看过去,N-Memory是由一个4×8位宽度的单体存储器在深度方向扩展4倍的多体存储器及命令头寄存器构成;从数据链路层方向看过去,N-Memory是四个8位宽的独体FIFO构成的多体存储器。
为了满足UM-BUS地址空间设计和数据帧格式设计,N-Memory由存储16Byte短包数据的命令头寄存器和存储1024Byte长包数据主体部分的数据缓冲存储器组成。N-Memory向上与总线的处理层通信,向下与总线的数据链路层通信,为处理层和数据链路层互传信息提供了数据缓冲存储空间。在具体实现上,N-Memory属于总线协议的处理层,对于不同类型的数据包可以采用不同的存储模式,对于命令头数据采用寄存器存储模式,对于大数据量的长包数据主题部分采用存储器模块来实现,从而提高数据的存储效率。以总线UM-BUS存储数据实现长度为例,最长的长包数据为1040byte,最短的为短包数据长度16byte,也可能出现不带命令头的长包数据的主体部分1024byte。因此,如图3所示,UM-BUS设计N-Memory的存储深度为1040byte,每一个存储体的存储深度为260byte。
N-Memory中的每一个存储体,A端口与处理层相连,用来供处理层读写数据,B端口与数据链路层相连,用来读写数据链路层的数据,如图4。为了满足各层对数据长度不同的要求,分别设计了A、B端口各自的存储模式。在A端口,由于处理层与CPU进行数据通信,通常的处理器接口是32位,要求存储数据位宽为32位;利用8位地址线的低6位进行寻址,即寻址数为64位,命令头寄存器设计为地址为-1的32位数据,所以从CPU看过去该存储区域是一个32位的存储体,存储体深度为65。在B端口,由于物理层采用8b/10b的编码方式,对于任一通道,每次向物理层传输或存储数据时操作一个字节的数据,物理层上层数据链路层与N-Memory的操作也是每次操作一个字节的数据,所以从物理层看过去该存储区域是一个8位的存储体,存储深度为260。
综上所述,将N-Memory存储体设计为如下特殊格式:
对于处理层来说,N-Memory是由4个单体存储器组成的多体存储器,相当于将一个单体存储器的数据深度扩大了4倍,其存储空间大小为4*32*65,即数据位宽为32位,存储深度为65。利用8位地址线高两位构成2/4译码器对N-Memory的4个单体存储器进行选择,被选的每一个单体存储器的大小为32*65。
对于数据链路层来说,将存储空间纵向划分为4片,每一片采用FIFO实现,每一个FIFO大小为8*260,总体的存储空间为4*8*260。
该新型数据存储模式满足了总线在处理层和数据链路层之间交互数据的不同类型和大小,为总线数据传输提供了高速缓冲空间,提高了数据的存储效率。
多通道并行CRC计算由多个计算器同时进行计算各自通道中数据的CRC校验码,每一通道都可采用一位串行或W位并行计算。根据UM-BUS新型存储结构N-Memory的存储特点,将需要进行CRC校验的数据分为4个通道分别进行,将各自通道的数据进行CRC计算生成典型余数a;前3个通道的典型余数a进行余数变化,生成变化余数b;将前3通道的b与第四通道的a进行合并CRC计算,即将数据异或运算,就得到整个数据的CRC校验值。
由表2所示,短包数据格式最后1字节用来存放CRC,因此短包数据将前15byte数据进行CRC计算,算出的CRC校验码放入第16byte进行传输。如图5所示,根据多通道并行CRC算法,将15byte数据放入4个通道,第1到第3通道分别放入4byte数据,第四通道放入3byte数据。前三通道分别进行各自的余数变化,得出各自的变化余数,与第四通道的CRC进行合并CRC计算,即得到15byte数据的CRC校验码。这里的余数变化采用直接变化法,变化方法见表4、5、6。
实现余数变化的方法有两种,一种是查表法,一种是异或逻辑组成的直接变化法。本发明采用直接变化法,输入的是典型余数a[R-1,...,1,0],输出的变化余数为b[R-1,...,1,0],R=8。变换余数bt(t=R-1~0)等于典型数据余数表中第t列所有为‘1’的输入数据an(n=R-1~0)的异或。利用软件C语言编程,由g(x)分别对典型余数a求M次除法求余数运算得到变换余数b。
根据多通道并行CRC算法中的公式,短包数据第1通道变化次数M=11,如表4所示:
表4余数变换列表M=11
b ( 0 ) < = a ( 0 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 1 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; t a ( 4 )
b ( 2 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 3 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
b ( 4 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 )
b ( 5 ) < = a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
b ( 6 ) < = a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 7 ) < = a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
短包数据第2通道变化次数M=7,如表5所示:
表5余数变换列表M=7
b ( 0 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 1 ) < = a ( 0 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 7 )
b ( 2 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 6 )
b ( 3 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 7 )
b ( 4 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 )
b ( 5 ) < = a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 )
b ( 6 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 )
b ( 7 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
短包数据第3通道变化次数M=3,如表6所示:
表6余数变换列表M=3
b ( 0 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
b ( 1 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 2 ) < = a ( 1 ) &CircleTimes; a ( 6 )
b ( 3 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 7 )
b ( 4 ) < = a ( 1 ) &CircleTimes; a ( 3 )
b ( 5 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 )
b ( 6 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 )
b ( 7 ) < = a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 )
如图6所示,根据多通道并行CRC算法,长包数据主体部分1024byte数据进行CRC计算。将1024byte数据放入4个通道,每个通道分别放入256byte数据。前三通道分别进行各自的余数变化,得出各自的变化余数,与第四通道的CRC进行合并CRC计算,即得到1024byte数据的CRC。这里的余数变化采用直接变化法,变化方法见表7、8、9。
根据多通道并行CRC算法中的公式,长包数据第1通道变化次数M=768,如表7所示:
表7余数变换列表M=768
b ( 0 ) < = a ( 0 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 )
b ( 1 ) < = a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 2 ) < = a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 3 ) < = a ( 0 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
b ( 4 ) < = a ( 1 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 5 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 6 ) < = a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 7 ) < = a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 7 )
长包数据第2通道变化次数M=512,如表8所示:
表8余数变换列表M=512
b ( 0 ) < = a ( 4 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 1 ) < = a ( 0 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 2 ) < = a ( 0 ) &CircleTimes; a ( 1 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 )
b ( 3 ) < = a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 4 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 5 ) < = a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 7 )
b ( 6 ) < = a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 )
b ( 7 ) < = a ( 3 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
长包数据第3通道变化次数M=256,如表9所示:
表9余数变换列表M=256
b ( 0 ) < = a ( 0 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 )
b ( 1 ) < = a ( 1 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 2 ) < = a ( 0 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
b ( 3 ) < = a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 6 )
b ( 4 ) < = a ( 1 ) &CircleTimes; a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 ) &CircleTimes; a ( 7 )
b ( 5 ) < = a ( 1 ) &CircleTimes; a ( 3 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
b ( 6 ) < = a ( 2 ) &CircleTimes; a ( 4 ) &CircleTimes; a ( 6 )
b ( 7 ) < = a ( 3 ) &CircleTimes; a ( 5 ) &CircleTimes; a ( 7 )
如图7所示,以长包数据的主体部分为例,说明数据在UM-BUS数据传输过程。处理层向数据缓冲区发送1024字节数据,FIFO1到FIFO4里的数据分别看成4个通道的数据,即每个通道都是256个八位二进制数。四通道进行并行CRC校验,前3通道进行余数变换,再将结果合并CRC,即得到1024字节数据的CRC校验码。将信息码和校验码组成信息校验包,发送到数据链路层对数据进行动态分配,传输开关将32路动态可重构总线的数据组织成4*32的阵列,利用通道资源表来进行动态分配。动态可重构总线最大通道数为32通道,传输到物理层进行8b/10b底层编码。
本发明将待发送1024字节数据分为(256,256,256,256)4个256字节的数据块,分别放入CRC的4个通道。采用多项式g(x)=x8+x2+x+1。令第一个通道CRC初值为全1,其余通道CRC初值全0,得到4个通道的CRC输出rja(x)(1≤j≤4),即r1a(x),r2a(x),r3a(x),r4a(x),又LS=256*8,LF=256*8,R=8,由LS=P·R和LF=Q·R(P和Q为正整数),则P=Q=256。从前所述可知,4个通道的变换余数,这里称为rjb(x)(1≤j≤4),需要对第j通道的余数rja(x)进行M=[(N-1-j)P+Q]次CRC余数运算。所以,第一通道g(x)对余数r1a(x)进行M=768次除法求余数运算得到变换余数r1b(x);第二通道g(x)对余数r2a(x)进行M=512次除法求余数运算得到变换余数r2b(x);第三通道g(x)对余数r3a(x)进行M=256次除法求余数运算得到变换余数r3b(x);第四通道的余数r4a(x)不需要变化,即r4a(x)=r4b(x)。将四个通道的变化r1b(x),r2b(x),r3b(x),r4b(x)取异或得到1024字节数据块的CRC校验码。
采用ISE开发平台和VHDL语言进行设计,利用Mentor公司的ModelSim进行仿真实现,仿真结果如图8所示,其中data1,data2,data3,data4分别为4个通道的输入;crc_a1,crc_a2,crc_a3,crc_a4分别为4个通道的典型余数crc_b1,crc_b2,crc_b3,crc_b4分别为4个通道的变化余数;crc为1024字节数据的CRC校验码。发送1024字节数[0,1,2,...,255;0,1,2,...,255;1,2,...,255;1,2,...,255],令第一通道初值全1,其他3个通道CRC初值为全0,P=Q=256,g(x)=x8+x2+x+1;通过四通道并行CRC校验,得到各通道CRC为(C3H,14H,14H,14H),即为通道的典型余数。利用表1,2,3的直接变化法,得到前三通道的变换余数为(E1H,3FH,03H),将3个变换余数与第四通道的变换余数(即典型余数)CRC14H取异或,得到1024字节数据块的CRC校验码为C9H。每个通道发送完最后一个数据后的2个周期计算出各自通道的CRC校验码,并同时计算出1024字节数据的CRC校验码C9H,实现了UM-BUS中的并行CRC算法设计。同时利用软件,采用CRC查表法对1024字节数据进行CRC校验,校验结果为C9H,验证了硬件仿真的正确性。
本发明实现的CRC编解码器已应用于UM-BUS系统中,实现对突发错误的实时检测,实时计算总线通信数据的CRC校验码,提高了整个系统的可靠性,通信速率达到100Mbps/通道。
如图9UM-BUS中错误控制模块图所示,数据进行错误控制的步骤如下:
1:在发送端,处理层从上层接口获得数据,按照UM-BUS协议构造所传输数据包,数据位宽为32位,短包数据长度为16字节,长包数据主体部分为可扩展的N字节。当收到启动发送命令,处理层将打包好的数据发送到N-Memory进行数据缓冲。同时,处理层作为总线协议的控制层,它还要负责完成总线通信的管理工作,将部分信息反馈给上层应用或外界设备,如分析本次通信任务,分析通信命令,组织协议帧格式,确定目标地址,确定当前通信状态,启动线路故障检测和处理中断请求等。
2:在发送端,N-Memory对于处理层来说,是由4个单体存储器组成的多体存储器,相当于将一个单体存储器的数据深度扩大了4倍。数据从处理层写入N-Memory,其中I/O空间的数据是由处理层一次性写满128位(16字节),存储器空间的数据是处理层按地址每次写入32位(4字节)的数据。
3:在发送端,N-Memory收到数据链路层的读命令后,数据从N-Memory读出,同时启动CRC编码器。由于数据链路层将数据分为4个通道传输,因此它将N-Memory看成是由4个独立的FIFO,同时CRC编码器也需要将校验数据分为4个通道分别计算。对于I/O空间的16字节数据,CRC编码器将前15字节数据分为(4、4、4、3)4个通道进行校验,即第1到第3通道分别有4字节数据,第四通道有3字节数据。当数据链路层从N-Memory的I/O空间每读一个周期数据时,数据经过不同通道的CRC计算器进行一次CRC计算;前3个通道4次读命令结束,第四通道3次读命令结束后,再经过2个周期,CRC编码器就可以计算出所读短包数据的CRC校验码(1字节),将此CRC校验码将作为I/O空间的第16字节数据附在数据末尾,由数据链路层读走。对于存储器空间,其数据长度为可扩展的N字节,CRC编码器将其分为(N/4,N/4,N/4,N/4)4个通道进行校验,每通道数据长度为N/4字节,各个通道经过N/4个周期的读命令后,再经过2个周期,CRC编码器就可以计算出N字节的CRC校验码,最后将此CRC校验码附在第1通道末尾,由数据链路层读走。
4:在发送端,数据链路层读取了来自N-Memory的长短包数据和来自CRC编码器的CRC校验码。将这些数据按字节依次动态均衡的分配到多条Lane上,这里采用的是4*32的开关矩阵进行数据动态分组,即将4个通道上数据动态的分布到32条链路上,供物理层传输使用。
5:发送端和接受端物理层底层相连,为设备之间的数据通信提供传输媒体及互联设备,物理连接采用M-LVDS技术。数据在物理层发送端完成并串转换,8b/10编码,串行数据在电缆上转化为电平变化进行传输。数据在物理层接收端完成串并转化,8b/10b解码,时钟同步等功能,为上层提供数据。
6:在接收端,将由物理层传输来的有效Lane上的数据进行动态重组,即将32条链路上的数据重组到4个通道,分别写入N-Memory的4个FIFO中。重组的方法保证从发送端N-Memory读取的数据与接收端写入N-Memory的数据不变。
7:在接收端,接收数据由数据链路层写入N-Memory的同时,启动CRC解码器,进行CRC校验计算。对于I/O空间,将写入N-Memory的前15字节数据进行CRC计算,CRC计算方法同步骤3,算出的接收端I/O空间CRC校验码与收到的第16字节(发送端I/O空间CRC校验码)进行比较,若相同,则表示发送到接收端的I/O空间数据在总线上传输无误;若不等,则表示发送到接收端的I/O空间数据在总线上传输有误,此时CRC解码器给出错误标志,通知上层丢弃此包数据,总线启动数据重发机制。对于存储器空间,将写入N-Memory的N字节数据进行CRC计算,CRC计算方法同步骤3,算出的CRC校验码与接收到的第1通道最后一个数据(发送端N字节数据的CRC校验码)进行比较,若相同,则表示发送到接收端的存储器空间数据在总线上传输无误;若不等,则表示发送到接收端的存储器空间数据在总线上传输有误,此时CRC解码器给出错误标志,通知上层丢弃此包数据,总线启动数据重发机制。
8:在接收端,处理层读取N-Memory中的长短包数据,完成整个总线的数据通信过程。
本发明了动态可重构高速串行总线中的错误控制方法,结合动态可重构高速串行总线UM-BUS数据校验需要,设计了由4个单体存储器组成的N-Memory新型存储方法和四通道并行CRC校验方法。该方法可在四通道并发传送数据过程中,实时计算CRC校验值,实现对总线的错误控制。与传统的字节并行CRC计算方法相比,计算速度提高了4倍,通道传输速率可达到100Mbps,有效的提高了数据的有效性。该方法已成功的应用于动态可重构高速串行总线系统中,为总线数据传输的可靠性和稳定性提供了保证。

Claims (4)

1.一种动态可重构高速串行总线中错误控制方法,该方法基于多体双口存储方式的N-Memory和多通道并行CRC算法,其特征在于:根据数据链路层的读写请求,将N-Memory中的数据在读写过程中实时进行多通道并行CRC校验,其中所述的读写过程中实时校验方式为:发送数据时,数据链路层对N-Memory发出读请求,读出数据并进行一次缓存,同时实时进行多通道并行CRC校验,将计算出的发送端CRC校验码插入第一通道最后一个字节进行发送;数据接收时,数据链路层对N-Memory发出写请求,根据通道配置情况将数据依次写入N-Memory,同时进行实时的多通道并行CRC校验,将计算出的接收端CRC校验码与发送端的CRC校验码进行比较,若相同则说明动态可重构高速串行总线传输无误,若不同则说明动态可重构高速串行总线传输有误,丢弃此数据并进行数据重发;所述N-Memory中的数据组织分为处理层方向和数据链路层方向,从处理层方向看过去,所述N-Memory是由一个N倍字宽的单体存储器,在深度方向扩展N倍的多体存储器及命令头寄存器构成;从数据链路层方向看过去,所述N-Memory是N个单字宽的独体FIFO。
2.根据权利要求1所述的方法,其特征在于:所述基于多体双口存储方式的N-Memory根据动态可重构高速串行总线实际传输通道数、传输通道的工作时钟和管理模块的内部时钟而确定,其存储体N数量为2、4或8;相应的多通道并行CRC算法选择通道数时基于N-Memory中N的数量,要求两者相等以保证数据链路层在读写过程中能够按照N-Memory数据存储方式进行实时的CRC校验。
3.根据权利要求2所述的方法,其特征在于:在数据发送端,为了支持CRC计算的一级延迟,所述N-Memory之后设置一级数据缓冲器,利用预读信号进行控制,用于存储CRC计算完成的数据;预读信号对所述N-Memory中的数据进行读取并进行多通道CRC计算,读信号负责读取计算完成的CRC结果并将其传输到通道上。
4.根据权利要求3所示的方法,其特征在于:插入2个时钟周期等待多通道并行CRC计算结果;对于命令头操作,当涉及到N-Memory第N通道-1的字节时,读操作插入2个时钟周期进行等待;对于长包数据主体部分的操作,当涉及到第N通道1024/N-1的字节时,插入2个时钟周期等待,最后将CRC计算结果作为第一通道的最后一个数据进行发送。
CN201310295961.5A 2013-07-16 2013-07-16 动态可重构高速串行总线中错误控制方法 Active CN103427846B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310295961.5A CN103427846B (zh) 2013-07-16 2013-07-16 动态可重构高速串行总线中错误控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310295961.5A CN103427846B (zh) 2013-07-16 2013-07-16 动态可重构高速串行总线中错误控制方法

Publications (2)

Publication Number Publication Date
CN103427846A CN103427846A (zh) 2013-12-04
CN103427846B true CN103427846B (zh) 2016-04-27

Family

ID=49652099

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310295961.5A Active CN103427846B (zh) 2013-07-16 2013-07-16 动态可重构高速串行总线中错误控制方法

Country Status (1)

Country Link
CN (1) CN103427846B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104135412B (zh) * 2014-07-28 2017-07-28 北京航天自动控制研究所 一种面向多点互联应用的串行总线冗余通信方法
CN104461963B (zh) * 2014-11-27 2018-05-01 深圳市国微电子有限公司 一种高速串行存储控制方法及装置
CN104717447B (zh) * 2015-03-19 2018-07-10 武汉精测电子集团股份有限公司 实现16lane模组多通道mipi同步传输方法
CN104735387B (zh) * 2015-03-19 2018-05-22 武汉精测电子集团股份有限公司 实现多通道mipi同步传输方法和装置
CN104866399B (zh) * 2015-04-03 2019-07-09 张家祺 Um-bus总线通道故障检测控制器及检测方法
CN106372026B (zh) * 2015-07-22 2020-01-31 深圳市中兴微电子技术有限公司 一种链路检测方法和接收设备
CN105162551B (zh) * 2015-07-29 2018-11-06 中工科安科技有限公司 一种针对编码器信号处理的crc安全校验码的计算方法
CN107590405A (zh) * 2016-07-06 2018-01-16 上海华虹集成电路有限责任公司 提高智能卡数据下载速度的方法
CN107483157A (zh) * 2017-09-01 2017-12-15 郑州云海信息技术有限公司 一种基于fpga的crc校验方法和系统
CN111247516A (zh) * 2019-03-11 2020-06-05 深圳市大疆创新科技有限公司 一种电路结构、系统级芯片SoC、处理数据的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661454A (zh) * 2009-10-16 2010-03-03 首都师范大学 一种可动态重构的高速串行总线系统及控制方法
CN102082577A (zh) * 2010-12-31 2011-06-01 杭州华三通信技术有限公司 一种高速循环冗余校验crc装置及其实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2551433C (en) * 2005-06-30 2012-10-02 Hitachi, Ltd. Sending device, receiving device, communication control device, communication system, and communication control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661454A (zh) * 2009-10-16 2010-03-03 首都师范大学 一种可动态重构的高速串行总线系统及控制方法
CN102082577A (zh) * 2010-12-31 2011-06-01 杭州华三通信技术有限公司 一种高速循环冗余校验crc装置及其实现方法

Also Published As

Publication number Publication date
CN103427846A (zh) 2013-12-04

Similar Documents

Publication Publication Date Title
CN103427846B (zh) 动态可重构高速串行总线中错误控制方法
US7810013B2 (en) Memory device that reflects back error detection signals
CN104303166B (zh) 高性能互连链路层
CN101753388B (zh) 适用于多核处理器片上和片间扩展的路由及接口装置
CN102820959B (zh) 在Modbus主站与从站之间进行大数据量通信的方法
CN102932696B (zh) 一种星载高速数据复接器系统及实现方法
CN106612141A (zh) 一种光纤通道协议通用仿真测试卡及其数据交互方法
CN105335326A (zh) 一种基于fpga的pcie转sata接口阵列的装置
CN102624738B (zh) 一种串口服务器、协转芯片及数据传输方法
CN1953461A (zh) 编码数据包头以启用PCIe链路高带宽效率的系统和方法
CN103106166B (zh) 一种协议无关、可支持目标读写操作的pcie ip核用户逻辑接口扩展方法
CN102866980B (zh) 用于多核微处理器片上互连网络的网络通信胞元
CN109086228A (zh) 具有多个独立访问通道的高速存储器芯片
CN104919763A (zh) 通信装置、具有通信装置的路由器、总线系统以及具有总线系统的半导体电路的电路基板
CN103310850A (zh) 片上网络资源节点存储器的内建自测试结构和自测试方法
CN106598889A (zh) 一种基于fpga夹层板的sata主控器
CN105357147A (zh) 一种高速高可靠的片上网络适配单元
CN112148651B (zh) 一种增强型rapidio互联装置及设备
CN102868604A (zh) 一种应用于片上网络的二维Mesh双缓冲容错路由单元
CN108563501A (zh) 动态可重构高速串行总线的中断请求方法及装置
CN102692642B (zh) 基于以太网物理层收发器的地震数据传输装置
CN102622323B (zh) 动态可重构串行总线中基于开关矩阵的数据传输管理方法
CN102609221A (zh) 一种硬件raid5/6存储系统的架构及数据处理方法
CN102420763A (zh) Dma发送方法
CN106487673A (zh) 一种基于三模冗余的检错重传容错路由单元

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant