TWI898775B - Ldpc decoder and minimum value searching method - Google Patents
Ldpc decoder and minimum value searching methodInfo
- Publication number
- TWI898775B TWI898775B TW113129834A TW113129834A TWI898775B TW I898775 B TWI898775 B TW I898775B TW 113129834 A TW113129834 A TW 113129834A TW 113129834 A TW113129834 A TW 113129834A TW I898775 B TWI898775 B TW I898775B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- minimum value
- vector
- hot
- vectors
- Prior art date
Links
Landscapes
- Error Detection And Correction (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
本發明是有關於通訊解碼技術,特別是指一種LDPC解碼器及最小值搜尋方法。The present invention relates to communication decoding technology, and more particularly to an LDPC decoder and a minimum value search method.
低密度奇偶校驗(Low-Density Parity-Check,LDPC)編碼用於被動光纖網路(Passive Optical Network,PON)、乙太網路和其他資料通訊協定的錯誤更正碼,因為低密度奇偶校驗的糾錯能力相當接近理論最大值,即香農(Shannon)極限。用於執行解碼和糾錯的一種常見演算法是最小和(min-sum)演算法。Low-Density Parity-Check (LDPC) coding is used as an error-correcting code in Passive Optical Networks (PONs), Ethernet, and other data communication protocols because its error correction capability is very close to the theoretical maximum, known as the Shannon limit. A common algorithm used for decoding and error correction is the min-sum algorithm.
最小和引擎的一種實現方式是,將當前最小值與一個待比較值比較出新的最小值,如此迭代地完成所有待比較值的比較。然而,這種方法(使用線性最小值比較/多工器)相當緩慢,因為每次比較均需要一比較器和一多工器才能完成計算,因而需要與待比較值的數量成線性關係的數量的比較器和多工器。One way to implement a min-sum engine is to compare the current minimum value with a value to be compared, and then iterate over all the values to be compared. However, this approach (using linear minimum comparison/multiplexers) is quite slow because each comparison requires a comparator and a multiplexer to complete the calculation, thus requiring a number of comparators and multiplexers that scales linearly with the number of values to be compared.
另一種最小和引擎的實現方式是,以樹狀方式將每兩個待比較值比較出一最小值(第一層),該些最小值中每兩個再進行比較(第二層),如此執行樹縮減至最終結果。此方法(使用樹狀最小值比較/多工器)雖比第一種方法(使用線性最小值比較/多工器)快,但樹狀結構導致需要待比較值數量的二進制對數(log-base-2)數量的層。例如,17~32個待比較值將需要五層的比較器和多工器。層之間的流水線化(pipeline)無助於加快運算速度,因為最終結果需要用於下一輪計算。如果樹被流水線化,樹的第一階段必須等到樹的最後一階段完成第一輪迭代才能開始第二輪迭代。因此,總體計算時間仍然相同。Another way to implement a min-sum engine is to compare every two values to find a minimum (the first level), then compare every other pair of these minimums again (the second level), and so on, reducing the tree to the final result. While this method (using a tree-like minimum comparison/multiplexer) is faster than the first method (using a linear minimum comparison/multiplexer), the tree structure requires a number of layers equal to the log-base-2 number of values to be compared. For example, 17 to 32 values to be compared would require five layers of comparators and multiplexers. Pipelining between layers does not speed up the operation, as the final result must be used in the next round of calculations. If the tree is pipelined, the first stage of the tree must wait until the last stage of the tree completes its first iteration before it can start its second iteration. Therefore, the overall computation time remains the same.
有鑑於此,本發明一實施例提出一種LDPC解碼器及一種(使用線性最小值比較/多工器)方法,透過扁平結構來執行計算,可提高計算的速度。In view of this, an embodiment of the present invention proposes an LDPC decoder and a method (using linear minimum comparison/multiplexer) that performs calculations through a flat structure to increase the calculation speed.
有鑑於此,本發明一實施例提出了一種LDPC解碼器和LDPC解碼方法(使用扁平化最小和計算引擎(flattened min-sum computation engine)),該方法透過將集合中的所有數值扁平化為獨熱向量(one-hot vectors)來一次性對所有數值進行選擇並優先解碼出最小值,來達到減少總體計算時間。以解決使用線性或樹狀的方式迭代地比較兩個數值所導致總體計算時間過長的問題。In light of this, one embodiment of the present invention proposes an LDPC decoder and LDPC decoding method (using a flattened min-sum computation engine). This method reduces overall computation time by flattening all values in a set into one-hot vectors, selecting all values at once and prioritizing decoding the minimum value. This solves the problem of excessively long computation time caused by iteratively comparing two values using a linear or tree-like approach.
LDPC解碼器包括一儲存單元及至少一運算引擎。儲存單元儲存一LDPC矩陣。運算引擎執行一LDPC解碼演算法,以根據LDPC矩陣對一碼字估算出一解碼結果。其中運算引擎包括一最小值搜尋單元,以在LDPC解碼演算法執行到一最小值搜尋演算時,根據複數輸入值輸出一最小值搜尋結果。最小值搜尋單元係執行:將此些輸入值轉換為複數獨熱向量,每一獨熱向量具有複數獨熱位元,在同一獨熱向量中的此些獨熱位元分別對應不重複的一獨熱位元索引;建立複數第一向量,每一第一向量不重複地對應於此些獨熱位元索引中的一目標位元索引,且每一第一向量呈現此些獨熱向量中在目標位元索引上的此些獨熱位元間執行或運算的結果;及根據此些獨熱位元索引,由低位元至高位元,對此些第一向量優先解碼出一最小值,此最小值為第一個其值為「1」的第一向量所對應的目標位元索引,其中最小值搜尋結果包括此最小值。The LDPC decoder includes a storage unit and at least one computation engine. The storage unit stores an LDPC matrix. The computation engine executes an LDPC decoding algorithm to estimate a decoding result for a codeword based on the LDPC matrix. The computation engine includes a minimum search unit that outputs a minimum search result based on multiple input values when the LDPC decoding algorithm performs a minimum search operation. The minimum search unit performs the following operations: converting the input values into a plurality of Sudoku vectors, each Sudoku vector having a plurality of Sudoku bits, wherein the Sudoku bits in the same Sudoku vector correspond to non-repeating one-hot bit indices; creating a plurality of first vectors, each of which corresponds to a target bit index in the one-hot bit indices, and each of which represents the result of performing or operating on the one-hot bits at the target bit indices in the one-hot vectors; and decoding the first vectors, based on the one-hot bit indices, from low bit to high bit, to obtain a minimum value. The minimum value is the target bit index corresponding to the first first vector whose value is "1", wherein the minimum search result includes the minimum value.
最小值搜尋方法由LDPC解碼器執行,適於根據複數輸入值輸出一最小值搜尋結果。最小值搜尋方法包括:將此些輸入值轉換為複數獨熱向量,每一獨熱向量具有複數獨熱位元,在同一獨熱向量中的此些獨熱位元分別對應不重複的一獨熱位元索引;建立複數第一向量,每一第一向量不重複地對應於此些獨熱位元索引中的一目標位元索引,且每一第一向量呈現此些獨熱向量中在目標位元索引上的此些獨熱位元間執行或運算的結果;及根據此些獨熱位元索引,由低位元至高位元,對此些第一向量優先解碼出一最小值,此最小值為第一個其值為「1」的第一向量所對應的目標位元索引,其中最小值搜尋結果包括此最小值。A minimum search method is performed by an LDPC decoder and is suitable for outputting a minimum search result based on multiple input values. The minimum search method includes: converting these input values into multiple Sudoku vectors, each of which has multiple Sudoku bits, and these unique bits in the same Sudoku vector correspond to non-repeating one-hot bit indices; creating multiple first vectors, each of which corresponds to a target bit index in these one-hot bit indices, and each first vector represents the result of performing or operating on these one-hot bits at the target bit indices in these one-hot vectors; and first decoding these first vectors from low bit to high bit based on these one-hot bit indices to obtain a minimum value. This minimum value is the target bit index corresponding to the first first vector whose value is "1", and the minimum search result includes this minimum value.
根據本發明一些實施例的LDPC解碼器及一種最小值搜尋方法,透過扁平化設計可快速找出最小值、第二最小值或/及經偏移處理的最小值,可滿足高速通訊的高效解碼需求。According to some embodiments of the present invention, an LDPC decoder and a minimum search method can quickly find the minimum value, the second minimum value, and/or the minimum value after offset processing through a flat design, which can meet the efficient decoding requirements of high-speed communication.
參照圖1,係本發明一實施例之LDPC解碼器100的架構示意圖。LDPC解碼器100包括一儲存單元110及一扁平化最小和計算引擎120,以執行一LDPC解碼方法。儲存單元110儲存一LDPC矩陣200(如圖2所示)。扁平化最小和計算引擎120為具有多個運算引擎130的區塊。在獲得一碼字(codeword)140之後,運算引擎130執行一LDPC解碼演算法,以根據LDPC矩陣200對碼字140估算出一解碼結果150。運算引擎130中的一最小值搜尋單元131透過將集合中的所有數值扁平化為獨熱向量300(如圖5所示)來一次性對所有數值進行選擇並優先解碼來找出最小值,而不是以線性或樹狀的方式迭代地比較兩個數值。Referring to Figure 1, a schematic diagram of the architecture of an LDPC decoder 100 according to an embodiment of the present invention is shown. LDPC decoder 100 includes a storage unit 110 and a flattened minimum sum calculation engine 120 for executing an LDPC decoding method. Storage unit 110 stores an LDPC matrix 200 (as shown in Figure 2). Flattened minimum sum calculation engine 120 is a block having multiple computation engines 130. After obtaining a codeword 140, computation engines 130 execute an LDPC decoding algorithm to estimate a decoding result 150 for codeword 140 based on LDPC matrix 200. A minimum search unit 131 in the computation engine 130 flattens all values in the set into a one-hot vector 300 (as shown in FIG5 ) to select and decode all values at once to find the minimum value, rather than iteratively comparing two values in a linear or tree-like manner.
參照圖2,係本發明一實施例之LDPC矩陣200的部份示意圖。在此,以25G PON(被動光纖網路)使用的LDPC矩陣200為例,LDPC矩陣200是256x256子矩陣(sub-matrices)的69x12陣列構成的17664x3072稀疏矩陣(sparse matrix)。圖2所示的每一格子代表一個子矩陣。此些子矩陣為零矩陣(zero-matrix)或平移的單位矩陣(shifted identity matrix)。圖2所示LDPC矩陣200中空白的格子表示為零矩陣。圖2所示LDPC矩陣200中標示數字的格子表示為平移的單位矩陣,所示數字表示單位矩陣的平移量。舉例來說,若標示數字為“0”,表示此子矩陣為單位矩陣,若標示數字為“5”,表示此子矩陣為單位矩陣的各個橫列向右循環式位移(circular shift)5個元素。圖2僅提供一具體示例來說明本發明一實施例的LDPC矩陣200,LDPC矩陣200非以此示例的直行數量與橫列數量為限,也非限於所示例的該等子矩陣的位置與平移量。Refer to Figure 2, which is a partial schematic diagram of an LDPC matrix 200 according to an embodiment of the present invention. Taking the LDPC matrix 200 used in 25G PON (Passive Optical Network) as an example, LDPC matrix 200 is a 17664x3072 sparse matrix composed of 69x12 arrays of 256x256 sub-matrices. Each grid in Figure 2 represents a sub-matrix. These sub-matrices are either zero matrices or shifted identity matrices. The blank grids in LDPC matrix 200 shown in Figure 2 represent zero matrices. The numbered cells in LDPC matrix 200 shown in Figure 2 represent a shifted unit matrix, and the numbers indicate the amount of shift within the unit matrix. For example, a "0" indicates that the sub-matrix is the unit matrix, while a "5" indicates that the sub-matrix is a unit matrix with each row of the sub-matrix circularly shifted to the right by five elements. Figure 2 merely provides a specific example to illustrate LDPC matrix 200 according to one embodiment of the present invention. LDPC matrix 200 is not limited to the number of rows and columns shown in this example, nor is it limited to the positions and shift amounts of the sub-matrices shown in this example.
LDPC矩陣200的每一直行視為一個變量節點(variable node),該等變量節點分別與碼字140的各位元相對應。LDPC矩陣200的每一橫列視為一個校驗節點(check node),每一校驗節點對應一校驗方程式。LDPC矩陣200中為“1”的元素表示其所在橫列的校驗節點與其所在直行的變量節點具有連結關係。LDPC解碼演算法是基於有迭代性(iterative)的置信度傳播(belief propagation)演算法,變量節點與校驗節點之間透過連結互相傳遞其計算的更新資訊。Each row of LDPC matrix 200 is considered a variable node, corresponding to each bit of codeword 140. Each column of LDPC matrix 200 is considered a check node, each corresponding to a check equation. A "1" element in LDPC matrix 200 indicates that the check node in its row is linked to the variable node in its row. The LDPC decoding algorithm is based on an iterative belief propagation algorithm, where variable nodes and check nodes communicate updated information through links.
參照圖3,係本發明一實施例之LDPC解碼演算法的流程圖。步驟S31為初始化步驟,對變量節點與校驗節點的資訊進行初始化。步驟S32為校驗節點更新步驟,校驗節點根據其連結的變量節點的資訊進行更新運算。步驟S33為變量節點更新步驟,變量節點根據其連結的校驗節點的資訊進行更新運算。步驟S34為終止判斷步驟,判斷是否滿足終止條件。若是,則結束流程;若否,則返回步驟S32,繼續下一次迭代。Refer to Figure 3, which shows a flow chart of an LDPC decoding algorithm according to an embodiment of the present invention. Step S31 is an initialization step, which initializes the information of the variable node and the check node. Step S32 is a check node update step, in which the check node is updated based on the information of its linked variable node. Step S33 is a variable node update step, in which the variable node is updated based on the information of its linked check node. Step S34 is a termination determination step, which determines whether the termination condition is met. If so, the process ends; if not, the process returns to step S32 and continues to the next iteration.
參照式1及式2,係為步驟S31之初始化運算式。變量節點根據式1執行資訊初始化,校驗節點根據式2執行資訊初始化。其中,i代表迭代次數。N為變量節點總數,M為校驗節點總數。n代表第n個變量節點的編號,m代表第m個校驗節點的編號。N m代表所有與第m個校驗節點連結的變量節點的集合。M n代表所有與第n個變量節點連結的校驗節點的集合。 代表在第k次迭代中第n個變量節點傳遞給第m個校驗節點的資訊。 代表在第k次迭代中第m個校驗節點傳遞給第n個變量節點的資訊。I n代表第n個變量節點的內在資訊(intrinsic information),用來表達此變量節點所對應的碼字140的位元為1或0的事後機率(posterior probability)。∀代表任意一個,∈代表屬於。在一些實施例中,內在資訊為對數似然比(Log-Likelihood Ratio,LLR)。 Refer to Equations 1 and 2 for the initialization equations of step S31. Variable nodes perform information initialization according to Equation 1, and verification nodes perform information initialization according to Equation 2. Here, i represents the number of iterations. N is the total number of variable nodes, and M is the total number of verification nodes. n represents the number of the nth variable node, and m represents the number of the mth verification node. Nm represents the set of all variable nodes connected to the mth verification node. Mn represents the set of all verification nodes connected to the nth variable node. Represents the information passed from the nth variable node to the mth verification node in the kth iteration. represents the information transmitted by the mth check node to the nth variable node in the kth iteration. In represents the intrinsic information of the nth variable node, which is used to express the posterior probability that the bit of codeword 140 corresponding to this variable node is 1 or 0. ∀ represents any, and ∈ represents belongs to. In some embodiments, the intrinsic information is a log-likelihood ratio (LLR).
(式1) (Formula 1)
(式2) (Formula 2)
參照式3,係為步驟S32之校驗節點的更新運算式。其中,Π為求積符號(product symbol)。sgn()為符號函式(sign function),根據函式內的數值為0、正值或負值,分別返回0、1或-1。min()為最小值函數。N m\n代表除了變量節點n之外的所有與第m個校驗節點連結的變量節點的集合。 Refer to Equation 3, which is the update equation for the check node in step S32. Here, π is the product symbol. sgn() is a sign function that returns 0, 1, or -1, depending on whether the value within the function is 0, positive, or negative. min() is the minimum function. Nm\n represents the set of all variable nodes connected to the mth check node, excluding variable node n.
(式3) (Formula 3)
參照式4,係為步驟S33之變量節點的更新運算式。其中,∑為求和符號(summation symbol)。M n\m代表除了校驗節點m之外的所有與第n個變量節點連結的校驗節點的集合。 Refer to Equation 4, which is the update equation for the variable node in step S33. Here, ∑ is the summation symbol. Mn\m represents the set of all verification nodes connected to the nth variable node, excluding verification node m.
(式4) (Formula 4)
在步驟S34中,執行硬決策(hard decision)來解碼,並判斷是否滿足終止條件。若滿足條件,則結束流程。所述終止條件係,解碼結果150正確或迭代次數超出閾值。參照式5及式6,係為硬決策的運算式。其中,式5係計算每一變量節點的事後機率 。根據式5的計算結果,利用式6判斷出每一變量節點對應的位元值z n,即獲得解碼結果150(序列z 1, z 2, …, z n)。式7是用來確認解碼結果150是否正確(滿足式7則為正確),其中H代表LDPC矩陣200, 代表解碼結果150(序列z 1, z 2, …, z n)的轉置(transpose)。 In step S34, a hard decision is performed to decode and determine whether the termination condition is met. If the condition is met, the process ends. The termination condition is that the decoding result 150 is correct or the number of iterations exceeds the threshold. Refer to Equation 5 and Equation 6, which are the calculation formulas for the hard decision. Among them, Equation 5 calculates the posterior probability of each variable node. Based on the calculation result of Equation 5, Equation 6 is used to determine the bit value z n corresponding to each variable node, and the decoding result 150 (sequence z 1 , z 2 , …, z n ) is obtained. Equation 7 is used to confirm whether the decoding result 150 is correct (if it satisfies Equation 7, it is correct), where H represents the LDPC matrix 200, Represents the transpose of the decoded result 150 (sequence z 1 , z 2 , …, z n ).
(式5) (Formula 5)
(式6) (Formula 6)
(式7) (Equation 7)
根據上述說明可以看到(如式3及式4),在迭代過程中會計算 資訊之總和( ),並從中找出最小值,因此在此說明的LDPC解碼演算法稱為最小和演算法。在校驗節點的更新運算(式3)中,需要執行最小值搜尋演算,以從變量節點集合N m\n所對應的內在資訊中找出最小值。因此,如圖1所示,每一運算引擎130包括一最小值搜尋單元131,以在LDPC解碼演算法執行到一最小值搜尋演算時,該等最小值搜尋單元131執行一最小值搜尋程序,根據複數輸入值(於此為變量節點集合N m\n所對應的內在資訊)輸出一最小值搜尋結果。在一些實施例中,每一輸入值為對應變量節點的內在資訊(如對數似然比)。 According to the above description (such as Equation 3 and Equation 4), the iterative process will calculate The sum of information ( ) and finds the minimum value therefrom. Therefore, the LDPC decoding algorithm described herein is called the min-sum algorithm. During the check node update operation (Equation 3), a minimum search operation is required to find the minimum value within the intrinsic information corresponding to the variable node set N m\n . Therefore, as shown in Figure 1, each computation engine 130 includes a minimum search unit 131. When the LDPC decoding algorithm reaches a minimum search operation, these minimum search units 131 execute a minimum search process based on multiple input values (here, the intrinsic information corresponding to the variable node set N m\n ) and output a minimum search result. In some embodiments, each input value is the intrinsic information corresponding to the variable node (e.g., the log-likelihood ratio).
在一些實施例中,運算引擎130的數量是依據子矩陣的橫列數量決定。如前述圖2之例,運算引擎130的數量為256個。每一運算引擎130分別對應於子矩陣中的一橫列(校驗節點),並執行相應的更新運算(式3)。因此,此些運算引擎130能夠一次並行處理256橫列(又稱為一層)的運算,如此分次處理完LDPC矩陣200的所有層(如圖2所示為12層)之後,即完成一次迭代的校驗節點更新。最小值搜尋單元131為複數個,以並行處理對應於LDPC矩陣200中位於同一層的各橫列的最小值搜尋程序。亦即,一個最小值搜尋單元131處理對應一個橫列上的最小值搜尋演算。In some embodiments, the number of computation engines 130 is determined by the number of rows in the sub-matrix. As shown in the example of FIG. 2 , there are 256 computation engines 130. Each computation engine 130 corresponds to a row (check node) in the sub-matrix and performs the corresponding update operation (Equation 3). Therefore, these computation engines 130 can process operations on 256 rows (also called one layer) in parallel at a time. After processing all layers of the LDPC matrix 200 (12 layers as shown in FIG. 2 ), one iteration of the check node update is completed. There are multiple minimum search units 131 to process the minimum search process corresponding to each row in the same layer of the LDPC matrix 200 in parallel. That is, a minimum value search unit 131 processes a minimum value search operation corresponding to a row.
相似地,在一些實施例中,扁平化最小和計算引擎120還包括其他運算引擎(圖2未示),分次並行處理所有變量節點更新,於此不再重複說明。Similarly, in some embodiments, the flattened minimum sum calculation engine 120 further includes other calculation engines (not shown in FIG. 2 ) to process all variable node updates in parallel in batches, which will not be repeated here.
在一些實施例中,LDPC矩陣200中的多個直行合併為一行群組。例如圖2所示,第67行與第68行的每一橫列上至多僅有一個非零矩陣,故可合併為一行群組,同理第65行與第66行也可合併為另一行群組。由於LDPC矩陣200的稀疏特性,在合併為行群組之後,可大幅減少直行的數量。一般來說,合併為行群組之後,直行數量約可減少至20多個(mid-twenties),例如23~27個。如此,可以減少待執行最小值搜尋演算的輸入值的數量,但本發明非以輸入值數量需少於30個為必要。由於在一個平移的單位矩陣中,每一列上僅會有一個“1”,因此對於一個最小值搜尋單元131而言,每一行群組至多對應一個輸入值。亦即,最小值搜尋單元131在一次最小值搜尋演算中處理的輸入值數量至多等同於行群組的數量。在一些實施例中,一個最小值搜尋單元131所處理的輸入值的數量在23~69的範圍內。In some embodiments, multiple rows in the LDPC matrix 200 are combined into a row group. For example, as shown in FIG2 , rows 67 and 68 have at most one non-zero matrix in each horizontal column, so they can be combined into a row group. Similarly, rows 65 and 66 can also be combined into another row group. Due to the sparse nature of the LDPC matrix 200, the number of rows can be significantly reduced after being combined into row groups. Generally speaking, after being combined into row groups, the number of rows can be reduced to about 20 (mid-twenties), for example, 23 to 27. In this way, the number of input values to be executed for the minimum search operation can be reduced, but the present invention does not require the number of input values to be less than 30. Because a shifted unit matrix only has one "1" in each column, each row group corresponds to at most one input value for a minimum search unit 131. That is, the number of input values processed by the minimum search unit 131 in a single minimum search operation is at most equal to the number of row groups. In some embodiments, the number of input values processed by a minimum search unit 131 is in the range of 23 to 69.
參照圖4,係為本發明一實施例之最小值搜尋演算之流程圖(一)。步驟S41為獨熱(one-hot)向量300轉換步驟,係將多個輸入值G分別轉換為獨熱向量300,如圖5所示。圖5為本發明一實施例之獨熱向量300轉換示意圖。在一些實施例中,每一輸入值G的位元寬度(bit width)為4位元或5位元,以在糾錯能力與邏輯數量中取得平衡。圖5係以5位元的24個輸入值G[0]~G[23]來說明,然而輸入值G的數量與其位元數非以此為限。每一獨熱向量300具有複數位元(後稱「獨熱位元310」),在同一獨熱向量300中的此些獨熱位元310分別對應不重複的一獨熱位元索引(one-hot bit index)400。在此,獨熱位元索引400為“0”~“31”,其相當於在獨熱向量300中所代表的數。以輸入值G[0]為例,其轉換為由F[744]、…F[168]、F[144]、F[120]、F[96]、F[72]、F[48]、F[24]、F[0]等獨熱位元310所構成的獨熱向量300。標示有實線粗框的獨熱位元310其值為1,沒有標示粗框的獨熱位元310其值為“0”。例如,輸入值G[4]的值為“6”,其轉換為獨熱向量300後,F[148]獨熱位元310的值為“1”,F[148]獨熱位元310對應到的獨熱位元索引400為“6”。Referring to FIG4 , there is a flowchart (I) of the minimum value search algorithm of an embodiment of the present invention. Step S41 is a one-hot vector 300 conversion step, which converts multiple input values G into one-hot vectors 300, as shown in FIG5 . FIG5 is a schematic diagram of the one-hot vector 300 conversion of an embodiment of the present invention. In some embodiments, the bit width of each input value G is 4 bits or 5 bits to achieve a balance between error correction capability and logic quantity. FIG5 is illustrated using 24 5-bit input values G[0]~G[23], but the number of input values G and their bit number are not limited to this. Each one-hot vector 300 has a plurality of bits (hereinafter referred to as "one-hot bits 310"). These one-hot bits 310 in the same one-hot vector 300 correspond to non-repeating one-hot bit indices 400. Here, the one-hot bit indices 400 are "0" to "31", which are equivalent to the numbers represented in the one-hot vector 300. Taking the input value G[0] as an example, it is converted into a one-hot vector 300 composed of one-hot bits 310 such as F[744], ...F[168], F[144], F[120], F[96], F[72], F[48], F[24], and F[0]. The one-hot bits 310 marked with a solid bold frame have a value of 1, and the one-hot bits 310 not marked with a bold frame have a value of "0". For example, the value of the input value G[4] is "6". After it is converted into the one-hot vector 300, the value of the one-hot bit 310 of F[148] is "1", and the one-hot bit index 400 corresponding to the one-hot bit 310 of F[148] is "6".
參照程式碼1,係為獨熱向量300轉換的一實施態樣。輸入值G[0]~G[23]逐一地與獨熱位元索引400相比,當若兩者相同,則將對應的獨熱位元310設為“1”。Refer to Code 1, which is an implementation of the one-hot vector 300 conversion. The input values G[0]-G[23] are compared with the one-hot bit index 400 one by one. If the two are the same, the corresponding one-hot bit 310 is set to "1".
程式碼1: F[0] = (G[0] == 0); F[1] = (G[1] == 0); … F[23] = (G[23] == 0); F[24] = (G[0] == 1); … F[767] = (G[23] == 31); Code 1: F[0] = (G[0] == 0); F[1] = (G[1] == 0); … F[23] = (G[23] == 0); F[24] = (G[0] == 1); … F[767] = (G[23] == 31);
需要說明的是,雖然圖5是以二維陣列形式表達輸入值G與獨熱向量300的關係。然而,F[0]~F[767]實質是一維陣列,即一展平向量(flattened vector)。為了方便後續說明,於此定義“0”~“767”為展平位元索引(flattened bit index)。此些展平位元索引一對一地對應獨熱向量300的獨熱位元310。展平向量具有相連接的複數序列(sequences)500,每一序列500對應圖5所示的每一直行。每一序列500包括此些獨熱向量300中在同一獨熱位元索引400上的該些獨熱位元310。例如,圖5中標示的序列500包括每一獨熱向量300中對應4的獨熱位元索引400的獨熱位元310(F[96]~F[119])。此些序列500所包括的獨熱位元310以同一編排順序排列。如圖5所示,此些序列500所包括的獨熱位元310均由上至下依序排列,且此些序列500的排列順序與輸入值G[0]~G[23]的索引順序一致。此些序列500按照其對應的獨熱位元索引400升序(ascending)排列。例如,包括F[0]~F[23]獨熱位元310的序列500,其對應的獨熱位元索引400為“0”;包括F[24]~F[47]獨熱位元310的序列500,其對應的獨熱位元索引400為“1”,依此類推。It should be noted that although Figure 5 expresses the relationship between the input value G and the unique-hot vector 300 in the form of a two-dimensional array, F[0]~F[767] is actually a one-dimensional array, that is, a flattened vector. For the convenience of subsequent explanation, "0"~"767" are defined here as flattened bit indices. These flattened bit indices correspond one-to-one to the unique-hot bits 310 of the unique-hot vector 300. The flattened vector has a plurality of connected sequences 500, each sequence 500 corresponding to each row shown in Figure 5. Each sequence 500 includes the unique bits 310 at the same unique-hot bit index 400 in these unique-hot vectors 300. For example, the sequence 500 shown in FIG5 includes the unique bits 310 (F[96] to F[119]) corresponding to the unique bit index 400 of 4 in each unique-hot vector 300. The unique bits 310 included in these sequences 500 are arranged in the same arrangement order. As shown in FIG5, the unique bits 310 included in these sequences 500 are arranged in order from top to bottom, and the arrangement order of these sequences 500 is consistent with the index order of the input values G[0] to G[23]. These sequences 500 are arranged in ascending order according to their corresponding unique bit index 400. For example, the sequence 500 including the unique bits 310 from F[0] to F[23] has a corresponding unique bit index 400 of “0”; the sequence 500 including the unique bits 310 from F[24] to F[47] has a corresponding unique bit index 400 of “1”, and so on.
合併參照圖4、圖5及程式碼2。步驟S42係建立複數第一向量。每一第一向量不重複地對應於此些獨熱位元索引400中的其中之一(於後稱「目標位元索引」)。舉例來說,第一向量First_vector[0]對應的獨熱位元索引400為“0”,第一向量First_vector[1]對應的獨熱位元索引400為“1”,以此類推。每一第一向量呈現此些獨熱向量300中在目標位元索引上的此些獨熱位元310間執行或運算(OR operation)的結果。舉例來說,第一向量First_vector[0]呈現獨熱位元索引400為0的獨熱位元310(F[0]~F[23])之間的或運算的結果。因此,若某一第一向量為“1”,表示至少有一獨熱向量300其對應目標位元索引的獨熱位元310為“1”。Refer to Figures 4, 5 and Code 2. Step S42 is to create a plurality of first vectors. Each first vector corresponds to one of these unique bit indices 400 (hereinafter referred to as "target bit index") without duplication. For example, the unique bit index 400 corresponding to the first vector First_vector[0] is "0", the unique bit index 400 corresponding to the first vector First_vector[1] is "1", and so on. Each first vector presents the result of performing an OR operation between these unique bits 310 at the target bit index in these unique vectors 300. For example, the first vector First_vector[0] presents the result of the OR operation between the unique bits 310 (F[0]~F[23]) whose unique bit index 400 is 0. Therefore, if a first vector is “1”, it means that there is at least one one-hot vector 300 whose one-hot bit 310 corresponding to the target bit index is “1”.
程式碼2: First_vector[0] = F[0] || F[1] || … F[23]; First_vector[1] = F[24] || F[25] || … F[47]; … First_vector[31] = F[744] || F[755] || … F[767] Code 2: First_vector[0] = F[0] || F[1] || … F[23]; First_vector[1] = F[24] || F[25] || … F[47]; … First_vector[31] = F[744] || F[755] || … F[767]
合併參照圖4、圖5及程式碼3。步驟S43係從此些第一向量中優先解碼(priority decode)出最小值。具體係,根據此些獨熱位元索引400,由低位元至高位元(於此為從“0”至“31”),對此些第一向量優先解碼出最小值。最小值為第一個其值為“1”的第一向量所對應的目標位元索引。以圖5為例,第一個其值為“1”的第一向量所對應的獨熱位元索引400為“1”,因此最小值搜尋結果包括的最小值為“1”。Refer to Figures 4 and 5, along with Code 3. Step S43 prioritizes decoding the minimum value from these first vectors. Specifically, based on the unique bit indices 400, from low to high bits (here, from "0" to "31"), the minimum value is prioritized. The minimum value is the target bit index corresponding to the first first vector whose value is "1." For example, in Figure 5, the unique bit index 400 corresponding to the first first vector whose value is "1" is "1," so the minimum value included in the minimum search result is "1."
程式碼3: foreach bit (0..31) last if(First_vector[bit]); Min_value = bit; Code 3: foreach bit (0..31) last if(First_vector[bit]); Min_value = bit;
合併參照圖5、圖6及程式碼4。圖6為本發明一實施例之最小值搜尋演算之流程圖(二)。此流程是用來找出前述最小值是在輸入值G中的何者。在步驟S61中,建立第二向量。每一第二向量不重複地對應於獨熱向量300中的其中之一(於後稱「目標獨熱向量」)。每一第二向量呈現分別對於目標獨熱向量中的每一獨熱位元310進行一邏輯判斷所產生的複數判斷結果間執行或運算的結果。其中,邏輯判斷為一第一條件及一第二條件的交集。第一條件是進行邏輯判斷的獨熱位元310為“1”。第二條件是,在展平向量中,在比進行邏輯判斷的獨熱位元310的展平位元索引更小的此些展平位元索引上的此些獨熱位元310均為“0”。以第二向量Second_vector[0]來說明,係針對其對應的獨熱向量300中的各個獨熱位元310(F[0], F[24], F[48], …, F[744])進行邏輯判斷。例如,對於F[24],第一條件是判斷F[24]是否為“1”,第二條件是判斷F[23:0]是否都為“0”,若兩個條件都為真,表示F[24:0]中F[24]是第一個為“1”的獨熱位元310。此獨熱位元310所在的獨熱向量300所對應的輸入值G[0],即為具有最小值的輸入值。補充說明,由於沒有比F[0]的展平位元索引更小的展平位元索引,因此對於F[0]僅有判斷第一條件,即判斷F[0]是否為1。Refer to Figures 5, 6 and program code 4. Figure 6 is a flow chart (II) of the minimum value search algorithm of an embodiment of the present invention. This process is used to find out which of the input values G is the aforementioned minimum value. In step S61, a second vector is established. Each second vector corresponds to one of the unique hot vectors 300 (hereinafter referred to as the "target unique hot vector") without duplication. Each second vector presents the result of executing or operating between multiple judgment results generated by performing a logical judgment on each unique hot bit 310 in the target unique hot vector. Among them, the logical judgment is the intersection of a first condition and a second condition. The first condition is that the unique hot bit 310 subjected to the logical judgment is "1". The second condition is that, in the flattened vector, all the unique bits 310 at flattened bit indices smaller than the flattened bit index of the unique bit 310 being logically judged are "0". Taking the second vector Second_vector[0] as an example, a logical judgment is performed on each unique bit 310 (F[0], F[24], F[48], ..., F[744]) in the corresponding unique vector 300. For example, for F[24], the first condition is to judge whether F[24] is "1", and the second condition is to judge whether F[23:0] are all "0". If both conditions are true, it means that F[24] is the first unique bit 310 in F[24:0] that is "1". The input value G[0] corresponding to the unique-hot vector 300 containing this unique bit 310 is the input value with the minimum value. To add, since there is no flattened bit index smaller than the flattened bit index of F[0], only the first condition is determined for F[0]: whether F[0] is 1.
程式碼4: Second_vector[0] = F[0] || F[24] && (F[23:0]==0) || F[48] && (F[47:0]==0)… F[744]&&(F[743:0]==0); Second_vector[1] = F[1] || F[25] && (F[24:0]==0) || F[49] && (F[48:0]==0)… F[745]&&(F[744:0]==0); Second_vector[2] = F[2] || F[26] && (F[25:0]==0) || F[50] && (F[49:0]==0)… F[746]&&(F[745:0]==0); … Second_vector[23] = F[23] || F[47]&&(F[46:0]==0)|| F[71] && (F[70:0]==0)…F[767]&&F[766:0]==0; Code 4: Second_vector[0] = F[0] || F[24] && (F[23:0]==0) || F[48] && (F[47:0]==0)… F[744]&&(F[743:0]==0); Second_vector[1] = F[1] || F[25] && (F[24:0]==0) || F[49] && (F[48:0]==0)… F[745]&&(F[744:0]==0); Second_vector[2] = F[2] || F[26] && (F[25:0]==0) || F[50] && (F[49:0]==0)… F[746]&&(F[745:0]==0); … Second_vector[23] = F[23] || F[47]&&(F[46:0]==0)|| F[71] &&(F[70:0]==0)…F[767]&&F[766:0]==0;
合併參照圖5、圖6及程式碼5。步驟S62係從此些第二向量中優先解碼出對應最小值的輸入值G的索引(後稱「輸入值索引」),以在最小值搜尋結果中包括此輸入值索引。具體係,根據序列500中獨熱位元310的編排順序(亦即輸入值G的排列順序),對此些第二向量優先解碼出對應最小值的輸入值索引。輸入值索引為第一個邏輯判斷為真的第二向量所對應的編排順序的一順序索引。如圖5中,F[24]獨熱位元310為最小值,因此經過前述步驟S61之後,第二向量Second_vector[0]的邏輯判斷為真(表示為“1”),且其為第一個邏輯判斷為真的第二向量。於是,最小值的輸入值索引為“0”(即此第二向量的索引值,也同於相應的輸入值索引)。Refer to Figures 5 and 6, and Code 5. Step S62 preferentially decodes the index of the input value G corresponding to the minimum value from these second vectors (hereinafter referred to as the "input value index"), so that this input value index is included in the minimum value search result. Specifically, based on the arrangement order of the unique bits 310 in sequence 500 (i.e., the arrangement order of the input value G), the input value index corresponding to the minimum value is preferentially decoded from these second vectors. The input value index is a sequence index corresponding to the arrangement order of the second vector for which the first logical judgment is true. As shown in Figure 5 , the unique bit 310 of F[24] is the minimum value. Therefore, after step S61 , the logical judgment of the second vector Second_vector[0] is true (indicated by "1"), and this is the first second vector for which the logical judgment is true. Therefore, the input value index of the minimum value is "0" (i.e., the index value of this second vector is also the same as the corresponding input value index).
程式碼5: foreach bit (0..23) last if(Second_vector[bit]); Min_index = bit; Code 5: foreach bit (0..23) last if(Second_vector[bit]); Min_index = bit;
在一些實施例中,LDPC解碼演算法使用前述最小和演算法的變形,例如:正規化最小和(normalized min-sum)演算法、補償式最小和(offset min-sum)演算法等,其除了使用最小值之外,還會使用第二最小值(second minimum)。在一例子中,當輸入值G[2]與G[5]皆為“3”,其他輸入值G為“4”,則最小值為“3”,次小值也為“3”。在另一個例子中,當輸入值G[1]為“2”,當輸入值G[0]為 “4”,其他輸入值G大於“4”,則最小值為“2”,次小值為“4”。接下來說明如何透過前述展平向量獲得第二最小值,以提供包括第二最小值的最小值搜尋結果。In some embodiments, the LDPC decoding algorithm uses a variation of the aforementioned minimum-sum algorithm, such as a normalized min-sum algorithm, an offset min-sum algorithm, etc., which uses not only the minimum value but also the second minimum value. In one example, when the input values G[2] and G[5] are both "3" and the other input value G is "4", the minimum value is "3" and the second minimum value is also "3". In another example, when the input value G[1] is "2", when the input value G[0] is "4", and the other input value G is greater than "4", the minimum value is "2" and the second minimum value is "4". The following describes how to obtain the second minimum value through the aforementioned flattened vector to provide a minimum value search result including the second minimum value.
合併參照圖5、圖7及程式碼6,圖7為本發明一實施例之第二最小值搜尋演算之流程圖。在步驟S71中,建立複數第三向量。每一第三向量不重複地對應於一個獨熱位元索引400(即目標位元索引)。第三向量呈現分別對於獨熱向量300的目標位元索引上的獨熱位元310進行一邏輯判斷所產生的複數結果的交集。其中,邏輯判斷為一第三條件及一第四條件的交集。第三條件是進行邏輯判斷的獨熱位元310為“1”。第四條件是,在展平向量中,在比進行邏輯判斷的獨熱位元310的展平位元索引更小的此些展平位元索引上的獨熱位元310非均為 “0”。以第三向量Third_vector[2]來說明,係針對其對應的獨熱位元索引400(“2”)上的獨熱向量300中的各個獨熱位元310(F[48]~F[71])進行邏輯判斷。例如,對於F[50],第三條件是判斷F[50]是否為“1”,第四條件是判斷F[49:0]是否非均為“0”,若兩個條件都為真,表示F[50:0]中F[49]是第二個為“1”的獨熱位元310。補充說明,由於沒有比F[0]的展平位元索引更小的展平位元索引,因此在第三向量Third_vector[0]中省略了對F[0]的判斷。Referring to Figures 5, 7, and Program Code 6, Figure 7 is a flowchart of the second minimum search algorithm of an embodiment of the present invention. In step S71, a plurality of third vectors are established. Each third vector corresponds to a unique bit index 400 (i.e., a target bit index) without duplication. The third vector represents the intersection of the multiple results generated by performing a logical judgment on the unique bit 310 at the target bit index of the unique bit vector 300. The logical judgment is the intersection of a third condition and a fourth condition. The third condition is that the unique bit 310 subjected to the logical judgment is "1." The fourth condition is that, in the flattened vector, the unique bits 310 at the flattened bit indices smaller than the flattened bit index of the unique bit 310 being logically judged are not all "0". Taking the third vector Third_vector[2] as an example, a logical judgment is performed on each unique bit 310 (F[48]~F[71]) in the unique vector 300 at its corresponding unique bit index 400 ("2"). For example, for F[50], the third condition is to judge whether F[50] is "1", and the fourth condition is to judge whether F[49:0] are not all "0". If both conditions are true, it means that F[49] in F[50:0] is the second unique bit 310 that is "1". In addition, since there is no flattened bit index smaller than the flattened bit index of F[0], the judgment of F[0] is omitted in the third vector Third_vector[0].
程式碼6: Third_vector[0] = F[1] &&!(F[0]==0) || F[2] && !(F[1:0]==0) || … F[23] && !(F[22:0]==0); Third_vector[1] = F[24] && !(F[23:0]==0) || F[25] && !(F[24:0]==0) … F[47] && !(F[46:0]==0); … Third_vector[31] = F[744] && !(F[743:0]==0) || F[745] && !(F[744:0]==0) || … F[767] && !(F[766:0]==0); Code 6: Third_vector[0] = F[1] &&!(F[0]==0) || F[2] && !(F[1:0]==0) || … F[23] &&!(F[22:0]==0); Third_vector[1] = F[24] && !(F[23:0]==0) || F[25] && !(F[24:0]==0) … F[47] &&!(F[46:0]==0); … Third_vector[31] = F[744] && !(F[743:0]==0) || F[745] && !(F[744:0]==0) || … F[767] &&!(F[766:0]==0);
合併參照圖5、圖7及程式碼7。步驟S72係從此些第三向量中優先解碼出第二最小值。具體係,根據此些獨熱位元索引400,由低位元至高位元,對此些第三向量優先解碼出第二最小值。此第二最小值為第一個邏輯判斷為真的第三向量所對應的目標位元索引。如圖5中,F[50]獨熱位元310為第二最小值,因此經過前述步驟S71之後,第三向量Third_vector[2]的邏輯判斷為真(表示為“1”),且其為第一個邏輯判斷為真的第三向量。於是,第二最小值為“2”(即相應的目標位元索引,也同於此第三向量的索引值)。Combined reference to Figures 5, 7 and Code 7. Step S72 is to preferentially decode the second minimum value from these third vectors. Specifically, based on these unique bit indices 400, from low bit to high bit, these third vectors are preferentially decoded to obtain the second minimum value. This second minimum value is the target bit index corresponding to the third vector whose first logical judgment is true. As shown in Figure 5, the unique bit 310 of F[50] is the second minimum value, so after the aforementioned step S71, the logical judgment of the third vector Third_vector[2] is true (indicated as "1"), and it is the third vector whose first logical judgment is true. Therefore, the second minimum value is "2" (that is, the corresponding target bit index is also the same as the index value of this third vector).
程式碼7: foreach bit (0..31) last if(Third_vector[bit]); Third_min_value = bit; Code 7: foreach bit (0..31) last if(Third_vector[bit]); Third_min_value = bit;
在一些實施例中,一些最小和演算法的變形(例如前述之補償式最小和演算法)所使用的最小值,是經過偏移(offset)處理的。亦即,最小值搜尋結果包括的最小值為經偏移處理的最小值。接下來說明如何將前述尋找出的最小值進行偏移處理。In some embodiments, variations of the min-sum algorithm (such as the compensated min-sum algorithm described above) use an offset to determine the minimum value. That is, the minimum value included in the minimum search result is the offset-processed minimum value. The following describes how to apply the offset to the minimum value found above.
合併參照圖5、圖8及程式碼8~10,圖8為本發明一實施例之最小值搜尋演算之流程圖(三)。在根據前述步驟S43獲得第一向量之後,執行步驟S44至步驟S46之偏移處理。在此,偏移量是以1為例,但本發明非以此為限。Referring to Figures 5, 8, and Codes 8-10, Figure 8 is a flowchart (3) of a minimum search algorithm according to an embodiment of the present invention. After obtaining the first vector in step S43, the offset processing of steps S44 through S46 is performed. The offset is set to 1 as an example, but the present invention is not limited to this.
在步驟S44中,對於獨熱位元索引400在偏移量以下的第一向量(於此為First_vector[1:0]),優先解碼出第一值(bit_no_offset),如程式碼8所示。第一值(bit_no_offset)為第一個其值為“1”的第一向量所對應的獨熱位元索引400。若第一向量First_vector[0]為“1”,第一值(bit_no_offset)為“0”。若第一向量First_vector[0]為“0”且第一向量First_vector[1]為“1”,第一值(bit_no_offset)為“1”。In step S44, for the first vector (here, First_vector[1:0]) whose unique bit index 400 is below the offset, the first value (bit_no_offset) is first decoded, as shown in code 8. The first value (bit_no_offset) is the unique bit index 400 corresponding to the first vector whose value is "1". If the first vector First_vector[0] is "1", the first value (bit_no_offset) is "0". If the first vector First_vector[0] is "0" and the first vector First_vector[1] is "1", the first value (bit_no_offset) is "1".
程式碼8: foreach bit_no_offset (0..1) last if(First_vector[bit_no_offset]); Code 8: foreach bit_no_offset (0..1) last if(First_vector[bit_no_offset]);
在步驟S45中,對於其他的獨熱位元索引400的第一向量,亦即獨熱位元索引400不在偏移量以下的第一向量(於此為First_vector[31:2]),優先解碼出第二值(bit_offset),如程式碼9所示。第二值(bit_offset)為第一個其值為“1”的第一向量所對應的獨熱位元索引400減去偏移量。例如,當第一向量First_vector[2]為“0”且第一向量First_vector[3]為“1”,第二值(bit_offset)為2。In step S45, for the other first vectors of unique bit indexes 400, that is, the first vectors whose unique bit indexes 400 are not below the offset (here, First_vector[31:2]), the second value (bit_offset) is preferentially decoded, as shown in Code 9. The second value (bit_offset) is the unique bit index 400 corresponding to the first first vector whose value is "1" minus the offset. For example, when the first vector First_vector[2] is "0" and the first vector First_vector[3] is "1", the second value (bit_offset) is 2.
程式碼9: foreach bit_ offset (1..30) last if(First_vector[bit_offset+1]); Code 9: foreach bit_offset (1..30) last if(First_vector[bit_offset+1]);
在步驟S46中,將獨熱位元索引400在偏移量以下的第一向量(First_vector[1:0])執行或運算。若運算結果為“1”,表示最小值出現在此些第一向量中,則將第一值作為經偏移處理的最小值。若運算結果為“0”,表示最小值出現其他第一向量中,則將第二值作為經偏移處理的最小值。In step S46 , an OR operation is performed on the first vector (First_vector[1:0]) whose unique bit index 400 is below the offset. If the operation result is "1," indicating that the minimum value occurs in these first vectors, the first value is used as the minimum value after the offset processing. If the operation result is "0," indicating that the minimum value occurs in another first vector, the second value is used as the minimum value after the offset processing.
程式碼10: Min_value_with_offset = (First_vector[0] || First_vector[1]) ? bit_no_offset : bit_offset; Code 10: Min_value_with_offset = (First_vector[0] || First_vector[1]) ? bit_no_offset : bit_offset;
相較於使用如程式碼11以比較邏輯的方式,圖8根據由展平向量建立的第一向量執行偏移處理,能夠利用扁平結構(flattened structure)提昇處理速度。Compared to using a more logical approach as in code 11, FIG8 performs offset processing based on the first vector created by the flattened vector, thereby utilizing a flattened structure to improve processing speed.
程式碼11: Min_value_with_offset = Min_value > 1 ? Min_value – 1 : Min_value; Code 11: Min_value_with_offset = Min_value > 1 ? Min_value – 1 : Min_value;
本發明一些實施例提出之LDPC解碼器及最小值搜尋方法,透過扁平化設計可快速找出最小值、第二最小值或/及經偏移處理的最小值,而不需以線性方式或基於樹的方式迭代地比較,可滿足高速通訊的高效解碼需求。Some embodiments of the present invention propose an LDPC decoder and minimum search method that can quickly find the minimum, second minimum, and/or offset minimum through a flattened design without requiring iterative comparisons in a linear or tree-based manner, thereby meeting the efficient decoding requirements of high-speed communications.
100:LDPC解碼器 110:儲存單元 120:扁平化最小和計算引擎 130:運算引擎 131:最小值搜尋單元 140:碼字 150:解碼結果 200:LDPC矩陣 300:獨熱向量 310:獨熱位元 400:獨熱位元索引 500:序列 G,G[0]~G[23]:輸入值 S31~S34:步驟 S41~S46:步驟 S61~62:步驟 S71~72:步驟 100: LDPC decoder 110: Storage unit 120: Flattened minimum sum calculation engine 130: Calculation engine 131: Minimum search unit 140: Codeword 150: Decoded result 200: LDPC matrix 300: One-hot vector 310: One-hot bit 400: One-hot bit index 500: Sequence G, G[0]~G[23]: Input value S31~S34: Steps S41~S46: Steps S61~62: Steps S71~72: Steps
圖1為本發明一實施例之LDPC解碼器的架構示意圖。 圖2為本發明一實施例之LDPC矩陣的部份示意圖。 圖3為本發明一實施例之LDPC解碼演算法的流程圖。 圖4為本發明一實施例之最小值搜尋演算之流程圖(一)。 圖5為本發明一實施例之獨熱向量轉換示意圖。 圖6為本發明一實施例之最小值搜尋演算之流程圖(二)。 圖7為本發明一實施例之第二最小值搜尋演算之流程圖。 圖8為本發明一實施例之最小值搜尋演算之流程圖(三)。 Figure 1 is a schematic diagram of the architecture of an LDPC decoder according to an embodiment of the present invention. Figure 2 is a partial schematic diagram of an LDPC matrix according to an embodiment of the present invention. Figure 3 is a flow chart of the LDPC decoding algorithm according to an embodiment of the present invention. Figure 4 is a flow chart (I) of the minimum search algorithm according to an embodiment of the present invention. Figure 5 is a schematic diagram of the unique-hot vector conversion according to an embodiment of the present invention. Figure 6 is a flow chart (II) of the minimum search algorithm according to an embodiment of the present invention. Figure 7 is a flow chart of the second minimum search algorithm according to an embodiment of the present invention. Figure 8 is a flow chart (III) of the minimum search algorithm according to an embodiment of the present invention.
S41~S43:步驟 S41~S43: Steps
Claims (11)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202363542311P | 2023-10-04 | 2023-10-04 | |
| US63/542,311 | 2023-10-04 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202516866A TW202516866A (en) | 2025-04-16 |
| TWI898775B true TWI898775B (en) | 2025-09-21 |
Family
ID=96169849
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113124590A TWI895029B (en) | 2023-10-04 | 2024-07-01 | Low density parity check decoder |
| TW113125404A TWI890516B (en) | 2023-10-04 | 2024-07-05 | Low density parity check decoder |
| TW113129834A TWI898775B (en) | 2023-10-04 | 2024-08-08 | Ldpc decoder and minimum value searching method |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113124590A TWI895029B (en) | 2023-10-04 | 2024-07-01 | Low density parity check decoder |
| TW113125404A TWI890516B (en) | 2023-10-04 | 2024-07-05 | Low density parity check decoder |
Country Status (1)
| Country | Link |
|---|---|
| TW (3) | TWI895029B (en) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2007126328A1 (en) * | 2006-04-28 | 2007-11-08 | Intel Corporation | Multi-theshold message passing decoding of low density parity check codes using the min-sum principle |
| US20200218607A1 (en) * | 2019-01-09 | 2020-07-09 | SK Hynix Inc. | Ldpc decoder, semiconductor memory system and operating method thereof |
| CN112632911A (en) * | 2021-01-04 | 2021-04-09 | 福州大学 | Chinese character coding method based on character embedding |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012244305A (en) * | 2011-05-17 | 2012-12-10 | Toshiba Corp | Memory controller, semiconductor memory device and decoding method |
| CN105814799B (en) * | 2013-12-09 | 2019-03-01 | 三菱电机株式会社 | Error correction decoding device |
| CN115425988B (en) * | 2022-07-29 | 2024-02-09 | 北京融为科技有限公司 | High-speed LDPC full-mode column transformation method |
-
2024
- 2024-07-01 TW TW113124590A patent/TWI895029B/en active
- 2024-07-05 TW TW113125404A patent/TWI890516B/en active
- 2024-08-08 TW TW113129834A patent/TWI898775B/en active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2007126328A1 (en) * | 2006-04-28 | 2007-11-08 | Intel Corporation | Multi-theshold message passing decoding of low density parity check codes using the min-sum principle |
| US20200218607A1 (en) * | 2019-01-09 | 2020-07-09 | SK Hynix Inc. | Ldpc decoder, semiconductor memory system and operating method thereof |
| CN112632911A (en) * | 2021-01-04 | 2021-04-09 | 福州大学 | Chinese character coding method based on character embedding |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202516346A (en) | 2025-04-16 |
| TWI890516B (en) | 2025-07-11 |
| TW202516347A (en) | 2025-04-16 |
| TW202516866A (en) | 2025-04-16 |
| TWI895029B (en) | 2025-08-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN108183713B (en) | LDPC Decoder Based on Improved Minimum Sum Algorithm and Its Decoding Method | |
| CN110114978B (en) | Efficiently Decodable QC-LDPC Codes | |
| US8359522B2 (en) | Low density parity check decoder for regular LDPC codes | |
| CN106788453B (en) | Parallel polar code decoding method and device | |
| US20190273511A1 (en) | Generation of spatially-coupled quasi-cyclic ldpc codes | |
| CN105024704B (en) | A kind of row layering ldpc decoder implementation method of low complex degree | |
| CN107968657B (en) | Hybrid decoding method suitable for low-density parity check code | |
| CN110233628B (en) | Adaptive Belief Propagation List Decoding Method for Polar Codes | |
| Shah et al. | Neural layered decoding of 5G LDPC codes | |
| CN113328756A (en) | Method for improving hardware processing performance of layered QC-LDPC decoder | |
| CN110113057A (en) | A kind of polarization code decoder using deep learning | |
| WO2017105270A1 (en) | Determination of a quasi-cyclic low-density parity-check, qc-ldpc, code for channel coding in digital communication systems | |
| US8880985B2 (en) | High-speed long codeword QC-LDPC soft decision decoder | |
| CN100425000C (en) | Twin-turbo structure low-density parity-check code decoder and decoding method | |
| CN107947802B (en) | Rate-compatible low-density parity-check code coding and decoding method and codec | |
| Shen et al. | Low-latency software successive cancellation list polar decoder using stage-located copy | |
| TWI898775B (en) | Ldpc decoder and minimum value searching method | |
| US20140122979A1 (en) | Hardware Architecture and Implementation of Low Power Layered Multi-Level LDPC Decoder | |
| Boncalo et al. | Cost-efficient FPGA layered LDPC decoder with serial AP-LLR processing | |
| CN118921070A (en) | Low density parity check LDPC decoder and minimum value searching method | |
| US20250119160A1 (en) | Ldpc decoder and minimum value searching method | |
| CN110890896B (en) | Reconfigurable polar code and low density parity check code joint decoding unit | |
| CN117713842A (en) | Decoding method and device, storage medium and electronic device | |
| CN113872614B (en) | Deep neural network-based Reed-Solomon code decoding method and system | |
| CN117856801A (en) | Channel coding method, coding device, decoding method and decoding device |