卷积编码器示例|卷积编码
这一页描述了卷积编码器的例子,并提到了卷积编码的伪代码。卷积编码示例采用码率、约束长度、生成器多项式来实现。
让我们按照下面的规范来理解卷积编码器的例子。
卷积编码器(3,1,4)规格
编码率:1/3
约束长度:5
输出位长:3
报文位长度:1
最大内存顺序/编号。内存元素= 4
生成器多项式:25 (8),33 (8),37 (8)
描述:
前向纠错的目的是通过向通过信道传输的数据中添加一些精心设计的冗余信息来提高信道的容量。添加这种冗余信息的过程称为信道编码。卷积码每次处理一个或几个比特的串行数据。
卷积编码与维特比解码是一种FEC技术,特别适用于主要由加性高斯白噪声(AWGN)破坏传输信号的信道。
卷积代码通常用两个参数来描述:
编码速率
约束长度。
码率= k/n,表示为在给定的编码器周期内,进入卷积编码器的比特数(k)与卷积编码器输出的通道符号数(n)之比。
约束长度参数K表示卷积编码器的“长度”,即有多少K位级可用于提供产生输出符号的组合逻辑。
与K密切相关的是参数m,它表示输入位首次出现在卷积编码器的输入端后,保留并用于编码的编码器周期数。m参数可以被认为是编码器的内存长度。我们专注于速率为1/3的卷积代码。
维特比译码的优点是译码时间固定。它非常适合硬件解码器的实现。但是它的计算需求作为约束长度的函数呈指数增长,因此在实践中通常限制在K = 9或更小的约束长度。
输入的原始二进制数据由二进制卷积编码器编码,其原生率为1/3,约束长度为5,并使用以下生成器多项式码导出其三个码位(X1, X2, X3):
25 (8), 33 (8), 37 (8)
卷积编码器的例子
卷积编码器的生成部分如下图所示。
伪代码:
对数据进行卷积编码是使用移位寄存器和相关的组合逻辑来完成的,组合逻辑执行模二加法。移位寄存器仅仅是一个触发器链,其中第n个触发器的输出与第(n+1)个触发器的输入相关联。每当时钟的活动边缘发生时,触发器的输入被时钟传送到输出,因此数据在一个阶段上移动。)
八进制数(25)8(33)8(37)8表示代码生成器多项式,当以二进制(10101)读取时2, (11011)2和(11111)2分别对应于连接上、下模两个加法器的移位寄存器,如图所示。在设计卷积编码器时遵循以下步骤。
1)初始化内存寄存器的零重置
M1 =0 m2=0 m3=0 m4=0
2)将输入的位存储在内存寄存器m_in中。
M_in = data_in
3)输入位到达且输入数据有效后,开始操作,输出计算为
X1 = m_in + m2 + m4;
X2 = m_in + m1 + m3 + m4;
X3 = m_in + m1 +m2 +m3+m4;
4)进行移位操作
m4 =立方米;
m3 =平方米;
m2 = 1;
m1 = m_in;
5)对于输入数据位的长度,重复步骤2、3和4
MATLAB源代码
VHDL源代码
对于K=7, rate=1/2,G1=171(八进制),G2 = 133(八进制),检查以下页面的VHDL代码:
卷积编码器
相关链接
前向纠错-此页描述了前向纠错及其应用,并提到了不同的前向纠错技术。
涡轮编码器-本页涵盖CTC编码器或卷积Turbo编码器技术,速率为1 × 3,用于前向纠错。
RS编码器-本页涵盖RS编码器,即里德所罗门编码基础与示例。
儿童权利公约-此页涵盖CRC或循环冗余检查。