大约束度Viterbi译码器中路径存储单元的设计
文件大小: 110k
源码售价: 10 个金币 积分规则     积分充值
资源说明:1 引言   Viterbi译码算法是一种最大似然译码算法,目前广泛应用于各种数据传输系统,特别是卫星通信和移动通信系统中。近年来随着FPGA技术的迅速发展,使得基于FPGA实现Viterbi译码的算法成为研究的热点。   由于Viterbi译码器的复杂性随约束长度k成指数增加,大约束度不但使Viterbi译码器硬件复杂度大为增加,同时也限制了译码速度。而其中以加比选(Add Compareselect,ACS)运算为最主要的瓶颈,的递归运算使流水线结构的应用变得困难。本文以(2,1,9)卷积码为例,用FPGA实现大约束度Viterbi译码器,其中ACS设计采用串并结合的方法来兼顾面积和 Viterbi译码算法是通信领域中的一种广泛应用的最大似然译码方法,尤其在卫星通信和移动通信系统中发挥着重要作用。随着FPGA(Field-Programmable Gate Array)技术的进步,利用FPGA实现Viterbi译码算法的研究日益活跃。然而,Viterbi译码器的复杂性与其约束长度k成指数关系,导致大约束度不仅增加了硬件复杂度,还限制了译码速率。在这样的背景下,如何高效地设计Viterbi译码器的路径存储单元成为了一个关键挑战。 Viterbi译码器主要包含四个核心部分:分支度量单元、加-比较-选择单元(ACSU)、路径度量存储单元(PMMU)以及幸存路径存储单元(SMU)。分支度量单元负责计算接收码字与期望码字之间的距离,即分支度量值。ACSU则是进行路径度量值与分支度量值的累加、比较,选出最大度量值并确定幸存路径。路径度量存储单元用于存储幸存路径的度量值,而幸存路径存储单元记录决定位元,最终输出译码序列。 在大约束度Viterbi译码器中,由于路径度量值需要频繁更新,若所有状态的路径度量存储在同一块RAM中,会频繁读写,对RAM的访问速度要求极高,这可能成为系统性能的瓶颈。因此,优化路径度量的存储方式和访问效率至关重要。 本文提出了一种串并结合的ACS设计策略,以(2,1,9)卷积码为例,将路径度量RAM分为16个独立的块,每个块存储16个状态的路径度量,通过并行操作降低对单个RAM块的读写频率。同时,为了提高处理速度,采用4个基4的蝶形结构(ACS)并行工作,每个单元串行处理16个状态的路径度量。 针对路径度量的存储问题,文中还提出了一种同址存储方法。这种方法可以减少存储单元的数量,同时保持译码速度不变。同址存储的基本思想是利用路径度量的更新特性,在同一地址上交替存储当前时刻和下一时刻的路径度量值,通过时间上的交错,避免了额外的存储需求,有效节省了硬件资源。 此外,为了克服ACS运算中的递归运算对流水线结构的限制,文中采用了基4算法,将处理单元分解为更小的子单元,这样可以并行处理更多的状态,从而提高译码速度。然而,过大的基数会增加计算复杂性,故选取合适的基数是平衡速度和硬件消耗的关键。 该设计通过优化路径存储单元和ACS运算,降低了大约束度Viterbi译码器的硬件复杂度,提高了译码速度,体现了FPGA在实现复杂通信算法中的优势。同时,提出的同址存储策略提供了一种节省资源的有效途径,为高性能Viterbi译码器的实现提供了新的思路。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。