- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Viterbi译码器并行优化设计
Viterbi译码器并行优化设计 摘 要:本文提出了一种(2,1,9)卷积编码及其Viterbi译码的软件实现方案。该方案应用软件技术实现了卷积码维特比译码器功能,在程序实现中充分运用了蝶形运算、周期性回溯等卷积码的固有特性,获得了Viterbi译码输出。重点对蝶形运算和维特比算法进行了SSE并行优化。仿真实验表明,此方案可大幅提高译码效率,缩短处理时间。
关键词:卷积编码;Viterbi译码;SSE并行优化;蝶形运算
中图分类号:TN911.2
随着通信技术的发展,特别是3G时代的普及,人们对通信的准确性提出了很高的要求,为此,在数据传输过程中都采用信道编码技术。由于卷积码编码简单,性能优良被广泛采用。Viterbi算法是一种最大似然译码,在译码过程中要遍历所有可能的状态,所以其计算复杂度很高。现有的实现方法都是单指令数据流,处理效率极低,不能满足现状移动实时通信的需求。对此Intel推出单指令多数据流扩展SSE,SSE是一套专门为单指令多数据架构设计的指令集,它可以实现数据的并行处理,效率极高利用SSE对算法进行并行优化,能提高信号处理的速度,减少时延,满足现代的高速率、大容量通信。
1 卷积码的Viterbi译码器的基本结构
卷积码译码采用经典的维特比译码算法。算法分为两大步骤:前向递推,简单概括为“加、比、选”操作;回溯找出最佳路径。图1为维特比译码器的基本结构。
2 卷积码的Viterbi译码器的结构设计
2.1 维特比译码器的三个重要的参数
维特比译码器存在三重要的参数,分别是径存贮容量、合并距离、回溯路径译码位。径存贮容量定义路径存贮的大小,规定我们周期性的回溯生成译码数据。合并距离的设置使得回溯时可以从任意一个当前状态开始,不需要从最小的度量距离节点开始。回溯路径译码位可以避免因为尽可能多的得到译码输出而增加译码延迟,设置每次的回溯时译码的位数。
2.2 加比选单元的蝶形运算
维特比译码采用向前递推算法,向前递推过程是一个状态转移的过程。TD-SCDMA无线电接收器采用(2,1,9)卷积码的编码方式,卷积码状态寄存器为8,编码器有28=256个状态数。观察卷积码的状态转移过程,可发现其规律性很强,可由多个蝶形图构成,蝶形运算如下图2,整个状态转移图由128个这样的蝶形组成。
加比选的蝶形运算中每个蝶形包括当前状态为i和i+states(states为状态数的一半,这里为128)两个节点的加,比较,和选择运算,他们的0分支和1分支在篱笆图的下一个节点合并。
2.3 分支度量的计算
在计算分支度量时,通常有软判决和硬判决两种输入。对于硬判决采用汉明距离定义,主要是以1或者0来定义。对于软判决可做相似定义,根据软判决的输入位数据顶最大欧氏距离的取值。
2.4 路径存贮记录
从当前状态经过加_比较_选的蝶形运算后,到达下一个状态,通过对每一个分支度量的积累计算留下与接收序列距离最近的幸存路径。
2.5 回溯
我们在程序中设置一个标志位,当路径存贮记录长度第一次超过回溯路径译码位长度时,将标志位复位,继续进行运算。当路径存贮记录长度达到定义的路径存贮容量时,选择从任意一个状态开始进行回溯。先回溯定义的合并距离长度,回溯时只是记录状态,不生成输出译码位,然后从刚得到的状态继续回溯以生成输出译码位。
2.6 程序设计流程图(如图3)
3 维特比算法的SSE并行优化
Viterbi算法是一种最大似然译码,在译码过程中要遍历所有可能的状态,所以其计算复杂度很高。现有的实现方法大多数是采用单指令单数据流串行处理Viterbi译码算法中的加-比-选,遍历每一种状态。这种方法效率低,对通信带来的时延很大,仅适用于低速、小容量,对实时性要求低的通信系统。随着通信技术的发展,低速、小容量的通信显然不能满足人们的需求,人们更希望速率高、实时性好的通信系统。利用SSE对维特比优化,可以大大提高译码效率,提高信号处理的速度,减少时延,满足现代的高速率、大容量通信。
3.1 SSE并行优化维特比的加比选单元
(1)将蝶形运算将其展开,由于SSE的拓展寄存器是128bit,每个状态是32bit。所以展开的次数为4。
(2)将所有出现的数组,将软比特的乘,加,比较,选择,复制到下一个状态,进行分析。
(3)并对其进行SSE并行指令优化,下图4为维特比优化状态图的比较。
3.2 SSE并行优化维特比的函数设计
(1)将软比特的数据存放在两个128bit的寄存器内存中,用bm[]表示4次蝶形运算的软比特数,通过SSE函数“uint32x4_t vld1q_u32(const uint32x4_t
文档评论(0)