主要内容

LTE Turbo译码器

解码涡轮编码样本

  • 库:
  • 无线HDL工具箱/错误检测和纠正

  • LTE Turbo解码器块

描述

的<年代p一个ncl一个年代年代="block">LTE Turbo译码器块实现了LTE标准TS 36.212所要求的turbo解码器<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturbodecoder.html" class="intrnllnk">[1]并为HDL代码生成和硬件部署提供了优化的接口和架构。该块迭代两个MAX解码器。您可以指定迭代次数。编码率为1/3。该块接受编码的位作为软编码值的3 × 1矢量,[s p1 p2].在这个向量中,年代是系统位,和P1而且P2是来自两个编码器的奇偶校验位。

此块使用流采样接口,并带有用于相关控制信号的总线。该接口使块能够独立于帧大小操作,并易于与其他无线HDL工具箱™块连接。该块接受并返回代表单个样本的值,以及包含三个控制信号的总线。这些信号表明每个样本的有效性和框架的边界。若要将矩阵转换为样本流和这些控制信号,请使用<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/frametosamples.html">帧到样本块或<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/whdlframestosamples.html">whdlFramesToSamples函数。有关接口的完整描述,请参见<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ug/streaming-sample-interface.html" class="a">流式采样接口

块只有在完成前一帧的解码后才能接受下一帧。你必须离开迭代* 2 *HalfIterationLatency+BlockSize在输入帧之间+4个空闲循环。中描述了半迭代延迟<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturbodecoder.html" class="intrnllnk">算法部分。或者,您可以使用输出信号<年代trong class="guilabel">ctrl结束来确定块何时准备好接受新的输入。

该波形显示120个样本(+ 4尾位)的输入帧,帧之间有2632个空闲周期。每个输入样本是由三个定点软决策值组成的向量。输入和输出<年代trong class="guilabel">ctrl总线扩展以显示控制信号。开始而且结束显示框架边界,和有效的限定数据样本。

港口

输入

全部展开

输入样本,指定为三个元素的整数向量。这些值表示软编码的概率。如果值为负,则比特更有可能为0。如果值为正数,则比特更有可能为1。第一个元素是顺序位,其他两个元素是奇偶校验位。的输入帧BlockSize+ 12个样本。该帧尺寸包括尾位,按LTE标准TS 36.212指定的顺序<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturbodecoder.html" class="intrnllnk">[1]

对于硬件实现,使用带有两个或三个整数位和一个到四个小数位的定点类型。内部数据类型派生自此数据类型,精度较低的类型可能导致解码精度的损失。如果输入数据类型没有小数位或小于两个整数位,则块返回警告。而且支持模拟金宝app,但不支持HDL代码生成。

数据类型:fixdt(1、WL FL)||

与采样流伴随的控制信号,指定为samplecontrol公共汽车。总线包括开始结束,有效的控制信号,它表示框架的边界和样本的有效性。

  • 开始—输入帧的开始

  • 结束—输入帧的结束

  • 有效的—输入的数据<年代trong class="guilabel">数据端口有效

详情请参见<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ug/samplecontrol-bus.html" class="a">示例控制总线

数据类型:公共汽车

Turbo码块大小,指定为整数。该值必须是LTE标准中规定的188个值之一,在以下区间内从40到6144:[40:8:12 528:16:1024 1056:32 2048 2112:64:6144]

依赖关系

设置时将显示此端口<年代trong class="guilabel">块大小来源输入端口

数据类型:||uint16|fixdt (0, 13,0)

算法

全部展开

该块使用单个解码器和单个交织器实现了迭代解码算法。

该图显示了一次迭代的概念算法。虽然图中显示了两个解码器和三个交织器,但该块实际上只使用一个解码器和一个交织器实现了算法。解码器执行一次半迭代并将结果交叉。然后输出被路由回输入进行下一个半迭代。交织器根据块大小计算交织索引。有关交织器实现的详细信息,请参见<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturboencoder.html">LTE Turbo编码器

奇数半迭代从未交错的位(P1, S和P2解码的去交错结果)计算似然比。偶数半迭代从交叉比特(P2和P1和S解码的交叉结果)计算似然比。

解码器块使用BCJR算法来查找特定位的似然比<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturbodecoder.html" class="intrnllnk">[2]

l u k 日志 P u k + 1 | y P u k + 1 | y 日志 年代 + p 年代 k 1 年代 年代 k 年代 y / p y 年代 p 年代 k 1 年代 年代 k 年代 y / p y

概率也可以用当前和未来的状态表示:

p 年代 年代 y α k 1 年代 γ k 年代 年代 β k 年代 α k 1 年代 P 年代 y < k γ k 年代 年代 P y k 年代 | 年代 β k 年代 P y < k | 年代

α概率表示前一状态,β表示当前状态概率,ɣ表示下一状态。算法根据输入值计算ɣ。α和β概率是使用网格的可能状态的正向和向后递归来计算的,也依赖于ɣ。所有的计算都是在日志域。

α k α k 1 年代 γ k 年代 年代 β k 1 年代 β k 年代 γ k 年代 年代

α和β的初始条件为:

α 0 年代 1 年代 0 0 年代 0 β 0 年代 1 年代 0 0 年代 0

此图显示了半迭代解码器和交织器架构。初始可能性设置为零。

在一个正常的bbcjr架构中,算法不能计算β,直到整个帧都在内存中。它必须执行全帧向前跟踪,然后执行全帧向后跟踪,这意味着一次半迭代的延迟是两帧长度。所需内存为BlockSizeNumStatesDataWidth.在这种情况下,NumStates是8,从LTE标准TS 36.212<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturbodecoder.html" class="intrnllnk">[1]

然而,该解码器实现使用滑动窗口来减少所需的内存和算法的延迟<一个href="//www.tatmou.com/jp/jp/help/wireless-hdl/ref/lteturbodecoder.html" class="intrnllnk">[3].窗口大小为32个样本,这是网格约束长度7的5倍。一次半迭代的延迟为:

c e l B l o c k 年代 z e W n 年代 z e + 2 × W n 年代 z e + P p e D e l 一个 y

滑动窗口所需内存为2*32*NumStatesDataWidth.该图显示了β计算如何一次跟踪和解码一个窗口,在a和B计算块之间交替输入。

参考文献

[1] 3gpp ts 36.212。“多路复用和信道编码。”第三代伙伴计划;技术规范集团无线接入网;改进通用地面无线电接达(E-UTRA).URL:<一个href="https://www.3gpp.org" target="_blank">https://www.3gpp.org

[2]巴尔,L. R.科克,F.耶利内克,J.拉维夫。最小化符号错误率的线性码的最佳解码。IEEE信息论汇刊.卷1T-20, 1974年3月,第284-287页。

[3]维特比,安德鲁J。卷积码MAP解码器的直观证明和简化实现。IEEE通讯选定领域杂志.第16卷第2期,1998年2月

扩展功能

版本历史

在R2017b中引入

另请参阅

功能

  • (LTE工具箱)|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">(LTE工具箱)