一种适用于DS-1帧接收侧解析的方法
技术领域
本发明属于PDH通信领域,具体涉及DS-1帧接收侧解析方法,以及实现同样功能的芯片、UE、仪器等。
背景技术
DS-1传输系统为早期PDH通信系统,它把24路数字语音信道按时分多路的原理复合在一条1.544Mb/s的高速信道上。复合的帧格式由ITU-T G.704标准定义。它包含24个DS0(64kbps)时隙,编号从1到24,每个时隙8bit,共192bit位。DS-1帧基本帧还包括一个F比特位(framing bit),作为帧同步位,表示当前帧结束和下一帧的开始。因此一个完整的DS-1帧包含1个帧同步位和24个时隙共193比特,且该码流为串行码流,上一帧与下一帧紧密相连没有空隙,如图4所示。DS-1帧解析依靠DS复帧解析出帧同步序列,从而定位出帧同步位。
ITU-T G.704标准定义了两种DS-1帧复接方式,分别为SF帧和ESF帧。
SF帧格式如表一:
表一
ESF帧格式如表二:
表二
DS-1接收侧解析方法即在一组串行序列中,按照ITU-T G.704规定的复帧格式提取出F比特序列,从而定位DS-1帧。简言之,如果能提取出其中的24个F比特满足ITU-TG.704规定的复帧序列,则认为可以定位DS-1帧。依据ITU-T G.704,SF帧的24位F比特序列为:1000_1101_1100_1000_1101_1100,ESF帧24位比特序列为:xxx0_xxx0_xxx1_xxx0_xxx1_xxx1,其中x代表任意值。
由于DS-1帧仅依靠这1比特用做帧定位,目前现有方案大部分基于遍历搜索,耗时较长。
发明内容
本发明的目的是解决DS-1接收机中由于采用传统解帧方法带来的解析时间较长的问题,本发明提供了一种快速解析DS-1帧的方法。
本发明提供的适用于DS-1帧接收侧快速解析方法,包含以下步骤:
第1、经过线路侧PHY处理后将线路侧的电信号转换为逻辑侧的串行数字序列,并传输至可编程逻辑阵列(FPGA)。通过可编程逻辑阵列(FPGA)将得到的数字序列存储至RAM中,为了达到快速检索DS-1帧的目的,对RAM做如下处理:
第1.1,设置RAM为地址总线位宽为13比特。
第1.2,高5比特作为各个基本帧存储的基地址,按照ITU-T标准规定,DS-1复帧最高为24帧,因此选取5比特作为基本帧的基地址,满足:
25>24。
第1.3,低8比特作为基本帧各个bit的存储地址,按照ITU-T标准规定,DS-1基本帧为193比特,满足:
28>193。
操作方式如下,设置一个计数器,地址的低8比特每个时钟周期自加,计数器计至193时归零,即一个完整的DS-1帧时归零。而同时高5比特加1,以此类推。依靠这样的存储方式,得到了一个类似于矩阵的存储阵列。矩阵的每一列即为一个DS-1基本帧,而矩阵的每一行则为不同的DS-1帧相同位置的比特的组合。通过对RAM地址的控制,按照矩阵的行读取RAM。操作方式如下:设置一个计数器,在读取RAM时,地址的高5位自加,低8位保持不变,当计数器计至24时,则表示读取了一行。如果读取矩阵的下一行,则控制RAM地址的低8位加1即可。
第2,通过对RAM进行并行遍历搜索,得到DS-1帧的X,Y坐标;
并行遍历搜索方法是将由第1步得到的193行的RAM划分为5个区间,由5个搜索引擎并行搜索复合DS-1帧的特征序列,以达到缩短搜索时间的目的,并最终在矩阵中找到复合标准的序列。
通过FPGA搭建序列搜索电路,搜索方法如下:
第2.1,按行读取RAM,如果得到的24比特值与ITU-T标准定义的序列匹配,则保留当前位置;如果与ITU-T标准定义的序列不匹配,则对读取的24比特值进行移位操作。如果移位24次后仍然没有匹配成功,则读取下一行数据,如此反复,直至遍历全部193行数据。
第2.2,为了加速检测过程,采用并行搜索方式。依据上述检测原理,极限情况下需要匹配193x24=4632次,为了在短时间内匹配成功,将193行数据划分为5个搜索区间,各个区间并行搜索,如果搜索匹配成功,则保留当前的行位置(Y轴位置),列位置(X轴位置),对后续的DS-1复帧进行重复确认操作,以防止随机的承载业务数据恰巧与标准定义的序列相同。如果后续复帧在同一位置仍然匹配成功,则认为DS-1复帧检测成功。重复确认的次数可依据不同的负载码型进行不同的设置,直到找到一个准确的行位置和列位置。
第3,利用得到的X,Y坐标提取出DS-1帧序列。由于DS-1帧的传输形式是连续且首尾相接的,因此在第1步中写入RAM的起始点是随机选取的,系统并不知道随机选取的起始点与DS-1帧复帧头的偏移量。所以这一步的目的即利用第2步中得到的X,Y坐标值得到写入RAM的起始点与DS-1帧复帧头的偏移量。具体操作过程为:
3.1在FPGA中设置一个计数器,当第一次写入RAM的时候该计数器归零,而后每写入1比特该计数器加1,直到写入193比特,也就是一个DS-1帧帧长时该计数器清零,如此往复。该计数器的目的是记录随机选取的起始点的相对位置。
3.2在第2步中得到了矩阵X,Y的坐标值。由我们之前的定义,X表示矩阵的行数,该行数与第一行的距离代表随机选取的起始点与复帧的起始点在一个DS-1帧内的偏移量,该值小于193;Y表示矩阵的列数,该列数与第一列的距离代表随机选取的起始点与复帧的起始点相距的DS-1帧的个数,该值小于24;由上可知:DS-1复帧的起始位置距离写入RAM的起始点的位置D为:
D=Y×193+X。
本发明的优点和有益效果:
本发明在可编程逻辑阵列(FPGA)中通过矩阵式存储方式将数据存入RAM,采用并行搜索方法,加速DS-1帧检测过程。
附图说明:
图1为DS-1帧检测系统框架示意图;
图2为DS-1帧检测的信号流程图;
图3为RAM矩阵式存储示意图;
图4为DS-1帧码流示意图;
图5为搜索流程示意图;
图6为由矩阵坐标点标定DS-1复帧起始点示意图;
图7写RAM仿真示意图;
图8读RAM仿真示意图;
图9移位匹配仿真示意图;
图10坐标提取帧头仿真示意图。
具体实施方式
下面结合附图和实例,详细描述本发明的技术方案。本发明的所有内容均已在FPGA中实现,FPGA型号为Xilinx的Spartan6系列的XC6SLX45。为了在有限的资源中实现本发明的所有细节,对本发明的算法在不影响性能的前提下,进行有适当的简化。
第1、经过PHY得到DS-1帧码流,码流速率为1.544Mhz。FPGA内部采用随路时钟将得到的码流按照矩阵式存储方法存储至RAM中,在综合资源和性能的考虑下,本方案采用宽度为1,深度为8192的块RAM作为存储介质。以此线路时钟即1.544Mhz时钟作为RAM的写时钟。一个DS-1复帧由24个DS-1帧组成,而每个DS-1帧由193bit组成,因此在FPGA设置两个计数器,计数器1计算DS-1单帧中各个bit的个数,计数器2计算DS-1帧的个数。计数器1在计至193后归零,表示已经存满一个DS-1帧,同时计数器2加1,如此反复直至存满24个DS-1帧。FPGA的仿真波形见图7,写时钟为线路时钟,在写第一帧时,写地址高位为0,低位加1,在写第二帧时,高5位加1,低位归零重新自加,图中地址为16进制表示。最终可以得到如图3所示的存储阵列。该矩阵的列由RAM地址的低8位确定,该矩阵的行由RAM地址的高5位确定。举例,图中A1,1为第一列第一行,地址为13′b0_0000_0000_0000(FPGA从0开始计数),A2,1为第二行第一列,地址为13′b0_0000_0000_0001,A3,2为第三行第二列,地址为13′b0_0010_0000_0001,以此类推。
在写入操作过程中,写入的第一个点在整个DS-1复帧中的位置是随机的,即我们不知道该点在复帧中的第几帧,也不知道该点是DS-1帧中193比特的第几比特。虽然该点在帧中的位置是随机的,但是在FPGA中需要将该点的位置记录下来。方法为设置一个计数器,以该点为起点,计数器为0,每当进来一个数据该计数器自加1,当加满一个DS-1复帧,即193x24个比特后该计数器归零重新做自加,如此往复。以此计数器最为坐标,其目的是记录第一个写入RAM的点的位置,作为计算帧头的参考坐标。后面的操作将解释如何从序列中找到DS-1复帧的起点位置,后续操作得到的坐标是此坐标的相对偏移量。
本方案FPGA中有另外一路时钟作为系统时钟,时钟频率为60Mhz,本方案以此时钟作为RAM的读时钟。按照矩阵式存储方法将RAM中的数据按行读出,并送至匹配搜索电路。读取的过程如下,设置一个计数器,由于矩阵的一行有24位,因此该计数器计至24后清零,表示读取了矩阵的一行。在上一步中已经提到,该矩阵的列由RAM地址的低8位确定,该矩阵的行由RAM地址的高5位确定。因此地址控制方法为,保持地址的低8位不变,即列保持不变,高5位进行自加操作,计至24后清零,表示读取了一行24个比特。如果要读取下一行,则地址的低8位加1即可。图8中为读第一行的仿真示意图,其中读时钟为系统时钟,读地址低8位不变,高5位自加,图中地址为16进制表示。
第2、在上一步中读取到的一行24bit表示的是24个DS-1帧的相同位置的比特。所谓相同位置是指相对于帧同步位(F比特)的位置偏移。因此可以将得到的24比特与ITU-TG.704定义的DS-1序列头比较。由于并不能确定哪一个DS-1帧为复帧中的第一个帧,在比较过程中需要进行移位操作。参考代码为:
assign a[23:0]={b[22:0],b[23]};
其中b是移位前的序列,a是移位后的序列。如果从RAM中读取的序列与标准定义的序列并不匹配,则需要进行移位操作,移位之后再次比对。如果移位24次后仍然无法与标准定义的序列匹配,则说明在这一行中并不包含DS-1帧头,需要读取RAM的下一行进行比对。
如果在多次移位,多次换行操作后得到了匹配序列,则当前读取的行数为矩阵的Y值,移位的次数为矩阵的X值,该匹配序列的坐标即为:(X,Y)。在图9中,S_shift_line_data即为从RAM中读出的数据,该数据在每个时钟周期进行一次移位操作,如果得到的序列与ITU-T G.704定义的序列相同,则将相关标志位置1。图中,当
S_shift_line_data==24’b000110111001_000110111001
的时候,S_head_flag_sf置1,表明检测到SF帧序列头。同时得到当前位置的坐标,S_sync_pos_x,S_sync_pos_y分别表明当前位置的X坐标和Y坐标,这里X的坐标为90,Y的坐标为1。
在得到ITU-T G.704定义的DS-1序列头后仍需要进行重复确认操作。因为DS-1帧承载的业务码流是随机的,可能遇到的情况是随机的码流组成的序列恰巧与标准定义的序列相同,这样则会导致误判断。因此需要在匹配后记录匹配坐标,将存储RAM刷新后在同一位置进行重复匹配。如果多次重复比较后仍能成功匹配,则可以认为找到DS-1复帧头。重复匹配的次数可以参考码形的随机程度进行不同的设置。整体的搜索流程图如图5所示。简言之,利用矩阵式存储方式,按列写入RAM,按行读取RAM,每读取一次进行匹配比较,如果匹配不成功则进行移位操作,然后再次进行匹配比较。如果移位24次后发现仍然不能匹配成功,则读取RAM中的下一行数据,如此反复。如果匹配成功,则记录当前(X,Y)坐标值,进行重复确认操作。
并行搜索电路越多,搜索的速度越快,但是占用的资源也越多,本方案综合资源考虑采用五组匹配搜索电路并行搜索。五组匹配搜索电路分别搜索矩阵式存储RAM的第0~39行、40~79行、80~119行、120~159行、160~193行。如果搜索出ITU-T G.704定义的DS-1序列头则进行重复确认操作。如果确认成功,则保存当前的X,Y坐标值同时停止其他匹配搜索电路工作。采用五组并行搜索电路后,每组搜索电路最多搜索40行数据,可以加速匹配搜索的过程,在短时间内完成匹配。在极限情况下,即在读到193行时找到匹配序列,则这种并行搜索的方法将比逐行遍历搜索快5倍。
第3、将匹配搜索电路检测到的X,Y坐标值标定为DS-1复帧的起始位置。标定方法如下所示,在图6中,假设图中所示的(3,4)位置为得到的匹配序列坐标值,即
X=3,
Y=4,
由于在步骤一中记录了写入起始点的位置,则在整个DS-1复帧的串行序列中,DS-1复帧的起始位置距离写入RAM的起始点的位置D为:
D=Y×193+X。
这样获取DS-1复帧起始点位置的方法如下:在FPGA中设置一个计数器,在第一步写入起始点的位置时该计数器为0,每当FPGA收到一个比特该计数器做自加操作,当该计数器的值等于D的时刻,FPGA收到的比特则为整个DS-1复帧的起始点。在图10的仿真波形中,S_frame_cnt为帧计数,从0计到192,共193bit,即一个完整的DS-1帧,S_frame_num为帧个数计数,表征有多少个DS-1帧。当S_frame_num=0,同时S_frame_cnt=0时为写入RAM的第一个数据,S_frame_cnt和S_frame_num组成的计数器即为前面提到的参考坐标。我们在上一步中已经知道X轴的坐标为90,Y轴坐标为1,即距离第一个写入点距离1个DS-1帧90个bit的位置为DS-1复帧头,O_t1_data_pulse即为该位置的标识。
由于每个DS-1帧的帧长固定为193比特,因此以该复帧起始位置为基点,每隔193比特为下一个DS-1帧的起始点,如此往复,可以从输入的DS-1码流中定位DS-1帧中的F比特,以及复帧头的位置,从而达到解析各个时隙的目的。