CN101093999A - 基于流水线工作方式的ldpc码译码器 - Google Patents
基于流水线工作方式的ldpc码译码器 Download PDFInfo
- Publication number
- CN101093999A CN101093999A CN 200710092476 CN200710092476A CN101093999A CN 101093999 A CN101093999 A CN 101093999A CN 200710092476 CN200710092476 CN 200710092476 CN 200710092476 A CN200710092476 A CN 200710092476A CN 101093999 A CN101093999 A CN 101093999A
- Authority
- CN
- China
- Prior art keywords
- dual port
- port ram
- vnu
- cnu
- checkpoint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明请求保护一种基于流水线工作方式的LDPC译码器,涉及电子技术领域,采用流水线工作方式的设计思想,通过适量的增加计算量和RAM存储量,以保证VNU与CNU之间的工作。VNU为CNU提供计算所需要的变量点信息,CNU的输出由一系列双口RAM阵列进行数据缓存,每个双口RAM阵列的前一部分存储当前迭代所需信息,后一部分存储下一次迭代所需信息,在一次迭代的时序内,有足够的时间解决冲突,不会发生阻塞。本发明在耗费少量的资源代价下,有效提升译码器速度,该译码器结构适用于任何类型的矩阵。
Description
技术领域
本发明涉及电子技术领域,尤其涉及通信数据传输与数据存储技术领域,具体是一种LDPC码译码器结构。
背景技术
在VLSI设计中,资源和速度总是一对不可调和的矛盾。结构设计工作主要是解决资源和速度的平衡问题。对于LDPC码的译码器,需要平衡的不仅仅是资源和速度,还包括误码率性能。也就是说LDPC码译码器的设计,需要从整体上对资源、速度和误码率性能做一个平衡。
其中误码率性能主要是由两方面决定的,首先就是译码器采用的译码算法,例如采用MIN-SUM算法肯定会带来较BP算法更多的性能损失,但在很多情况下需要通过牺牲一部分性能来换取对资源占用的降低。其次就是译码器采用的数据格式,我们知道在计算机仿真中数据采用的是单精度或者双精度的浮点数,而实际的硬件实现中,必须通过一定长度的二进制数来近似的表示浮点数,采用的二进制数越长,其精度越好,对应的LDPC码译码器的实际性能就能越靠近软件仿真性能,在某些对性能要求极度苛刻的情况下还可以考虑采用IEEE754标准来设计VLSI中的数据格式。误码率性能的设计在一定程度上可以看作是校验点计算模块和变量点计算模块内部结构的设计。
在设计译码器整体结构之前需要明确,对于LDPC码的译码器,误码率性能主要由译码算法决定;而速度与资源的占用主要由译码器的结构决定。无论从哪种LDPC码译码算法来看,LDPC码的译码过程主要包括:信道信息初始化,校验点计算,变量点计算,硬判决和输出结果判断。在按照LDPC码译码过程的基础上发展出了LDPC码的完全串行译码结构,完全串行译码结构的主要特点在于只有1个校验点计算单元(CNU)和1个变量点计算单元(VNU),二者之间通过RAM阵列将所有的计算结果缓存起来,该译码器结构简单,但计算速度慢。
完全并行译码结构主要特点是含有m个校验点计算单元和n个变量点计算单元,基本上不需要对迭代计算过程中的数据进行存储。其主要优点在于具有极高的计算速度,而其主要缺点是由于计算模块数目过多,将占用过多的资源。其次由于连线数目的庞大,当帧长较长的时候,由于需要连接的数据线过多,基本上会导致布线无法通过。例如本课题组曾经完成的n=20的LDPC码完全并行译码器,在Xilinx Virtex2 3000上布局布线后占用了5334个Slices,占全部Slices(14336个)的37%。同比计算,当n=1000时,采用完全并行译码结构的LDPC码译码器将占用超过250,000个Slices,这是任何一款FPGA所无法接受的,而DVB-S2帧长达到6万。
目前LDPC码译码器最为常用为部分并行译码结构。如图1所示,部分并行译码结构在于校验点计算模块与变量点计算模块之间通过了双口RAM阵列进行了数据缓存;并且需要的CNU和VNU数目分别是校验点和变量点数目的1/f,折叠系数f是介于[2,M-1]之间的一个正整数,反映的是复用的程度。每个CNU计算后的信息存入双口RAM阵列,要等一侧的计算单元(例如CNU)计算完全结束后,另一侧的计算单元(例如VNU)才可以根据更新后的信息进行计算。采用这种译码结构,可以将资源的消耗降低至原来的1/f,其缺点在于译码速度也将降低为原来的1/f,同时需要一定数目的双口RAM。
但是,部分并行译码结构仅对特定的矩阵是现实的,而这种矩阵的性能表现往往不是相当好。其次,即使经过特定约束的矩阵,在校验点与变量点的信息传递过程中,冲突所引起的阻塞是不可避免的。现有部分并行译码结构,只能通过增加存储空间以大量的资源消耗为代价或停止译码进行数据冲突解决,而不能从根本上解决数据冲突的问题。事实上,通过分析矩阵结构,我们发现如果能够合理的进行时序规划,并辅之以适量的存储空间,在译码过程中可以避免发生数据冲突。
发明内容
为了克服现有LDPC码译码器结构存在的上述缺陷,本发明所要解决的技术问题是提供一种LDPC码译码器,通过合理的时序规划,辅之以适量的存储空间,在译码过程中避免发生数据冲突。
本发明的技术方案是设计了一种采用流水工作方式计算变量点与校验点信息的LDPC码译码器。该译码器包括两个组成部分,一部分由变量点计算单元VNU与校验点计算单元CNU构成用于以流水线工作方式计算变量点与校验点信息;另一部分由RAM阵列构成,用于存储本次迭代与上一次迭代生成的信息。
译码器包括一个校验点计算单元CNU、一系列变量点计算单元VNU以及一系列双口RAM阵列,每个变量点计算单元分别级联双口RAM阵列,VNU的输出端连接CNU的输入端,为CNU提供计算所需要的变量点信息,CNU计算的结果由一系列双口RAM阵列进行数据缓存,变量点计算单元VNU的数量和双口RAM阵列的数量由校验点的度dc确定,每个双口RAM阵列由一系列物理上独立的双口RAM组成,其数量由变量点的度dv确定,双口RAM阵列分成两部分,前一部分存储当前迭代所需信息,后一部分存储下一次迭代所需信息(即当前CNU生成的信息)。
双口RAM阵列分别与对应的VNU级联,VNU为CNU的计算提供所需要的变量点信息,为了使CNU实现流水线方式无阻塞计算,共使用了dc个VNU,使得CNU可以同时得到计算所需要的变量点信息,从而保证CNU实现流水式无阻塞计算,从整体上看,CNU和VNU之间构成了流水线工作模式。
由于VNU与CNU在本译码器结构中的地位是对等的,译码器也可采用拥有dv个CNU和1个VNU的结构。该译码器包括:一系列校验点计算单元分别级联对应的双口RAM阵列,CNU的输出端连接VNU的输入端,VNU的输出由双口RAM阵列进行数据缓存,由变量点的度确定CNU的数量及双口RAM阵列的数量,每个双口RAM阵列由一系列独立的双口RAM组成,其数量由校验点的度确定。
从整体上看,CNU和VNU之间构成了流水线工作模式。对当前迭代,校验点生成的信息回存双口RAM,以便进行下一次迭代,由于这是一个一对多的回存过程,也就成功地解决了部分并行译码结构面临的严重数据冲突问题。可选择地,为了提高数据吞吐率,在高数据吞吐领域,可以采用多个译码器单元同时工作。根据CNU和VNU占用资源的情况确定具体采用哪种译码器结构。
通过增加变量点计算次数及存储量开销,该结构的工作速度至少是串行译码结构的dc倍,并有效解决了LDPC码矩阵随机性所带来的迭代信息实际硬件实现的冲突问题。同时,由于仅需一个CNU、多个VNU或一个VNU、多个CNU,在CNU与VNU资源占用相差较大,如多进制LDPC码领域,有极高的应用价值。
附图说明
图1示出了部分并行译码器结构
图2示出了拥有1个CNU和dc个VNU的采用流水工作方式的译码器结构
具体实施方式
下面针对附图和具体实施例对本发明的实施作具体说明。
假设校验点的度为dc,变量点的度为dv,校验点计算单元用CNU表示,变量点计算单元用VNU表示。如图2所示为拥有1个CNU和dc个VNU的采用流水工作方式的译码器结构。每个VNU级联一个双口RAM阵列,VNU的输出端连接CNU的输入端,CNU计算的结果通过dc个双口RAM阵列进行数据缓存,而每个双口RAM阵列都是由dv个物理上独立的双口RAM组成。每个双口RAM分成两部分,前一部分存储当前迭代所需的上一次迭代CNU生成的校验点信息,后一部分存储下一次迭代所需的当前迭代CNU生成的校验点信息。
为了使CNU实现流水式无阻塞计算,由校验点的度dc确定所需VNU的数量,本译码器共使用了dc个VNU,VNU为CNU的计算提供所需要的变量点信息,使得CNU计算所需要的变量点信息可以同时得到,从而保证CNU的流水式无阻塞计算。从整体上看,CNU和VNU之间构成了流水线工作模式。
由于每个校验点最多与dc个变量点关联,为了保证CNU完成流水式无阻塞计算,在需要进行更新计算时,保证每一个校验点相关联的dc个变量点信息都已经得到更新,这样就应当有dc个VNU同时计算,并将计算完的结果即时的传递给CNU。如果我们按校验点在矩阵中的先后顺序依次在CNU中计算,则应当也按校验点与变量点中的对应关系依序在VNU中计算变量点信息。
因为每个变量点最多可能关联dv个校验点,因此,每个双口RAM阵列由dv个物理上独立的双口RAM组成,我们预先将完成一次迭代变量点计算所需的校验点信息分别存入双口RAM,以此来保证VNU计算过程的无阻塞。
对当前迭代,校验点生成的信息回存双口RAM,以便进行下一次迭代,由于这是一个一对多的回存过程,也就成功地解决了部分并行结构的译码器结构面临的严重数据冲突问题。在每一次迭代完成后,切换一次双口RAM。
由于VNU与CNU在本译码器结构中的地位是对等的,译码器也可采用拥有dv个CNU和1个VNU的结构。该译码器包括:一个变量点计算单元VNU、一系列校验点计算单元CNU、以及一系列双口RAM阵列,一系列校验点计算单元分别级联对应的双口RAM阵列,CNU的输出端连接VNU的输入端,VNU的输出由双口RAM阵列进行数据缓存,由变量点的度确定CNU的数量及双口RAM阵列的数量,每个双口RAM阵列由一系列独立的双口RAM组成,其数量由校验点的度确定。VNU计算的结果通过dv(变量点的度)个双口RAM阵列进行数据缓存,而每个双口RAM阵列都是由dc个物理上独立的双口RAM组成,每个双口RAM分成两部分,前一部分存储当前迭代所需信息,后一部分存储下一次迭代所需信息(即当前VNU生成的信息)。该结构重点放到了VNU上,CNU为VNU的计算提供所需要的变量点信息,为了使VNU实现流水式无阻塞计算,共使用了dv个CNU,使得VNU计算所需要的校验点信息可以同时得到,从而保证VNU的流水式无阻塞计算。从整体上看,CNU和VNU之间构成了流水线工作模式。对当前迭代,变量点生成的信息存入双口RAM,以便进行下一次迭代。
接下来以具体的二进制LDPC码为例对实现本发明译码器的构造作具体说明。二进制LDPC码的矩阵为10*20的矩阵H,其中,矩阵H的行表示变量点,列表示校验点。
矩阵中相应行中1的个数即为对应的变量点关联的校验点个数,相应列中1的个数即为对应的校验点关联的变量点个数。校验点最多关联的变量点数为校验点的度,变量点最多关联的校验点数为变量点的度。
观察矩阵H可知,每个校验点最多关联6个变量点,而每个变量点最多关联3个校验点。即校验点的最大度dc=6,变量点的最大度dv=3。可以在译码器结构设计中使用一个CNU,六个VNU,(或者使用一个VNU,三个CNU),校验点按先后顺序分别在CNU中计算。
为了计算第1个校验点,必须有3、6、9、12、14、18六个变量点信息;
为了计算第2个校验点,必须有5、6、7、15、16六个变量点信息;
为了计算第3个校验点,必须有2、7、8、10、14、20六个变量点信息;
为了计算第4个校验点,必须有1、4、9、12、19六个变量点信息;
为了计算第5个校验点,必须有5、6、11、13、20六个变量点信息;
为了计算第6个校验点,必须有1、10、11、16、17、19六个变量点信息;
为了计算第7个校验点,必须有3、5、10、12、15、18六个变量点信息;
为了计算第8个校验点,必须有2、4、8、9、16、20六个变量点信息;
为了计算第9个校验点,必须有1、2、7、17、18六个变量点信息;
为了计算第10个校验点,必须有3、4、13、14、17六个变量点信息;
在第1个VNU中按顺序计算3、5、2、1、5、1、3、2、1、3变量点信息;
在第2个VNU中按顺序计算6、6、7、4、6、10、5、4、2、4变量点信息;
在第3个VNU中按顺序计算9、7、8、9、11、11、10、8、7、13变量点信息;
在第4个VNU中按顺序计算12、15、10、12、13、16、12、9、17、14变量点信息;
在第5个VNU中按顺序计算14、16、14、19、20、17、15、16、18、17变量点信息;
在第6个VNU中按顺序计算18、*、20、*、*、19、18、20、*、*变量点信息;(*表示补充的信息,由实际算法决定。)
对第1个VNU为计算相应的变量点信息需相应的上一次迭代校验点信息:
{3,5,2,1,5,1,3,2,1,3}
{{7,10}{2,5}{3,8,9}{4,6,9}{2,5}{4,6,9}{7,10}{3,8,9}{4,6,9}{1,10}}
从双口RAM的前一部分存储器中获取上一次迭代校验点生成的信息,当前迭代CNU生成的用于下一次迭代的校验点信息存储在双口RAM后一部分存储器的同一位置。每开始一次迭代,切换一次存储器。
上述以一个具体的H矩阵为例说明了本LDPC码译码器的实现方式。显然,这样的一种实现方式对于任何的H矩阵都是可行的。通过合理的时序划分,在同等的资源占用下,能够获取较其余译码器实现方式更为优秀的性能。由于在译码器结构设计中VNU与CNU数量的不对称,在VNU较CNU占用更多资源时使用只有一个VNU的结构,或在CNU较VNU占用更多资源时使用只有一个CNU的结构,相较其余译码器结构具有更高的应用价值。由于采用存储器阵列传递信息对校验矩阵的具体形式不敏感,该译码器结构适用于任何类型的矩阵。
如采用4进制LDPC码,根据计算,CNU占用资源是VNU的18倍。资源占用情况如下表所示:
资源名称 | Slices | Slice Flip Flops | 4 inputLUTs |
数目(CNU) | 10301 | 14978 | 16208 |
数目(VNU) | 899 | 1571 | 691 |
由于CNU资源占用是VNU的18倍,考虑只使用一个CNU的译码器结构,可以达到节约资源的目的,通过实验验证,基于部分并行结构译码器工作速度较低,远不能达到要求。而采用基于流水工作方式的译码器结构,在同样的FPGA上,仅使用70%的资源就已达到我们所希望的工作速度。在200MHz的时钟下,如果最大迭代次数为20,则最低译码速度为34.96Mbps。译码器最终资源占用情况如下表所示:
资源名称 | Slices | Slice Flip Flops | 4 inputLUTS | Block RAM |
数目 | 16232 | 24003 | 21160 | 117 |
% | 60% | 45% | 39% | 73% |
上述具体实例仅是对本发明实现方式的一个举例,并不能作为限定本发明保护范围,本领域的技术人员应该清楚,具体实现中还可以作一些细节性调整,以优化译码器。但这些调整是具体实现中必然做出的,其仍然以本发明的核心思想流水工作方式为依托,因此,本发明的保护范围以权利要求为准。
Claims (8)
1、一种基于流水线工作方式的LDPC码译码器,包括,一个校验点计算单元CNU,一系列变量点计算单元VNU以及一系列双口RAM阵列,其特征在于,一系列变量点计算单元分别级联双口RAM阵列,VNU的输出端均连接CNU的输入端, CNU的输出连接双口RAM阵列输入端,由双口RAM阵列对CNU的输出进行数据缓存,由校验点的度确定VNU的数量及双口RAM阵列的数量,每个双口RAM阵列由一系列独立的双口RAM组成,其数量由变量点的度确定。
2、根据权利要求1所述的LDPC码译码器,其特征在于,每个双口RAM阵列分成两部分,前一部分存储当前迭代所需信息,后一部分存储当前CNU生成的信息。
3、根据权利要求1或2所述的LDPC码译码器,其特征在于,所述LDPC码中矩阵的行表示变量点,列表示校验点。
4、根据权利要求3所述的LDPC码译码器,其特征在于,所述校验点的度为校验点最多关联的变量点数,变量点的度为变量点最多关联的校验点数,其数量由矩阵中相应行或列中非零元素的个数确定。
5、一种基于流水线工作方式的LDPC码译码器,包括,一个变量点计算单元VNU、一系列校验点计算单元CNU、以及一系列双口RAM阵列,其特征在于,一系列校验点计算单元分别级联对应的双口RAM阵列,CNU的输出端均连接VNU的输入端,VNU的输出端连接双口RAM阵列输入端,由双口RAM阵列对VNU的输出信息进行数据缓存,由变量点的度确定CNU的数量及双口RAM阵列的数量,每个双口RAM阵列由一系列独立的双口RAM组成,其数量由校验点的度确定。
6、根据权利要求5所述的LDPC码译码器,其特征在于,每个双口RAM阵列分成两部分,前一部分存储当前迭代所需信息,后一部分存储当前VNU生成的信息。
7、根据权利要求5或6所述的LDPC码译码器,其特征在于,LDPC码中矩阵的行表示变量点,列表示校验点。
8、根据权利要求7所述的LDPC码译码器,其特征在于,由矩阵中相应行或列中非零元素的个数确定校验点的度或变量点的度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710092476A CN100592640C (zh) | 2007-07-24 | 2007-07-24 | 基于流水线工作方式的ldpc码译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710092476A CN100592640C (zh) | 2007-07-24 | 2007-07-24 | 基于流水线工作方式的ldpc码译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101093999A true CN101093999A (zh) | 2007-12-26 |
CN100592640C CN100592640C (zh) | 2010-02-24 |
Family
ID=38992069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710092476A Expired - Fee Related CN100592640C (zh) | 2007-07-24 | 2007-07-24 | 基于流水线工作方式的ldpc码译码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100592640C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102349257A (zh) * | 2009-01-14 | 2012-02-08 | 汤姆森特许公司 | 设计用于多边型低密度奇偶校验编码调制的多路分用器的方法和装置 |
CN102377437A (zh) * | 2010-08-27 | 2012-03-14 | 中兴通讯股份有限公司 | 一种准循环低密度奇偶校验码编码方法和装置 |
-
2007
- 2007-07-24 CN CN200710092476A patent/CN100592640C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102349257A (zh) * | 2009-01-14 | 2012-02-08 | 汤姆森特许公司 | 设计用于多边型低密度奇偶校验编码调制的多路分用器的方法和装置 |
CN102349257B (zh) * | 2009-01-14 | 2015-02-25 | 汤姆森特许公司 | 设计用于多边型低密度奇偶校验编码调制的多路分用器的方法和装置 |
CN102377437A (zh) * | 2010-08-27 | 2012-03-14 | 中兴通讯股份有限公司 | 一种准循环低密度奇偶校验码编码方法和装置 |
CN102377437B (zh) * | 2010-08-27 | 2014-12-10 | 中兴通讯股份有限公司 | 一种准循环低密度奇偶校验码编码方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100592640C (zh) | 2010-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912501B (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
CN101777921B (zh) | 用于显式存储片上系统的结构化ldpc码译码方法及装置 | |
CN107590085B (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
CN105049061A (zh) | 基于超前计算的高维基极化码译码器和极化码译码方法 | |
CN105975251B (zh) | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 | |
CN101119118A (zh) | 分层准循环扩展构造的ldpc码的编码器 | |
CN103970720A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN105335331A (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 | |
US11544067B2 (en) | Accelerating AI training by an all-reduce process with compression over a distributed system | |
CN104391759A (zh) | 一种纠删码存储中负载感知的数据归档方法 | |
CN100592640C (zh) | 基于流水线工作方式的ldpc码译码器 | |
CN103761072A (zh) | 一种粗粒度可重构层次化的阵列寄存器文件结构 | |
CN102064835B (zh) | 适用于准循环ldpc译码的译码器 | |
CN107168927B (zh) | 一种基于流水反馈滤波结构的稀疏傅里叶变换实现方法 | |
CN100578945C (zh) | 一种ldpc码的译码器装置及译码方法 | |
CN117454946A (zh) | 支持非结构化稀疏矩阵计算的张量核架构系统 | |
CN102411557B (zh) | 多粒度并行fft计算装置 | |
CN102201817B (zh) | 基于存储器折叠架构优化的低功耗ldpc译码器 | |
CN103473368A (zh) | 一种基于计数排序的虚拟机实时迁移方法及系统 | |
CN109672524A (zh) | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 | |
CN102594369A (zh) | 基于fpga的准循环低密度校验码译码器及译码方法 | |
CN101106382B (zh) | 基于类路由技术的高速ldpc码译码器 | |
CN102164023A (zh) | 自适应动态量化ldpc码译码方法 | |
JP5884389B2 (ja) | Bddを処理する方法、システム及びソフトウェア | |
JP5821499B2 (ja) | パラレル置換を利用したbdd変数をリオーダする方法及びシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100224 Termination date: 20130724 |