卷积码编码器的 Verilog HDL 设计
http://www.paper.edu.cn
北京邮电大学电信工程学院,北京 (100876)
E-mail:kxiaoyan@gmail.com
孔晓燕,刘丹谱
摘 要: 卷积码是一种性能优良的差错控制编码。如传输中产生差错的数目在码的纠错能
力之内,可以对差错进行定位并自动加以纠正。本文在阐述卷积码编码器基本工作原理的基
础上提出了在 QuartusⅡ开发平台上基于 Verilog HDL 语言设计了(2,1,4)卷积码编码器的方
法。仿真结果表明了该编码器的正确性和合理性。
关键词:卷积码;编码器;Verilog HDL;QuartusⅡ
中图分类号:TN919.81
1. 引 言
通信系统中,由于信道传输特性的不理性以及加性噪声的影响,数字信号在信道传输
过程中不可避免地会发生错误。差错控制编码(又称信道编码)是针对传输信道的不理想,
为提高数字传输可靠性而采用的一种技术 [2] 。它的基本机理是在发送端将被传输的信息序
列附加一些监督码元,这些多余的码元与信息码元之间以某种确定的规则相互约束。接收端
按照既定的规则检验信息码元与监督码元之间的关系,一旦传输过程中发生差错,则信息码
元与监督码元之间的关系将受到破坏,从而可以发现错误,乃至纠正错误。随着差错控制编
码理论的完善和集成电子技术的发展,差错控制技术不仅已成功地应用于各种通信系统,而
且在计算机,磁记录与存储中也得到了日益广泛的应用 [3]。
2. 卷积码编码器的分析
2.1 卷积码的编码原理
卷积码,或称连环码。由 P. Els,于 1955 年提出来一组非分组码。与分组码的主要区
别是,在分组码中,任何一段规定的时问内编码器产生的一个 N 个码元的码组.仅取决于这
段时问中的 k 位输入码元,码组中的监督位只监督本码组的 k 个信息位。而卷积码不同,编
码器在任何一段时问内产生的 n 个码元,不仅取决于这段时问中的 k 个信息位,而且还取决
于.前(N- 1)段规定时一间内的信息位。此时,监督码位监督着这 N 段时间内的信息位。卷
积码的性能在许多实际应用场合优于分组码,而且编码器设备只需要用简单的移位寄存器和
模 2 加法器等部件组成即可。
卷积码是将发送的信息序列通过一个线性的、有限状态的移位寄存器而产生的码。其编
码器的一般形式如图 1 所示,它主要由移位寄存器和加法器组成 [6] 。输人移位寄存器包括 N
段,每段 k 级,共 Nk 位寄存器,负责存储每段的 k 个信息码元;各信息码元通过 n 个模 2
加法器相加,产生每个输出码组的 n 个码元,并寄存在一个 n 级的移位寄存器中移位输出。
整个编码过程可以看成是输人信息序列与由移位寄存器和模 2 加法器之间连接所决定
- 1 -
的另一个序列的卷积,所以称为卷积码,记为(n,k,N)。参数 N 称为卷积码的约束长度,编
码效率(码率)为 R=k/n.。
http://www.paper.edu.cn
图 1:卷积码编码器的一般形式
2.2 卷积码的解析描述
描述卷积码的方法有两类:图解表示和解析表示 [1] 。图解表示法主要有树状图、网格图
和状态图三种;解析表示法有延时算子多项式和生成序列两种。不同的表示方法各有特点,
考虑到硬件电路的实现,选择用延时算子多项式来描述卷积编码器。下面以一种(2, 1, 3)
卷积码为例加以说明。这种卷积编码器的结构如图 2 所示图中用转换开关代替了输出移位寄
存器。
图 2:用转移开关代替输出移位寄存器
2.3 卷积码的结构图形描述
卷积码的编码器是一个有 k 个输入端,n 个输出端,且具有 m 节移位寄存器的有限状态
的有记忆系统。为了便于说明.下面的编码均基于(2,1 ,2)卷积码。
- 2 -
http://www.paper.edu.cn
图 3:卷积码编码器
3. (2,1,N)卷积码的实现
3.1 卷积码编码器的算法设计
下图给出了卷积码编码器的模块结构示意图。
图 4:卷积码编码器的机构示意图
图中,编码器选择模块的作用 [5] :由 CLK 作为扫描时钟实时监测选择开关,以确定卷积
码的编码参数,即(2, 1,N)卷积码中 N 的取值。并根据 N 的取值输出对应的如下表所示的
生成多项式(八进制转换为二进制)的系数。在本设计中,设定 N 的最大值为 8,所以在源程
序中申请了一个 8 位移存器。实际中,对于不同的 N 值,根据下表将各幂次的系数赋予寄存
器即可。信息输人模块的作用:此模块主要由一个 8 位移位寄存器构成,完成对输人信息码
流的缓存和移位操作。两个编码模块的作用:将生成多项式与信息码流相乘,完成卷积码的
编码过程;编码输出模块的作用:此模块为二选一的多路选择器,将编码模块 1, 2 并行输出
- 3 -
http://www.paper.edu.cn
的码元组成一个码组串行输出。
3.2 卷积码编码器的算法实现及仿真结果
本设计使用的软件是 Altera 公司的 QuartusII 软件,使用 Verilog HDL 语言对(2, I ,
N)卷积编码器进行逻辑描述。硬件描述语言 Verilog HDL 是一种用形象化的文字描述说明系
统的构成、行为、功能、信号连接及定时关系等的高级编程语言。Verilog HDL 语言不仅能
比电路图更有效地表示硬件电路的特性,而且可以自定义数据类型,这样便给编程人员带来
了较大的自由和方便。
信息输入模块的仿真波形如下:
本设计的核心是编码模块的设计,即完成输人信息源与生成多项式各幂次系数相乘和相
加(模 2 加)的操作,从而完成对输人信息码的编码过程。该模块程序的仿真波形如下:
编码模块 2 的源程序和编码模块 1 的程序相似,如下:
编码输出模块为二选一的多路选择器,将编码模块 1,2 并行输出的码元组成一个码组
串行输出。c1,c2 为两个编码模块的输出端,c 为经过二选一多路选择器后的输出端口,sel
为控制信号。该模块的 sel 信号的周期应设为 c1,c2 输出码元周期的一半,既信息输入模块
sin 的时钟信号 clk 周期的一半才能正确完成二选一的工作。该模块仿真结果如下:
- 4 -
http://www.paper.edu.cn
4. 结论
上述分析仅实现了卷积码上下两路的编码工作,仿真结果表述了该设计的正确性和合理
性。实际上卷积码最终输出应是一路码字,并且输出的信息码应该单独存储,可以对卷积码
程序实现了进一步的改进,采用状态机以及 QuartusⅡ自带的模块 fifo 来实现这一功能。
参考文献
[1] 夏宇闻.《Verilog 数字系统设计教程》,北京航空航天大学出版社,2003.7.
[2] 蒋青,吕翊.《通信系统中卷积码编码器的 VHDL 实现》,实验科学与技术 2004.12 第 4 期:41 页—44
页.
[3] 胡晓东.《卷积码编码器的分析》,山西经济管理干部学院学报 2005.9 第 13 卷第 3 期:49 页—51 页.
[4] 张建斌.《基于 VHDL 语言的卷积码编解码器的设计》,现代电子技术 2005.3 总第 194 期:63 页—65
页.
[5] 张建斌.《基于 EDA 的卷积码编解码器实现》,信息技术 2005 年第 2 期:16 页—18 页.
[6] 李学军,周辉,喻文芳.《利用 EDA 技术设计(2,1,m)卷积码编码器》,无线电工程 2000 年第 30 卷
第 1 期:43 页—45 页.
[7] 周炯槃,庞沁华,续大我,等.《通信原理(下)》,北京邮电大学出版社 2002.12.
[8] 孔健,杨洪斌,吴越,等.《基于 VHDL 的有限状态机描述及综合》,计算机工程 2003.9 第 39 卷第 15 期:
82 页—84 页.
The Design of Convolution Code Based on Verilog HDL
Kong Xiaoyan,Liu Danpu
School of Telecommunication Engineering,Beijing University of Posts and
Communications,Beijing,PRC(100876)
Abstract
Convolution code is a better code of error controlling performance.The convolutional encoder is
used to encode data so that the decoder can correct errors introduced due to noise in the channel. This
paper discusses the encoding principle of the convolution code, raise a method of designing the (2,1,4)
convolution encoder using Verilog HDL language based on QuartusⅡ, and simulate results prove the
correctness.
Keywords: Convolution Code;Encode;Verilog HDL;QuartusⅡ
- 5 -