CN105721105B - 一种基于字节流的解码方法 - Google Patents

一种基于字节流的解码方法 Download PDF

Info

Publication number
CN105721105B
CN105721105B CN201610044846.4A CN201610044846A CN105721105B CN 105721105 B CN105721105 B CN 105721105B CN 201610044846 A CN201610044846 A CN 201610044846A CN 105721105 B CN105721105 B CN 105721105B
Authority
CN
China
Prior art keywords
hdlc
state
decoding
flag
decode
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
CN201610044846.4A
Other languages
English (en)
Other versions
CN105721105A (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.)
Guangzhou Yihang Hulian Communication Co ltd
Original Assignee
Guangzhou Yihang Hulian Communication Co ltd
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 Guangzhou Yihang Hulian Communication Co ltd filed Critical Guangzhou Yihang Hulian Communication Co ltd
Priority to CN201610044846.4A priority Critical patent/CN105721105B/zh
Publication of CN105721105A publication Critical patent/CN105721105A/zh
Application granted granted Critical
Publication of CN105721105B publication Critical patent/CN105721105B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明适用于解码技术领域,提供了一种基于字节流的解码方法,所述解码方法包括以下步骤:A、利用bit字节流解码算法生成byte的解码表;B、根据新生成的解码表对输入的byte进行解码并输出结果。最初采用bit解码算法,最多能够做到32路并发解码,在将算法替换为byte解码后,最多能够做到128路并发解码,处理能力提高4倍。提高了处理能力,节省了处理时间、提高了处理效率。

Description

一种基于字节流的解码方法
技术领域
本发明属于解码技术领域,尤其涉及一种基于字节流的解码方法。
背景技术
HDLC是电信产品中常用的物理层协议,ISDN-PRI和SS7信令就是建立在HDLC协议之上。
HDLC bit流由“标志+信息+FCS(CRC16)”构成,由“标志”字节开始,到下一个“标志”字节结束,中间部分就是“信息+FCS”。在规范中,最后2个字节是CRC16算法的校验字,通过CRC16算法计算的校验结果来判断信息是否完整。
“标志”字节:标志字节也称为Flag,用于HDLC信息帧之间的分界。也就是两个HDLC信息帧间必须有一个Flag,但也可能有多个Flag。Flag为“01111110”的bit流。
为避免HDLC信息帧中有Flag相同的数据,在发送端,连续5个bit 1就插入bit 0,在接收端,如果收到连续的5个bit 1,后面的bit 0自动丢弃。
FCS:帧校验。对于PRI/SS7规范,采用CRC16算法。
为了拆分出信息部分和计算FCS,必须对整个bit流做处理。在常规上一般采用专门的硬件芯片来做这个工作,但是,在某些情况下,也需要通过C代码来实现HDLC的解码。
对于用程序实现HDLC解码,已经有非常多的实践,主要的优化在于将复杂的CRC16FCS计算表格化,而信息部分的解码还是采用按bit处理。
字节流的HDLC解码算法是从bit流解码算法优化过来的,因此,先介绍bit流HDLC解码算法。
HDLC解码算法也是相对比较复杂,下面就最基本的部分做描述。
解码状态机
根据HDLC的特点,有如下的解码过程状态:
HDLC_ZERO_SEARCH
查找0。由于HDLC以flag开始,而flag是”01111110’的bit流,因此,解码的第一个状态就是查找0的状态。
HDLC_FLAG_SEARCH
查找HDLC的flag。用于匹配后续的标志bit。
HDLC_FLAG_FOUND
Flag已经找到,解码HDLC信息字节。
HDLC解码状态机如图1所示。
HDLC解码流程的简单描述:
HDLC解码的初始状态是ZERO_SEARCH状态,在此状态,需要查找bit流中的0,找到0后,状态切换到FLAG_SEARCH状态。
在FLAG_SEARCH状态:记录收到的bit流,直到连续收到HDLC标志“01111110”,切换到FLAG_FOUND状态。另外,如果在此状态收到连续的7个bit1,切换到ZERO_SEARCH状态。
在FLAG_SEARCH状态:收到bit1时,如果已经连续收到6个bit1,切换到ZERO_SEARCH状态,否则,输出解码的bit1。收到bit0时,如果已经连续收到6个bit1,此时表示收到一个HDLC Flag,HDLC帧解码完成,进行CRC16校验,并输出校验后的HDLC帧数据;如果已经连续收到5个bit1,此bit0是插入的bit,直接丢弃,清除连续bit1记录;其它情况,输出解码的bit0。
记录结构
由于一次不能够将所有的bit全部解码,因此,必须要有一个结构来记录中间信息,便于在多次调用的时候连续解码。
Figure BDA0000912611540000031
对结构的简单说明:
state:解码状态机的状态;
r_one:收到连续bit1的个数;
o_bitcnt:HDLC解码输出bit在解码缓冲区中的位置;
i_bitcnt:当前要解码bit所在缓冲区中的位置。
HDLC bit解码流程:在前面信息的基础上,解码过程是比较容易描述和了解的。如图2所示。根据hdlc_state中记录的状态,进行不同的解码处理。
各个状态的详细描述。
HDLC_ZERO_SEARCH的bit处理,如图3所示,由于在此状态要查找HDLC Flag中的第一个0,因此,只有收到bit0,才切换到FLAG_SEARCH状态。
HDLC_FLAG_SEARCH的bit处理,如图4所示,在此状态,要查找HDLC的整个标志(bit:01111110)。如果输入bit是bit1,连续接收到1的记录(r_one)增加1,如果已经达到7个bit1,转换到ZERO_SEARCH状态。如果输入bit是bit0,如果r_one是6,表示HDLC Flag已经收到了,状态转换到FLAG_FOUND状态;否则,需要清除r_one的记录。
HDLC_FLAG_FOUND的bit处理,如图5所示,如果输入是bit1,增加r_one记录。如果r_one为7,状态转换到ZERO_SEARCH状态;否则,输出bit1。如果输入是bit0,可能会是HDLCFlag标志。如果r_one为6,表示收到HDLC Flag,此帧结束,输出HDLC帧数据。如果r_one是5,此bit0是HDLC规则插入的额外的0,直接丢弃,否则,输出bit0。同时,由于收到bit0,清除r_one标志。
发明内容
本发明的目的在于提供一种基于字节流的解码方法,旨在解决上述的技术问题。
本发明是这样实现的,一种基于字节流的解码方法,所述解码方法包括以下步骤:
A、利用bit字节流解码算法生成byte的解码表;
B、根据新生成的解码表对输入的byte进行解码并输出结果。
本发明的进一步技术方案是:所述步骤A中byte的解码表包括HDLC_ZERO_SEARCH表、HDLC_FLAG_SEARCH表及HDLC_FLAG_FOUND表。
本发明的进一步技术方案是:所述HDLC_ZERO_SEARCH表生成包括以下步骤:
A11、判断产生hdlc0.c文件是否成功;如是,则写入全局变量头FAST_HDLC_DECODE_STATE_MACHINE HDLC_ZERO_SEARCH_SM并执行步骤A12,如否,则结束生成本表;
A12、枚举所有的字节0~255和连续的bit(r_one)0~7;
A13、将ZERO_SEARCH设置成r_one值;
A14、调用bit流HDLC解码并获得struct hdlc_decode_state_tbl结构值;
A15、将struct hdlc_decode_state_tbl结构写入文件并枚举所有的连续的bitl(r_one)0~7和字节0~255;
A16、对生成的HDLC_ZERO_SEARCH表写入结束信息并关闭文件结束本次表生成。
本发明的进一步技术方案是:所述HDLC_FLAG_SEARCH表生成包括以下步骤:
A21、判断产生hdlc1.c文件是否成功;如是,则写入全局变量头FAST_HDLC_DECODE_STATE_MACHINE HDLC_FLAG_SEARCH_SM并执行步骤A12,如否,则结束生成本表;
A22、枚举所有的字节0~255和连续的bit(r_one)0~7;
A23、将FLAG_SEARCH设置成r_one值;
A24、调用bit流HDLC解码并获得struct hdlc_decode_state_tbl结构值;
A25、将struct hdlc_decode_state_tbl结构写入文件并枚举所有的连续的bitl(r_one)0~7和字节0~255;
A26、对生成的HDLC_FLAG_SEARCH表写入结束信息并关闭文件结束本次表生成。
本发明的进一步技术方案是:所述HDLC_FLAG_FOUND表生成包括以下步骤:
A31、判断产生hdlc2.c文件是否成功;如是,则写入全局变量头FAST_HDLC_DECODE_STATE_MACHINE HDLC_FLAG_FOUND_SM并执行步骤A12,如否,则结束生成本表;
A32、枚举所有的字节0~255和连续的bit(r_one)0~7;
A33、将FLAG_FOUND设置成r_one值;
A34、调用bit流HDLC解码并获得struct hdlc_decode_state_tbl结构值;
A35、将struct hdlc_decode_state_tbl结构写入文件并枚举所有的连续的bitl(r_one)0~7和字节0~255;
A36、对生成的HDLC_FLAG_FOUND表写入结束信息并关闭文件结束本次表生成。
本发明的进一步技术方案是:所述步骤B中单个byte的解码包括以下步骤:
B11、根据hdlc_state中记录的state值确定
zero_search/flag_search/fiag_found中的某个表格;
B12、根据hdlc_state中记录的r_one和当前的解码byte获得新的状态表项hdlc_statc_dccodc_tbl并使用byte×7+r_one作为下标直接查表;
B13、根据hdlc_state中记录的state值在HDLC_FLAG_SEARCH表及HDLC_FLAG_FOUND表做状态转换处理;
B14、用hdlc_state_decode_tbl中的state和r_one更新hdlc_state中记录state和r_one。
本发明的进一步技术方案是:所述步骤B13中还包括以下步骤:
B131、判断状态是否跳转到HDLC_FLAG_FOUND表;如是,则执行步骤B132,如否,则结束本次操作;
B132,新的HDLC帧开始去除hdlc_state_decode_tbl表中记录的输出值0_bitcnt和r_val;
B133,将r_val中的0_bitcnt个有效值数据copy到外部缓冲区并结束本次操作。
本发明的进一步技术方案是:所述步骤B131还包括以下步骤:
B1311、判断状态是否跳转到HDLC_FLAG_FOUND表;如是,则执行步骤B1312,如否,则表示HDLC一帧解码错误停止并取出hdlc_state_decode_tbl中的0_bitcnt和r_val,并执行步骤1313;
B1312、判断是否收到新的HDLC标志b_nextfrm;如是,则表示前一帧HDLC解码完成并取出hdlc_state_decode_tbl中的0_bitcnt和r_val并执行步骤B1313,如否,则一帧HDLC解码进行中并取出hdlc_state_decode_tbl中的0_bitcnt和r_val并执行步骤B1314;
B1313、将r_val中的0_bitcnt个有效值和记录的前此解码的r_val组合为最后的输出byte并执行步骤1315;
B1314、将r_val中的0_bitcnt个有效值和记录的前此解码的r_val组合后输出并结束本次操作;
B1315、进行HDLG帧的CRC16校验并输出一帧的值且结束本次操作。
本发明的有益效果是:最初采用bit解码算法,最多能够做到32路并发解码,在将算法替换为byte解码后,最多能够做到128路并发解码,处理能力提高4倍。提高了处理能力,节省了处理时间、提高了处理效率。
附图说明
图1是HDLC解码状态机的示意图。
图2 2.3.HDLC bit解码流程图。
图3HDLC_ZERO_SEARCH的bit处理流程图。
图4HDLC_FLAG_SEARCH的bit处理流程图。
图5HDLC_FLAG_FOUND的bit处理流程图。
图6是本发明实施例提供的基于字节流的解码方法的流程图。
图7是本发明实施例提供的生成HDLC_ZERO_SEARCH表的流程图。
图8是本发明实施例提供的生成HDLC_FLAG_SEARCH表的流程图。
图9是本发明实施例提供的生成HDLC_FLAG_FOUND表的流程图。
图10是本发明实施例提供的单个byte的解码的流程图。
图11是本发明实施例提供的HDLC_FLAG_SEARCH的byte处理的流程图。
图12是本发明实施例提供的HDLC_FLAG_FOUND的byte处理的流程图。
具体实施方式
图6-12示出了,本发明提供的基于字节流的解码方法,,所述解码方法包括以下步骤:
A、利用bit字节流解码算法生成byte的解码表;
B、根据新生成的解码表对输入的byte进行解码并输出结果。
根据对bit解码算法的分析,主要需要优化的地方有两个:A、要解码的数据是按bit处理。如果转换为按byte处理,就可以去掉单个byte的8次循环,将大大减少处理时间。B、Bit解码涉及到大量的比较操作。
因此,新算法的主要思想是利用bit算法生成表格,在实际解码时,利用查表的方法,直接得到结果,这样就可以大大减少上述的处理时间,达到优化的目的。
通过分析bit流HDLC解码状态机,HDLC解码的核心算法是:在当前状态下,输入新的bit值,将状态推动到新的状态。同理,如果输入新的byte,状态机通过8次变化,也是转换到一个新的状态。这样就需要构造256×256的表格。再对解码过程进行分析:发现对解码最大的影响是r_one,也就是连续收到bit1的个数;根据输入byte和r_one的值来构造表格,表格就变成:256×7,表格的大小将大大减小。
(注:连续7个bit1已经表示HDLC帧有问题了,状态会转换到ZERO_SEARCH,因此,不可能有8个连续的bit1)。
因此,新算法就是先根据上述思想构造转换的表格,实际解码时,直接查这些表格,来获得byte的新状态。
基于byte的解码算法分成两个部分:解码表的生成和解码过程。
由于HDLC解码有三种状态(见bit解码算法),因此,需要生成三个解码表,分别对应:HDLC_ZERO_SEARCH、HDLC_FLAG_SEARCH和HDLC_FLAG_FOUND状态。
每个状态表采用穷举的方法:也就是当前byte为0~255,在r_one为0~7的情况下,使用bit流解码算法,获得转换后的状态,并将转换后的状态写入到转换表文件中。
解码表的结构记录每个字节在当前状态的解码信息,这些信息将写入到文件中,在解码前再导入到内存中,用于辅助解码过程。
Figure BDA0000912611540000101
Figure BDA0000912611540000111
对结构的简单说明:
state:解码状态机的状态;
r_one:收到连续bit1的个数;
r_val:记录解码的输出值;
o_bitcnt:HDLC解码输出bit在r_val中的位置;
b_nextfrm:是否已经收到了HDLC结束的Flag。
此结构表示一个状态,因此,每个解码表文件有255×7个这样的结构。
为了便于在HDLC解码时使用这些表格,解码表是按C语言的要求写入文件,使用时,直接将这些文件编译到执行程序中。
HDLC_ZERO_SEARCH状态的文件为hdlc0.c,全局变量名为FAST_HDLC_DECODE_STATE_MACHINE HDLC_ZERO_SEARCH_SM,写入的流程图,如图7所示。
HDLC_FLAG_SEARCH状态的文件为hdlc1.c,全局变量名为FAST_HDLC_DECODE_STATE_MACHINE HDLC_FLAG_SEARCH_SM,写入的流程图,如图8所示。
HDLC_FLAG_FOUND状态的文件为hdlc2.c,全局变量名为FAST_HDLC_DECODE_STATE_MACHINE HDLC_FLAG_FOUND_SM,写入的流程图,如图9所示。
由于一次不能够将所有的bit全部解码,因此,必须要有一个结构来记录中间信息,便于在多次调用的时候连续解码。
Figure BDA0000912611540000121
对结构的简单说明:
state:解码状态机的状态;
r_one:收到连续bit1的个数;
o_bitcnt:HDLC解码输出bit在解码缓冲区中的位置;
i_bitcnt:当前要解码bit所在缓冲区中的位置。
在表格的支持下,HDLC解码变得相对比较简单。如图10所示,根据hdlc_state中记录的当前状态,查询出当前状态对应的解码状态表,然后根据要解码的byte和hdlc_state中记录的r_one值查询出转换后的状态:hdlc_state_decode_tbl,所需要的信息得到后,根据hdlc_state记录的状态做不同的状态跳转处理。状态跳转处理完成后,用hdlc_state_decode_tbl中的state和r_one更新hdlc_state中的相应值,为下次解码做好准备。在HDLC_ZERO_SEARCH中没有状态跳转处理。
HDLC_FLAG_SEARCH的byte处理如图11所示,在由FLAG_SEARCH跳转到FLAG_FOUND状态时,此时表示解码到一个新的HDLC帧,需要从hdlc_state_decode_tbl中取出o_bitcnt和r_val,这些值表示此byte解码的输出值。
o_bitcnt表示r_val中有多少bit是有效值,如果不够8bit,需要在外部缓冲区中保存,在下次的输出中在累加。
HDLC_FLAG_FOUND的byte处理如图12所示,如果新状态跳转到FLAG_FOUND,实际上是状态没有变化。但是,有可能是又收到了一个HDLC Flag,表示一帧已经结束了。因此,通过判断b_nextfrm来确定是一帧结束还是状态没有变化。
如果是一帧已经结束,从hdlc_state_decode_tbl中取出o_bitcnt和r_val,从而获得此次解码的输出bits,将输出的bits和前次记录的bits进行组合后,作为最后的byte输出。所有byte输出后,对一帧数据做CRC16校验,校验后,将此HDLC帧数据输出。
如果还在原来的帧解码中,从hdlc_state_decode_tbl中取出o_bitcnt和r_val,从而获得此次解码的输出bits,将输出的bits和前次记录的bits进行组合后,作为此次的byte输出。
如果状态跳转到非FLAG_FOUND状态,表示HDLC帧异常退出和结束。从hdlc_state_decode_tbl中取出o_bitcnt和r_val,从而获得此次解码的输出bits,将输出的bits和前次记录的bits进行组合后,作为最后的byte输出。所有byte输出后,对一帧数据做CRC16校验,校验后,将此HDLC帧数据输出。
已经详细描述了单个byte的HDLC解码,对于字节流的HDLC解码就是对字节流中的每个byte,调用上述的单个byte解码过程。
在通信的信令包捕获项目中,最初采用bit解码算法,最多能够做到32路并发解码,在将算法替换为byte解码后,最多能够做到128路并发解码,处理能力提高4倍。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种基于字节流的解码方法,其特征在于,所述解码方法包括以下步骤:
A、利用bit字节流解码算法生成byte的解码表;
B、根据新生成的解码表对输入的byte进行解码并输出结果;
所述步骤A中byte的解码表包括HDLC_ZERO_SEARCH表、HDLC_FLAG_SEARCH表及HDLC_FLAG_FOUND表,分别对应HDLC解码的三种状态HDLC_ZERO_SEARCH、HDLC_FLAG_SEARCH及HDLC_FLAG_FOUND;
所述HDLC_ZERO_SEARCH表生成包括以下步骤:
A11、判断HDLC_ZERO_SEARCH状态的hdlc0.c文件是否产生成功;如是,则将全局变量FAST_HDLC_DECODE_STATE_MACHINE HDLC_ZERO_SEARCH_SM写入流程并执行步骤A12,如否,则结束生成本表;
A12、枚举所有的字节0~255在r_one 为0~7的情况下使用bit流解码算法获得转换后的状态,r_one为收到连续bit1的个数;
A13、在HDLC_ZERO_SEARCH状态查找bit流中的0;
A14、调用bit流HDLC解码并获得转换后的状态结构值struct hdlc_decode_state_tbl;
A15、将转换后的状态结构值struct hdlc_decode_state_tbl写入文件并枚举所有的字节0~255在r_one为0~7的情况下的状态;
A16、对生成的HDLC_ZERO_SEARCH表写入结束信息并关闭文件,结束本次表生成;
所述HDLC_FLAG_SEARCH表生成包括以下步骤:
A21、判断HDLC_FLAG_SEARCH状态的hdlc1.c文件是否产生成功;如是,则将全局变量FAST_HDLC_DECODE_STATE_MACHINE HDLC_FLAG_SEARCH_SM写入流程并执行步骤A22,如否,则结束生成本表;
A22、枚举所有的字节0~255在r_one 为0~7的情况下使用bit流解码算法获得转换后的状态;
A23、将HDLC_FLAG_SEARCH状态设置成r_one值;
A24、调用bit流HDLC解码并获得转换后的状态结构值struct hdlc_decode_state_tbl;
A25、将转换后的状态结构值struct hdlc_decode_state_tbl写入文件并枚举所有的字节0~255在r_one 为0~7的情况下的状态;
A26、对生成的HDLC_FLAG_SEARCH表写入结束信息并关闭文件,结束本次表生成;
所述HDLC_FLAG_FOUND表生成包括以下步骤:
A31、判断HDLC_FLAG_FOUND状态的hdlc2.c文件是否产生成功;如是,则将全局变量FAST_HDLC_DECODE_STATE_MACHINE HDLC_FLAG_FOUND_SM写入流程并执行步骤A32,如否,则结束生成本表;
A32、枚举所有的字节0~255在r_one为0~7的情况下使用bit流解码算法获得转换后的状态;
A33、将HDLC_FLAG_FOUND状态设置成r_one值;
A34、调用bit流HDLC解码并获得转换后的状态结构值struct hdlc_decode_state_tbl;
A35、将转换后的状态结构值struct hdlc_decode_state_tbl写入文件并枚举所有的字节0~255在r_one 为0~7的情况下的状态;
A36、对生成的HDLC_FLAG_FOUND表写入结束信息并关闭文件,结束本次表生成;
所述步骤B中单个byte的解码包括以下步骤:
B11、根据记录中间信息的结构hdlc_state中记录的解码状态机的状态state值确定HDLC_ZERO_SEARCH表、HDLC_FLAG_SEARCH表及HDLC_FLAG_FOUND表中的某个表格;
B12、根据hdlc_state中记录的r_one和当前的解码byte获得新的状态表项hdlc_decode_state_tbl并使用byte×7+r_one作为下标直接查表;
B13、根据hdlc_state中记录的state值在HDLC_FLAG_SEARCH表及HDLC_FLAG_FOUND表做状态转换处理;
B14、用hdlc_decode_state_tbl中的state和r_one更新hdlc_state中记录state和r_one;
所述步骤B13中还包括以下步骤:
B131、判断状态是否跳转到HDLC_FLAG_FOUND表;如是,则执行步骤B132,如否,则结束本次操作;
B132、新的HDLC帧开始取出hdlc_decode_state_tbl中记录的解码输出值r_val和r_val中有效值的bit数0_bitcnt;
B133,将r_val中的0_bitcnt个有效值数据copy到外部缓冲区并结束本次操作;
所述步骤B131还包括以下步骤:
B1311、判断状态是否跳转到HDLC_FLAG_FOUND表;如是,则执行步骤B1312,如否,则表示HDLC一帧解码错误停止并取出hdlc_decode_state_tbl中的0_bitcnt和r_val,并执行步骤B 1313;
B1312、判断是否收到新的HDLC标志b_nextfrm;如是,则表示前一帧HDLC解码完成并取出hdlc_decode_state_tbl中的0_bitcnt和r_val并执行步骤B1313,如否,则一帧HDLC解码进行中并取出hdlc_decode_state_tbl中的0_bitcnt和r_val并执行步骤B1314;
B1313、将r_val中的0_bitcnt个有效值和记录的前此解码的r_val组合为最后的输出byte并执行步骤1315;
B1314、将r_val中的0_bitcnt个有效值和记录的前此解码的r_val组合后输出并结束本次操作;
B1315、进行HDLG帧的CRC16校验并输出一帧的值且结束本次操作。
CN201610044846.4A 2016-01-22 2016-01-22 一种基于字节流的解码方法 Active CN105721105B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610044846.4A CN105721105B (zh) 2016-01-22 2016-01-22 一种基于字节流的解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610044846.4A CN105721105B (zh) 2016-01-22 2016-01-22 一种基于字节流的解码方法

Publications (2)

Publication Number Publication Date
CN105721105A CN105721105A (zh) 2016-06-29
CN105721105B true CN105721105B (zh) 2020-06-02

Family

ID=56153831

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610044846.4A Active CN105721105B (zh) 2016-01-22 2016-01-22 一种基于字节流的解码方法

Country Status (1)

Country Link
CN (1) CN105721105B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1041721A2 (en) * 1999-03-30 2000-10-04 Matsushita Electric Industrial Co., Ltd. Decoding device for Huffman-encoded data
CN102098333A (zh) * 2010-12-31 2011-06-15 北京中创信测科技股份有限公司 一种hdlc数据处理的方法和系统
CN102394719A (zh) * 2011-09-21 2012-03-28 浙江铭道通信技术有限公司 基于fpga的多通道hdlc数据处理方法
CN102832953A (zh) * 2011-06-16 2012-12-19 中兴通讯股份有限公司 卷积码解码方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1041721A2 (en) * 1999-03-30 2000-10-04 Matsushita Electric Industrial Co., Ltd. Decoding device for Huffman-encoded data
CN102098333A (zh) * 2010-12-31 2011-06-15 北京中创信测科技股份有限公司 一种hdlc数据处理的方法和系统
CN102832953A (zh) * 2011-06-16 2012-12-19 中兴通讯股份有限公司 卷积码解码方法及装置
CN102394719A (zh) * 2011-09-21 2012-03-28 浙江铭道通信技术有限公司 基于fpga的多通道hdlc数据处理方法

Also Published As

Publication number Publication date
CN105721105A (zh) 2016-06-29

Similar Documents

Publication Publication Date Title
US8386523B2 (en) Random access audio decoder
KR20030036624A (ko) 가변길이 코드워드 시퀀스 디코딩 방법
JP2002252563A (ja) ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法
CN100525450C (zh) 一种实现霍夫曼译码的方法和装置
EP0945989A1 (en) Viterbi decoding
CN105052040A (zh) 多流压缩与解压的方法与系统
US8947272B2 (en) Decoding encoded data
CN113411290A (zh) 一种分组头解析方法及装置
CN105721105B (zh) 一种基于字节流的解码方法
US7940807B2 (en) Methods, decoder circuits and computer program products for processing MPEG audio frames
US6580379B2 (en) Arithmetic decoding of an arithmetically encoded information signal
JP3256121B2 (ja) データ符号化装置およびデータ復号装置およびその方法
WO2016034075A1 (zh) 转发参数传递的方法及设备
US20110235757A1 (en) Decoding method and decoding device
CN109743581A (zh) 编码端处理方法、解码端处理方法及防止伪起始码的方法
JP4191438B2 (ja) データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム
US20070022275A1 (en) Processor cluster implementing conditional instruction skip
CN106415484A (zh) 专用算术编码指令
CN111126003A (zh) 话单数据处理方法及装置
Sheinwald et al. On encoding and decoding with two-way head machines
US20240233740A9 (en) Decoding method and apparatus, and computer readable storage medium
JP2003032123A (ja) ターボ符号の誤り訂正復号方法および装置
JP3236758B2 (ja) 可変長データのcrc演算装置
CN112187639B (zh) 一种基于流属性的数据包路径编码的生成方法及系统
CN114047876B (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
GR01 Patent grant
GR01 Patent grant