APP下载

解复用处理电路中成帧器模块的设计与仿真

2018-08-29韩美林乔成芳

计算机与数字工程 2018年8期
关键词:行列字符字节

韩美林 乔成芳

(商洛学院电子信息与电气工程学院 商洛 726000)

关键字 解复用电路;成帧器;帧头字符定位

1 引言

从高速的串行数据中恢复出来的不同类型的数据只是按照顺序以各自的bit宽度重新放置,并没有按照正确的帧格式字节对齐,导致后续电路无法直接使用这样的数据,所以成帧器是寻找标准帧格式起始位置的关键电路[5]。

光传送网的帧格式是一个4行×4080字节的块状帧结构,其中第1列至第16列字节是开销字节,第17列至第3824列字节是净荷数据,第3825列至第 4080列字节是前向纠错(FEC)编码数据[6]。G.709规定,帧定位开销字节是一个OTUk/ODUk帧的起始字节,占用OTUk/ODUk帧结构的第1行的前7个字节,第一行的1到6个字节为帧定位开销(FAS),这6个字节的内容为“0xF6F6F6282828”,第七个字节为复帧定位MFAS复帧定位开销(MFAS)[7]。

2 OTU2_64bit成帧器设计

2.1 OTU2_64bit帧头字符定位检测设计

OTU2字符定位检测就是要从64bit数据中找到FAS(0xF6F6F6282828),考虑到OTU2信号是由SFI4.2接口中的串并转换单元不考虑数据帧头的位置随机将相邻64bit数据划分在一起输出的[8],所以连续的48bit帧头数据可能处在一个时钟周期的64bit数据中,也可能处在两个时钟周期的64bit数据之间。所以首先把第一个时钟周期的64bit数据缓存,再与下一个周期的64bit组合成128bit数据[9]。通过比较器与128bit数据比较,最终检测出固定的48bit帧头数据。具体实现结构如图1所示。

图1 OTU2_64bit的帧头字符检测模块结构图

如图1所示,首先将第一个时钟周期的64bit数据缓存再与下一个周期的64bit数据组合为128bit的join_data数据;其次,在128bit数据里找48bit帧头时先将0x28与join_data的第16位到第23位逐一进行比较,如果比较结果为高则在join_data出现0x28的位置向前继续与0x2828进行比较,如果比较结果为高则在join_data出现0x282828的位置逐一向前继续与0xf6f6进行比较,如果比较结果为高则在join_data出现0xf6f6282828的位置逐一向前继续与0xf6进行比较,如果结果为高则锁定数据,将其看做为帧头数据,并给出帧头指示信号check_1st。根据给出的帧头指示信号将行列指示清零重新进行计数[10]。如果其中有一次比较结果为低则从比较结果为低的位置向前重新开始比较,直到找到帧头。

2.2 OTU2_64bit帧同步电路设计

找到帧头指示信号后,需要通过帧头同步来确定是否是数据流的正确帧头。通过分析得知帧同步过程中有帧丢失、帧失步、和重新发现帧头等多种可能性,考虑到这点所以此电路设计采用有限状态机来实现其包含的所有状态[11]。如图2所示为各个状态跳转的状态转移图。

图2 OTU2_64bit的帧同步状态转移图

帧同步状态转移图所有状态的具体含义为

1)帧丢失状态:电路在复位状态下处于帧丢失状态,通过帧头检测模块给出的帧头使能信号与行列指示信号来判断是否进入下一状态。如果帧头使能信号为高且帧头位置在第一行第一列则进入找到帧头状态,否则一直保持帧丢失状态。

2)找到帧头状态:电路处于找到帧头状态后,在下一帧帧头位置继续检测是否为帧头,如果连续三次在帧头位置都能找到帧头则进入到帧同步状态,否则返回到帧丢失状态,重新开始检测帧头。

3)帧同步状态:在帧同步状态时电路一直处于帧同步状态直到在帧格式的起始位置没有检测到帧头指示信号,则进入到帧失步状态。

4)帧失步状态:在帧失步状态时,继续在前同步状态的帧格式起始位置寻找帧头,如果三次及三次以内重新找到帧头则电路进入帧同步状态,否则进入帧丢失状态[12]。

本状态机是根据G.709的帧格式设计出来的,因为OTU2、ODU1、ODU0的帧格式本质相同,所以OTU2、ODU1、ODU0的帧同步电路状态机基本一致,此处不再说明。

3 ODU1_16bit成帧器设计

ODU1的帧头字符检测设计与OTU2的帧头字符检测设计最大的不同在于输出的数据比特位宽度不同,OTU2一个时钟周期输出64bit数据,ODU1一个时钟周期输出16bit数据,这使得ODU1帧头字符检测设计与OTU2的帧头字符检测设计有所不同[13]。

ODU1一个时钟周期输出16bit数据,则至少需要三个时钟周期才可以找到FAS(0xF6F6F6282828),考虑到数据的连续性,将输出的ODU1数据进行数据的组合[14]。具体实现结构如图3所示。

图3 ODU1_16bit的帧头字符检测模块结构图

如图3所示,将ODU1输入数据延迟一个节拍再与下一节拍输入数据拼接为32bit的join_data0数据,再将join_data0数据与下一节拍输入数据拼接为48bit的join_data1数据,最后将join_data1数据与下一节拍输入数据拼接为64bit的join_data2数据,最终完成数据的拼接,为找帧头检测电路提供数据的连续性[15]。帧头检测首先采用16位的比较器比较data_in与0x28是否一致,其次用32位的比较器比较join_data0的8至32位的数据是否与0x2828一致,再次用48位的比较器比较join_data1的24~47位的数据是否与0xF6F6一致,然后用64位的比较器比较join_data2的40至55位的数据是否与0xF6一致,最后将这几个比较器的比较结果相与,如果为高则检测到帧头数据,如果为低则没有检测到帧头数据。

ODU0_8bit的帧头字符检测模块的设计与ODU1的帧头字符检测模块的设计方法一致,此处不再说明。

4 成帧器模块功能仿真及结果分析

如图4为OTU2成帧器的帧头字符定位检测和帧同步电路仿真结果图。data_in表示帧头字符定位检测的输入数据,join_data为128bit的拼接数据,check_1st置高表示找到帧头,combine_data表示找到帧头后输出的数据,line和colunm分别表示输出数据的行列指示。从图中可以看出当check_1st为高时行列指示全部清零重新开始计数,并且将join_data中拼接的帧头信息找到后提取出来作为combine_data数据的第一行第一列为帧头数据“f6f6f6282828xxxx”。data_in_0表示帧同步的输入数据,state为四种状态转移信号,check_1st为高表示找到帧头,data_out为OTU2成帧后的数据输出,line和colunm分别表示输出数据的行列指示。从图中可以看出当找到帧头时行列指示清零开始重新计数,帧头位置数据为“f6f6f6282828xxxx”。

如图5为ODU1成帧器的帧头字符定位检测和帧同步电路仿真结果图。read_en_gap为ODU1时钟的使能信号,data_in表示帧头字符定位检测的输入数据,join_data0、join_data1、join_data2分别为输入数据的拼接,check_out置高表示找到帧头,com⁃bine_data表示找到帧头后输出的数据,line和col⁃unm分别表示输出数据的行列指示。从图中可以看出当check_out为高时行列指示全部清零重新开始计数,并且将join_data2中拼接的帧头信息找到后提取出来作为combine_data数据的第一行第一列为帧头数据的起始数据。data_in1表示帧同步的输入数据,state为四种状态转移信号,check_out为高表示找到帧头,data_out为ODU1成帧后的数据输出,line和colunm分别表示输出数据的行列指示。从图中可以看出当找到帧头时行列指示清零开始重新计数。

图4 OTU2成帧器的帧头字符定位检测和帧同步电路仿真结果图

图5 ODU1成帧器的帧头字符定位检测和帧同步电路仿真结果图

5 结语

本文设计的成帧器模块完成的主要功能是从输入的OTU2或ODUK数据单元中找到处于任意位置的固定48bit数据,找到固定的48bit数据后判断是否是合法的帧头,如果合法则给出行列指示,否则重新进行查找。对于不在数据格式首位的帧头进行数据重排并校正行列指示,再进行后续处理。有效地解决了解复用处理电路中没有按照正确的帧格式字节对齐的数据所带来的问题。通过仿真结果表明,该电路能够准确地完成帧头字符定位检测。

猜你喜欢

行列字符字节
No.8 字节跳动将推出独立出口电商APP
超级快递员
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
No.10 “字节跳动手机”要来了?
一节公开课的点点滴滴
人类进入“泽它时代”
重要更正