TWI547103B - Low density parity-check code decoder and decoding method thereof - Google Patents

Low density parity-check code decoder and decoding method thereof Download PDF

Info

Publication number
TWI547103B
TWI547103B TW103116546A TW103116546A TWI547103B TW I547103 B TWI547103 B TW I547103B TW 103116546 A TW103116546 A TW 103116546A TW 103116546 A TW103116546 A TW 103116546A TW I547103 B TWI547103 B TW I547103B
Authority
TW
Taiwan
Prior art keywords
bit
density parity
decoder
parity check
check code
Prior art date
Application number
TW103116546A
Other languages
Chinese (zh)
Other versions
TW201543824A (en
Inventor
洪瑞徽
顏池男
Original Assignee
衡宇科技股份有限公司
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 衡宇科技股份有限公司 filed Critical 衡宇科技股份有限公司
Priority to TW103116546A priority Critical patent/TWI547103B/en
Publication of TW201543824A publication Critical patent/TW201543824A/en
Application granted granted Critical
Publication of TWI547103B publication Critical patent/TWI547103B/en

Links

Description

低密度奇偶校驗碼之解碼器及其解碼方法 Decoder of low density parity check code and decoding method thereof

本發明為一種解碼器,特別是有關於一種低密度奇偶校驗碼之解碼器及其解碼方法。 The present invention is a decoder, and more particularly to a decoder for a low density parity check code and a decoding method thereof.

資料在傳輸過程中可能因傳輸媒介的可靠度差,或外在因素的干擾而遭到破壞,而錯誤更正碼(Error control coding)的作用即是還原這些遭受到破壞的資料。常用的錯誤更正碼有漢明碼(Hamming Code)、里德所羅門碼(Reed Solomon Code)、BCH碼(Bose Chaudhuri Hocquengham Code)、以及低密度奇偶校驗碼(Low Density Parity-Check Code)等。其中又以低密度奇偶校驗碼的錯誤具有較佳的錯誤偵測與修正能力,而且還可以在非常高的速率下解碼。在習知低密度奇偶校驗碼之解碼器之部份平行架構的設計上,為了提高運算的平行度,並且為了避免列區塊及欄區塊的記憶體存取的問題,通常會將記憶體以循環矩陣(Cyclic Matrix)為單位分成記憶體區塊(memory block)以便運算,同時對這些記憶體區塊進行讀取或寫入。但透過此方法在運算的過程中仍會遭遇到儲存空間因寫入或讀取的資料碰撞。 The data may be destroyed during the transmission process due to the poor reliability of the transmission medium or the interference of external factors, and the effect of the error control coding is to restore the damaged data. Commonly used error correction codes include Hamming Code, Reed Solomon Code, BCH Code (Bose Chaudhuri Hocquengham Code), and Low Density Parity-Check Code. Errors with low-density parity check codes have better error detection and correction capabilities, and can also be decoded at very high rates. In the design of a part of the parallel architecture of the decoder of the conventional low-density parity check code, in order to improve the parallelism of the operation, and in order to avoid the memory access problem of the column block and the column block, the memory is usually The body is divided into memory blocks in units of Cyclic Matrix for operation, and these memory blocks are read or written. However, in this way, during the operation, the storage space of the storage space due to writing or reading will still be encountered.

因此,在低密度奇偶校驗碼具多種好處的情況下,其仍存在許多問題,例如上述之資料碰撞、電路面積以及運算複雜度等等。在低密度奇偶校驗碼之解碼器的設計上,如何有效改進仍是未來努力的目標。 Therefore, in the case where the low-density parity check code has various advantages, there are still many problems, such as the above-mentioned data collision, circuit area, and computational complexity. In the design of the decoder of low-density parity check code, how to effectively improve is still the goal of future efforts.

本發明實施例提出一種低密度奇偶校驗碼之解碼器,用以對具有位元節點及查核節點的編碼資料進行解碼。解碼器包括計算模組以及記憶體。計算模組包括k個運算單元以及n個位移單元,記憶體包括n個記憶單元。記憶體耦接於計算模組。每一位移單元分別一對多耦接於每一運算單元。記憶單元耦接於位移單元。計算模組將編碼資料分割為n個第一位元串。第i個運算單元計算第一位元串中的第i個位元並產生第二位元串,其中i=1~k的整數。第j個位移單元將所接收之第二位元串之第j個位元產生第三位元串,並將第三位元串位移,其中j=1~n的整數。記憶單元用以分別儲存位移後的第三位元串。其中k、n≧1,且為整數。 The embodiment of the invention provides a decoder for low-density parity check code for decoding encoded data having a bit node and a check node. The decoder includes a computing module and a memory. The computing module includes k arithmetic units and n displacement units, and the memory includes n memory units. The memory is coupled to the computing module. Each of the displacement units is coupled to each of the operation units one-to-many. The memory unit is coupled to the displacement unit. The computing module divides the encoded data into n first bit strings. The i-th computing unit calculates the i-th bit in the first bit string and generates a second bit string, where i=1~k is an integer. The jth displacement unit generates a third bit string from the jth bit of the received second bit string, and shifts the third bit string, wherein j=1~n is an integer. The memory unit is configured to store the shifted third bit string separately. Where k, n≧1, and is an integer.

本發明實施例提出一種低密度奇偶校驗碼之解碼方法,用以對具有位元節點及查核節點的編碼資料進行解碼。解碼方法包括以下步驟:將編碼資料分割為n個第一位元串;藉由k個運算單元的第i個運算單元計算第一位元串中的第i個位元並產生第二位元串,其中i=1~k的整數;藉由n個位移單元的第j個位移單元將所接收之第二位元串之第j個位元產生第三位元串,並將第三位元串位移,其中j=1~n的整數;分別儲存位移後的n個第三位元串於n個記憶單元;其中k、n≧1,且為整數。 The embodiment of the invention provides a decoding method for a low-density parity check code, which is used for decoding encoded data having a bit node and a check node. The decoding method includes the steps of: dividing the coded data into n first bit strings; calculating the i-th bit in the first bit string by the i-th operation unit of the k operation units and generating the second bit a string, wherein an integer of i=1~k; the jth bit of the received second bit string generates a third bit string by the jth shift unit of the n shift units, and the third bit The metastring displacement, where j=1~n is an integer; the n third bit strings after the displacement are respectively stored in n memory cells; wherein k, n≧1, and are integers.

綜上所述,透過本發明實施例所提出之低密度奇偶校驗碼之解碼器及其解碼方法,能夠避免傳統使用低密度奇偶校驗碼之解碼器在寫入與讀取的過程中所造成的資料碰撞。另一方面,在本發明所提出之解碼器架構下,透過將記憶體以循環矩陣為單位分成記憶區塊(memory block)的平行架構設計,提高低密度奇偶校驗碼解碼器運算的平行度,更能夠以一個切換網路的方式取代傳統解碼器在進行計算時,寫入與讀取都各須使用切換網路的情況,並簡化傳統上所使用之位元節點單元(bit node unit),且能夠達到避免資料碰撞之效果,並進一步縮短運算時間。整體來說,本發 明有效改善低密度奇偶校驗碼雖然具有高解碼之能力但成本過高之問題,有效降低整體解碼器之成本。 In summary, the decoder for low-density parity check code proposed by the embodiment of the present invention and the decoding method thereof can avoid the conventional decoder using low-density parity check code in the process of writing and reading. The resulting data collided. On the other hand, in the decoder architecture proposed by the present invention, the parallelism of the operation of the low density parity check code decoder is improved by dividing the memory into a parallel architecture of a memory block in units of a cyclic matrix. It is also possible to replace the traditional decoder with a switching network. When performing calculations, both writing and reading must use a switching network, and simplify the bit node unit that is conventionally used. And can achieve the effect of avoiding data collision and further shorten the calculation time. Overall, this hair Although the effective improvement of the low-density parity check code has the problem of high decoding capability but high cost, the cost of the overall decoder is effectively reduced.

為使能更進一步瞭解本發明之特徵及技術內容,請參閱以下有關本發明之詳細說明與附圖,但是此等說明與所附圖式僅係用來說明本發明,而非對本發明的權利範圍作任何的限制。 The detailed description of the present invention and the accompanying drawings are to be understood by the claims The scope is subject to any restrictions.

1‧‧‧解碼器 1‧‧‧Decoder

10‧‧‧接收單元 10‧‧‧ Receiving unit

11‧‧‧計算模組 11‧‧‧Computation Module

12‧‧‧記憶體 12‧‧‧ memory

13‧‧‧切換單元 13‧‧‧Switch unit

111-1、111-2、...、111-k‧‧‧運算單元 111-1, 111-2, ..., 111-k‧‧‧ arithmetic unit

112-1、112-2、...、112-n‧‧‧位移單元 112-1, 112-2, ..., 112-n‧‧‧ displacement unit

121-1、121-2、...、121-n‧‧‧記憶單元 121-1, 121-2, ..., 121-n‧‧‧ memory unit

Ec‧‧‧編碼資料 Ec‧‧‧ encoded data

Ed‧‧‧解碼資料 Ed‧‧‧Decoding data

H‧‧‧循環校驗矩陣 H‧‧‧cyclic check matrix

S101~S113‧‧‧為方法步驟流程 S101~S113‧‧‧ is the method step flow

圖1為本發明實施例之低密度奇偶校驗碼之解碼器之方塊圖;圖2為本發明實施例之循環校驗矩陣區塊分割示意圖;圖3為本發明實施例之低密度奇偶校驗碼之解碼器運算過程示意圖;圖4為本發明實施例之低密度奇偶校驗碼之解碼方法流程圖。 1 is a block diagram of a decoder of a low-density parity check code according to an embodiment of the present invention; FIG. 2 is a schematic diagram of partitioning of a loop check matrix block according to an embodiment of the present invention; and FIG. 3 is a low-density parity check according to an embodiment of the present invention; Schematic diagram of the decoder operation process of the code verification; FIG. 4 is a flow chart of the decoding method of the low density parity check code according to the embodiment of the present invention.

在下文將參看隨附圖式更充分地描述各種例示性實施例,在隨附圖式中展示一些例示性實施例。然而,本發明概念可能以許多不同形式來體現,且不應解釋為限於本文中所闡述之例示性實施例。確切而言,提供此等例示性實施例使得本發明將為詳盡且完整,且將向熟習此項技術者充分傳達本發明概念的範疇。在諸圖式中,可為了清楚而誇示層及區之大小及相對大小。類似數字始終指示類似元件。 Various illustrative embodiments are described more fully hereinafter with reference to the accompanying drawings. However, the inventive concept may be embodied in many different forms and should not be construed as being limited to the illustrative embodiments set forth herein. Rather, these exemplary embodiments are provided so that this invention will be in the In the drawings, the size and relative sizes of layers and regions may be exaggerated for clarity. Similar numbers always indicate similar components.

應理解,雖然本文中可能使用術語第一、第二、第三等來描述各種元件,但此等元件不應受此等術語限制。此等術語乃用以區分一元件與另一元件。因此,下文論述之第一元件可稱為第二元件而不偏離本發明概念之教示。如本文中所使用,術語「或」視實際情況可能包括相關聯之列出項目中之任一者或者多者之所有組合。 It will be understood that, although the terms first, second, third, etc. may be used herein to describe various elements, such elements are not limited by the terms. These terms are used to distinguish one element from another. Thus, a first element discussed below could be termed a second element without departing from the teachings of the inventive concept. As used herein, the term "or" may include all combinations of any one or more of the associated listed items.

請參閱圖1,圖1為本發明實施例之低密度奇偶校驗碼之解碼 器之方塊圖。如圖1所示,本發明為具有低密度奇偶校驗碼之解碼器1為用以對具有位元節點(bit node)及查核節點(check node)的編碼資料Ec進行解碼,以產生解碼資料Ed並確保解碼資料Ec的正確性。編碼資料Ec係透過編碼器對原始資料(圖未示)編碼形成。而有關於位元節點以及查核節點為所屬技術領域具通常知識者,在錯誤更正碼中常用的技術,故在此不再贅述。值得一提的是,在本發明實施例中,解碼器1以循環低密度奇偶校驗碼(Quasi Cyclic-Low Density Parity-Check,QC-LDPC)作為實施方式。 Please refer to FIG. 1. FIG. 1 is a decoding of a low density parity check code according to an embodiment of the present invention. Block diagram of the device. As shown in FIG. 1, the present invention is a decoder 1 having a low density parity check code for decoding encoded data Ec having a bit node and a check node to generate decoded data. Ed also ensures the correctness of the decoded data Ec. The encoded data Ec is formed by encoding the original data (not shown) through an encoder. However, there are techniques commonly used in error correction codes for bit nodes and check nodes, which are generally known to those skilled in the art, and therefore will not be described herein. It is to be noted that, in the embodiment of the present invention, the decoder 1 adopts a Quasi Cyclic-Low Density Parity-Check (QC-LDPC) as an implementation manner.

解碼器1包括接收單元10、計算模組11、記憶體12以及切換單元13。計算模組包括運算單元111-1、111-2、...、111-k以及位移單元112-1、111-2、...、111-k,記憶體包括記憶單元121-1、121-2、...、121-n。計算模組11耦接於接收單元10,以及記憶體12耦接於計算模組11。記憶體12以及切換單元13耦接於計算模組11。 The decoder 1 includes a receiving unit 10, a computing module 11, a memory 12, and a switching unit 13. The computing module includes arithmetic units 111-1, 111-2, ..., 111-k and displacement units 112-1, 111-2, ..., 111-k, and the memory includes memory units 121-1, 121 -2,...,121-n. The computing module 11 is coupled to the receiving unit 10 , and the memory 12 is coupled to the computing module 11 . The memory 12 and the switching unit 13 are coupled to the computing module 11 .

接收單元10用以接收並暫存編碼資料Ec,並將編碼資料Ec之位元節點初始化以提供解碼器1進行解碼。在本實施例中,接收單元10係以對數似然比(log likelihood ratio,簡稱LLR)來初始化編碼資料Ec中的位元節點,使得編碼資料Ec符合低密度奇偶校驗碼的計算模組11中演算法模型,而得以在計算模組11之中進行運算。而接收單元10亦可以其他方式(如正規化(normalization))來初始化編碼資料Ec中的位元節點,本發明並不對此作限制。另外,在本發明實施例中,接收單元10可以為暫存器(Register),具有限存貯容量的高速存貯元件,用以暫存指令、資料和位址。在解碼器1中,暫存器是記憶體階層中的最頂端,也是系統操作資料的最快途徑。暫存器通常都是以他們可以保存的位元數量來估量,例如8位元暫存器或是32位元暫存器。在本發明實施例中,暫存器通常以暫存器陣列的方式實作,但其亦可 以使用單獨的正反器、高速核心記憶體、薄膜記憶體以及在數種機器上的其他方式來實作,本發明並不以此做為限制。 The receiving unit 10 is configured to receive and temporarily store the encoded data Ec, and initialize the bit node of the encoded data Ec to provide the decoder 1 for decoding. In this embodiment, the receiving unit 10 initializes the bit node in the encoded data Ec by a log likelihood ratio (LLR), so that the encoded data Ec conforms to the low density parity check code calculation module 11 The algorithm model is modeled and the calculations are performed in the calculation module 11. The receiving unit 10 can also initialize the bit nodes in the encoded data Ec in other manners, such as normalization, which is not limited by the present invention. In addition, in the embodiment of the present invention, the receiving unit 10 may be a register, and has a high-speed storage component with a limited storage capacity for temporarily storing instructions, data, and addresses. In decoder 1, the scratchpad is the topmost level in the memory hierarchy and is the fastest way to manipulate data in the system. Scratches are usually estimated by the number of bits they can hold, such as an 8-bit scratchpad or a 32-bit scratchpad. In the embodiment of the present invention, the temporary register is usually implemented in the form of a register array, but it can also The invention is practiced using a separate flip-flop, high speed core memory, thin film memory, and other means on several machines, and the invention is not limited thereto.

計算模組11用以對接收單元10所接收之編碼資料Ec進行運算。更仔細地說,計算模組11對具有位元節點及查核節點的低密度奇偶校驗碼之編碼資料進行解碼。當計算模組11接收到編碼資料Ec時,將編碼資料Ec分割為n個第一位元串,其中每一個第一位元串為k位元之長度。 The calculation module 11 is configured to calculate the encoded data Ec received by the receiving unit 10. More specifically, the computing module 11 decodes the encoded data of the low density parity check code having the bit node and the check node. When the computing module 11 receives the encoded data Ec, the encoded data Ec is divided into n first bit strings, wherein each first bit string is a length of k bits.

運算單元111-i分別用以計算上述計算模組11切割後的n個第一位元串中的第i個位元,並產生第二位元串,其中k、n≧1,且為整數,其中i=1~k的整數。所有運算單元111-1、111-2、...、111-k同時計算自n個第一位元串接收的n個位元並產生第二位元串。也就是說,每一個運算單元111-1、111-2、...、111-k從每一個第一位元串分別收集第1~k個位元,因此第二位元串之字串長度為n。舉例來說,計算模組11將編碼資料Ec切割為15個第一位元串,而每一第一位元串為16位元。運算單元111-1接收每一個第一位元串中的第1個位元進行運算,亦即運算單元111-1接收並運算一組15個位元之長度的字串。同樣地,運算單元111-2接收每一個第一位元串中的第2個位元進行運算,亦即運算單元111-2接收並運算另一組15個位元之長度的字串,以此類推。在本發明實施例中,運算單元111-1、111-2、...、111-k可以是中央處理器(Central Process Unit,CPU)、微控制處理器(Micro Control Unit,MCU)或其他具有計算功能之元件,本發明並不以此做為限制。 The operation unit 111-i is respectively configured to calculate the i-th bit in the n first bit strings cut by the calculation module 11 and generate a second bit string, where k, n≧1, and are integers , where i=1~k is an integer. All of the arithmetic units 111-1, 111-2, ..., 111-k simultaneously calculate n bits received from the n first bit strings and generate a second bit string. That is, each of the arithmetic units 111-1, 111-2, ..., 111-k collects the first to kth bits from each of the first bit strings, and thus the string of the second bit string The length is n. For example, the computing module 11 cuts the encoded material Ec into 15 first bit strings, and each first bit string is 16 bits. The arithmetic unit 111-1 receives the first bit in each of the first bit strings for operation, that is, the arithmetic unit 111-1 receives and operates a string of a length of 15 bits. Similarly, the operation unit 111-2 receives the second bit in each of the first bit strings to perform an operation, that is, the operation unit 111-2 receives and calculates another string of the length of 15 bits, This type of push. In the embodiment of the present invention, the operation units 111-1, 111-2, ..., 111-k may be a Central Process Unit (CPU), a Micro Control Unit (MCU) or the like. The components having the computing function are not limited by the invention.

位移單元112-1、112-2、...、112-n用以將位元串進行位移。每一位移單元一對多耦接於每一該運算單元111-1、111-2、...、111-k。每一位移單元112-1、112-2、...、112-n將所接收之所有第二位元串之第1~n個位元收集產生第三位元串,並將第三位元串進行位移。其中,第三位元串之字串長度與第一位元串之字串長 度相同為k。在本發明實施例中,位移單元112-1、112-2、...、112-n位移之位元數,依照使用者於實務上之設定,本發明並不以此做為限制。 The displacement units 112-1, 112-2, ..., 112-n are used to shift the bit string. Each of the displacement units is coupled to each of the operation units 111-1, 111-2, . . . , 111-k. Each of the shifting units 112-1, 112-2, ..., 112-n collects the first to nth bits of all the received second bit strings to generate a third bit string, and the third bit The metastring is displaced. Wherein the length of the string of the third bit string is longer than the string of the first bit string The degree is the same as k. In the embodiment of the present invention, the number of bits of the displacement units 112-1, 112-2, ..., 112-n is not limited by the user according to the practical setting of the user.

記憶體12用以儲存計算模組11於計算過程所需儲存之資訊。更仔細地說,解碼器於計算低密度奇偶校驗碼時,係以疊代之方式重複進行計算,因此,每一次之計算之結果透過記憶體12進行儲存。在本發明實施例中,記憶體12可以是利用快閃記憶體晶片、唯讀記憶體晶片或隨機存取記憶體晶片等揮發性或非揮發性記憶晶片來實現,但本實施例並不以此為限。進一步地說,解碼器1以循環矩陣為單位分成記憶區塊(memory block),亦即記憶體12包括多個記憶單元121-1、121-2、...、121-n。每一記憶單元耦接於位移單元,用以分別儲存每一位移單元位移後的第三位元串。記憶單元121-1、121-2、...、121-n之位元儲存空間大於或等於編碼資料Ec之字串長度,且位元儲存空間具有多組字串儲存列,其中每一字串儲存列所能儲存之位元數大於或等於k個運算單元之數目。值得一提的是,當每一字串儲存列所能儲存的位元數等於k個運算單元之數目時,解碼器能達到最佳的成本效益。另一方面,記憶體12亦可包含未使用之記憶單元(圖未示)。更仔細地說,記憶體12實際上包括m個記憶單元(m≧n≧1),而在本發明實施例中僅使用記憶單元121-1、121-2、...、121-n提供運算時儲存,而其他m-n個並未使用。或者是,在其他實施例中,亦可選擇地從m個記憶單元挑n個記憶單元進行使用,而m-n個於當下運算時並未使用,本發明並不以此做為限制。 The memory 12 is used to store information that the computing module 11 needs to store during the calculation process. More specifically, when the decoder calculates the low density parity check code, the calculation is repeated in an iterative manner, so that the result of each calculation is stored through the memory 12. In the embodiment of the present invention, the memory 12 may be implemented by using a volatile or non-volatile memory chip such as a flash memory chip, a read-only memory chip or a random access memory chip, but the embodiment does not This is limited. Further, the decoder 1 is divided into memory blocks in units of a cyclic matrix, that is, the memory 12 includes a plurality of memory units 121-1, 121-2, ..., 121-n. Each memory unit is coupled to the displacement unit for respectively storing the third bit string after the displacement of each displacement unit. The bit storage space of the memory unit 121-1, 121-2, ..., 121-n is greater than or equal to the string length of the encoded data Ec, and the bit storage space has a plurality of string storage columns, wherein each word The number of bits that can be stored in the string storage column is greater than or equal to the number of k arithmetic units. It is worth mentioning that the decoder can achieve the best cost-effectiveness when the number of bits that can be stored in each string storage column is equal to the number of k arithmetic units. On the other hand, the memory 12 can also include unused memory cells (not shown). More specifically, the memory 12 actually includes m memory cells (m≧n≧1), and is only provided by the memory cells 121-1, 121-2, ..., 121-n in the embodiment of the present invention. Stored while computing, while other mn are not used. Alternatively, in other embodiments, n memory cells may be selectively used from m memory cells for use, and m-n are not used in the current operation, and the present invention is not limited thereto.

切換單元13用以將訊息傳遞(Message passing)切換為計算模式或接收模式。當計算模組11接收到來自接收單元10之編碼資料Ec時,切換單元13切換為計算模式,而計算模組11開始執行循環低密度奇偶校驗碼之疊代計算,並根據使用者所設定之預設計算次數或徵狀測試(Syndrome Text),判斷是否結束或停止計 算。當停止計算後,切換單元13則切換至接收模式,使接收單元10提供下一編碼資料Ec給計算模組11繼續計算。 The switching unit 13 is configured to switch the message passing to the computing mode or the receiving mode. When the computing module 11 receives the encoded data Ec from the receiving unit 10, the switching unit 13 switches to the computing mode, and the computing module 11 begins to perform the iterative calculation of the cyclic low-density parity check code, and is set according to the user. Preset calculations or Syndrome Text to determine whether to end or stop counting Count. When the calculation is stopped, the switching unit 13 switches to the receiving mode, so that the receiving unit 10 provides the next encoded data Ec to the computing module 11 to continue the calculation.

接著,請參閱圖2,圖2為本發明實施例之循環校驗矩陣區塊分割示意圖。本發明實施例所提出之解碼器以循環校驗矩陣H之架構,其中Np*Mp校驗矩陣以區塊(Block)p*p為單元,每個區塊居有單位矩陣循環位移(Cyclic Shifts)特性,每個區塊的循環位移均不同。每一列之區塊分別以不同之記憶單元121-1、121-2、...、121-n來儲存其計算結果。舉例來說,使用者可使用一個1024*512的循環校驗矩陣H,其中每一個區塊大小為32*32。因此,1024/32需要32個記憶單元(亦即前述的記憶區塊)。然而,有關更詳細之循環校驗矩陣特性為所屬技術領域具通常知識者,在錯誤更正碼中常用的技術,故在此不再贅述。 Next, please refer to FIG. 2. FIG. 2 is a schematic diagram of partitioning of a loop check matrix block according to an embodiment of the present invention. The decoder proposed by the embodiment of the present invention adopts a structure of a cyclic check matrix H, wherein the Np*Mp check matrix is in units of blocks p*p, and each block has a unit matrix cyclic shift (Cyclic Shifts). Characteristics, the cyclic displacement of each block is different. The blocks of each column store their calculation results in different memory units 121-1, 121-2, ..., 121-n, respectively. For example, the user can use a 1024*512 loop check matrix H, where each block size is 32*32. Therefore, 1024/32 requires 32 memory cells (ie, the aforementioned memory blocks). However, the more detailed loop check matrix characteristics are those commonly used in the art, and are commonly used in error correction codes, and therefore will not be described herein.

請同時參閱圖1以及圖3,圖3為本發明實施例之低密度奇偶校驗碼之解碼器運算過程示意圖。在本發明實施例之低密度奇偶校驗碼解碼器1的解碼過程中,於計算模組11進行疊代之計算。並將每一次循環校驗矩陣之記憶區塊的計算結果儲存至記憶單元121-1、121-2、...、121-n中,並重複進行計算。 Please refer to FIG. 1 and FIG. 3 simultaneously. FIG. 3 is a schematic diagram of the operation process of the decoder of the low density parity check code according to the embodiment of the present invention. In the decoding process of the low density parity check code decoder 1 of the embodiment of the present invention, the calculation of the iteration is performed in the calculation module 11. The calculation result of the memory block of each loop check matrix is stored in the memory units 121-1, 121-2, ..., 121-n, and the calculation is repeated.

更仔細地說,在重複計算的過程中,計算模組11從記憶體12中的各個記憶單元121-1、121-2、...、121-n讀取前次所儲存之第三位元串。接著,運算單元111-1、111-2、...、111-k分別用以計算所讀取之n個第三位元串中的第1~k個位元,並產生新的第二位元串,其中新的第二位元串之長度為n。然後,每一位移單元112-1、112-2、...、112-n將所接收之所有第二位元串之第1~n個位元收集產生新的第三位元串,並將新的第三位元串進行位移。最後,再次將新的第三位元串分別儲存於原本之記憶單元121-1、121-2、...、121-n中,以提供下一次疊代計算,直到計算模組11達到預設計算次數或徵狀測試為零時停止,並輸出解碼資料Ed。 More specifically, in the process of repeating the calculation, the calculation module 11 reads the third bit stored last time from the respective memory units 121-1, 121-2, ..., 121-n in the memory 12. Yuan string. Next, the arithmetic units 111-1, 111-2, ..., 111-k are respectively used to calculate the 1st to kth bits in the read n third bit strings, and generate a new second A bit string in which the length of the new second bit string is n. Then, each of the shifting units 112-1, 112-2, ..., 112-n collects the first to nth bits of all the received second bit strings to generate a new third bit string, and The new third bit string is shifted. Finally, the new third bit string is again stored in the original memory unit 121-1, 121-2, ..., 121-n to provide the next iterative calculation until the computing module 11 reaches the pre-up The design count or the symptom test is stopped at zero, and the decoded data Ed is output.

請參閱圖4,圖4為本發明實施例之低密度奇偶校驗碼之解碼 方法流程圖。本發明實施例之解碼方法包括以下步驟:步驟S101,接收編碼資料,並進行初始化;步驟S103,根據記憶單元個數將編碼資料分割為多個第一位元串;步驟S105,每一第一位元串的第i個位元於運算單元111-i中進行計算並產生第二位元串;步驟S107,運算單元111-1、111-2、...、111-k運算後,將每一第二位元串中之每一第j個位元傳送至位移單元111-j後產生第三位元串,並將第三位元串進行位移;步驟S109,檢查計算次數是否達到預設計算次數或徵狀測試為零;步驟S111,分別將n個第三位元串儲存於對應耦接之記憶單元121-1、121-2、...、121-n;步驟S113,切換為接收模式,接收下一個編碼資料。 Please refer to FIG. 4. FIG. 4 is a decoding of a low density parity check code according to an embodiment of the present invention. Method flow chart. The decoding method of the embodiment of the present invention includes the following steps: Step S101, receiving encoded data, and performing initialization; Step S103, dividing the encoded data into a plurality of first bit strings according to the number of memory cells; and step S105, each first The i-th bit of the bit string is calculated in the operation unit 111-i and generates a second bit string; in step S107, after the operation units 111-1, 111-2, ..., 111-k are operated, Each of the j-th bit in each second bit string is transmitted to the displacement unit 111-j to generate a third bit string, and the third bit string is shifted; in step S109, it is checked whether the number of calculations reaches the pre-predetermined The design calculation number or the symptom test is zero; in step S111, the n third bit strings are respectively stored in the correspondingly coupled memory units 121-1, 121-2, ..., 121-n; in step S113, the switch In the receive mode, the next encoded data is received.

請同時參閱圖1、圖3與圖4。在步驟S101中,接收單元10接收並暫存編碼資料Ec,進一步將編碼資料Ec之位元節點初始化以提供解碼器1進行解碼。在步驟S103中,當計算模組11接收到編碼資料Ec時,將編碼資料Ec分割為n個第一位元串,其中每一個第一位元串為k位元。 Please also refer to Figure 1, Figure 3 and Figure 4. In step S101, the receiving unit 10 receives and temporarily stores the encoded material Ec, and further initializes the bit node of the encoded data Ec to provide the decoder 1 for decoding. In step S103, when the calculation module 11 receives the encoded data Ec, the encoded data Ec is divided into n first bit strings, wherein each first bit string is k bits.

在步驟S105中,運算單元111-1、111-2、...、111-k分別用以計算上述計算模組11切割後的每一個第一位元串中的第1~k個位元,並產生第二位元串,其中k、n≧1,且為整數。值得一提的是,所有運算單元111-1、111-2、...、111-k係同時計算所有自n個第一位元串的n個位元並產生第二位元串。舉例來說,計算模組11將編碼資料Ec切割為15個第一位元串,而每一第一位元串為16位元。運算單元111-1接收每一個第一位元串中的第1個位元進行運算,亦即運算單元111-1接收並運算一組15長度的第二位元串。同樣地,運算單元111-2接收每一個第一位元串中的第2個位元進行運算,亦即運算單元111-2接收並運算另一組15長度的第二位元串,以此類推。而上述所有運算單元之運算動作係同時進行處理地。 In step S105, the computing units 111-1, 111-2, ..., 111-k are respectively used to calculate the first to kth bits in each of the first bit strings cut by the computing module 11 And produces a second bit string, where k, n ≧ 1, and is an integer. It is worth mentioning that all of the arithmetic units 111-1, 111-2, ..., 111-k simultaneously calculate all n bits from the n first bit strings and generate a second bit string. For example, the computing module 11 cuts the encoded material Ec into 15 first bit strings, and each first bit string is 16 bits. The arithmetic unit 111-1 receives the first bit in each of the first bit strings for operation, that is, the arithmetic unit 111-1 receives and operates a set of 15 bit length second bit strings. Similarly, the operation unit 111-2 receives the second bit in each of the first bit strings for operation, that is, the operation unit 111-2 receives and calculates another set of 15 second bit strings of length analogy. The arithmetic operations of all the above arithmetic units are simultaneously processed.

在步驟S107中,運算單元111-1、111-2、...、111-k運算後, 將每一第二位元串中之每一第j個位元傳送至位移單元111-j後產生第三位元串,並將第三位元串進行位移。值得一提的是,每一個位移單元之位移可依照使用者實際使用情況進行設定。 In step S107, after the arithmetic units 111-1, 111-2, ..., 111-k are operated, Each of the j-th bit in each second bit string is transmitted to the displacement unit 111-j to generate a third bit string, and the third bit string is shifted. It is worth mentioning that the displacement of each displacement unit can be set according to the actual usage of the user.

在步驟S109中,計算模組11檢查疊代之計算次數是否達到使用者所預設計算次數或徵狀測試為零。若計算模組11判斷為是,則輸出解碼資料Ed並進入步驟S113。若計算模組11判斷為否,則進入步驟S111。 In step S109, the calculation module 11 checks whether the number of calculations of the iterations reaches the number of calculations preset by the user or the symptom test is zero. If the calculation module 11 determines YES, the decoded data Ed is output and the process proceeds to step S113. If the calculation module 11 determines NO, the process proceeds to step S111.

在步驟S111中,將位移後之第j個第三位元串分別儲存於對應耦接之記憶單元121-j中,以提供下次疊代計算。值得一提的是,記憶單元121-1、121-2、...、121-n之位元儲存空間大於或等於編碼資料Ec之字串長度,且位元儲存空間具有多組字串儲存列,其中每一字串儲存列所能儲存之位元數大於或等於k個運算單元之數目。 In step S111, the shifted jth third bit string is separately stored in the corresponding coupled memory unit 121-j to provide the next iterative calculation. It is worth mentioning that the bit storage space of the memory units 121-1, 121-2, ..., 121-n is greater than or equal to the string length of the encoded data Ec, and the bit storage space has multiple sets of string storage. A column in which the number of bits that can be stored in each string storage column is greater than or equal to the number of k arithmetic units.

在步驟S113中,當計算模組11判斷達停止計算之條件並輸出解碼資料Ed後,切換單元13則切換至接收模式,使接收單元10提供下一編碼資料Ec給計算模組11繼續新的解碼計算。 In step S113, when the calculation module 11 determines that the condition for stopping the calculation is reached and outputs the decoded data Ed, the switching unit 13 switches to the receiving mode, so that the receiving unit 10 provides the next encoded data Ec to the computing module 11 to continue the new one. Decoding calculation.

〔本發明可能之功效〕 [The possible effects of the invention]

綜上所述,透過本發明實施例所提出之低密度奇偶校驗碼之解碼器及其解碼方法,能夠避免傳統使用低密度奇偶校驗碼之解碼器在寫入與讀取的過程中所造成的資料碰撞。另一方面,在本發明所提出之解碼器架構下,透過將記憶體以循環矩陣為單位分成記憶區塊(memory block)的平行架構設計,提高低密度奇偶校驗碼解碼器運算的平行度,更能夠以一個切換網路的方式取代傳統解碼器在進行計算時,寫入與讀取都各須使用切換網路的情況,並簡化傳統上所使用之位元節點單元(bit node unit),且能夠達到避免資料碰撞之效果,並進一步縮短運算時間。整體來說,本發明有效改善低密度奇偶校驗碼雖然具有高解碼之能力但成本過高之問題,有效降低整體解碼器之成本。 In summary, the decoder for low-density parity check code proposed by the embodiment of the present invention and the decoding method thereof can avoid the conventional decoder using low-density parity check code in the process of writing and reading. The resulting data collided. On the other hand, in the decoder architecture proposed by the present invention, the parallelism of the operation of the low density parity check code decoder is improved by dividing the memory into a parallel architecture of a memory block in units of a cyclic matrix. It is also possible to replace the traditional decoder with a switching network. When performing calculations, both writing and reading must use a switching network, and simplify the bit node unit that is conventionally used. And can achieve the effect of avoiding data collision and further shorten the calculation time. In general, the present invention effectively improves the low-density parity check code, although it has the capability of high decoding but is costly, and effectively reduces the cost of the overall decoder.

以上所述,僅為本發明最佳之具體實施例,惟本發明之特徵並不侷限於此,任何熟悉該項技藝者在本發明之領域內,可輕易思及之變化或修飾,皆可涵蓋在以下本案之專利範圍。 The above description is only the preferred embodiment of the present invention, but the features of the present invention are not limited thereto, and any one skilled in the art can easily change or modify it in the field of the present invention. Covered in the following patent scope of this case.

111-1、111-2、...、111-k‧‧‧運算單元 111-1, 111-2, ..., 111-k‧‧‧ arithmetic unit

112-1、112-2、...、112-n‧‧‧位移單元 112-1, 112-2, ..., 112-n‧‧‧ displacement unit

121-1、121-2、...、121-n‧‧‧記憶單元 121-1, 121-2, ..., 121-n‧‧‧ memory unit

Claims (11)

一種低密度奇偶校驗碼(Low Density Parity Check Code,LPDC)之解碼器,用以對具有多個位元節點及多個查核節點的一編碼資料進行解碼,該解碼器包括:一計算模組,將該編碼資料分割為n個第一位元串,該計算模組包括:k個運算單元,第i個該運算單元計算該些第一位元串中的第i個位元並產生一第二位元串,其中i=1至k的整數;及n個位移單元,分別一對多耦接於該k個運算單元,第j個位移單元將所接收之該些第二位元串之第j個位元產生一第三位元串,並將該第三位元串位移,其中j=1至n的整數;以及一記憶體,耦接於該計算模組,包括:n個記憶單元,耦接於該n個位移單元,用以分別儲存位移後的該些第三位元串;其中k、n≧1,且為整數。 A Low Density Parity Check Code (LPDC) decoder for decoding an encoded data having a plurality of bit nodes and a plurality of check nodes, the decoder comprising: a computing module Dividing the coded data into n first bit strings, the calculation module includes: k operation units, the i-th operation unit calculates the i-th bit in the first bit strings and generates one a second bit string, wherein i = 1 to an integer of k; and n displacement units, one to more coupled to the k operation units, the jth displacement unit to receive the second bit strings The third bit string generates a third bit string, and the third bit string is shifted, wherein j=1 to n an integer; and a memory coupled to the computing module, including: n The memory unit is coupled to the n displacement units for respectively storing the shifted third bit strings; wherein k, n≧1, and is an integer. 如請求項1所述之低密度奇偶校驗碼之解碼器,更包括:一接收單元,接收該編碼資料,並將該編碼資料之該些位元節點初始化。 The decoder of the low density parity check code according to claim 1, further comprising: a receiving unit, receiving the encoded data, and initializing the bit nodes of the encoded data. 如請求項2所述之低密度奇偶校驗碼之解碼器,其中該計算模組根據一預設計算次數或一徵狀測試判斷是否停止計算。 The decoder of the low density parity check code of claim 2, wherein the computing module determines whether to stop the calculation according to a preset number of calculations or a symptom test. 如請求項1所述之低密度奇偶校驗碼之解碼器,更包括:一切換單元,耦接於該計算模組,將訊息傳遞(Message passing)切換為一計算模式或一接收模式。 The decoder of the low-density parity check code of claim 1, further comprising: a switching unit coupled to the computing module to switch the message passing into a computing mode or a receiving mode. 如請求項1所述之低密度奇偶校驗碼之解碼器,其中該低密度奇偶校驗碼為一循環低密度奇偶校驗碼(Quasi Cyclic-Low Density Parity Check,QC-LDPC)。 The decoder of the low density parity check code of claim 1, wherein the low density parity check code is a Quasi Cyclic-Low Density Parity Check (QC-LDPC). 如請求項1所述之低密度奇偶校驗碼之解碼器,其中該些記憶單元之一位元儲存空間大於或等於該編碼資料之字串長度,且 該位元儲存空間具有多組字串儲存列。 The decoder of the low density parity check code of claim 1, wherein one of the memory cells has a bit storage space greater than or equal to a string length of the encoded data, and The bit storage space has a plurality of sets of string storage columns. 如請求項6所述之低密度奇偶校驗碼之解碼器,其中每一該字串儲存列所能儲存之位元數大於或等於該k個運算單元之數目。 The decoder of low density parity check code as claimed in claim 6, wherein the number of bits that can be stored in each of the string storage columns is greater than or equal to the number of the k operation units. 如請求項1所述之低密度奇偶校驗碼之解碼器,其中該些運算單元同時計算該些第一位元串並產生該第二位元串。 A decoder for low density parity check code as claimed in claim 1, wherein the arithmetic units simultaneously calculate the first bit strings and generate the second bit string. 如請求項1所述之低密度奇偶校驗碼之解碼器,其中該第一位元串與該第三位元串之字串長度為k。 A decoder for low density parity check code as claimed in claim 1, wherein the first bit string and the third bit string have a string length of k. 如請求項1所述之低密度奇偶校驗碼之解碼器,其中該第二位元串之字串長度為n。 A decoder for low density parity check code as claimed in claim 1, wherein the second bit string has a string length of n. 一種低密度奇偶校驗碼之解碼方法,用於對具有多個位元節點及多個查核節點的一編碼資料進行解碼,該解碼方法包括:將該編碼資料分割為n個第一位元串;藉由k個運算單元分別計算該n個第一位元串中的第1至k個位元並產生k個第二位元串;藉由n個位移單元將所分別接收之該k個第二位元串之第1至n個位元產生n個第三位元串,並將該些第三位元串位移;以及分別儲存位移後的該些第三位元串於n個記憶單元;其中k、n≧1,且為整數。 A decoding method for a low-density parity check code, configured to decode an encoded data having a plurality of bit nodes and a plurality of check nodes, the decoding method comprising: dividing the encoded data into n first bit strings Calculating the first to kth bits of the n first bit strings by k arithmetic units and generating k second bit strings; the k received by the n displacement units respectively The first to nth bits of the second bit string generate n third bit strings, and the third bit strings are shifted; and the shifted third bit strings are respectively stored in n memories Unit; where k, n≧1, and is an integer.
TW103116546A 2014-05-09 2014-05-09 Low density parity-check code decoder and decoding method thereof TWI547103B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW103116546A TWI547103B (en) 2014-05-09 2014-05-09 Low density parity-check code decoder and decoding method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103116546A TWI547103B (en) 2014-05-09 2014-05-09 Low density parity-check code decoder and decoding method thereof

Publications (2)

Publication Number Publication Date
TW201543824A TW201543824A (en) 2015-11-16
TWI547103B true TWI547103B (en) 2016-08-21

Family

ID=55221044

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103116546A TWI547103B (en) 2014-05-09 2014-05-09 Low density parity-check code decoder and decoding method thereof

Country Status (1)

Country Link
TW (1) TWI547103B (en)

Also Published As

Publication number Publication date
TW201543824A (en) 2015-11-16

Similar Documents

Publication Publication Date Title
US8880987B2 (en) Checksum using sums of permutation sub-matrices
TWI517173B (en) Apparatuses and methods of updating reliability data
US9673840B2 (en) Turbo product codes for NAND flash
US9748973B2 (en) Interleaved layered decoder for low-density parity check codes
US20140223255A1 (en) Decoder having early decoding termination detection
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US10103748B2 (en) Decoding method, memory control circuit unit and memory storage device
Ho et al. A 45nm 6b/cell charge-trapping flash memory using LDPC-based ECC and drift-immune soft-sensing engine
KR20150073717A (en) Storage device and data encoding and decoding methods thereof
US11082069B1 (en) Decoding scheme for error correction code structure in data storage devices
US9553608B2 (en) Data storage device decoder and method of operation
US20170214415A1 (en) Memory system using integrated parallel interleaved concatenation
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
EP2992429B1 (en) Decoder having early decoding termination detection
US10289348B2 (en) Tapered variable node memory
CN109935263B (en) Encoding and decoding method of nonvolatile memory and storage system
KR101320684B1 (en) Encoding, decoding, and multi-stage decoding circuits and methods for concatenated bch code, error correct circuit of flash memory device using the same, and flash memory device using the same
TWI547103B (en) Low density parity-check code decoder and decoding method thereof
US9619317B1 (en) Decoder having early decoding termination detection
TWI551058B (en) Decoder and decoding method thereof for min-sum algorithm of low density parity-check code
CN108170554B (en) NAND data coding method and device
US9577672B2 (en) Low density parity-check code decoder and decoding method thereof
US10673465B2 (en) Memory controller, memory system, and control method
KR101355982B1 (en) Encoding, decoding, and multi-stage decoding circuits and methods for concatenated bch code, error correct circuit of flash memory device using the same, and flash memory device using the same