一种实现同步数字体系帧头定位的方法及装置
技术领域
本发明涉及通信同步数字体系(SDH,synchronous digital hierarchy)输入码流检测技术,尤其涉及实现SDH帧头定位的方法及装置。
背景技术
现代社会对通信的依赖越来越大。作为一种全新的传送网体制,SDH以其灵活性和兼容性,迅速得到了广泛的应用。SDH的技术实现需要使用超大规模集成电路,因此往往使用专用芯片。但是,通过专用芯片实现SDH通信技术尚存在功能设置不灵活的问题,比如当发现专用芯片中存在错误难以更改线路。
SDH是串行数据,通常有STM-1、STM-4、STM-16以及STM-64四种不同的业务码流速率(统称为STM-N)。对于STM-1速率的SDH数据尚可用串行方式处理,但对于更高速率的SDH数据仍按照串行方式处理,电路往往是无法胜任的。这时,就需要进行串/并转换,将SDH数据转换成速率较低的并行数据,例如将STM-64串行数据变为32位或64位并行数据,因此需要研究与串行方式不同的并行处理方式。其中,SDH帧头的定位就是首要研究的对象。
SDH帧头的定位是指,收端通过A1、A2字节从信息流中定位、分离出STM-N帧。A1、A2字节有固定的值,其中,A1字节值为11110110(F6H),A2字节值为00101000(28H)。收端检测信号流中的各个字节,当发现连续出现3N个字节的F6H值,又紧跟着出现3N个字节的28H值时(在STM-1帧中A1和A2字节各有3个),就确定现在开始收到一个STM-N帧,通过定位每个STM-N帧的起点,来区分不同的STM-N帧,以达到分离不同帧的目的。
在现有技术中,对SDH帧头的定位方式通常有两种:
1)串行定位,直接对输入的串行数据流按比特(bit)逐一比较,直至查找到用于定帧的帧头字节A1A2。
该方式只适合低速数据使用。
2)并行定位,将输入的数据缓存,并与帧头字节A1A2的期望值进行比较,相同则认为是STM-N帧的帧头。
此方式原理简单,但由于A1A2在数据流中的起始边界不固定,比如b1~b16为16位并行数据,A1可以是b1~b8,也可以是b2~b9;同时为了保证正确定帧,必须查找多个连续的A1和A2才能算是帧头,比如在STM-64速率的数据中需要查找到A1A1A1A2A2A2这样结构的数据,才认为是找到帧头;因此现有的并行定位方式会引入庞大的组合逻辑电路,这会导致数据处理速度降低,且逻辑电路资源消耗巨大。而且,由于定位时没有使用到全部帧头数据,找到假帧头的概率也比较高。
专利CN200510041724曾提出一种两段式检测16位并行STM-16速率的数据的检测方式,先检测A1,再检测A2来确定帧头。但此方式依然无法消除找到虚假帧头的可能。
因此,需要对现有的SDH帧头的定位方法加以改进,能够保证SDH帧头定位的准确率,同时能够快速地进行帧头定位,且有效地减少逻辑电路资源的消耗。
发明内容
本发明所要解决的技术问题是提供一种实现同步数字体系帧头定位的方法及装置,能够保证SDH帧头定位的准确率。
为了解决上述技术问题,本发明提供了一种实现同步数字体系帧头定位的方法,包括:
对输入数据流进行数据边界查找,找到数据边界字节A1,并输出同步数字体系SDH字节数据;
在规定时间内对SDH字节数据流进行帧头查找,找到帧头字节A1A2,并输出并行A1字节数据或并行A2字节数据;若在规定时间内找不到A2,则重新进行数据边界查找的操作。
进一步地,
通过数据边界查找若找到一个A1或一个以上连续的A1,则认为找到数据边界;针对A1在当前数据的高8位中不同的起始位置,会有8种A1位置指示信号与之对应,根据A1位置指示信号,或直接将缓存的前一时钟周期数据作为SDH字节数据输出,或对当前数据和缓存的前一时钟周期数据进行对齐移位,拼装成SDH字节数据输出。
进一步地,
在规定时间内查找SDH字节数据流中第一个出现的帧头字节A2,针对A1A2在当前SDH字节数据和缓存的前一时钟周期SDH字节数据中的位置,会有N种A2位置指示信号与之对应,N为字节8比特的倍数;根据A2位置指示信号,或直接将前一时钟周期SDH字节数据作为并行A1字节数据或并行A2字节数据输出,或对当前SDH字节数据和前一时钟周期进行对齐移位,拼装成并行A1字节数据或所述并行A2字节数据输出。
进一步地,该方法还包括对输出的并行A1字节数据或并行A2字节数据进行数据校验步骤,即:
在输出并行A1字节数据或并行A2字节数据的同时,还输出帧头位置指示信号,根据帧头位置指示信号对A1字节数据流或A2字节数据流进行行列计数,找出数据流中部分的或所有的A1、A2位置,将数据流中每一A1、A2位置上的数据与期望的A1、A2字节数据进行比较,比较结果相同则输出帧头定位正确指示信号,若连续多帧均输出所述帧头定位正确指示信号,则确认帧头定位无误;若比较结果不相同,或未达到连续多帧均输出帧头定位正确指示信号,则需要重新进行数据边界查找及帧头查找。
为了解决上述技术问题,本发明提供了一种实现同步数字体系帧头定位的装置,包括相互连接的边界查找对齐模块、帧头查找移位模块,其中:
边界查找对齐模块,用于在输入数据流进行数据边界查找,找到数据边界字节A1,并将同步数字体系SDH字节数据输出给帧头查找移位模块;在收到帧头查找移位模块输出的查找失败信号后重新进行数据边界查找;
帧头查找移位模块,用于在规定时间内对SDH数据字节数据流进行帧头查找,找到帧头字节A1A2,并输出并行A1字节数据或并行A2字节数据;若在规定时间内找不到A2,则向边界查找对齐模块输出查找失败信号。
进一步地,边界查找对齐模块包括第一数据缓冲器、第二数据缓冲器和第一数据选择器,其中:
边界查找对齐模块,定义输入数据流中当前数据在第一数据缓冲器内,并将输入数据流中数据延时缓存在第二数据缓冲器内一个时钟周期成为前一时钟周期数据,若在当前数据中查找到一个A1或一个以上连续的A1,则认为找到数据边界;根据查找A1在当前数据的高8位中不同的起始位置所产生的A1位置指示信号,通过第一数据选择器选择直接将第二数据缓冲器内前一时钟周期数据作为SDH字节数据输出,或对第一数据缓冲器内当前数据和第二数据缓冲器内前一时钟周期数据进行对齐移位,拼装成SDH字节数据,通过第一数据选择器选择输出。
进一步地,帧头查找移位模块包括第三数据缓冲器、第四数据缓冲器和第二数据选择器,其中:
帧头查找移位模块,在规定时间内查找缓存在第三数据缓冲器内的当前SDH字节数据和缓存在第四数据缓冲器内的前一时钟周期SDH字节数据中第一个出现的帧头字节A2,根据查找A1A2在当前SDH字节数据和前一时钟周期SDH字节数据中的位置产生的A2位置指示信号,通过第二数据选择器选择直接将当前SDH字节数据作为并行A1字节数据流或并行A2字节数据输出,或对当前SDH字节数据和前一时钟周期SDH字节数据进行对齐移位,拼装成并行A1字节数据或并行A2字节数据,通过第二数据选择器选择输出。
进一步地,该装置还包括分别与帧头查找移位模块和边界查找对齐模块连接的帧头校验模块,其中:
帧头查找移位模块,向帧头校验模块输出并行A1字节数据或并行A2字节数据,同时输出帧头位置指示信号;
帧头校验模块,用于根据帧头位置指示信号,对输入在第五数据缓冲器内的A1字节数据流或A2字节数据流进行行列计数,找出数据流中部分的或所有的A1、A2位置,将数据流每一A1、A2位置上的数据与期望的A1、A2字节数据进行比较,比较结果相同则输出帧头定位正确指示信号,若连续多帧均输出帧头定位正确指示信号,则确认帧头定位无误,通过输出控制器输出经数据校验的A1字节数据流或A2字节数据流;否则,向边界查找对齐模块输出校验失败信号;
边界查找对齐模块,用于根据校验失败信号重新进行数据边界查找。
进一步地,通过场可编程门阵列FPGA实现所述装置。
进一步地,该装置还包括分别与边界查找对齐模块、帧头校验模块以及帧头校验模块连接的控制模块,用于作为状态机通过边界查找状态、帧头查找状态、数据校验状态以及正常状态控制边界查找对齐模块、帧头校验模块以及帧头校验模块协调工作以及所述装置的输出。
采用本发明的实现同步数字体系帧头定位的方法及装置,由于在查找帧头字节A1A2后增加了反馈环节和数据校验环节,故可将找到假帧头的概率降至最低,从而保证了SDH帧头定位的准确率。再有,本发明利用FPGA实现SDH帧头定位,能够快速地进行帧头定位,且可以提供更灵活的功能设置和更低廉的运营成本。
附图说明
图1为本发明实现同步数字体系帧头定位的方法实施例流程图;
图2为本发明实现同步数字体系帧头定位装置一实施例的原理框图;
图3为本发明实现同步数字体系帧头定位装置另一实施例的原理框图。
具体实施方式
本发明提供的实现同步数字体系帧头定位的方法及装置,其发明构思是,通过边界查找对齐环节找到数据边界A1;通过帧头查找移位环节对SDH数据字节在一定时间内找到第一个出现的A2字节,如果在规定时间内找不到A2,则重新执行边界查找对齐操作。最后,通过数据校验环节对确定的A1、A2位置上的数据进行校验,确认无误找到帧头字节A1A2,从而确保SDH帧头定位的准确率。并且,本发明通过场可编程门阵列(FPGA,FieldProgrammable Gate Array)实现同步数字体系帧头定位的装置,故可以提供更灵活的功能设置和低廉的运营成本。
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。以下实施例仅仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
如图1所示,是本发明实现同步数字体系帧头定位的方法实施例的流程,用于8位以上并行16位、32位、64位等等(数据位数只要是8的整数倍均可)SDH数据帧头的定位;包括如下步骤:
110:通过边界查找对齐,找到数据边界A1的位置,并输出SDH数据字节;
即输入数据并存入数据缓冲器,如果检测到连续的16bits数据为A1A1,则认为找到数据边界;根据A1查找结果将当前数据和前一时钟周期的数据进行移位处理,从而使输出数据的每个字节都是SDH字节数据。
以32位并行处理STM-64速率的SDH数据为例,A1的二进制数为11110110(即F6H),它的最高位1可以在bit 32到bit 25八个数据之间的任意位置出现,即相应A1出现的bit位置,会产生一个A1位置指示信号,一共有8种A1位置指示信号。如果A1在最高比特位bit 32起始,则输入数据无需移位;如果在比特位bit 31起始,则取当前数据的bit 32,再取前一时钟周期数据的bit 31至bit1,组成对齐的32bits输出数据;以此类推,可以得出8种情况下的输出数据。
120:帧头查找移位,找到帧头字节A2的位置,并输出并行A1数据或并行A2数据;
将上述边界对齐的SDH字节数据流存入数据缓冲器,在一定时间内查找数据缓冲器内数据流中第一个出现的A2,根据A2查找结果对当前SDH字节数据和前一时钟周期SDH字节数据进行字节对齐,使输出的并行数据仅为A1数据或仅为A2数据。如果在规定时间内找不到A2(说明边界定位不正确),则重新执行边界查找对齐操作(及步骤110)。本发明通过增加此反馈环节而降低了找到假帧头的概率。
同样以32位并行处理STM-64速率的SDH数据为例。经过边界对齐移位操作后,第一个A2出现在32位并行数据的位置有4种可能:出现在最高8个比特位bit 32至bit 25,或出现在后续的8个比特位bit 24至bit 17,或出现在再后续的8个比特位bit 16至bit 9,或出现在最低8个比特位bit 8至bit1,由此会有4种A2位置指示信号与之对应。如果在最高8比特出现,则输入数据已经对齐无需移位;如果在比特位bit 24至bit1 7出现,则取当前数据的bit 32至bit 25,再取前一时钟的数据的bit 24至bit 1,组成对齐的32比特输出数据;依次类推,根据A2位置指示信号进行相应的数据字节对齐操作,以保证输出的32位数据不会有A1和A2同时出现。与此同时,产生帧头位置的指示信号,即A1A2位置指示信号。
130:进行数据校验。
即根据上述产生的帧头位置指示信号对数据流(A1或A2数据)进行行列计数,找出数据流中部分的或所有的A1A2数据的位置,对数据流中所有这些位置上的数据进行A1A2字节校验无误后,确认找到帧头字节。如果有误则需要重新进行边界查找及帧头定位。
完成前两步的操作,已经基本上能正确地找到帧头字节。但是由于STM-64信号数据量很大,依然有一定的出现假帧头信号的极小概率,即在数据流中偶然出现了两个A1字节值,后面跟着A1A2字节值,但附近位置的数据却不是A1A2字节值。为此,本方案特别加入了数据校验环节,由此将找到假帧头的概率降至最低。
本发明针对上述方法实施例,用verilog语言编写了一个用FPGA实现的32位并行STM-64数据的帧头查找逻辑装置,其中一实施例的原理框图如图2所示,包括边界查找对齐模块及其数据缓冲器B1、B2和数据选择器S1、帧头查找移位模块及其数据缓冲器B3、B4和数据选择器S2以及帧头校验模块及其数据缓冲器B5和输出控制器,其中:
边界查找对齐模块,用于找到边界字节A1的位置,并输出SDH数据字节;
定义32位STM-64的输入数据(din)到数据缓冲器B1,并延时缓存到数据缓冲器B2内一个时钟周期变成din_d1。根据需要查找的A1在din的高8位中的起始位置不同,会产生一个A1位置指示信号,一共有8种A1位置指示信号,分别为dect_a1_7,dect_a1_6,dect_a1_5,dect_a1_4,dect_a1_3,dect_a1_2,dect_a1_1,dect_a1_0。根据这8个位置指示信号,拼装当前数据din和前一时钟周期数据din_d1产生32位输出数据din_bit_align,通过数据选择器S1输出(在此,数据选择器S1的作用是:若需重排数据,则通过数据选择器选择din和din_d1到边界查找对齐模块中进行数据重排,并通过数据选择器输出重排后的SDH数据字节;如果不需重排数据则选择直接将din_d1作为SDH数据字节输出)。
当然,数据缓冲器B1、B2和数据选择器S1也可以包含在边界查找对齐模块中。
帧头查找移位模块,用于进行帧头查找移位,找到帧头字节A2的位置;
经过边界查找对齐后输出的重排数据din_bit_align,通过数据选择器S1输入到数据缓冲器B3,并延时缓存到数据缓冲器B4内一个时钟周期变成din_bit_align_d1。根据需要查找的A1A2在din_bit_align_d1、din_bit_align内的位置,会产生一个A2位置指示信号,一共有4种A2位置指示信号,分别为dect_a1a2_3,dect_a1a2_2,dect_a1a2_1,dect_a1a2_0。根据这些指示信号,再次做数据调整,拼装当前数据din_bit_align和前一时钟周期数据din_bit_align_d1,得到32位的输出数据din_byte_align,通过数据选择器S2输出(数据选择器S2作用类似数据选择器S1,只是S1是对bit做拼装,S2对字节做拼装),同时产生帧头指示信号init_fp输出给帧头校验模块。
如果以64位并行处理的SDH数据为例,则会有8种A2位置指示信号。以此类推,对于以8*N位并行处理的SDH数据,会有N种A2位置指示信号。
当然,数据缓冲器B3、B4和数据选择器S2也可以包含在帧头查找移位模块中。
帧头校验模块,用于校验数据,确认A1A2定帧无误。
经过帧头查找移位的din_byte_align数据,通过数据选择器S2缓存到数据缓冲器C内,再送入帧头校验模块进行校验。帧头校验模块根据init_fp对数据流(即数据缓冲器C内的din_byte_align)进行行列计数,找出数据流din_byte_align中部分的或所有的A1和A2位置,将数据流din_byte_align在A1、A2位置上的数据和期望的A1、A2数据(F6H和28H)进行比较,得到A1A2是否正确的指示信号a1a2_match。如果连续若干帧a1a2_match都存在,则认为定帧正确无误。
当然,数据缓冲器B5和输出控制器均可以包含在帧头校验模块中。
如图3所示,是本发明提供的另一个用FPGA实现的32位并行STM-64数据的帧头查找逻辑装置实施例,与图2所示实施例不同的仅仅是增加了一个控制模块,用于控制其它三个模块(即边界查找对齐模块、帧头查找移位模块以及帧头校验模块)的协调工作。
控制模块利用状态机来控制边界查找对齐模块的边界查找,帧头查找移位模块的帧头查找以及和帧头校验模块的校验三环节之间的转换。该状态机一共定义了四个状态:边界查找,帧头查找,校验和正常状态。状态机跳转的规则如下:系统复位后自动进入边界查找状态,找到A1数据后转入帧头查找状态;如果过一定时间找不到A2字节,则返回边界查找状态重新寻找A1;如果找到A2,则进入校验状态;如果连续两帧无法校验正确的A1和A2数据,则返回边界查找状态;如果校验结果正确,则进入正常运行,若在正常运行时,出现连续五帧A1A2校验不正确则再次进入边界查找状态,也可以设置检测需要的任意帧数目,比如设置成三帧。
综上所述可以看出,本发明的实现同步数字体系帧头定位的方法及相应的装置,由于增加了在规定时间内找不到A2就重新执行边界查找对齐操作的反馈环节,并在找到帧头字节A1A2后增加了数据校验环节,故将找到假帧头的概率降至最低,从而保证了SDH帧头定位的准确率。再有,本发明利用FPGA实现SDH帧头定位,能够快速地进行帧头定位,且可以提供更灵活的功能设置和更低廉的运营成本。
本发明的方案经在10G速率和2.5G速率的光传输产品上试用,在311MHz的系统时钟下,该电路定帧结果完全正确,各项功能和性能指标符合要求。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。