好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2022年ASNPER编码规范.docx

12页
  • 卖家[上传人]:135****zxb
  • 文档编号:277165492
  • 上传时间:2022-04-14
  • 文档格式:DOCX
  • 文档大小:271.63KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • ASN.1编码标准及实现方式一、ASN.1语言概述ASN.1(AbstractSyntaxNotationNumberOne),抽象语法描述1,是一种ISO/ITU-T标准该语言描述了一种对数据进行表示、编码、传输和解码的数据格式,它提供的一整套正规的格式用于描述对象的结构,具有类似于面向对象程序设计语言中所提供的类型机制,可定义任意复杂结构的数据类型,而不同的数据类型之间还可以有继承的关系因此,ASN.1是以一种独立于计算机架构和语言的方式来描述数据结构的同时,ASN.1的描述可以容易地映被射成C、C++或Java的数据结构,直接作为应用程序代码使用,并得到运行程序库的支持ASN.1作为一种数据表示标准产生于20世纪80年代早期的开放系统互联(OSI)网络模ASN.1标准在继续进化今天已有大量的型,虽然OSI模型并没有得到广泛的应用,但是实际应用,这些应用包括:应用等许多方面3G移动系统、IP语音、平安应用、传统电信网络、军事和空间另外,ASN.1有多种标准化编码规那么:如根本编码规那么(BER)、标准编码规那么(CER)、识别名编码规那么(DER)、压缩编码规那么(PER)和XER编码规那么(XER)。

      这些编码规那么描述了如何对ASN.1中定义的数值进行编码,以便用于传输,而与计算机、编程语言或它在应用程序中如何表示等因素无关同时,该编码具有先进的标识系统、信息扩展性、支持快速可靠传输等特点,这在无线传输中是一种优势因此,ASN.1不但适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构,而且还有适合的协议编码方式同时,3GPP标准ASN.1文档中也包含了完整、详细的数据单元(PDU)协议这些都为3G移动系统中ASN.1的应用打下了根底3G协议的ASN编码跟一般的编码相比具有高效性、严谨性以及标准性等特点二、PER编码简介3GPP的标准中,由ASN.1到传输码的转换统一使用定义在ITU-TX.691中的PER(PackedEncodingRules)规那么,因此这里讲的ASN编译码规那么也就是ASN编码中的PER编译码规那么PER有两个变体:对齐方式和非对齐方对齐方式用于:Iub、Iur、Iu接口的ASN.1的传输编码非对齐方式:仅用于空中(UU)接口的ASN.1转换,两者的编码过程根本相同在对齐的方式下,假设前面所有单元的信息经编码后得到的比特流长度不是一个八位组的倍数,而后一个信息又是以八位组为单位的(字符串),那么就需要在前面生成的比特流后面补“0,〞使其长度为8的倍数。

      所以一般补的位数为0~7bit而非对齐的方式无此限制所有信息单元按编码规那么生成的比特数据将按其被编码的顺序首尾相连,充按ITU-TX.691的规定,假设最终的编码结束后所得的编码不是束后的填充由RRC负责中间不需要任何填8的倍数,信息编码结另外,PER编译码必须依赖于3GPP的标准文档,也就是说,收发双方也必须知道层3消息的具体结构,这样编码和译码的才能被编译和识别三、PER的编码规那么PER的编码规那么定义了多种数据类型,简单的地可分为两大类第一类是结构类,如CHOICE、SEQUENCE、ENUMERATED等另一类是简单类,如INTEGER、REALL、BOOLEAN等下面将对以下常用的类型的编码规那么做一个总结:3.1INTEGER整型是协议标准中用得最多的一种数据类型对这种数据类型编码之前,首先要确定其2m<范围≤2m+1时,对该整数取值用m+1位二进制表示但对范围内的数的编码不是对其实值而是取值范围,即上下界之间的数的个数而编码的长度是根据数的范围来确定的当对其索引值进行编码,编码的索引值是从0开始的例1:TimeslotNumber::=INTEGER(0..14)34,故编码上面的例子中TimeslotNumber为整型,范围是0~14共15个数,因为2<15<2为4bit,假设取值为7,那么编码为0111。

      例2:MaxAllowedUL-TX-Power::=INTEGER(-50..33)67同理,MaxAllowedUL-TX-Power为整型,范围是-50~33共84个数,2<84<2编码长度为7bit,假设取值为0,那么编0的索引值50(-50的索引值为0),因此编码为:01100103.2BOOLEAN布尔逻辑型编码只须1bit用“1〞表示TRUE,“0〞表示FALSE例:DL-TM-RLC-Mode::=SEQUENCE{segmentationIndication}BOOLEAN上面的segmentationIndication是一个BOOLEAN型,意思是段的指示当我们需要这种指示时编码为1,不需要时编码为03.3BITSTRING比特串的编码分成两种情况:长度固定:直接将比特串与前面的比特流叠加即可;长度可变:按前述整型编码的规那么,以描述长度范围最少比特的原那么在比特串前面加上用于描述长度所需的比特,然后将待编码的比特串加在后边例1:RoutingParameter::=BITSTRING(SIZE(10))上面的RoutingParameter是一个定长,且长度为10的比特串,编码时直接给出10位二制数,例如编码为:‘1111100000’。

      例2:SIB-Data-variable::=SIB-Data-variable是一个变长的比特串,编码之前首先编长度,因为长度的范围为214共需要编8比特,因此假设SIB-Data-variable是一个5位的比特串时那么编码为:00000100BITSTRING(SIZE(1..214))1~11111(前面8位是比特串长度的编码,后面5位是该比特串的值)3.4OCTETSTRING八位组串编码的原那么与比特串相同分成长度可变的八位串和长度不可变的八位串两种与比特串编码不同的是编码的值是八位串而不是比特串例:VALUE::=OCTETSTRING(SIZE(1..8))假设VALUE值是长度为3的八位串,那么编码为:010,后面跟着3个因为长度区间为八,所以长度编码L为3位,而3-b=2因此编码为010后面那么跟着3个八位组如:min0000000011111111000000003.5CHARACTERSTRINGS字符串的编码方式有多种情况的编码方式与BITSTRING和OCTETSTRING的编码方式类似,只是对不同类型的字符串有不同的编码方法,下面将着重说明CHARACTERSTRINGS中常用的NumricString、PrintableString、NameString的编码方法:①NumricString类型中成员为0~9,共十个数。

      因此在编码时长度可定为344bit(2<10<2).,因此此种类型的串编码是每个数字编为同理,PrintableString中包含的字符为:“a..z、〞“A..Z、〞“0..9、〞“space、〞“,〞、“(〞、“)〞,“+〞、“、〞、“-〞、“/、〞“.、〞“=〞、“?〞、“:〞共74个字符,每个字母应编码为7比4比特NameString共52个大小写字母,每个字母编码那么为6bit②NumricString123的编码为:000100100011NameString“cat〞编码为:011100011010100010,上面每个字母编6比特,每个字母的值是其在NameString中的索引值3.6NULLNULL类型不用编码3.7ENUMERATED枚举型的编码类似于整型,也是以描述枚举内全体成员所需比特数最少的原那么进行编码其值的范围从0开始枚举类型编码时,只对其项的索引值编码例:Modulation::=ENUMERATED{mod-QPSK,mod-8PSK}12,2=2,因此上面是一个Modulation是枚举类型,编码时,首先看枚举项的个数为编码为1bit,中选mod-QPSK调制模式时编码为0,选mod-8PSK调制模式时编码为1。

      3.8CHOICE选择型的编码类似于整型,以最少的比特来描述选择体内各成员的索引值值的范围从0开始与枚举不同的是,编完CHOICE的索引值,紧接着就应编码索引值对应的单元而枚举型将索引值编完后就结束下面将以一个例子对这种类型的编码进行说明:例:NumberOfTransportBlocks::=CHOICE{zeroonesmalllarge}NULL,NULL,INTEGER(2..17),INTEGER(18..512)NumberOfTransportBlocks是一个选择类型,假设信息传输块的个数为16,那么应该选择CHOICE的small项,然后在对该项值进行编码首先CHOICE里有4项,编码为2bit,small为第3项编码值为2,选择项编码为:10然后再对small项编码,因为取值为16,索引值为14,整数范围是2~17共16个数,要编4比特,因此要对索引值为:111014编4比特,即编码3.9SEQUENCE一般说来,序列编码后都会产生一个前导位图,1bit来指示,“1〞表示存在,“0〞表示不存在假设一个序列型中包含n个标注为可选(或缺省)的成员,那么,前导位图的长度就是nbit。

      位用以指示序列中的可选项或缺省项是否存在每以可选项(或缺省项)用图中的比特顺序与序列中各可选成员进行编码,这种类型对应于(或缺省)的成员排列一致然后再对SEQUENCE中的各C语言中的结构下面将以实例来说明:SEQUENCEIndividualTimeslotInfo-LCR::={timeslotNumbertfci-ExistenceINTEGER(1..15)OPTIONAL,OPTIONAL,BOOLEAN,midambleShiftAndBurstTypemodulationMidambleShiftAndBurstType-LCRENUMERATEDNULL,{mod-QPSK,mod-8PSK},ss-TPC-SymbolsadditionalSS-TPC-Symbols}INTEGER(1..15)OPTIONAL上面是一个SEQUENCE结构编码时我们分两步进行:①确定其前导位图.该结构中有3个可选项,故可确定位图长度为3bit我们根据需要选择其中的项,假设某项选择了编码位图为1,否那么为0假设我们选择了timeslotNumber而其它项都不选的话,那么在对结构内部编码之前应编码为:100②根据SEQUENCE结构内部的项,从上到下依次编码。

      TimeslotNumber取值为6,那么编码为0101;tfci-Existence存在TFCI指示,那么编码为1;modulation选择mod-QPSK,编码为0;ss-TPC-Symbols为空类型,不用编码综上可得:该结构编码为100010110。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.