基于FPGA的卷积码的编/译码器设计
2)路径度量和“加-比-选单元”计算和比较每条支路的路径度量,得到并保存剩余路径提供给回溯单元。对于(2,1,3)卷积码,译码深度D=5(m+1)=20,为保证存储单元和回溯单元同时并行工作,存储单元为2D(m+1)2m=1280 bit。 3)回溯单元 从前面“加-比-选”电路送来的剩余路径中选择量度最小的剩余路径,从这条路径对应的状态开始向前寻找,直到找完前面所有状态,并从存储单元中读出译码信息送给译码控制单元。 4)译码控制单元 将回溯单元送来的译码序列反转顺序输出即为所要输出的正确的接收序列。其中反转顺序的操作可由RAM实现,顺序写入倒序读出。 4 译码器设计中改进和优化算法 本文采取状态路径和判决比特同时存储,在表示状态信息的比特前加上1位判决比特来表示相应状态的输入支路的译码信息,因此,译码器在回溯时就可直接输出判决比特作为译码器的输出,降低了译码器的判决难度,节省了存储回溯路径所需要的内存,从而降低了译码器结构复杂性。 本设计中译码器在计算所有状态的路径量度的同时进行路径存储,从而大大提高了译码速度。路径量度是指每个状态的2条输入支路和2条输出支路,路径存储指的是状态存储以及相应的译码判决比特存储。该结构的译码器对每一个状态都具有独立的处理单元,彼此互补影响,并行工作,提高了译码速度。对于(2,1,3)卷积码,一个时钟需要进行2x2x2m=32次路径量度计算和2m=8次4比特存储操作。充分发挥了FPGA拥有大量LCS和RAM的优势。 在网格图中,随着状态的改变,每个状态的输出支路的路径量度逐渐增加,造成存储资源压力增大,设计中在每次进行路径量度计算时,将该状态的量度值与上次剩余路径量度的最小值做差后进行保存,以达到减小存储器空间的需求。对于编码效率为1/2的卷积码,以上差值最大不超过2m,因此,路径量度的量化宽的为1b(2m)。对于(2,1,3)卷积码,存储路径量度的寄存器位宽为lb(2×3)=3。 5 验证仿真 本设计采用Xilinx公司的ISE 9.2i为开发平台,选用的是Xilinx Virtex 4 FPGA为开发芯片用于设计和验证所提出的卷积编码和维特比(Veterbi)译码算法。 5.1 卷积编码器 如图6所示,clk为时钟信号,reset为复位信号,din为输入信号,out_1,out_2为编码后得到的并行码字序列。可看出:输入码元为“101010111011 000100011011111111100……”经过编码得到编码结果为“1101000100010010101000101011001101110011101001010101010 10101011”结果正确。 5.2 Verterbi译码器 Vertrbi译码器仿真波形如图7所示,rev[1:0]为输入译码器的接收序列,clk为时钟信号,rst为复位信号,enable为使能信号,h_out为译码器输出序列。可看出:译码输出码元为“10101011101100010001101111111l100……”。结果正确。 6 结束语 通过对卷积编码原理与维特比译码算法的深入研究,在理解传统实现方法的基础上提出适合FPGA存储器和独立运算单元丰富的特点的优化算法,有效地提高了译码器的处理速度,简化了译码器的复杂程度。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)