CN106911335B - Ldpc编码器 - Google Patents

Ldpc编码器 Download PDF

Info

Publication number
CN106911335B
CN106911335B CN201510974009.7A CN201510974009A CN106911335B CN 106911335 B CN106911335 B CN 106911335B CN 201510974009 A CN201510974009 A CN 201510974009A CN 106911335 B CN106911335 B CN 106911335B
Authority
CN
China
Prior art keywords
shift
unit
instruction
vector
matrix
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.)
Active
Application number
CN201510974009.7A
Other languages
English (en)
Other versions
CN106911335A (zh
Inventor
孙明浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Xin Yi news Technology Co., Ltd.
Original Assignee
Xiamen Jingcun Semiconductor Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Jingcun Semiconductor Technology Co Ltd filed Critical Xiamen Jingcun Semiconductor Technology Co Ltd
Priority to CN201510974009.7A priority Critical patent/CN106911335B/zh
Publication of CN106911335A publication Critical patent/CN106911335A/zh
Application granted granted Critical
Publication of CN106911335B publication Critical patent/CN106911335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种用于LDPC编码的矩阵与向量乘运算单元,包括:移位单元、异或单元和通用寄存器,其中,移位单元,用于将向量移位指定位数,以得到移位结果;异或单元,与所述移位单元和所述通用寄存器相连接,用于接收来自所述移位单元中的所述移位结果,并将所述移位结果与所述通用寄存器中的存储值相异或,以得到异或结果;通用寄存器,用于保存来自所述异或单元中的所述异或结果,并传送所述异或结果。本发明还提供了一种用于LDPC编码的矩阵与向量乘运算方法。通过本发明的技术方案,简化了LDPC编码器的结构,将繁琐的控制流简化为指令的控制,提高了各个功能部件的运行效率,提高吞吐率。

Description

LDPC编码器
技术领域
本发明涉及一种针对矩阵与向量乘运算的低密度奇偶校验码(Low DensityParity Check Code,LDPC)编码器及其方法,特别地,涉及用于优化LDPC编码过程的矩阵与向量乘法单元
背景技术
LDPC码广泛应用于高速无线通信***的信道编码,并将在高性能固态存储***中应用。在《Efficient encoding of low-density parity-check codes》([J].IEEE TransInformation Theory,2001,47(2):638–656)中提出了RU编码算法,将校验矩阵变换为准下三角矩阵,利用Gauss法求解方程以完成编码。而在《在线可编程QC-LDPC码高速编码器结构》(清华大学学报(自然科学版)2009年第49卷第7期1025-1018页)提出了支持可变参数的准循环低密度奇偶校验码编码器结构。
发明内容
现有的LDPC编码技术从结构上看,功能模块和控制单元较多,较为复杂,软硬件功能模块定义不清,各个功能模块的利用率不高,编码的吞吐率不高。而且不够灵活,不能适用于结构不同的准循环校验矩阵。
本发明简化了LDPC编码器的结构,将繁琐的控制流简化为指令的控制,将矩阵求逆等复杂运算改为线下软件工作,提高了各个功能部件的运行效率,提高吞吐率,可以适用于不同结构和码率的准循环校验矩阵的编码。
本发明的一个目的在于高效地实现用于LDPC编码的矩阵与向量乘计算单元。将计算过程在硬件与可编程微码指令之前合理分配。
根据本发明的一个方面,提供了一种矩阵与向量乘运算单元,包括:移位单元、异或单元和通用寄存器,其中,移位单元,用于将向量移位指定位数,以得到移位结果;异或单元,与所述移位单元和所述通用寄存器相连接,用于接收来自所述移位单元的所述移位结果,并将所述移位结果与所述通用寄存器中的存储值相异或,以得到异或结果;通用寄存器,用于保存来自所述异或单元的所述异或结果。
根据本发明的一个实施方式,进一步包括:指令存储器,用于存储指令,所述指令包括第一指令,其中,所述第一指令指示所述移位单元将向量移位指定位数和指示所述异或单元将所述移位结果与所述存储值相异或。
根据本发明的一个实施方式,所述移位单元,响应于执行所述指令存储器中的第一指令,对所述第一指令所指定的向量移位,并将移位结果提供给所述异或单元,其中移位的位数由所述第一指令指定;所述异或单元,响应于执行所述指令存储器中的第一指令,将所述移位结果与所述通用寄存器的值进行异或操作,并将异或结果存储到通用寄存器中。
根据本发明的一个实施方式,进一步包括:数据存储器,与所述移位单元和所述通用寄存器相连接,用于存储向量。
根据本发明的一个实施方式,所述指令包括第二指令,响应于执行所述指令存储器中的所述第二指令,将所述第二指令所指定的所述数据存储器中的向量加载到所述通用寄存器。
根据本发明的一个实施方式,所述指令包括第三指令,响应于执行所述指令存储器中的所述第三指令,存储所述通用寄存器中的值。
根据本发明的一个实施方式,进一步包括源寄存器,与所述数据存储器和所述移位单元相连接,用于接收来自所述数据存储器的向量并将向量提供给所述移位单元。
根据本发明的一个实施方式,所述第一指令通过寻址方式在所述源寄存器或所述数据存储器中寻找到将要加载的向量,将所述向量传送给所述移位单元。
根据本发明的一个实施方式,响应于执行所述指令存储器中的所述第二指令,将所述第二指令所指定的向量加载到所述源寄存器。
根据本发明的一个实施方式,进一步包括控制单元,与所述指令存储器相连接,用于从所述指令存储器中读取指令,并依据所述指令控制所述数据存储器、所述移位单元、所述异或单元、通用寄存器和/或源寄存器。
根据本发明的一个实施方式,其中所述第一指令为Shift_XOR指令。
根据本发明的一个实施方式,其中所述第二指令为LOAD指令。
根据本发明的一个实施方式,其中所述第三指令为STORE指令。
根据本发明的第二方面,提供了一种矩阵与向量乘运算方法,包括以下步骤:初始化通用寄存器;通过连续执行多条第一指令来重复执行将向量移位指定位数并与通用寄存器的内容相异或并将异或结果存储在所述通用寄存器中的操作,其中所述第一指令的每一条指示所述指定位数;存储通用寄存器中的值。
根据本发明的第二方面的一个实施方式,进一步包括:从数据存储器取得向量。
根据本发明的第二方面的一个实施方式,进一步包括:将向量加载到源寄存器。
根据本发明的第二方面的一个实施方式,进一步包括:将通用寄存器中的值存储到数据存储器。
根据本发明的第三方面,提供了一种矩阵与向量乘运算设备,包括:用于初始化通用寄存器的装置;用于通过连续执行多条第一指令来重复执行将向量移位指定位数并与通用寄存器的内容相异或并将异或结果存储在所述通用寄存器中的操作的装置,其中所述第一指令的每一条指示所述指定位数;用于存储通用寄存器中的值的装置。
根据本发明的第四方面,提供了一种用于LDPC编码的矩阵与向量乘运算方法,包括以下步骤:指示加载向量;指示将向量移位指定位数以得到移位结果,并将移位结果与存储值相异或以得到异或结果;指示存储异或结果。
根据本发明的第五方面,提供了一种用于LDPC编码的矩阵与向量乘运算设备,包括:用于指示加载向量的装置;用于指示将向量移位指定位数以得到移位结果以及将移位结果与存储值相异或以得到异或结果的装置;用于指示存储异或结果的装置。
根据本发明的第六方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机***并在计算机***上执行时,所述计算机程序代码使所述计算机***执行根据本发明第二方面提供的矩阵与向量乘运算方法或者根据本发明第四方面提供的用于LDPC编码的矩阵与向量乘运算方法。
根据本发明的第七方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行根据本发明第二方面提供的矩阵与向量乘运算方法或者根据本发明第四方面提供的用于LDPC编码的矩阵与向量乘运算方法。
本发明所述用于LDPC编码的矩阵与向量乘运算单元及其方法简化了LDPC编码器的结构,将繁琐的控制流简化为指令的控制,提高了各个功能部件的运行效率,提高吞吐率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。其中在附图中,参考数字之后的字母标记指示多个相同的部件,当泛指这些部件时,将省略其最后的字母标记。在附图中:
图1示出了根据本发明一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图;
图2示出了根据本发明一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图;
图3示出了根据本发明另一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图;
图4示出了根据本发明另一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图;
图5示出了根据本发明另一个方面的用于LDPC编码的矩阵与向量乘运算方法的流程图;
图6示出了根据本发明另一个方面的用于LDPC编码的矩阵与向量乘运算设备的结构示意图。
在附图中,使用相同或类似的标号来指代相同或类似的元素。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的描述。
在LDPC编码过程中,矩阵M与向量S的乘法操作是重要操作。矩阵M是n个循环移位单位矩阵的和矩阵。矩阵M与向量S的乘法操作可分解为对向量S的移位操作,以及对移位结果的模2和。根据本发明LDPC编码器中,通过执行指令序列来实现矩阵与向量S的乘法。进一步地,在进行LDPC编码过程中,涉及多次矩阵与向量乘法操作。提供分别对应于多个矩阵与向量乘法操作的多段指令序列,以及提供对应于多个矩阵与向量乘法的矩阵M与向量S,并通过执行多段指令序列得到中间和/或最终LDPC编码计算结果。在多段指令序列的控制下,根据本发明实施例的矩阵与向量乘运算单元实现了多个矩阵与向量乘法运算,并实现LDPC编码。因而根据本发明实施例的矩阵与向量乘运算单元也是一种LDPC编码器。
图1示出了根据本发明一个方面的用于LDPC编码的矩阵与向量乘运算单元的结构示意图。如图1所示,矩阵与向量乘运算单元,包括:移位单元140、异或单元160和通用寄存器150,其中,移位单元140用于将向量移位指定位数,以得到移位结果,在这里需要说明的是,移位单元140能够移位的目标对象可以是任意类型的数据,例如可以为二进制数据、标量、向量等。在根据本发明的实施例中,移位单元140移位的目标对象为向量,通过对向量进行移位得到移位结果。
异或单元160分别与移位单元140和通用寄存器150相连接,用于接收来自移位单元140中的移位结果,并将移位结果与通用寄存器150中的存储值相异或,以得到异或结果。异或单元160接收来自移位单元140中的移位结果,在这里需要说明的是,移位结果为移位单元140对任意数据进行移位后得到的移位结果,任意数据例如可以为二进制数据,可以为向量,可以为标量等。本发明中移位结果为移位单元140对向量进行移位后得到的移位结果,异或单元160将移位结果与通用寄存器150中的存储值相异或,以得到异或结果。本发明中通用寄存器150中的存储值为根据矩阵与向量乘运算的原理所得到的异或数值,在下文中将详细描述。
通用寄存器150用于保存来自异或单元160中的异或结果,并传送异或结果。异或运算相当于比特的模2和,向量的循环移位操作相当于循环移位单位矩阵与向量的乘法。因而通过控制移位与异或操作的操作数与操作过程,在通用寄存器150中将得到矩阵与向量乘运算的最终结果。通用寄存器150中的计算结果可以存储在存储器中,并用于进一步的计算。
图2示出了根据本发明一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图。
根据本发明的一个实施方式,如图2所示,用于LDPC编码的矩阵与向量乘运算单元进一步包括指令存储器120,指令存储器120用于存储指令,指令的数量可以有多条,指令的种类可以有多种。
根据本发明的矩阵与向量乘运算单元通过执行指令序列完成LDPC编码或者LDPC编码中的矩阵与向量乘法操作。在执行指令时,移位单元140可对向量执行指定位数的移位操作,移位结果被发送给异或单元160,其中移位的位数由指令指定。在执行指令时,可将数据加载到通用寄存器150,或存储通用寄存器150的数据。在执行指令时,异或单元160可对通用寄存器150的数据与移位单元140的输出数据进行异或操作,并将结果存储在通用寄存器150中。通过执行指令存储器120中的多条指令,完成LDPC编码过程中的矩阵与向量乘运算。
图3示出了根据本发明另一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图。
根据本发明的一个实施方式,如图3所示,用于LDPC编码的矩阵与向量乘运算单元进一步包括数据存储器110,与移位单元140和通用寄存器150(又称为Rd寄存器)相连接。响应于执行指令,可将数据存储器110的指定位置的数据加载到通用寄存器150,或者将通用寄存器150的内容存储到数据存储器110的指定位置。响应于执行指令,移位单元140对数据存储器110的指定位置的数据进行移位,以及将移位单元140的移位结果与通用寄存器150的内容求异或,并将异或结果存储在通用寄存器150中。
根据本发明的一个实施方式,响应于执行指令存储器120中的指令,将指令所指定的数据存储器110中的向量加载到通用寄存器150。在一个例子中,为了将通用寄存器150初始状态设置为0,通过执行指令,将数字“零”或数据存储器110中存储了数字“零”的存储空间的内容加载到通用寄存器150。
根据本发明的一个实施方式,响应于执行指令,将通用寄存器150的内容存储到数据存储器110。
在表1中展示了根据本发明实施例的指令列表。通过组合这些指令,使得通过指令序列的执行来实现矩阵与向量乘法或LDPC编码。因而根据本发明实施例的矩阵与向量乘运算单元也是一种LDPC编码器。指令序列存储在指令存储器120中。
在LDPC编码器执行LOAD指令时,依LOAD指令中描述的参数,将数据从数据存储器110中加载到通用寄存器150。LOAD指令加载的数据可以是向量S。LOAD指令可使用多种寻址方式。在一个例子中,LOAD指令中描述的参数指示要加载的数据在数据存储器110中的位置。在又一个例子中,LOAD指令中描述的参数指示从寄存器中获得要加载的数据在数据存储器110中的地址。LOAD指令中描述的参数还可以指示相对于基地址的偏移值。
在LDPC编码器执行STORE指令时,依STORE指令中描述的参数,将通用寄存器150中的数据存储到数据存储器110。STORE指令存储的数据可以是对向量S执行移位和/或异或后的结果。STORE指令可使用多种寻址方式。
在LDPC编码器执行SHIFT_XOR指令时,依SHIFT_XOR指令中描述的参数,由移位单元140将数据存储器中的指定数据移位指定位数,将移位结果送入异或单元160,由异或单元160将该移位结果与通用寄存器150的值相异或,并将结果存储到通用寄存器150中。
表1指令列表
Figure BDA0000886801780000081
在根据图3所示的本发明的又一实施例中,LDPC编码器还能够执行NOP指令。NOP指令代表空操作,用于避免LDPC编码器指令执行过程中的资源访问冲突。
图4示出了根据本发明另一个实施方式的用于LDPC编码的矩阵与向量乘运算单元的结构示意图。
根据本发明的一个实施方式,如图4所示,用于LDPC编码的矩阵与向量乘运算单元包括数据存储器110、指令存储器120、移位单元140、通用寄存器(又称为Rd(目的)寄存器)150、异或单元160和通用寄存器(又称为Rs(源)寄存器)130。源寄存器130与数据存储器110和移位单元140相连接,用于接收来自数据存储器110的向量并将向量提供给移位单元140。
根据本发明的一个实施方式,响应于执行指令存储器120中的指令,将指令所指定的数据加载到源寄存器130。在根据本发明的例子中,加载到源寄存器130的数据为矩阵与向量乘操作中作为乘数的向量。
在表2中展示了根据本发明实施例的指令列表。通过组合这些指令,使得通过指令序列的执行来实现矩阵与向量乘法或LDPC编码。因而根据本发明图4所展示的实施例的矩阵与向量乘运算单元也是一种LDPC编码器。指令序列存储在指令存储器120中。
在LDPC编码器执行LOAD指令时,依LOAD指令中描述的参数,将数据从数据存储器110中加载到源寄存器130或目的寄存器150。LOAD指令加载的数据可以是矩阵与向量乘法操作中作为乘数的向量。LOAD指令可使用多种寻址方式。在一个例子中,LOAD指令中描述的参数指示要加载的数据在数据存储器110中的位置。在又一个例子中,LOAD指令中描述的参数指示从寄存器中获得要加载的数据在数据存储器110中的地址。LOAD指令中描述的参数还可以指示相对于基地址的偏移值。
在LDPC编码器执行STORE指令时,依STORE指令中描述的参数,将目的寄存器150中的数据存储到数据存储器110。STORE指令存储的数据可以是对向量执行移位和/或异或后的结果。STORE指令可使用多种寻址方式。
在LDPC编码器执行SHIFT_XOR指令时,依SHIFT_XOR指令中描述的参数,由移位单元140将源寄存器130中的内容移位指定位数,将移位结果送入异或单元160,由异或单元160将该移位结果与目的寄存器150的值相异或,并将结果存储到目的寄存器150中。
表2指令列表
Figure BDA0000886801780000091
在根据图4所示的本发明的又一实施例中,LDPC编码器还能够执行NOP指令。NOP指令代表空操作,用于避免LDPC编码器指令执行过程中的资源访问冲突。
下面通过具体实施例详细描述根据指令序列,LDPC编码器所实现的矩阵与向量乘的运算。
在LDPC编码过程中,矩阵M与向量S的乘法操作是重要操作。矩阵M是n个循环移位单位矩阵的和矩阵。循环移位单位矩阵是单位矩阵经循环移位得到的矩阵。例如,式(1)为循环移位单位矩阵的例子,式(1)的循环移位单位矩阵是8*8的单位矩阵循环右移一位得到的矩阵。
Figure BDA0000886801780000101
由于M是n个循环移位单位矩阵的和矩阵。令M=I1+I2+…+In,其中Im(1≤m≤n)是循环移位单位矩阵,m与n均为正整数。
矩阵M与向量S的乘法操作M*S=(I1+I2+…+In)*S。单位循环移位单位矩阵Im(1≤m≤n)与向量S的乘法操作可转换为对向量S的移位操作。而(I1+I2+…+In)*S可转换为对向量S的移位,以及对移位结果的模2和。即(I1+I2+…+In)*S可以分解为shift(S,d1)xorshift(S,d2)xor shift(S,d3)…xor shift(S,dn),其中shift(S,dm)表示对向量S移位dm位;dm表示从单位阵I循环右移dm位得到循环移位单位矩阵Im;XOR表示异或操作。可见,矩阵与向量相乘(M*S)可转换为一系列的移位与异或操作。
下面通过具体的例子对根据本发明的实施例计算矩阵M与向量S的乘法操作的过程进行说明。
实施例1
M为8*8的循环移位单位矩阵的和矩阵,S为8*1的向量,矩阵M如(2)式,向量S如(3)式:
Figure BDA0000886801780000102
S=(1 0 0 1 0 0 1 0)' (3)
在(2)式中,M=I1+I2+I3,其中I1是单位阵I循环右移1位得到循环移位单位矩阵,I2是单位阵I循环右移3位得到循环移位单位矩阵,I3是单位阵I循环右移7位得到循环移位单位矩阵。则M*S=I1*S XOR I2*S XOR I3*S的计算过程可以分解为如下操作:Shift(S,1)xor Shift(S,3)xor Shift(S,7)。而这些操作可通过在如图3的LDPC编码器中执行存储在指令存储器120中的下列指令序列来实现:
①LOAD Rd,0;
②Shift_XOR[ADDR1],1;
③Shift_XOR[ADDR1],3;
④Shift_XOR[ADDR1],7;
⑤STORE ADDR2,Rd。
如图3所示,用于LDPC编码器的矩阵与向量乘运算单元,包括:数据存储器110、指令存储器120、移位单元140、通用寄存器(Rd)150和异或单元160,数据存储器110存储矩阵M和向量S,数据存储器110分别与移位单元140和通用寄存器150相连接,移位单元140与异或单元160相连接,异或单元160与通用寄存器150相连接。
执行指令①时,,加载给通用寄存器150的向量值为0,即将通用寄存器150初始化为0。
执行指令②时,移位单元140将数据存储器110中地址为ADDR1处存储的向量S移位1位,异或单元160将移1位的向量与通用寄存器150(初始值为0)的值相异或,异或结果存储在通用寄存器150中。此时通用寄存器150中的值为I1*S。
执行指令③时,移位单元140将数据存储器110中地址为ADDR1处存储的向量S移位3位,异或单元160将移3位的向量S与通用寄存器150中存储的执行完指令②后的值相异或,将异或结果存储在通用寄存器150中。此时通用寄存器150中的值为I1*S XOR I2*S。
执行指令④时,移位单元140将数据存储器110中地址为ADDR1处存储的向量S移位7位,异或单元160将移7位的向量S与通用寄存器150中存储的执行完指令③后的值相异或,将异或结果存储在通用寄存器150中。此时,通用寄存器250中的值为I1*S XOR I2*S XORI3*S,即M*S的计算结果。
执行指令⑤时,将执行完指令④后的通用寄存器150中的值存储在地址为ADDR2的存储位置。
在根据本发明的实施例1中,为计算矩阵与向量乘M*S,分析矩阵M的构成,将矩阵M分别为若干循环移位单位矩阵的和,对于每个循环移位单位矩阵与向量S的乘法操作,生成一条指令Shift_XOR[ADDR],offset,其中offset值代表单位阵I循环右移offset位得到该循环移位单位矩阵,而[ADDR]表示该指令的操作对象是数据存储器中的存储位置为ADDR的数据。以及生成初始化通用寄存器(Rd)的指令,与保存计算结果的指令。在如图3所示的LDPC编码器中执行所生成的指令序列(例如,上面的指令序列①-⑤),以得到矩阵与向量乘M*S的计算结果。除应用于LDPC编码器外,如图3所示的根据本发明的实施例也可用于其他需要计算矩阵与向量乘法的应用场景。
本实施例1中的LDPC编码器涉及多次矩阵与向量乘法操作。在指令存储器120中可存储分别对应于多个矩阵与向量乘法操作的多个指令,简化了LDPC编码器的结构,将繁琐的控制流简化为指令的控制,提高了各个功能部件的运行效率,提高吞吐率。
实施例2
M为8*8的循环移位单位矩阵的和矩阵,S为8*1的向量,矩阵M如(4)式,向量S如(5)式:
Figure BDA0000886801780000121
S=(1 0 0 1 0 0 1 0)' (5)
在(4)式中,M=I1+I2+I3,其中I1是单位阵I循环右移1位得到循环移位单位矩阵,I2是单位阵I循环右移3位得到循环移位单位矩阵,I3是单位阵I循环右移7位得到循环移位单位矩阵。则M*S=I1*S XOR I2*S XOR I3*S的计算过程可以分解为如下操作:Shift(S,1)xor Shift(S,3)xor Shift(S,7)。而这些操作可通过在如图4的LDPC编码器中执行下列指令序列来实现,其中源寄存器(Rs)130与目的寄存器(Rd)150的初始状态为0。
1)LOAD Rs,ADDR1;
2)Shift_XOR Rs,1;
3)Shift_XOR Rs,3;
4)Shift_XOR Rs,7;
5)STORE ADDR2,Rd。
如图4所示,用于LDPC编码的矩阵与向量乘运算单元,包括:数据存储器110、指令存储器120、源寄存器(Rs)130、移位单元140、目的寄存器(Rd)150和异或单元160,数据存储器110分别与源寄存器130和目的寄存器150相连接,源寄存器130与移位单元140相连接,移位单元140与异或单元160相连接,异或单元160与目的寄存器150相连接。
执行指令1)时,从数据存储器110的地址为ADDR1处取得向量S,并加载到源寄存器130中。
执行指令2)时,通过移位单元140将源寄存器130的向量S移位1位,异或单元160将移1位的向量S与目的寄存器150(初始值为0)的值相异或,异或结果存储在目的寄存器150中。此时目的寄存器150中的值为I1*S。
执行指令3)时,移位单元140将源寄存器130的向量S移位3位,异或单元160将移3位的向量S与目的寄存器150中存储的执行完指令2)后的值相异或,将异或结果存储在目的寄存器150中。此时目的寄存器150中的值为I1*S XOR I2*S。
执行指令4)时,移位单元140将源寄存器130的向量S移位7位,异或单元160将移7位的向量S与目的寄存器150中存储的执行完指令3)后的值相异或,将异或结果存储在目的寄存器150中。此时,目的寄存器150中的值为I1*S XOR I2*S XOR I3*S,即M*S的计算结果。
执行指令5)时,将执行完指令4)后的目的寄存器150中的值存储在地址为ADDR2的存储位置。
在根据本发明的实施例2中,为计算矩阵与向量乘M*S,分析矩阵M的构成,将矩阵M划分为若干循环移位单位矩阵的和,对于每个循环移位单位矩阵与向量S的乘法操作,生成一条指令:shift Rs,offset,其中offset值代表单位阵I循环右移offset位得到该循环移位单位矩阵,而Rs表示该指令的操作对象是来自源寄存器130的数据。还生成初始化源寄存器(Rs)、目的寄存器(Rd)的指令,与保存计算结果的指令。在如图4所示的LDPC编码器中执行所生成的指令序列(例如,上面的指令序列1)-5)),以得到矩阵与向量乘M*S的计算结果。除应用于LDPC编码器外,如图4所示的根据本发明的实施例也可用于其他需要计算矩阵与向量乘法的应用场景。
根据本发明的一个实施方式,用于LDPC编码器的矩阵与向量乘运算单元进一步包括控制单元,控制单元与指令存储器120相连接,用于从指令存储器120中读取指令,并依据指令控制数据存储器110、移位单元140、异或单元160、目的寄存器150和/或源寄存器130的操作。
在LDPC编码过程中,可涉及多次矩阵与向量乘法操作。在根据本发明实施例的指令存储器中可存储分别对应于多个矩阵与向量乘法操作的多组指令序列,通过执行多组指令序列的每一组,计算相对应的矩阵与向量乘法。在数据存储器中存储分别对应于多个矩阵与向量乘法的乘数向量S以及中间和/或最终计算结果。
根据本发明的实施例简化了LDPC编码器的结构,将繁琐的控制流简化为指令的控制,提高了各个功能部件的运行效率,提高吞吐率。
根据本发明的另一个方面,本发明还提供一种矩阵与向量乘运算方法,如图5所示,包括以下步骤:初始化通用寄存器(S1000);通过连续执行多条第一指令来重复执行将向量移位指定位数并与通用寄存器的内容相异或并将异或结果存储在通用寄存器中的操作,其中第一指令的每一条指示指定位数(S2000);存储通用寄存器中的值(S3000)。
在操作S2000时,根据SHIFT_XOR指令将向量移位指定位数以得到移位结果并将移位结果与通用寄存器150中的存储值相异或。在本发明中,移位单元140根据SHIFT_XOR指令将向量移位指定位数。
在操作S3000时,根据STORE指令存储S3000中的异或结果。
根据本发明的另一个方面,本发明还提供一种矩阵与向量乘运算设备,如图6所示,矩阵与向量乘运算设备包括:用于初始化通用寄存器的装置10;用于通过连续执行多条第一指令来重复执行将向量移位指定位数并与通用寄存器的内容相异或并将异或结果存储在通用寄存器中的操作的装置20,其中第一指令的每一条指示指定位数;以及用于存储通用寄存器中的值的装置30。
根据本发明的另一个方面,本发明还提供了一种用于LDPC编码的矩阵与向量乘运算方法,包括以下步骤:指示加载向量;指示将向量移位指定位数以得到移位结果以及将移位结果与存储值相异或以得到异或结果;指示存储异或结果。
根据本发明的另一个方面,本发明提供了一种用于LDPC编码的矩阵与向量乘运算设备,包括:用于指示加载向量的装置;用于指示将向量移位指定位数以得到移位结果以及将移位结果与存储值相异或以得到异或结果的装置;用于指示存储异或结果的装置。
根据本发明的另一个方面,本发明还提供一种包含计算机程序代码的计算机程序,当被载入计算机***并在计算机***上执行时,所述计算机程序代码使所述计算机***执行上面所述的方法。
根据本发明的另一个方面,还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行上面所述的方法。
本发明用于LDPC编码的矩阵与向量乘运算单元及其方法简化了LDPC编码器的结构,将繁琐的控制流简化为指令的控制,提高了各个功能部件的运行效率,提高吞吐率。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作步骤,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的步骤。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或步骤的、基于硬件的专用计算机***实现,或由专用硬件和计算机指令的组合实现。
上述的不同块、操作以及技术的至少一部分可以被执行,通过使用硬件,控制设备执行固件指令,控制设备执行软件指令,或者及其任意组合。当采用执行固件以及软件指令的控制设备执行时,软件或固件指令可以被存储在任意计算机可读存储介质中,例如磁盘,光盘或者其他存储介质,在RAM或者ROM或者flash存储器,控制设备,硬盘,光盘,磁盘等等。同样地,软件和固件指令可以被传输到用户或者***,通过任意已知的或者期望的传输方式包括,例如,在计算机可读盘或者其他便携式计算机存储机制或者通过通信媒介。通信媒介典型地具体化计算机可读指令,数据结构,序模块或者在已调制数据信号中的其它数据例如载波或者其他传输机制。通过示例,并非限制,通信介质包括有线介质例如有线网络或者单线连接,以及无线媒介,例如声、无线频率,红外以及其它无线介质。从而,软件和固件指令可以被传输给用户或者***,通过通信信道,例如电话线,DSL线,电缆电视线,光纤线缆,无线信道,因特网,等等(通过便携式存储介质提供这样的软件,其被看作是相同的或者可互换的)。软件或者固件指令可以包括机器可读指令,这些可读指令在由控制设备执行时,导致控制设备执行不同动作。
当在硬件中执行时,硬件可以包括一个或多个离散组件,集成电路,应用的集成电路(ASIC),等等。
需要理解的是,本发明可以以纯软件、纯硬件、固件以及上述的各种组合来实现。硬件例如可以是控制设备、专用集成电路、大规模集成电路等等。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

Claims (3)

1.一种用于LDPC编码的矩阵与向量乘运算单元,包括:移位单元、异或单元和通用寄存器,其中,
移位单元,用于将向量移位指定位数,以得到移位结果;
异或单元,与所述移位单元和所述通用寄存器相连接,用于接收来自所述移位单元的所述移位结果,并将所述移位结果与所述通用寄存器中的存储值相异或,以得到异或结果;
通用寄存器,用于保存来自所述异或单元的所述异或结果;
所述矩阵与向量乘运算单元进一步包括:指令存储器,用于存储指令,所述指令包括LOAD指令,Shift_XOR指令与Store指令,
其中,所述Shift_XOR指令指示所述移位单元将向量移位指定位数以得到移位结果和指示所述异或单元将所述移位结果与所述存储值相异或;
所述移位单元,响应于执行所述Shift_XOR指令,对第一指令所指定的向量移位,并将移位结果提供给所述异或单元,其中移位的位数由所述Shift_XOR指令指定;
所述异或单元,响应于执行所述Shift_XOR指令,将所述移位结果与所述通用寄存器的值进行异或操作,并输出异或结果;
以及所述异或结果被存储到通用寄存器中;
响应于执行所述LOAD指令,将所述LOAD指令所指定的数据存储器中的向量加载到通用寄存器;
响应于执行Store指令,将所述Store指令所指定的通用寄存器的值存储到所述数据存储器中由所述Store指令所指定的位置;
所述矩阵与向量乘运算单元通过执行指令来执行矩阵M与向量S乘运算,其中所述矩阵M为循环移位单位矩阵的和矩阵;在数据存储器的地址为ADDR1处存储向量S;所述矩阵M=I1+I2+…+In,其中Im是循环移位单位矩阵,1≤m≤n,m与n均为正整数;其中,生成执行LOAD指令,从数据存储器中加载数据到全局寄存器,以初始化全局寄存器;对于每个循环移位单位矩阵Im与向量S的乘法操作,生成一条Shift_XOR指令;以及生成保存计算结果的Store指令。
2.根据权利要求1所述的矩阵与向量乘运算单元,进一步包括:数据存储器,与所述移位单元和所述通用寄存器相连接,用于存储向量。
3.根据权利要求1或2所述的矩阵与向量乘运算单元,进一步包括源寄存器,与所述数据存储器和所述移位单元相连接,用于接收来自所述数据存储器的向量并将向量提供给所述移位单元。
CN201510974009.7A 2015-12-22 2015-12-22 Ldpc编码器 Active CN106911335B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510974009.7A CN106911335B (zh) 2015-12-22 2015-12-22 Ldpc编码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510974009.7A CN106911335B (zh) 2015-12-22 2015-12-22 Ldpc编码器

Publications (2)

Publication Number Publication Date
CN106911335A CN106911335A (zh) 2017-06-30
CN106911335B true CN106911335B (zh) 2021-12-28

Family

ID=59200194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510974009.7A Active CN106911335B (zh) 2015-12-22 2015-12-22 Ldpc编码器

Country Status (1)

Country Link
CN (1) CN106911335B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102857235A (zh) * 2012-09-27 2013-01-02 苏州威士达信息科技有限公司 基于共享寄存器的dtmb中ldpc编码器和编码方法
CN202649410U (zh) * 2012-07-13 2013-01-02 贵州师范大学 一种低功耗集成电路测试生成器
CN105099467A (zh) * 2014-04-21 2015-11-25 华为技术有限公司 Qc-ldpc码的编码方法及编码装置
CN105450234A (zh) * 2016-01-01 2016-03-30 荣成市鼎通电子信息科技有限公司 Dtmb中qc-ldpc码的校验装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9444496B2 (en) * 2012-04-04 2016-09-13 University Of Southern California Correctable parity protected memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202649410U (zh) * 2012-07-13 2013-01-02 贵州师范大学 一种低功耗集成电路测试生成器
CN102857235A (zh) * 2012-09-27 2013-01-02 苏州威士达信息科技有限公司 基于共享寄存器的dtmb中ldpc编码器和编码方法
CN105099467A (zh) * 2014-04-21 2015-11-25 华为技术有限公司 Qc-ldpc码的编码方法及编码装置
CN105450234A (zh) * 2016-01-01 2016-03-30 荣成市鼎通电子信息科技有限公司 Dtmb中qc-ldpc码的校验装置

Also Published As

Publication number Publication date
CN106911335A (zh) 2017-06-30

Similar Documents

Publication Publication Date Title
JP4559505B2 (ja) ランダム系列の反復周期の拡張
KR100502609B1 (ko) Ldpc 코드를 이용한 부호화기 및 부호화 방법
CN101273532B (zh) 解码装置及接收装置
JP4739020B2 (ja) 小型ガロア体乗算器エンジン
US6820102B2 (en) DSP unit for multi-level global accumulation
UA91513C2 (uk) Спосіб (варіанти) і кодер ldpc-кодування
CN102084335A (zh) 任意伽罗瓦域算术在可编程处理器上的实施
CN106936444B (zh) 一种集合译码方法和集合译码器
JPWO2004001701A1 (ja) 符号演算装置
JP4526451B2 (ja) 復号装置と方法並びにプログラム
KR20080005574A (ko) Crc 에러 검출 방법, 장치, 시스템 및 crc 에러 검출방법을 수행하는인스트럭션 세트를 포함하는 머신판독가능한 매체
US20160299743A1 (en) Modulo calculation using polynomials
CN103873181A (zh) 一种lte***中伪随机序列并行生成方法
CN104617959A (zh) 一种基于通用处理器的ldpc编译码方法
CN101296053A (zh) 计算循环冗余校验码之方法及***
CN100382011C (zh) 蒙哥马利乘法器中的流水线内核
CN108809323B (zh) 循环冗余校验码的生成方法和装置
CN106911335B (zh) Ldpc编码器
Han et al. Implementation of IEEE 802.11 n LDPC codes based on general purpose processors
Lee et al. Small-area parallel syndrome calculation for strong BCH decoding
US6662201B1 (en) Modular arithmetic apparatus and method having high-speed base conversion function
CN106921395B (zh) Ldpc编码方法及其装置
CN113485751B (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
CN107534450B (zh) 矩阵应用装置、矩阵应用方法、以及存储介质
KR20110114204A (ko) 저밀도 패리티 체크 부호화 방법 및 이를 이용하는 저밀도 패리티 체크 인코더

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180426

Address after: 361000 Xiamen, Fujian, China (Fujian) free trade trial area Xiamen area (bonded port area), South Sea Road two Road 45, 4 Building 03 unit F0100

Applicant after: Xiamen Xin Yi news Technology Co., Ltd.

Address before: 100089 room 32, building 32, Chuang Zhong Road, Haidian District, Beijing.

Applicant before: Beijing core technology Co., Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 361000 Xiamen, Fujian, China (Fujian) free trade trial area Xiamen area (bonded port area), South Sea Road two Road 45, 4 Building 03 unit F0100

Applicant after: Xiamen Jingcun Semiconductor Technology Co., Ltd

Address before: 361000 Xiamen, Fujian, China (Fujian) free trade trial area Xiamen area (bonded port area), South Sea Road two Road 45, 4 Building 03 unit F0100

Applicant before: XIAMEN KINGBLAZE TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

Assignor: Shanghai Pleiades Microelectronics Co.,Ltd.

Contract record no.: 2016110000016

Date of cancellation: 20211026