LTE中卷积码的译码器设计与FPGA实现
基于FPGA的卷积编译码器的设计与实现

soa e a d d c d n h u p tw r e n p r l l a d t e so e ah v c o n tt e t r y c r n z d T e d sg t rg n e o i g t e o tu o k d i a a e , n h t r d p t e t ra d sae v c o s n h o ie . h e in l smu ain i p o e y I E .i T e d c d n e u t w r o r c .t e d c d r c u d g tt e s u c o e e e n ,t e i l t s rv d b S 9 2 . h e o i g r s l e e c re t h e o e o l e h o r e c d lme t h o s
De in a d i lm e t t n o o v l t n l o e a e n F sg n mp e n a i fc n o u i a d cb s d o PGA o o c
LI ra U ng,ZHANG n Mi
( ul n esyo l t ncT cnl y G in5 10 C ia G inU i ri e r i ehoo , ul 4 04, hn ) i v t fE c o g i
Ab t a t n o d r t o v h r dt n l v tr i d c d r S p o lm u h a o lx s u tr s s w d c dn , bg sr c :I r e o s l e t e ta i o a i b e o e ’ rb e s c s c mp e t cu e , l e o i g i e r o i c n u t n r s u c s h s p p r p e e t d a n v ld c d r d sg p r a h, i h i p l d F GA f au e ,t e p t o s mp i e o r e .t i a e r s n e o e e o e e in a p o c whc s a p i P e t rs h ah o e
卷积码编码及译码实验 浅谈卷积编码下的FPGA实现

卷积码编码及译码实验浅谈卷积编码下的FPGA实现
卷积编码是现代数字通信系统中常见的一种前向纠错码,区别于常规的线性分组码,卷积编码的码字输出不仅与当前时刻的信息符号输入有关,还与之前输入的信息符号有关。
本文主要是关于卷积码编码及译码实验的相关介绍,并着重分析阐述了基于卷积编码下的FPGA实现。
卷积编码卷积码的编码分为两类:前馈和反馈,在每类中又可分为系统和非系统形式。
我们这里只考虑非系统形式的前馈编码器。
‘
上图是WLAN 802.11a协议中采用的卷积编码器结构,输入比特k=1,输出n=2,存储器长度m=6,编码输出不仅与当前输入有关,还与存储器存储的之前的输入数据有关,具体由之前的哪些数据得到编码输出呢,由生成多项式确定其连接关系。
这里,生成多项式为g0=133(八进制)和g1=171(八进制)(右边是最高位),输出数据A的生成多项式为:
输出数据B的生成多项式为:
生成多项式确定了卷积编码器输出的连接关系。
根据多项式的系数,在相应项进行连接。
生成多项式写成二进制序列的形式分别为:g0 = [1 0 1 1 0 1 1]和g1 = [1 1 1 1 0 0 1](右边是最高位)。
我们假设信息序列u,两个编码器输出序列分别为v(0)和v(1),编码器可以看成一个线性系统,系统的信道响应脉冲最多持续m+1个时间单元,编码输出可以写成编码输入与信道脉冲响应的卷积(即生成多项式),即
其中需要注意的是,所有的加法都是模2加运算。
卷积码编码及译码实验基本原理
1、卷积码编码
卷积码是一种纠错编码,它将输入的k个信息比特编成n个比特输出,特别适合以串行形。
LTE系统物理层下行链路Turbo编码器的FPGA 设计与实现

Computer Science and Application 计算机科学与应用, 2011, 1, 87-90doi:10.4236/csa.2011.13018 Published Online December 2011 (/journal/csa)The Design and Implementation of Turbo Coder in thePhysical Down-Link of LTE Systems Based on FPGA#Wei Zhang, Yunxiao Zu*School of Electronic Engineering, Beijing University of Posts and Telecommunications, BeijingEmail: zuyx@Received: Oct. 9th, 2011; revised: Oct. 25th, 2011; accepted: Nov. 7th, 2011.Abstract: The Turbo coder in the down-link of physical layer for LTE systems is studied in this paper. The four modules of Turbo coder, which are interweave, component coding, puncture and multiplex, are analyzed and designed. The connection of the four modules is developed after simulating and adjusting the four mo- dules. Then the three modules of interweave, component coding and puncture are combined into one module.The check code output from this module and the original code are together put into the multiplexer, and fi- nally the coding sequences are output.Keywords: LTE; Down-Link; Turbo Coding; FPGALTE系统物理层下行链路Turbo编码器的FPGA设计与实现#张巍,俎云霄*北京邮电大学电子工程学院,北京Email: zuyx@收稿日期:2011年10月9日;修回日期:2011年10月25日;录用日期:2011年11月7日摘要:针对LTE系统物理层下行链路的Turbo编码器进行了研究,分别确定和设计了组成编码器的四个模块——交织、分量编码、删余和复接的工作方式和电路图。
卷积交织器原理及fpga实现

卷积交织器原理及fpga实现
卷积交织器是一种常用于数字信号处理中的算法,用于将多个卷积计算组合成一个更高效的计算。
该算法可以通过FPGA实现,从而实现高性能的数字信号处理。
卷积交织器的原理是将多个卷积计算按照一定的规则组合在一起,以实现更高效的计算。
例如,对于两个输入序列x和h,可以将它们拆分成多个子序列,并将每个子序列进行卷积计算。
然后将这些计算结果按照一定的规则组合在一起,得到最终的卷积结果。
在FPGA中实现卷积交织器,需要使用硬件描述语言进行设计和编程。
其中,需要考虑的主要问题包括:如何将卷积计算拆分成多个子序列;如何将这些子序列分配给FPGA中的不同计算单元;如何进行卷积计算结果的合并。
通过合理的设计和编程,可以实现高性能的卷积交织器,用于数字信号处理等应用中。
同时,该算法也具有良好的可扩展性和灵活性,可以根据实际应用需要进行优化和调整。
- 1 -。
开题报告-卷积码的编码译码的设计与实现

一、选题的依据及意义:(一)选题依据现代通讯技术正以其前所未有的速度发展着,信息传输对于信道的要求越来越高。
为了提高通信的可靠性,就需要对于信道状况进行控制。
增加发送信号功率的做法在实际中经常要受到条件的限制,而采用编程的方法则可以有效的对信道的差错进行控制,因而,在实际中编程控制差错的途径有着广泛的应用。
近年来,随着大规模集成电路的发展,电路实现技术水平获得较大程度的提高,卷积码在众多通信系统和计算机系统中得到了越来越广泛的应用。
对于卷积码的研究,编码器比较简单,模式也很统一。
主要是研究提高卷积码的译码速度和可靠性。
为实现通信的可靠性,基本有两种途径:一是增加输出信号的功率,增加接受端的信噪比;第二种是利用编码的方式对信道干扰误码进行控制。
前一种方法容易受到实际条件的限制,不是任何情况都能使用。
而这个问题可以利用编码来解决,使得实用性增加,成本下降。
译码算法中最重要的Viterbi算法问世以来,软件仿真和实现都得到了迅速的发展。
由于Viterbi 译码算法简单,易于实现,并且能够得到较大的编码增益,因此基于Viterbi 译码算法的卷积码得到了广泛应用。
事实上,Viterbi算法的过程可以看做是在状态机模型基础内逐渐减少概率路径的过程。
因为解码是编码的一个逆序过程,接受信息和初始信息是我们已知的信息,我们无法找到一个逆序的算法来计算所输入的信息。
Viterbi算法是利用重新编码的思想,计算每一条路径可能的概率的大小,用几率最大的那一条路径来模拟编码的过程。
从而译出输入信息比特。
而状态机模型的使用大幅度提升了解码过程中寻找正确路径的速度。
因此viterbi译码算法具有非常实用的意义。
(二)选题意义近年来,信息技术和通信技术的突出成就和急剧发展。
集中表现在个人通信,多媒体信息业务,互联网络应用三个方面。
把信息送给个人,使移动通信走向个人通信,在任何地方和任何状态都可打通电话的移动通信给人们带来了极大的方便。
卷积编码及Viterbi 解码的FPGA 实现及应用

卷积编码及Viterbi 解码的FPGA 实现及应用
0 引言
在现代通信系统中,信道编码技术得到了广泛的应用。
卷积码结构简单,硬
件实现容易,同时有着较好的查错纠错能力,因此在无线通信中经常使用,而
其解码方式常用Viterbi 译码。
1 卷积编码
卷积码(Convolutional Coding)是由PgElias 于20 世纪50 年代提出的一种非分组码。
它实现非常简单,将要发送的信息序列经过一个特定的线性移位寄存器,即完成了编码。
卷积编码常用(n,k,m) 表示,一般n 和k 的值都比较小,其中m 为编码约束长度,它表示编码时相应的信息比特在编码器中停留的时间。
卷积编码是一
种前后相关联的编码过程,编码后的码元和当前的k 个比特位相关,同时也与
前m - 1 个输入比特相关,使得相互关联的码元达到m 乘以n 个。
衡量卷积码性能的两个重要参数是码率(k n)和约束长度。
2 卷积码的描述方法
卷积码的编码描述方法有很多,工程中最常用的是寄存器网络结构法、码多
项式法和状态图形表示法。
如本系统中使用的(2,1,7)卷积编码,它的寄存器网络结构法表示如图1 所示。
离散卷积法表示如下:
其中卷积运算用*表示,g1,g2 为脉冲冲激响应。
则如图1 中可以表示为:
3 卷积码的译码
由于卷积码自身没有严格的代数结构,其译码过程相对复杂。
目前常用的方。
基于FPGA的LTE系统中转换预编码的设计

基于FPGA的LTE系统中转换预编码的设计在比较已有FFT实现办法的基础上,提出一种基于的通用FFT处理器的设计计划。
这种FFT实现结构按照不同的输入数据长度动态配置成相应的处理器,可以支持多种基数为2、3、5的FFT计算,硬件资源得到了优化,处理速度及数据精度满足系统中SC-FDMA基带信号的生成要求。
LTE所挑选的上行传输计划是一个新变量:SC-FDMA(单载波-频分多址)相比于传统OFDMA其优点是既有单载波的低峰均功率比(PAPR),又有多载波的牢靠性。
在上行链路这点特殊重要,较低的PAPR可在传输功效方面极大提高移动终端的性能,因此可延伸电池用法寿命。
代表LTE 物理上行分享信道(PUSCH)的基带信号产生过程1所示。
图1中的转换预编码是由一种对称形式DFT完成,其种类及变换长度L=2k1×3k2×5k3(L≤1 200)见表1。
转换预编码是按照不同的输入长度L动态地执行表1中的一种DFT。
其主要特点是包含的DFT种类多、规模浩大,这给硬件设计带来挑战。
以前的文献大都以基2或单个混合基FFT为重点举行阐述,而以多种混合基FFT为核心的文章还很难发觉。
本文提出一种基于FPGA的转换预编码解决计划。
1 算法挑选Cooley-Tukey算法和Good-Thomas算法是当前流行的FFT算法,文献中已对其原理举行过深化研究,这里不再赘述。
(1)Cooley-Tukey算法具有良好的模块性,并且可以实现原位计算,对输入数据以及旋转因子的抽取具有逻辑性。
文献提出的一种基3 FFT 算法是Cooley-Tukey算法应用在基3 FFT中的另一种表述。
这一算法区分于其他FFT算法的一个重要事实就是因子可以随意选取,通用性强,且全部的运算单元均相同,易于实现。
(2)Good-Thomas算法只适合因子互质的状况,因为避开了中间级乘旋第1页共5页。
LTE系统中LDPC码的性能研究与FPGA实现的开题报告

LTE系统中LDPC码的性能研究与FPGA实现的开题报告一、选题背景与意义移动通信技术已经成为现代社会必不可少的基础设施之一,而其核心的一项技术即为无线通信技术。
LTE(Long Term Evolution)是一项第四代移动通信技术,以其高速率、大容量、高效性、低时延等特点,被广泛应用于全球移动通信市场。
在LTE系统中,LDPC(Low Density Parity Check)码是一种重要的编码方式,对其性能的研究能够提高系统的可靠性和稳定性,对其FPGA实现的研究则能够提升系统的运行效率和稳定性。
二、研究内容与目标本项目将从两个方面进行研究,一方面是LDPC码的性能研究,另一方面则是LDPC码的FPGA实现研究。
具体研究内容如下:1. LDPC码的理论性能研究:研究LDPC码的编解码原理、算法、特点及其对系统性能的影响,并利用Matlab等软件对其性能进行仿真分析。
2. LDPC码的FPGA实现研究:研究LDPC码在FPGA上的实现原理、算法、实现方式及其对系统性能的影响,并通过Verilog HDL等语言进行FPGA实现。
三、研究方法与技术路线1. LDPC码的性能研究(1)收集相关文献,深入学习LDPC码的编解码原理、算法、性能指标等知识。
(2)利用Matlab等软件,编写程序对LDPC码的性能进行仿真分析。
(3)对仿真结果进行分析与总结,得出LDPC码在系统中的实际性能指标,并分析影响因素。
2. LDPC码的FPGA实现研究(1)学习FPGA设计原理、Verilog HDL语言及其相关工具,掌握ASIC设计流程。
(2)通过文献调研及实验,研究LDPC码在FPGA上的实现原理、算法以及实现方式。
(3)通过Verilog HDL等语言,设计FPGA实现LDPC码的编解码模块。
(4)对实现模块进行仿真及调试,评估其运行效率、功耗等性能指标。
四、预期成果1. LDPC码的性能研究:得出LDPC码在系统中的实际性能指标,并分析影响因素,为LTE系统的优化提供参考。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LTE中卷积码的译码器设计与FPGA实现摘要:基于长期演进(LTE)的Tail-biting卷积码,介绍了维特比译码算法,它是一种最优的卷积码译码算法。
由于Tail-biting卷积码的循环特性,采用固定延迟译码的方法,降低了译码复杂度。
通过使用全并行的结构及简单的回溯存储方法,设计了一个具有高速和低复杂度的固定延迟译码器。
在FPGA上实现并验证,验证结果表明译码器的性能满足了LTE系统的要求。
关键词:LTE;Tail-biting卷积码;维特比译码算法;固定延迟译码;FPGA引言LTE(Long Term Evolution)是“准4G”的技术,以OFDM/FDMA和MIMO为其核心技术。
它对实时业务、高可靠性业务和广播级多播业务都能提供较好的支持。
LTE在20 MHz 频谱带宽下能够提供下行100 Mb/s和上行50 Mb/s的峰值速率,高速率对信道编码和译码技术提出了更高的要求。
对于LTE低时延、高速率和高可靠性的要求,降低译码的实现复杂度和时延以及提高其可靠性对LTE系统性能就显得极其重要,也是一个巨大的挑战。
1 LTE中Tail-biting卷积码卷积码通常用(n,k,N)表示。
其中k表示输入编码器的数据位数;n表示编码器输出的数据位数;N为编码约束长度,R=k/n是卷积码的码率。
LTE中使用的Tail-biting卷积码编码器结构如图1所示。
其约束长度N=7,码率R=1/3。
编码器移位寄存器的初始状态值被设置为相应的输入数据流的最后6个信息比特,以至于移位寄存器的初始状态和结束状态相同。
随着编码比特的输入,编码器状态的转移过程,由图2可以看出,时刻t-1的两个相关状态Si和Sj转移到时刻t的两个状态Sm和Sn。
图中,PM和BM分别表示路径度量和分支度量,其中BM的下标为输出比特的组合。
2 Tail-biting卷积码的译码算法维特比算法的实质是最大似然译码,它是在卷积码的网格图中寻找一条与编码路径最接近的最大似然路径作为其最终译码输出。
在译码的每个时间单元,把网格图上各个分支的度量加到前面状态的路径度量上,比较进入每个状态的所有分支的度量,选择具有最大度量的分支,即幸存路径,迭代上述步骤,最终输出最大似然路径作为其译码输出。
维特比算法主要由三部分组成:分支度量(Branch Metric,BM)模块、加比选(Add Compare Select,ACS)模块和回溯(Trace Back,TB)模块。
直接运用维特比算法对Tail-biting卷积码进行译码,其译码复杂度大,不利于硬件实现。
为了能降低译码复杂度,用固定延时译码(Fixed Delay Decoding)算法,它是利用Tail-biting 卷积码的循环特性,也就是编码输入的开始部分能用来估计译码网格图的最后状态,执行译码操作用的固定延时。
如有一段长为L的软判决数据,选择原数据的后LH个软判决比特,将其放置在数据头部,选择原数据的前LT个软判决比特,将其放置在数据尾部,最后形成长为LH+N+LT的待译码软判决数据。
将它用Viterbi算法译码,在译码数据中丢弃前LH个比特和后LT个比特,即为所需译码数据。
其中LH和LT分别称为头译码长度(Head Decoding Length)和尾译码长度(Tail Decoding Length),为此算法中需要决定这两个重要参数。
3 译码器的设计与实现在译码器的设计中,采用固定延迟算法。
首先对进入译码器之前的软判决数据进行处理.将其处理成图中所示的待译码数据格式,其中DL是实际输入的所需译码数据长度,PL 为所需在数据中加的数据前缀长度,也即上述固定延迟算法中的头译码长度,DD为所要达到的译码深度(Decoding Depth),DD-DL为所要加的后缀长度,即固定延迟算法中的尾译码长度。
在设计中选择PL为96,由于在LTE系统中DL是变化的,最大为76,不能够选择固定的尾译码长度,但在本文设计中选择固定的DD为192。
译码器的整体设计框图,图中译码器主要由译码器系统控制模块,分支度量(BM)模块,加比选(ACS)模块,回溯(TB)模块和输出缓存组成。
数据处理由译码器系统控制模块控制完成,它控制从输入缓存中读入数据进行译码。
下面对译码器BM模块、ACS模块和TB模块这三个核心模块的具体设计与实现进行详细介绍。
3.1 BM模块在整个系统中分支度量采用的是软判决数据。
软判决根据接收的的软判决比特和编码器网格图的参考分支,计算其欧氏距离。
一般的欧氏距离采用如下公式计算:式中:ri为接收的软判决比特;ci为编码器网格图的参考分支。
上述公式经简化后结合系统所用软判决数据特点,可以得到如下计算方法:式中:Ri为接收的软判决比特的绝对值;Ci∈{0,1)为参考分支比特。
3.2 BM模块在每一个时钟中,用得到的分支度量(BM)和路径度量(PM)相加,得到下一时刻状态的多个路径度量,通过比较,选择一个幸存分支。
将每个状态的幸存分支,存储到回溯存储器中,更新路径度量。
在设计中,存储从数据段(即图4中的Initial State)开始,在这之前的幸存分支不需存储。
同时,计算出64个状态中,具有最小路径度量的状态。
如果直接将前一状态的路径度量与分支度量相加,得到下一状态的路径度量,来选择幸存分支,比较PMi+BMp和PMj+BMq选择幸存分支。
每个状态2个加法器,64个状态就需要128个加法器。
由于网格图的蝶形结构,可以比较PMi-PMj和BMq-BMp(即如果PMi+BMp>PMj+BMq,可以将其写为PMi-PMj>BMq-BMp),这样对于每一对相关状态可以重复使用这两项,在这个过程中需要用到32个加法器。
通过这种方法,可以明显减少ACS模块中的加法器数量。
更新路径度量的操作设计如下,编码器的状态转移过程蝶形结构所示,蝶形结构中两个相关状态转移到两个新状态。
两个相关状态对应的用状态索引分别为i=OD5D4D3D2D1和j=1D5D4D3D2D1,两个新状态可以分别表示为m=D5D4D3D2D10和n=D5D4D3D2D11。
即,状态i=0D5D4D3D2D1,如果输入比特0,转移到状态m=D5D4D3D2D10,如果输入是比特1,转移到状态n=D5D4D3D2D11;状态j=1D5D4D3D2 D1,如果输入比特0,转移到状态m=D5D4D3D2D10,如果输入比特1,转移到状态n=D5D4D3D2D11。
根据上面的转移状态关系,更新状态的路径度量。
对于幸存分支的存储表示,本文采取如下方法,状态m=D5D4D3D2D10,如果由状态i=0D5D4D3D2D1转移而来,那么此幸存分支取状态的最高有效比特0;如果由状态j=1D5D4D3D2D1转移而来,此幸存分支取状态的最高有效比特1。
同样,状态n=D5D4D3D2D11,如果由状态i=0D5D4D3 D2D1转移而来,此幸存分支用0表示;如果是由状态j=1D5D4D3D2D1转移而来,此幸存分支用1表示。
每个时刻,经过ACS选出64个状态所对应的幸存分支,存入回溯存储器。
3.3 BM模块回溯算法,由于已经将每个时钟下所有状态的幸存分支存储在回溯存储器里,在达到译码深度DD后,开始对整个幸存分支进行回溯,如图3所示。
当达到回溯深度(Trace Back Depth)后,幸存路径就开始合并,就开始输出译码数据。
回溯指针是卷积码编码逆过程的状态索引。
回溯指针的具体建立过程如下:回溯开始时,由ACS中计算的最小度量状态的状态索引作为初始回溯指针,从回溯存储器中读出的所有64个状态的幸存分支中,选出该回溯指针对应的幸存分支,形成下一个回溯指针,以此在回溯过程中循环向前,在每一时钟中形成回溯指针。
由幸存分支的存储表示可以得出,回溯指针m=D5D4D3D2D10,如果该指针对应的幸存分支为比特0,那么下一个回溯指针为i=0D5D4D3D2 D1,如果对应的幸存分支为比特1,那么下一个回溯指针为j=1D5D4D3D2D1;同理,回溯指针n=D5D4D3D2D11,如果幸存分支为比特0,下一个回溯指针为i=0D5D4D3D2D1,如果幸存分支为比特1,那么下一个回溯指针为j=1D5D4D3DzD1。
在该设计中,最重要的是译码深度(DD)的选择,译码深度能够决定所用的回溯存储器得深度。
结合数据前缀的固定延迟操作,采用一个单端口RAM(SPRAM),大小为96×128 b,如图5所示。
在一个译码周期里,数据前缀译码结束,从数据段(即图3所示start state)开始,每2个时钟往SPRAM里写1次这两个时钟分别产生的幸存分支,共128 b,如图5所示,即顺序写入数据R0R1,R2R3,R4R5,……,往SPRAM里写数据共需192个时钟。
在达到译码深度后,开始回溯,读出SPRAM里幸存分支,每个时钟读出两个连续幸存分支,进行回溯指针的操作,在回溯深度后就会合并为一条幸存路径,直到回溯完成,共需96个时钟。
在回溯的同时,如有数据输入译码器,开始下一个周期的译码,在回溯操作从SPRAM读数据的96个时钟里,用来译码数据前缀,在数据段开始时往SPRAM里写数据,同时回溯操作的读数据也已完毕。
从SPRAM里读出的数据R(DL+5)~R6(DL为数据长度)中的幸存路径,即为译码比特,输出到输出缓存中。
根据系统需要,译码比特输出到输出缓存完成后,一次将最终的译码数据输出。
4 FPGA验证该设计采用Verilog HDL语言编写代码,使用Quartus 9.0综合,并在Altera公司的StratixⅢEP3SL340F151713型号的FPGA上验证,该设计的译码器能达到135.78 MHz的速度,使用FPGA资源为4 992个ALUTs。
5 结语本文设计的译码器,利用Tail-biting卷积码的循环特性,采用固定延迟的算法与维特比算法结合,使其硬件实现更简单,采用并行结构以及简单的回溯存储器方法,显著提高译码器速度。
在设计各个子模块时,优化了硬件结构,减少占用资源和降低功耗,使其整体性能更优。
本文设计的译码器在FPGA上实现和验证,能达到135.78 MHz时钟,该译码器达到了LTE系统所要求的122.88 MHz时钟要求,达到了LTE系统所要求的整体性能,并已应用到ASIC芯片设计中。