发明名称 通用的高性能Radix-4SOVA译码器及其译码方法
摘要 本发明公开了一种通用的高性能Radix‑4SOVA译码器及其译码方法,主要解决现有技术在Radix‑4SOVA译码器中只支持基于比特交织的二进制Turbo码的问题。其实现步骤是:接收信道信息并存储;读取第一个分量码的信道信息,进行第一次分量译码,即依次计算分支度量,累积路径度量,可信度,对数似然比和外信息,并交织该外信息后存储;读取第二个分量码的信道信息,完成第二次分量译码;判断是否达到最大迭代次数,如果否,开始下一次迭代译码,反之,硬判决对数似然比得到译码比特的估计值,译码结束。本发明采用基于比特对的可信度更新方法,可实现二进制Turbo码和双二进制卷积Turbo码通用可配置的高性能译码,可用于LTE和WiMAX系统中的通用可配置Turbo译码器。
申请公布号 CN103354483B 申请公布日期 2016.08.10
申请号 CN201310247968.X 申请日期 2013.06.20
申请人 西安电子科技大学 发明人 葛建华;任德锋;高明;岳安军;丁维浩;胡秘
分类号 H04L1/00(2006.01)I 主分类号 H04L1/00(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 王品华;朱红星
主权项 一种通用的高性能基‑4的软输出维特比Radix‑4SOVA译码器,包括:输入数据存储模块(1),用于接收并存储接收到的信道信息序列;分支度量计算模块(2),利用输入数据存储模块(1)提供的信道信息序列,以及Turbo外信息计算存储模块(7)或CTC外信息计算存储模块(10)提供的先验信息序列,并根据分支度量计算公式,计算译码时两步状态转移的分支度量,并将计算得到的分支度量输出给累积路径度量计算模块(3);累积路径度量计算模块(3),用于对分支度量计算模块(2)输出的分支度量,利用累积路径度量的递归计算公式,计算译码路径的累积路径度量,并将累积路径度量输出给可信度计算模块(4);可信度计算模块(4),利用累积路径度量计算模块(3)输出的累积路径度量,并根据可信度递归更新公式,对译码比特对的可信度进行更新,得到如下k+1时刻状态<img file="FDA00009210075900000110.GIF" wi="81" he="68" />关于译码比特对u<sub>l,l+1</sub>=00、u<sub>l,l+1</sub>=01、u<sub>l,l+1</sub>=10和u<sub>l,l+1</sub>=11的可信度,并将更新后的可信度输出给可信度存储模块(5):<maths num="0001"><math><![CDATA[<mrow><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>00</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>y</mi><msub><mrow></mrow><mn>1</mn></msub><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>=</mo><munder><mi>max</mi><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup></munder><mo>{</mo><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>00</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><msubsup><mi>&Delta;</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn><mo>&RightArrow;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mrow><msub><mi>s</mi><mi>i</mi></msub><mo>&RightArrow;</mo><mi>s</mi></mrow></msubsup><mo>}</mo></mrow>]]></math><img file="FDA0000921007590000011.GIF" wi="1440" he="120" /></maths><maths num="0002"><math><![CDATA[<mrow><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>01</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>=</mo><munder><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup></munder><mo>{</mo><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>01</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><msubsup><mi>&Delta;</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn><mo>&RightArrow;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mrow><msub><mi>s</mi><mi>i</mi></msub><mo>&RightArrow;</mo><mi>s</mi></mrow></msubsup><mo>}</mo></mrow>]]></math><img file="FDA0000921007590000012.GIF" wi="1430" he="123" /></maths><maths num="0003"><math><![CDATA[<mrow><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>10</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>=</mo><munder><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup></munder><mo>{</mo><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>10</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><msubsup><mi>&Delta;</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn><mo>&RightArrow;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mrow><msub><mi>s</mi><mi>i</mi></msub><mo>&RightArrow;</mo><mi>s</mi></mrow></msubsup><mo>}</mo></mrow>]]></math><img file="FDA0000921007590000013.GIF" wi="1427" he="122" /></maths><maths num="0004"><math><![CDATA[<mrow><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>11</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>=</mo><munder><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup></munder><mo>{</mo><mi>L</mi><mi>L</mi><mi>R</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>l</mi><mo>,</mo><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>11</mn><mo>|</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><msubsup><mi>&Delta;</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn><mo>&RightArrow;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mrow><msub><mi>s</mi><mi>i</mi></msub><mo>&RightArrow;</mo><mi>s</mi></mrow></msubsup><mo>}</mo></mrow>]]></math><img file="FDA0000921007590000014.GIF" wi="1427" he="122" /></maths>其中,u<sub>l,l+1</sub>表示相邻两个时刻编码器输入的信息比特组成的一个信息比特对,l=k‑2,k‑4,…,k‑δ,δ=20,k=3,5,…,N‑1,N表示码长且取偶数,<img file="FDA0000921007590000015.GIF" wi="89" he="78" />表示k+1时刻编码器的状态s,s∈{0,1,…,2<sup>v</sup>‑1},v表示编码器的寄存器个数,<img file="FDA0000921007590000016.GIF" wi="92" he="83" />表示译码器从1到k+1时刻接收到的信息序列,LLR表示译码比特对的可信度符号,<img file="FDA0000921007590000017.GIF" wi="88" he="72" />表示k‑1时刻编码器的状态s<sub>i</sub>,i=0,1,2,3,<maths num="0005"><math><![CDATA[<mrow><msubsup><mi>&Delta;</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn><mo>&RightArrow;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mrow><msub><mi>s</mi><mi>i</mi></msub><mo>&RightArrow;</mo><mi>s</mi></mrow></msubsup><mo>=</mo><mi>M</mi><mrow><mo>(</mo><msubsup><mover><mi>l</mi><mo>&OverBar;</mo></mover><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>i</mi></msub></msubsup><mo>&RightArrow;</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>)</mo></mrow><mo>-</mo><munder><mi>max</mi><msubsup><mover><mi>l</mi><mo>&OverBar;</mo></mover><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>j</mi></msub></msubsup></munder><mo>{</mo><mi>M</mi><mrow><mo>(</mo><msubsup><mover><mi>l</mi><mo>&OverBar;</mo></mover><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><msub><mi>s</mi><mi>j</mi></msub></msubsup><mo>&RightArrow;</mo><msubsup><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FDA0000921007590000018.GIF" wi="994" he="131" /></maths>表示从k‑1时刻状态s<sub>i</sub>转移到k+1时刻状态s的累积路径度量与转移到状态s的最大累积路径度量之差,<img file="FDA0000921007590000019.GIF" wi="76" he="83" />表示k‑1时刻状态s<sub>i</sub>的幸存路径,<img file="FDA0000921007590000021.GIF" wi="319" he="97" />表示从k‑1时刻的幸存路径<img file="FDA0000921007590000022.GIF" wi="65" he="81" />转移到第k+1时刻状态s的累积路径度量;s<sub>j</sub>表示k‑1时刻的编码器状态,j=0,1,2,3,<img file="FDA0000921007590000023.GIF" wi="73" he="83" />表示k‑1时刻状态s<sub>j</sub>的幸存路径,<img file="FDA0000921007590000024.GIF" wi="312" he="105" />表示从k‑1时刻的幸存路径<img file="FDA0000921007590000025.GIF" wi="63" he="80" />转移到第k+1时刻状态s的累积路径度量;可信度存储模块(5),用于存储可信度计算模块(4)输出的译码比特对的可信度,当译码器工作在LTE系统时,将译码比特对的可信度输出给Turbo对数似然比计算模块(6),当译码器工作在WiMAX系统时,将译码比特对的可信度输出给双二进制卷积Turbo码CTC对数似然比计算模块(9);Turbo对数似然比计算模块(6),利用可信度存储模块(5)提供的译码比特对的可信度,根据二进制Turbo码的对数似然比计算公式,计算译码比特的对数似然比,并将计算得到的对数似然比输出给Turbo外信息计算存储模块(7)和Turbo硬判决模块(8);Turbo外信息计算存储模块(7),利用Turbo对数似然比计算模块(6)输出的对数似然比,计算译码比特的外信息,并对该外信息交织后存储,将存储的信息输出给分支度量计算模块(2),作为下一次分量译码的先验信息;Turbo硬判决模块(8),利用Turbo译码的硬判决规则对Turbo对数似然比计算模块(6)输出的对数似然比进行硬判决,输出待译码比特的估计值;双二进制卷积Turbo码CTC对数似然比计算模块(9),利用可信度存储模块(5)的译码比特对的可信度,根据双二进制卷积Turbo码CTC的对数似然比计算公式,计算译码比特对的对数似然比,并将计算得到的对数似然比输出给双二进制卷积Turbo码CTC外信息计算存储模块(10)和双二进制卷积Turbo码CTC硬判决模块(11);双二进制卷积Turbo码CTC外信息计算存储模块(10),利用双二进制卷积Turbo码CTC对数似然比计算模块(9)输出的对数似然比,计算译码比特对的外信息,并对该外信息交织后存储,将存储的外信息输出给分支度量计算模块(2),作为下一次分量译码的先验信息;双二进制卷积Turbo码CTC硬判决模块(11),利用双二进制卷积Turbo码CTC译码的硬判决规则对双二进制卷积Turbo码CTC对数似然比计算模块(9)输出的对数似然比进行硬判决,输出待译码比特的估计值。
地址 710071 陕西省西安市太白南路2号