主要内容

卷积编码器

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

  • 卷积编码器块

库:
通信工具箱/错误检测和校正/卷积
通信工具箱HDL支持/错误检测和校正/卷积金宝app

描述

卷积编码器的块编码输入二进制消息通过使用指定的卷积编码方案框架结构。有关更多信息,请参见卷积编码

这一块可以接受输入,在模拟不同长度。关于适应信号的更多信息,请参阅适应信号基础知识(金宝app模型)的话题。

这些图标显示可选块端口启用。

卷积编码器与可选块初始状态和最终状态端口启用

卷积编码器与可选块复位和最终状态端口启用

例子

全部展开

应用卷积编码和二进制信号BPSK调制,调制信号通过一个AWGN信道。计算符号错误率(SER)应用BPSK解调和维特比解码后的信号。

探索模型

doc_conv模型生成一个二进制信号使用伯努利二进制信号发生器块。的卷积编码器块编码信号。的BPSK调制基带块调节信号。的AWGN信道块增加了噪声信号。解调BPSK调制信号与零相移,只是提取的值实部解调通过使用复杂的象征复杂Real-Imag(金宝app模型)块。的维特比译码器块解码信号。的出错率计算块计算爵士。

运行仿真

ans = '过滤信号通过一个与EsN0 AWGN信道设置为1 dB, SER计算是0.005608。ans = 53499年的传播符号,有300个符号错误。”

这个例子模拟被刺破编码系统,它使用1/2卷积编码和维特比解码。维特比译码器的复杂度和编码速率迅速增加。刺穿技术支持更高速率码的编码和解码率程序员使用标准低。

cm_punct_conv_code模型通过AWGN信道传输一个卷积编码的BPSK信号,解调接收信号,然后执行维特比解码恢复未编码的信号。计算错误率,模型比较了原始%信号并解码信号。

该模型使用PreloadFcn回调函数来设置这些工作空间变量的初始化块参数:

puncvec = [1; 1, 0, 1, 1, 0];EsN0dB = 2;回溯= 96;%维特比回溯深度

有关更多信息,请参见模型的回调(金宝app模型)

块在这个模型中执行这些操作:

  • 伯努利二进制信号发生器——集样品每帧3。块创建一个随机比特序列输出三个样本在每个样本时每帧。

  • 卷积编码器——使用默认设置框架结构,选择穿刺代码,集穿刺向量工作空间变量puncvec。的数据块编码帧通过刺穿一个1/2,约束长度7卷积码速率3/4的代码。指定的穿刺向量puncvec是1/2,速度的最佳穿刺向量约束长度7卷积码。一个1穿刺的向量表示在相应位置的编码向量被发送到输出向量,而0表明被移除。配置编码器,编码比特位置1,2,4和5是传播,而比特位置3和6的移除。率3/4的代码意味着每3位的输入,刺穿了代码生成的4位的输出。

  • BPSK调制基带——调节编码信息使用默认参数值。

  • AWGN信道——集模式信号噪声比(Es /不)并设置Es /不(dB)工作空间变量EsN0dB。自从调制器块生成单位功率信号,输入信号功率,引用1欧姆(瓦特)保持默认值1

  • 维特比译码器——使用设置框架结构,戳破了代码,穿刺向量结合卷积编码器的块。块集决策类型Unquantized回溯深度回溯工作空间变量。解码没有刺穿指定的卷积码代码,回溯深度40就足够了。然而,给解码器足够的数据来解决歧义引入的穿刺,96块使用回溯的深度解码戳破了代码。类似于卷积编码器,译码器的穿刺向量表示小孔的位置。译码器的位置是位解码过程中忽略,因为爆不传播,没有信息表明他们的价值观。穿刺向量中的每一个1表示传输,每个0表示被刺破位忽略在解码器的输入。

  • 复杂Real-Imag(金宝app模型)- BPSK解调信号中提取真正的复杂样品的一部分。

  • 出错率计算——使用接收延迟价值占样本总数系统延迟和比较原始的解码比特位。块输出三元素向量包含计算误码率,观察到的数量错误,和处理的比特数。的接收延迟设置为回溯工作空间变量,因为维特比回溯深度会导致系统中唯一的延迟。通常情况下,误码率仿真运行,直到最小数量的错误发生,或者直到仿真过程最大的比特数。错误率的计算块选择停止仿真参数和设置目标的错误数量One hundred.和符号的最大数量1 e6控制仿真的持续时间。

评估比特误码率

通过运行这段代码生成一个比特误码率曲线来模拟模型在一系列EbN0设置。

比较仿真结果与比特错误概率的近似开往被刺破代码按[1]。的比特误码率性能r = n (n - 1) /美元爆代码上有界的表达式:

le {1 $ $ {P_b} \ \ /{2 \离开({n - 1} \右)}}\ \ limits_总和{d = {d_ {{\ rm # xA;{自由}}}}}^ \ infty{{\ω_d} \, {\ mathop {\ rm误差补函数}\长成具}\左({& # xA; \ sqrt {{\ mathop {\ rm rd} \长成具}\离开({{{{E_b}} & # xA; \ mathord{\左/ {\ vphantom {{{E_b}} {{N_0}}}} & # xA; \。\ kern - \ nulldelimiterspace} {{N_0}}}} \右)}}\右)}$ $

在这个表达式,误差补函数表示补充误差函数,r美元是编码速率,都有美元d_{自由}$${\ω_d} $依赖于特定的代码。这个例子中,3/4的代码速度的美元d_{自由}$= 5,${\ω_5}$= 42岁${\ω_6}$= 201,${\ω_7}$= 1492,等等。有关更多信息,请参见文献[1]。

计算一个近似的理论绑定使用前七的Eb / N0值的总和2:0.02:5。使用的值nerr来自文献[2),表II。

画出仿真结果,拟合曲线和理论界限。

在某些情况下,在较低的误比特率,您可能会注意到仿真结果似乎表明出错率略高于绑定。这个结果可以来自有限回溯深度解码器或,如果你观察不到500位错误,从模拟方差。

例如显示卷积编码没有刺穿,请不痒的决定解码部分错误检测和校正

引用

  1. Yasuda Y。,K。K一个shiki, and Y. Hirata, "High Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding," IEEE Transactions on Communications, Vol. COM-32, March, 1984, pp. 315–319.

  2. 开始,G。,Haccoun,D., and Paquin, C., "Further results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding," IEEE Transactions on Communications, Vol. 38, No. 11, November, 1990, p. 1923.

使用维特比译码器为定点硬块,不痒的决定卷积解码。比较结果计算与理论上界比特误码率分析应用程序。

模拟配置

cm_viterbi_harddec_fixptcm_viterbi_softdec_fixpt模型突出了定点建模维特比译码器的属性,使用类似的布局。使用默认的配置模型PreLoadFcn回调函数指定一个$ {E_b} / {N_0} $设置的4 dBAWGN信道块。卷积编码器的配置为1/2编码器。具体来说,每2位编码器增加了另一个2冗余位。为了适应编码速率,Eb /不(dB)参数的情况下块被减去一半10 * log10 (2)从分配的$ {E_b} / {N_0} $设置。运行时间限制到100或1 e6比特错误出错率计算块。

定点建模

定点建模使bit-true模拟考虑硬件实现的考虑和数据的动态范围和参数。例如,如果目标硬件是DSP微处理器、一些可能的单词长度是8、16或32位,而如果目标硬件ASIC或FPGA,可能会有更大的灵活性的单词长度的选择。

要启用定点维特比解码,

  • 艰难的决定,块类型的输入必须ufix1(单词长度的无符号整数1)。在此基础上输入(0或1),内部分支度量计算使用无符号整数的单词长度=(数量的输出比特),指定的格子结构(= 2艰难的决定的例子)。

  • 软决策,块类型的输入必须ufixN(无符号整数单词长度N),其中N是不痒的决定部分的数量,使定点解码。块的输入必须是整数范围在0到2美元^ {n} $。内部分支度量计算使用无符号整数的单词长度= (N +输出比特数- 1),指定的格子结构(等于4不痒的决定的例子)。

国家标准字长由用户指定,通常必须大于分支度量词的长度已经计算。您可以调整这是最合适的值(基于硬件和数据方面的考虑)通过评审记录的数据的系统。

通过选择启用日志记录应用程序>定点工具。在定点设置菜单,设置定点仪器模式极限、最大值和溢出,并重新运行仿真。如果你看到溢出,这意味着数据不符合所选的容器。你可以试着扩展数据前处理它,或者如果你的硬件允许,增加单词长度的大小。基于数据的最小值和最大值,你也能够确定所选的容器是否适当的大小。

尝试运行模拟的不同的值国家标准字长了解对该算法的影响。你应该能够缩小参数到一个合适的值,没有不良影响误码率的结果。

艰难的决定配置的cm_viterbi_harddec_fixpt模型:

  • 的维特比译码器的块决策类型参数设置为艰难的决定,数据类型选项卡上国家标准字长被设置为4输出数据类型被设置为布尔。显示比特误码率和捕获的误码率工作空间变量。

软配置决定cm_viterbi_softdec_fixpt模型:

  • 维特比译码器块的决策类型参数设置为软的决定数量的比特软决定设置为3,数据类型选项卡国家标准字长被设置为6输出数据类型被设置为布尔。显示比特误码率和捕获的误码率工作空间变量。

比较硬,不痒的决定解码

两个模型配置为运行在比特误码率分析程序生成仿真曲线比较艰难的决定与不痒的决定解码的误码性能。

你可以生产这个阴谋的结果通过遵循下面的步骤。

这些步骤生成理论和定点仿真结果硬和软判决维特比解码:

  1. 打开比特误码率分析应用程序通过选择应用程序选项卡或输入bertool在MATLAB命令提示符。

  2. 在理论窗格中,Eb / N0范围设置为2:5,渠道类型设置为情况下,调制类型设置为相移键控,信道编码设置为卷积,运行决策方法设置为然后。重命名数量数据集识别软硬数据集的理论结果。

  3. 在蒙特卡洛窗格中,集Eb / N0范围2:1:5,模拟环境选择金宝app,系统变量名设置为的误码率,因为模拟限制错误的数量到100年,的比特数1 e6。运行模型名称设置为cm_viterbi_harddec_fixpt然后cm_viterbi_softdec_fixpt。重命名数量数据集软硬数据集的识别模型的结果。金宝app

4分后应用会像这张照片。

与双精度数据比较

为进一步探索,可以运行相同的模型与双精度数据通过选择应用程序>定点工具。在定点的工具应用程序,选择数据类型覆盖。这个选择将覆盖所有数据类型设置块使用双精度。维特比译码器块,输出类型被设置为布尔,还应该设置这个参数

在模拟模型,注意,双精度和定点误码率的结果是相同的。他们是相同的,因为定点参数模型被选择来避免任何损失精度和优化内存效率。

港口

输入

全部展开

输入消息,指定为一个二进制列向量。这个端口是不知名的,直到第二个输入端口启用。如果编码器K输入比特流(也就是说,它可以接收2K可能的输入符号),块的输入向量长度l×K对于一些正整数l

例子:(1 1 0 1 0 0 1 1)指定消息作为二进制行向量与八个元素。

数据类型:||布尔|int8|int16|int32|uint8|uint16|uint32|ufix1

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

依赖关系

使这个端口设置操作模式参数截断(重置每一帧)并选择通过输入端口指定初始状态

数据类型:|uint32

重置编码器状态寄存器,指定为标量值。任何非零值编码器寄存器的复位。

依赖关系

使这个端口设置操作模式参数重置零输入通过端口

数据类型:|布尔

输出

全部展开

卷积编码的码字,作为一个二进制返回列向量。这个港口是匿名块图标。如果编码器产生N输出比特流(也就是说,它可以产生2N可能的输出符号),块的输出向量长度l×N对于一些正整数l。从这个输出继承它的数据类型输入。

数据类型:||布尔|int8|int16|int32|uint8|uint16|uint32|ufix1

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

依赖关系

这个参数只出现当你设置操作模式参数连续,截断(重置每一帧),或重置零输入通过端口你选择输出最终状态参数。

数据类型:

参数

全部展开

编辑块参数交互,使用属性检查器。从仿真软件金宝app®将来发布,模拟选项卡,准备画廊,选择属性检查器

卷积码的框架描述,指定为一个结构,其中包含的格子描述率KN代码。K输入比特流的数量,N数量的输出流。

您可以使用poly2trellis函数创建框架结构或手动创建它。更多关于这个结构,请参阅格子卷积编码的描述istrellis函数。

格子结构包含这些字段。

符号编码器的输入数量,指定为一个整数等于2K,在那里K是输入比特流的数量。

符号编码器的输出数量,指定为一个整数等于2N,在那里N数量的输出流。

许多州在编码器中,指定为2的幂。

下一个状态的所有组合的当前状态和当前输入,指定为一个整数矩阵。矩阵大小必须numStates2K

输出所有组合的当前状态和当前输入,指定为一个矩阵的八进制数字。矩阵大小必须numStates2K

指定的终止方法编码框架,作为其中一个模式值。

  • 连续——块保留每个输入的编码器状态结束时使用下一帧。

  • 截断(重置每一帧)——块独立对每个输入。在每个输入帧的开始,编码器状态重置为0覆盖状态,或者如果您选择通过输入端口指定初始状态指定的国家坚持端口。

  • 通过附加位终止格子——块独立对每个输入。对于每一个输入框,额外的比特用于设置编码器状态都为零状态的框架。输出是由长度y = N×(x + s) / K,在那里x输入的位元数,s =约束长度- 1(或者,在多种约束长度的情况下,s =总和(约束长度(i) - 1))

    请注意

    这一块工作情况K≥1,它具有相同的值约束长度在每一个输入流。例如,约束长度的2[2]或[7 7]将工作,但[5 4]不会。

  • 重置零输入通过端口块有一个额外的输入端口,标记Rst。当Rst非零输入时,编码器重置全0状态。

请注意

当这个块输出序列期间不同长度的模拟和设置操作模式截断(重置每一帧)通过附加位终止格子块的状态重置在每一个时间步输入。

选择该参数重置后计算编码数据块。复位动作允许的延迟块支持HDL代码生成。金宝app生成HDL代码,需要高密度脂蛋白编码器™软件。

依赖关系

这个参数只出现当你设置操作模式参数重置零输入通过端口

选择要添加这个参数坚持输入端口。

依赖关系

这个参数只出现当你设置操作模式参数截断(重置每一帧)

选择要添加这个参数输出端口的块。

依赖关系

这个参数只出现当你设置操作模式参数连续,截断(重置每一帧),或重置零输入通过端口

选择视图和启用该参数穿刺向量参数。

穿刺模式,指定为向量。穿刺向量是一个模式1年代和0年代的0s表示比特的输出编码的数据。向量的长度必须是一个整数的因子长度(),输入消息向量长度。

对于一些常用的穿刺模式特定的利率和多项式,看到Yasuda[3],Haccoun[4],开始[5]引用。

依赖关系

这个参数只出现当你选择穿刺代码参数。

块特征

数据类型

布尔||不动点一个|整数|

多维信号

没有

适应信号

是的

一个ufix (1)。

更多关于

全部展开

引用

[1]克拉克,乔治·C。,J. Bibb Cain.纠错编码为数字通信。通信理论的应用。纽约:充气出版社,1981年。

[2]Gitlin,理查德·D。,Jeremiah F. Hayes, and Stephen B. Weinstein.数据通信原理。通信理论的应用。纽约:充气出版社,1992年。

[3]Yasuda Y。,K。K一个shiki, and Y. Hirata. “High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding.”IEEE通信32岁的没有。3(1984年3月):315 - 19所示。https://doi.org/10.1109/TCOM.1984.1096047。

[4]Haccoun D。,G. Begin. “High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.”IEEE通信37岁的没有。(1989年11月11日):1113 - 25所示。https://doi.org/10.1109/26.46505。

[5]开始,G。,D. Haccoun, and C. Paquin. “Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.”IEEE通信38岁的没有。(1990年11月11日):1922 - 28。https://doi.org/10.1109/26.61470。

扩展功能

C / c++代码生成
使用仿真软件生成C和c++代码®编码器™。金宝app

版本历史

之前介绍过的R2006a