DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 446|回复: 0
打印 上一主题 下一主题

基于8PSK的较长TFCI译码算法在ZSP500 DSP核上的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 20:18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    Implementation for Long TFCI for 8PSK decoding based on ZSP500 core in td-SCDMA

摘要:在td-SCDMA系统的物理层协议中,对传输组合格式指示TFCI采用了基于RM (Reed_Muller)的超码编码方式。根据TFCI的长度不同,编码的方式又略有变化。本文主要讨论了8PSK的较长TFCI(6-10bit)的译码算法,此算法首先恢复打孔比特并进行消掩,然后采用了快速哈达码变换与超码译码结合的方法进行译码。本文在进行算法分析的基础上,阐述了8PSK的较长TFCI译码算法在ZSP500 DSP核上的实现,并给出了程序实现步骤。
关键字:TFCI译码  ZSP500  FHT

Abstract: TFCI(Transport Format Combination Indicator) is coded by a super code method based on RM(Reed_Muller) in td-SCDMA system. The coding method is different based on different TFCI length. The decoding algorithm of long TFCI(6-10bit) for 8PSK is pointed out. In the algorithm, puncture bits are resumed and mask is removed firstly, FHT(Fast hadamard  transformation) combined with super code decoding is used then. Based on the algorithm, the implementation on ZSP500 DSP core and process in program are described.
Keyword: TFCI decoding  ZSP500  Fast Hadamard Transformation
1 引言
td-SCDMA系统中,上行信道编码典型流程为:给每个传输模块加CRC,传输模块级连/码块分段,信道编码,无线帧尺寸均衡,交织(分两步),无线帧分段,速率匹配,传输信道的复用,比特加扰码,物理信道的分段,子帧分段,映射到物理信道。下行信道解码是上行编码的逆流程。其中,传输格式组合指示(TFCI)是用来指示CCTrCh信道中的传输格式组合。根据TFCI,可以知道当前各个传输信道中的传输时间间隔(TTI)、传输块数量(Transport Block Number)、传输块大小(Transport Block Size)等参数。所以TFCI译码的正确性,是保证后面的信道解码的一个重要前提。
由于ZSP500的低成本、低功耗、强大的多媒体性能,适用于需要高性能信号处理的多媒体、语音、无线和其它应用,使ZSP架构迅速成为基于td-SCDMA、CDMA2000、WCDMA等标准的3G无线应用设计中的DSP理想选择[3]。基于ZSP500 DSP核,TFCI译码算法实现起来更为简洁。
2 8PSK的较长TFCI译码算法
   记TFCI中的码字数NTFCI ,码字中的比特记为bk ,其中k = 0, …, NTFCI-1 。当进行8PSK
的较长TFCI编码时,将会把TFCI分为4个均匀部分在2个子帧中进行发送[4],如图1。
在3GPP的物理层协议中对8PSK的较长TFCI(6-10bit)采用了二阶Reed-Muller码的一个(64,10)子码进行编码,之后64bit中有16个bit被打孔,剩下48bit做为此次TFCI编码输出。定义TFCI 比特为a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9,其中a0是LSB,a9是MSB。TFCI比特须对应于RRC层定义的TFC 指示(用无符号的二进制格式表示),为相关DPCH无线帧的CCTrCH的TFC提供参考。



500)this.style.width=500;" border=0>


输出码字比特bi为:

500)this.style.width=500;" border=0>,式中i∈[0,48],10个基本序列如下:
M0=101101101001101101010010011011001101011011001001
M1=011011011011011011001001001001011011001001011011
M2=000111000111000111000111000111000111000111000111
M3=000000111111000000111111000000111111000000111111
M4=000000000000111111111111000000000000111111111111
M5=000000000000000000000000111111111111111111111111
M6=111111111111111111111111111111111111111111111111
M7=011101110111010011000011111010001011101111100001
M8=100111101001110101011101011101001010111001111100
M9=001000110011101100110010101111111101011001100110
其中,M6为全1序列,MO,M1,M2,M3,M4和 M5由 Walsh码发生器产生,M7,M8和 M9由掩码发生器产生。
较长TFCI可采用超码译码法,超码译码原理:在接收的双极性码字中依次乘前面的双极性化后的掩码集,然后对消除掩码的码字采用基础码集的译码算法(在此为一阶RM码的FHT),译出码字和相应的陪集表示确定出最后的译码信息。分析编码的原理,8PSK的较长TFCI编码就是以32阶walsh码的子集和全1矢量为基础码序列,以三个Mask矢量为掩码序列,所组成的线性组合(b0~b63),然后打孔生成48比特。译码实际上就是要找到译码输入码字添加打孔位置比特之后的码字(b0~b63)所对应信息比特(a0~a9)。因此,8PSK的较长TFCI译码首先要恢复打孔位置的16个bit,然后进行消掩处理,即消除掩码对接受码字的影响,之后进行基础码集译码即可,如图2。


500)this.style.width=500;" border=0>


根据[2],在8PSK的较长TFCI编码后的打孔位置填0,此时得到一个长为64bit的序列。
当TFCI的原始比特数为6~10时,TFCI的编码实际上是一种超码编码方式。就是以一阶RM(1,7)码(3GPP为RM(64,10))为基础码集,以生成矩阵的后三列构成三维掩码集。译码的时候,得到掩码集后,将掩码集双极性化,然后用恢复打孔后的序列双极性化后得到的码字与双极性化后的掩码集依次相乘,完成消掩。
   对于8PSK的较长TFCI编码,二阶Reed-Muller码的打孔 (48,10) 子码的码字是10个基本序列的线性组合。根据消掩后得到的双极性矩阵,分别对每一行进行FHT变换并存储,循环进行8次,再比较并进行译码,进而得到二进制信息序列m。
    FHT的实质就是求 Hadamard矩阵和输入向量的相关值向量, 它主要利用了蝶形运算来减少运算量。对于一个 M阶的哈达马矩阵 HM,如果直接计算(brute force method)输入向量与Hadamard矩阵中每个行向量的相关值,容易得到其运算量为M2的加减法运算,利用快速哈得马变换可以大大减少运算次数。
3 译码算法的实现
   ZSP500 DSP核硬件主要包括预存取单元(PFU)、指令定序单元(ISU)、流水线控制单元(PIP)、装载保存单元(LSU)、寄存器文件单元、旁路单元(BYU)、算数逻辑单元(ALU)、乘累加单元(MAU),存储系统包括数据存储区(data memory)和 指令存储区(Instruction memory)。数据存储区和指令存储区的大小分别都是0x20000(128k)word,各自由2个bank组成,而每个bank又包含两个block[3]。
在实现8PSK的较长TFCI译码时,可考虑将打孔位置、掩码矩阵分别计算出来并存成2张表,另外,较长TFCI译码在实现时,采用FHT可以减小运算量,理论上,FHT就是将Hadamard矩阵分解为稀疏矩阵的乘积,采用蝶形变换。
3.1 恢复打孔的实现
恢复打孔在实现时,通过查打孔位置表可以得到打孔的位置,根据相应位置在接收序列中填0即可。部分代码如下:
AddPun:
xor      r0, r0
      stu      r0, a1, 1            !add punctured bit
      ldu      r0, a3, 1            !r0=original bit num
      mov      %loop2, r0
FillOrg:      
      ldu      r0, a0, 1
      stu      r0, a1, 1      
3.2 消掩的实现
实现消掩时,从已经计算并存好的掩码表M(8*64)中查取每个元素,根据查取到的元素看输入序列是否要取反(为1取反)。部分代码如下:
ldu      r4, a0, 1
      bitt     r3, 15
      cexe(z, nu)
      {
          neg    r4, r4
      }               
      stu      r4, a1, 1
3.3 FHT的实现
    FHT算法与FFT算法类似,采用蝶形运算。部分代码如下:
mov     a1, a0             //the first data
      add     a1, r8              //adjacent the second data
      ld      r4, a0
      ld      r5, a1
      add     r6, r4, r5
      sub     r7, r4, r5
3.4 计算TFCI值的实现
由上面软判决的步骤可以知道,要计算TFCI的值,关键是要找出经过hadamard变换以后的矩阵的最大绝对值的行号和列号,此项工作的实现可以通过一个查找最大值子模块来实现。部分代码如下:
      cmp      r8, 0                   ! r8->the max abs(value)
      cexe(gt, nu)
      {
          mov    r14, 1
      }
      shll     r14, 6      
4 结语
    本文重点讨论了8PSK的较长TFCI译码算法原理,并根据算法原理,给出了在ZSP500 DSP核上的实现过程。在td-SCDMA系统的信道译码过程中,TFCI是一个很重要的参数,TFCI译码的正确性是进行正确信道译码的前提,本文对td-SCDMA系统研发中的信道编解码过程具有一定实用价值。本文作者创新点:根据8PSK的较长TFCI编码算法原理,得出译码算法原理,并对其在ZSP500 DSP核上进行了代码实现。

参考文献:
[1] Samsung Electronics Co., Ltd,TFCI Coding Scheme for 8PSK  in low chip rate tdD Option.
[2] 3GPP TS 25.222: "Multiplexing and channel coding (tdD)" (Release 5).
[3] ZSP500 Digital Signal Processor Core TECHNICAL MANUAL.
[4] 李小文等编.td—SCDMA第三代移动通信系统、信令及实现[M].北京:人民邮电出版社,2003.
[5] 陈永翾,陈向东,李长春. 基于tdD的无线语音通信协议的研究. 微计算机信息, 2007,2-3:106-107.

作者简介:
赵义(1983—),男(汉族),籍贯河北,重庆邮电大学在读研究生,通信与信息系统专业,研究方向为第三代移动通信。
申敏(1963—),女,籍贯贵州,教授,硕士生导师,主要从事DSP及物理层协议算法研究。

联系方式:赵义,重庆邮电大学05级研究生77#信箱34栋123室,邮编400065,邮箱hyozia@126.com[1]
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-9-19 18:35 , 耗时 0.087327 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表