Engee 文档

卷积编码器

使用卷积编码方案对二进制数据进行编码

类型: ConvolutionalEncoder

图书馆中的路径:

/Communication Systems/Error Detection And Correction/Convolution/Convolutional Encoder

说明

卷积编码器 程序块使用网格结构指定的卷积编码方案对输入的二进制信息进行编码。

程序块图标和输入输出端口数量的变化取决于参数*通过输入端口指定初始状态*和*输出最终状态*的值。

端口

输入

端口_1 - 输入信号
二进制矢量列

以二进制列向量形式指定的输入信息。在第二个输入端口启用之前,该端口保持未命名状态。

编码器只接受一个输入比特流 K = 1。

*例如`[1 1 0 1 0 1 0 0 0 1 1 1]`将信息指定为由八个元素组成的二进制字符串向量。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

ISt - 寄存器的初始状态
非负整数

编码器寄存器的初始状态,每个帧到达数据块时的初始状态,指定为一个非负整数。

依赖关系

要启用此端口,请将*操作模式*设为 "截断(每帧重置)",并选择*通过输入指定初始状态*复选框。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

输出

端口_1 - 输出信号
二进制矢量列

以二进制列向量形式返回的卷积码字。

该端口未在块图标上命名。

如果编码器产生 输出比特流(即可以产生 可能的输出符号),则对于某个正整数 ,块输出向量的长度为 。该输出继承了 In 输入的数据类型。

数据类型: Float64

FSt 是寄存器的最终状态
非负整数

块输出的每个帧的编码器寄存器的最终状态,以非负整数形式返回。

依赖关系

要启用此端口,请将*操作模式*参数设置为 "连续"、"截断(每帧重置)"或 "通过端口非零输入时重置",并选择*输出最终状态*复选框。

参数

Trellis structure - 通过网格结构描述卷积代码
poly2trellis(7,[171 133])(默认)。

卷积码的树状结构描述,以结构形式给出,包含速率为 的代码的树状结构描述,其中 是输入比特流的数量, 是输出比特流的数量。

您可以使用 poly2trellis 函数或手动创建该结构。

该结构包含以下字段:

numInputSymbols - 输入编码器的符号数
2K

输入到编码器的符号数,指定为等于 的整数,其中 是输入比特流的数量。

numOutputSymbols - 编码器输出的符号数
2N

编码器输出的符号数,指定为等于 的整数,其中 是输出比特流的数量。

numStates 是编码器的状态数
度 2

编码器中的状态数,指定为 "度数 2"。

nextStates - 后续状态
整数矩阵

当前状态和当前输入的所有组合的后续状态,以整数矩阵形式给出。矩阵的大小必须是 numStates 乘以 2K。

*输出数据
八进制数矩阵

当前状态和当前输入的所有组合的输出,以八进制数矩阵的形式给出。矩阵大小必须是 numStates 乘 2K。

运行模式 - 终止编码帧的方法
连续(默认) ` | `截断(每帧重置) `

编码帧终止方法指定为这些模式值之一。

  • Continuous - 该块在每次输入结束时保存编码器状态,供下一帧使用。

  • 截断(每帧重置)"--块独立处理每个输入。在每个输入帧开始时,编码器状态将重置为 "全零 "状态,如果选择了*通过输入端口指定初始状态*复选框,则重置为*ISt*端口指定的状态。

通过输入端口指定初始状态 - 通过输入端口设置初始状态
已禁用(默认) | 已启用

选择此参数可为程序块添加 ISt 输入端口。

依赖关系

要使用该参数,请将*操作模式*参数设置为 "截断(每帧重置)"。

输出最终状态 - 输出最终状态
关(默认)` | 开

选择此参数可将 FSt 输出端口添加到程序块中。

依赖关系

要使用此参数,请将*操作模式*参数设置为 "连续"、"截断(每帧重置)"或 "通过端口非零输入时重置"。

*穿孔编码*用于启用卷积编码的穿孔功能
关(默认)` | 开。

选择该参数可启用*穿孔向量*参数。

*穿孔矢量*是穿孔模式
[1;1;0;1;1;0;1] (默认)` | "穿孔向量"。

穿孔模式指定为一个向量。穿孔向量是一个包含 10 的模式,其中 0 表示从输出编码数据中排除的比特。

向量的长度必须是输入信息向量长度 "length(In) "的整数倍。

参考文献 [3]、[4] 和 [5] 中给出了某些速率和多项式的常用穿刺模式。

依赖关系

要使用该参数,请选择*穿刺码*复选框

有关卷积编码的更多信息

卷积编码是一种具有记忆功能的错误控制编码。特别是,计算和编码输出取决于当前的输入符号集和先前的输入符号数,而先前的输入符号数随网格配置的不同而变化。

卷积编码器对每 个输入比特输出 个比特。在模拟过程中,输入数据可能是 位的倍数。

使用定义了一组发生器多项式的晶格结构,可以对具有直接或系统反馈的非系统、系统卷积编码进行建模。

要解码卷积码的输出,可以使用

  • 块*维特比解码器* - 使用具有硬解码和软解码功能的维特比算法。

  • 程序块 APP 解码器 - 使用后验概率解码器对卷积码输出进行软解码。

编码器定义

要定义卷积编码器,请使用 Trellis 结构 参数。可以通过调用 poly2trellis 函数来指定trellis结构。

例如,要使用约束长度为 7、代码生成器多项式为 171 和 133(八进制数)的编码器,可将 Trellis 结构参数设置为

poly2trellis(7,[171 133])

文学

  1. Clark, George C. 和 J. Bibb Cain.数字通信的纠错编码》。通信理论的应用》。纽约:Plenum 出版社,1981 年。

  2. Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Wee.Hayes, and Stephen B. Weinstein.Data Communications Principles.通信理论的应用》。纽约:Plenum 出版社,1992 年。

  3. Yasuda, Y., K.Kashiki, and Y. Hirata.Hirata."High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding." IEEE Transactions of Communications 32, no.IEEE Transactions on Communications 32, no.3 (March 1984):315-19.https://doi.org/10.1109/TCOM.1984.1096047.

  4. Haccoun, D., and G. Begin."High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding." IEEE Transactions of Communications 37, no.IEEE Transactions on Communications 37, no.11 (November 1989):1113-25.https://doi.org/10.1109/26.46505.

  5. Begin, G., D.Haccoun, and C.Paquin."Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding." IEEE Transactions on Communications 38, no.IEEE Transactions on Communications 38, no.11 (November 1990):1922-28.https://doi.org/10.1109/26.61470.