基于 VHDL 语言的卷积码编解码器的设计
摘 要:卷积码是一种性能优良的差错控制编码。本文在阐述卷积码编解码
器基本工作原理的基础上,提出了在 MAX+PlusⅡ开发平台上基于 VHDL 语言设计
(2,1,6)卷积码编解码器的方法。仿真实验结果表明了该编解码器的正确性
和合理性。
关键词:卷积码;编解码器;VHDL;MAX+PlusⅡ
Design of Convolution Encoder and Decoder Based on VHDL Language
ZHANG Jianbin
(Department of
Electronic Information Engineering, Jiangsu Teachers University of
Technology, Changzhou,213001,China)
Abstract:Convolution code is a better code of error controlling performance. This
paper discusses the encoding and decoding principle of the convolution code, raises a
method of designing the convolution encoder and decoder using VHDL lang uage based on
MAX+PlusⅡ, and simulate results prove the correctness
Keywords:convolution code; encoder and decoder; VHDL;MAX+Pl usⅡ
1 引言
数字信息在有噪信道中传输时,会受到噪声干扰的影响,误码总是不可避免
的。为了在已知信噪比的情况下达到一定的误码率指标,在合理设计基带信号,
选择调制、解调方式,并采用频域均衡或时域均衡措施的基础上,还应采用差错
控制编码等信道编码技术,使误码率进一步降低。卷积码和分组码是差错控制编
码的 2 种主要形式,在编码器复杂度相同的情况下,卷积码的性能优于分组码,
因此卷积码几乎被应用在所有无线通信的标准之中,如 GSM,IS95 和 CDMA2000
的标准中。
目前,VHDL 语言已成为 EDA 领域首选的硬件设计语言,越来越多的数字系统
设计使用 VHDL 语言来完成。原因是通过 VHDL 描述的硬件系统“软核”便于存档,
程序模块的移植和 AS C 设计源程序的交付更为方便。因此,他在 IP 核的应用等
方面担任着不可或缺的角色。在某扩频通信系统中,我们使用 VHDL 语言设计了
(2,1,6)卷积码编解码器,并经过了在 FPGA 芯片上的验证实验。
2 卷积编码器
卷积码通常记作(n0,k0,m),其编码效率为 k0/n0,m 称为约束长度。(n0 ,k0,m)
卷积码可用 k0 个输入、n0 个输出、输入存储为 m 的线性有限状态移位寄存器及模
2 加法计数器电路来实现,卷积码的编码方法有 3 种运算方式:离散卷积法;生
成矩阵法;多项式乘积法。此外,卷积码的编码过程还可以用状态图、码树图和
网格图来描述。本文设计的编码器考虑到硬件电路的实现,选择了多项式乘积法。
本系统所选卷积编码器如图 1 所示,该卷积编码器为(2,1,6)自正交卷积编
码器。
3 大数逻辑解码器
卷积码的解码可分为代数解码与概率解码 2 类。大数逻辑解码器是代数解码
最主要的解码方法,他既可用于纠正随机错误,又可用于纠正突发错误,但要求
卷积码是自正交码或可正交码。 本文所选(2,1,6)系统自正交卷积码的大数
逻辑解码器如图 2 所示。
图 2 中,I端输入信息码元,P端输入校验码元。解码器把接收到的 R(D)
中的每一段信息元送入编码器中求出本地检验元,与其后面收到的检验元模 2
加。若两者一致,则求出的伴随式分量 si 为 0,否则为 1。把加得的值送入伴随
式寄存器中寄存。当接收完 7 个码段后开始对第 0 码段纠错,若此时大数逻辑门
的输出为 1,则说明第 0 码段的信息元有错。这时正好第 0 子组的信息元移至解
码器的输出端,从而纠正他们。同时,纠错信号也反馈至伴随式寄存器修正伴随
式,以消去此错误对伴随式的影响。如果大数判决门没有输出,则说明第 0 子组
的信息元没有错误,这时从编码器中直接把信息元输出。
4 卷积码编解码器的 VHDL 设计
4.1VHDL 设计的优点与设计方法
与传统的自底向上的设计方法不同,VHDL 设计是从系统的总体要求出发,
采用自顶向下(toptodown)的设计方法。其程序结构特点是将一项工程设计(或
称设计实体),分成外部(即端口)和内部(即功能、算法)。在对一个设计实
体定义了外部端口后,一旦内部开发完成,其他的设计就可以直接调用这个实体。
本设计所用 VHDL 设计平台是 Altera 的 MAX+PlusⅡ EDA 软件。MAX+PlusⅡ
界面友好,使用便捷;他支持 VHDL,原理图,V 语言文本文件,以及波形与 EDIF
等格式的文件作为设计输入;并支持这些文件的任意混合设计;具有门级仿真器,
可以进行功能仿真和时序仿真,能够产生精确地仿真结果;支持除 APEX20K,APX
Ⅱ,Mercury,Excalibur 和 Stratix 系列之外的所有 Altera FPGA/CPLD 大规模
逻辑器件。设计中采用的 FPGA 器件是 Altera 的 FLEX 系列芯片 FLEX 10K20。用
MAX+PlusⅡ软件进行 VHDL 设计的过程是:
(1)用 Text Editor 编写 VHDL 程序。
(2)用 Compiler 编译 VHDL 程序。
(3)用 Waveform Editor,Simulater 仿真验证 VHDL 程序。
(4)用 Timing Analyzer 进行芯片的时序分析。
(5)用 Floorplan Editor 安排芯片管脚位置。
(6)用 Programer 下载程序至芯片 FLEX10K20。
在实际的开发过程中,以上个步骤需反复进行,直至将既定的 VHDL 设计通
过所有的测试为止。
4.2 卷积编码器 VHDL 顶层建模(top level)及系统功能仿真
4.2.1 卷积编码器各功能模块及顶层建模端口的 VHDL 描述
LIBRARY IEEE;
用 MAX+PlusⅡ编译后生成的编码器图形符号如图 3 所示。
4.2.2 卷积编码器 VHDL 顶层建模的 VHDL 仿真波形
卷积编码器 VHDL 仿真波形如图 4 所示。仿真前设置输入信息序列 datain=
“1111”,速率为 32 kP/s,对应时钟为 31. 25μs。仿真结果表明,卷积编码输
出 dataout =“1111101 0010000000001”,相应速率为 64 kP/s,与理论分析结
果一致。
4.3 卷积解码器 VHDL 顶层建模的 VHDL 端口描述
4.3.1 卷积解码器各功能模块及顶层建模端口的 VHDL 描述
LIBRARY IEEE;
用 MAX+PlusⅡ编译后生成的解码器图形符号如图 5 所示。
4.3.2 卷积解码器 VHDL 顶层建模的 VHDL 仿真波形
卷积解码器 VHDL 仿真波形如图 6 所示。其中待解码信元 datain=
“11111010010000000001”,速率为 64kP/s,对应时钟为 15.625μs。仿真结果
表明,解码信元输出 dataout =“111 1”,相应速率为 32kP/s。实际仿真还验证
了当卷积解码器输入的待解码信元中有错码时的纠错情况,与理论分析结果一
致。
5 结语
将通过仿真的 VHDL 程序下载到 FPGA 芯片 FLEX10K20 上,并在实际扩频系统
中用于差错控制,取得了较为满意的效果。
参考文献
[1]王新梅,肖国镇.纠错码—原理与方法[M].西安:西安电子科技大学出版
社,2001.
[2]褚振勇,翁木云.FPGA 设计及应用[M]. 西安:西安电子科技大学出版社,
2002.
[3]潘 松,王国栋.VHDL 实用教程[M].成都:电子科技大学出版社,2 000.