发明名称 一种低复杂度的低密度奇偶校验码译码方法及译码器装置
摘要 本发明公开了一种低复杂度的低密度奇偶校验码译码方法及译码器装置,为了解决LDPC码译码器在可编程逻辑阵列上实现时存储资源消耗较多的问题,提供了一种利用次小值对最小值进行修正的最小和译码方法,并采用二维折线逼近的方法得到了修正方法。基于前述方法,本发明还提供了一种低存储消耗的LDPC码译码器装置,该译码器由初始信息存储、迭代信息存储、行列连接逻辑、校验信息处理单元、变量信息处理单元、校验模块以及迭代控制模块。其中校验信息处理单元采用三个基于二维折线逼近方法的修正模块对最小值进行修正。<pb pnum="1" />
申请公布号 CN106508094B 申请公布日期 2014.09.03
申请号 CN201218001736.2 申请日期 2012.06.13
申请人 西安电子科技大学;中国人民解放军空军工程大学 发明人 马卓;杨峰;戚云军;杜栓义;郭建新
分类号 H03M13/11(2006.01)I 主分类号 H03M13/11(2006.01)I
代理机构 中国人民解放军空军专利服务中心 11035 代理人 王洪波
主权项 一种低复杂度的低密度奇偶校验码译码方法,其特征在于:采用次小值修正最小值的方法对校验信息进行更新,包括以下步骤:1)对一个度为N的校验节点,取其相连的N个变量信息作为输入;2)分别取N个变量信息的符号τ<sub>si</sub>和绝对值τ<sub>ai</sub>,其中1≤i≤N;3)对N个变量信息绝对值τ<sub>ai</sub>,查找其中三个最小值τ<sub>m1</sub>≤τ<sub>m2</sub>≤τ<sub>m3</sub>,并记录τ<sub>m1</sub>和τ<sub>m2</sub>所在的位置序号w<sub>1</sub>和w<sub>2</sub>;4)将三个最小值两两组合后分别计算得到三个修正值:τ′<sub>m1</sub>=ξ(τ<sub>m2</sub>,τ<sub>m1</sub>)、τ′<sub>m2</sub>=ξ(τ<sub>m3</sub>,τ<sub>m1</sub>)和τ′<sub>m3</sub>=ξ(τ<sub>m3</sub>,τ<sub>m2</sub>);修正过程ξ(τ<sub>1</sub>,τ<sub>2</sub>)采用二维折线逼近的方法实现,包括以下步骤:步骤S1:输入τ<sub>1</sub>和τ<sub>2</sub>;步骤S2:根据τ<sub>1</sub>的取值所在的区间,由公式(1)(2)(3)计算得到三个修正因子:γ<sub>max</sub>、τ<sub>low</sub>和τ<sub>high</sub>;<maths id="cmaths0001" num="0001"><math><![CDATA[<mrow><msub><mi>&gamma;</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mn>0</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mn>2</mn><mo>&lt;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>5</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&tau;</mi><mn>1</mn></msub><mo>-</mo><mn>4</mn></mrow></mtd><mtd><mrow><mn>5</mn><mo>&lt;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>7</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&tau;</mi><mn>1</mn></msub><mo>-</mo><mn>5</mn></mrow></mtd><mtd><mrow><mn>7</mn><mo>&lt;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>20</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&tau;</mi><mn>1</mn></msub><mo>-</mo><mn>6</mn></mrow></mtd><mtd><mrow><mn>20</mn><mo>&lt;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>63</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FWW0000000079170000011.GIF" wi="1137" he="366" /></maths><maths id="cmaths0002" num="0002"><math><![CDATA[<mrow><msub><mi>&tau;</mi><mrow><mi>l</mi><mi>o</mi><mi>w</mi></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>63</mn></mtd><mtd><mrow><mn>0</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>10</mn></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>&tau;</mi><mn>1</mn></msub><mo>=</mo><mn>10</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mn>11</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>16</mn></mrow></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mrow><mn>16</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>20</mn></mrow></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mrow><mn>20</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>22</mn></mrow></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mrow><mn>22</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>25</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&tau;</mi><mn>1</mn></msub><mo>-</mo><mn>20</mn></mrow></mtd><mtd><mrow><mn>25</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>63</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FWW0000000079170000012.GIF" wi="1139" he="516" /></maths><maths id="cmaths0003" num="0003"><math><![CDATA[<mrow><msub><mi>&tau;</mi><mrow><mi>h</mi><mi>i</mi><mi>g</mi><mi>h</mi></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mn>0</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>11</mn></mrow></mtd></mtr><mtr><mtd><msub><mi>&tau;</mi><mn>1</mn></msub></mtd><mtd><mrow><mn>11</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&lt;</mo><mn>20</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&tau;</mi><mn>1</mn></msub><mo>-</mo><mn>6</mn></mrow></mtd><mtd><mrow><mn>20</mn><mo>&le;</mo><msub><mi>&tau;</mi><mn>1</mn></msub><mo>&le;</mo><mn>63</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FWW0000000079170000013.GIF" wi="1132" he="215" /></maths>步骤S3:由τ<sub>1</sub>和γ<sub>max</sub>根据公式τ<sub>mid</sub>=τ<sub>1</sub>‑(τ<sub>1</sub>‑γ<sub>max</sub>)<<1计算得到τ<sub>mid</sub>;步骤S4:如果τ<sub>2</sub>≤τ<sub>1ow</sub>,判断τ<sub>mid</sub>是否大于零,如果τ<sub>mid</sub>>0,ξ(τ<sub>1</sub>,τ<sub>2</sub>)=min(τ<sub>2</sub>,γ<sub>max</sub>),否则ξ(τ<sub>1</sub>,τ<sub>2</sub>)=min(τ<sub>2</sub>>>1,γ<sub>max</sub>);步骤S5:如果τ<sub>low</sub><τ<sub>2</sub>≤τ<sub>mid</sub>,则ξ(τ<sub>1</sub>,τ<sub>2</sub>)=τ<sub>2</sub>‑1;pb pnum="1" />步骤S6:如果τ<sub>mid</sub><τ<sub>2</sub>≤τ<sub>high</sub>,则ξ(τ<sub>1</sub>,τ<sub>2</sub>)=γ<sub>max</sub>‑((τ<sub>1</sub>‑τ<sub>2</sub>)>>1)‑1;步骤S7:如果τ<sub>high</sub><τ<sub>2</sub>≤τ<sub>1</sub>,则ξ(τ<sub>1</sub>,τ<sub>2</sub>)=γ<sub>max</sub>‑(τ<sub>1</sub>‑τ<sub>2</sub>)>>1符号“>>”表示右移,“<<”表示左移;5)根据w<sub>1</sub>和w<sub>2</sub>得到每个位置上的绝对值输出,其中第w<sub>1</sub>个位置上的输出为<img file="FWW0000000079170000021.GIF" wi="240" he="72" />第w<sub>2</sub>个位置上的输出为<img file="FWW0000000079170000022.GIF" wi="248" he="64" />其他位置的输出均为γ<sub>ai</sub>=τ′<sub>m1</sub>i≠w<sub>1</sub>,w<sub>2</sub>;6)对N个变量信息的符号τ<sub>si</sub>,计算其累积异或结果τ<sub>ss</sub>=xor(τ<sub>s1</sub>,τ<sub>s2</sub>,…τ<sub>sN</sub>);7)对N个变量信息的符号τ<sub>si</sub>,分别将其与累计异或结果τ<sub>ss</sub>相异或,得到每个位置上的符号输出γ<sub>si</sub>=xor(τ<sub>ss</sub>,τ<sub>st</sub>);8)将N对变量信息的绝对值输出与符号输出分别进行组合,得到每个位置上的校验信息输出γ<sub>i</sub>。pb pnum="2" />
地址 710071 陕西省西安市太白南路2号