欢迎来到天天文库
浏览记录
ID:10336063
大小:53.50 KB
页数:0页
时间:2018-07-06
《基于xilinxfpga的高速viterbi回溯译码器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于XilinxFPGA的高速Viterbi回溯译码器
2、第1摘 要:分析了新一代通信系统的发展对Viterbi译码器速率提出了更高的要求,通过优化Viterbi译码器结构,在XilinxVirtexIIPFGA上实现了速率30Mb/s以上的256状态Viterbi软译码。关键词:Viterbi;回溯译码;FPGA;双端口BlockRam 新一代移动通信系统目前主要采用多载波传输技术,基带传输速率较3G有很大提高,一般要求业务速率能达到30Mb/s以上。约束长度卷积码以及Viterbi译码器由于其性能和实现的优点,在新一代通
3、信系统中仍然占有一席之地。这就要求进一步提高Viterbi译码器的译码速率,同时优化Viterbi设计以减少由速率提高和约束长度的增加带来的硬件实现复杂度。1 Viterbi译码器基本结构 Viterbi译码器主要由分支度量计算(BMU),度量累积存贮(PathMetric),度量比较判断(ACS)以及回溯译码(TraceBack)4个模块组成[1],如图1所示。本文优化主要针对约束长度为9的1/2卷积码,生成多项式为561(oct),753(oct)。 BMU(BranchMetricUnit)模块计算接收的2个软信息
4、与4种可能的编码输出的欧式距离,作为分支度量送入ACS模块。ACS(Add_pare_Select)模块根据编码方式和状态转移将分支度量和256状态的度量分别进行累积相加,得到进入下一时刻的新度量,然后比较到达下一时刻同一状态的2种度量大小,选择小的度量,同时生成各状态的幸存比特输出。TraceBack回溯模块由ACS生成的当前时刻的判决比特回溯L个时刻(L为回溯深度),得到L时刻前的状态和译码输出。 500)this.style.ouseg(this)">2 XilinxVirtexII的结构和功能 VirtexII是
5、Xilinx公司的高性能系列FPGA。最高规模能达到8000000门,内部时钟高达400MHz。存贮单元具有高达到3M容量的真正双端口BlockRam。运算单元中包括最多168b的专用乘法器。VirtexII中的可配置单元为CLB(ConfigurableLogicBloccks)。CLB中的资源可以灵活配置成多种结构。包括实现查找表,移位寄存器等功能。在存贮资源不够的时候,CLB也可以配置为分布式的Ram[2]。 双口BlockRam是Viterbi译码器中实现回溯译码的主要模块,其端口如图2所示。可以看出BlockRa
6、m具有2套独立的地址和数据输入、输出线,独立的端口使能、写使能控制线,而且2个端口各自的时钟输入可以不同。这些结构保证了BlockRam是一个完全真正有168个,每个容量为18k。可以配置成不同的数据宽度和深度。同时BlockRam的访问时间只有3.3ns,能够保证高速的存取要求。 500)this.style.ouseg(this)">3 基于XilinxBlockRam的回溯优化方案3.1 回溯算法的原理和存在的问题 在Viterbi译码模块中,ACS和TraceBack是最核心的模块。ACS需进行大量的累积和比较运
7、算,TraceBack需进行多步回溯运算。当Viterbi译码器译码状态为256时,这些运算都需要占用大量的时间和资源。对于256状态的1/2卷积码的译码,需要512个加法器,512个比较器和选择器来完成累加度量、比较度量大小,并选择小的度量作为该状态新的度量。对一个状态度量更新的操作如图3所示。 500)this.style.ouseg(this)"> ACS得出的256位的判决比特送入回溯模块进行译码。回溯译码通过寻找在一定深度范围内的最小度量的路径来获得最大似然译码。实现中采用截尾译码,每一个时钟到来的时候,ACS
8、模块会送入当前时刻各状态的幸存比特(如图4中的Sign[S]),从这些幸存比特可以得到由当前各状态往回L时刻的最小路径上,前一时刻经过的状态(如图4中,Sign[S]=0,最小路径上前一时刻状态为T1,否则为T2)。如果存贮了L个时刻的256位状态幸存比特,就可以从当前时刻的某一状态开始回溯L时刻得到对应的最小路径起始状态(如图4中从S状态回溯L时刻得到初始的P状态)。实际上无论从当前的何种状态开始回溯,当回溯深度L为5~10倍的编码寄存器数时,所得到的L时刻前的初始状态都是相同的(当采用约束长度为9的卷积码,L最少应为40
9、)[3]。 500)this.style.ouseg(this)"> 按照上述的回溯方案对256状态的卷积码进行译码时,会占用大量的资源,在VirtexII系列中的Xc2v3000上综合时如果对ACS模块也不做任何处理的话甚至会产生资源不够的情况。除此之外这种回溯要求在一个时钟周期内进
此文档下载收益归作者所有