[go: up one dir, main page]

TWI895029B - Low density parity check decoder - Google Patents

Low density parity check decoder

Info

Publication number
TWI895029B
TWI895029B TW113124590A TW113124590A TWI895029B TW I895029 B TWI895029 B TW I895029B TW 113124590 A TW113124590 A TW 113124590A TW 113124590 A TW113124590 A TW 113124590A TW I895029 B TWI895029 B TW I895029B
Authority
TW
Taiwan
Prior art keywords
row
parity
check code
storage block
row group
Prior art date
Application number
TW113124590A
Other languages
Chinese (zh)
Other versions
TW202516346A (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 新加坡商瑞昱新加坡有限公司
Publication of TW202516346A publication Critical patent/TW202516346A/en
Application granted granted Critical
Publication of TWI895029B publication Critical patent/TWI895029B/en

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

A low-density parity check (LDPC) decoder includes a parity check code storage block and a plurality of computing engines. The parity check code storage block is configured to store a parity check code matrix. The parity check code matrix includes a plurality of columns. Each of the columns includes a plurality of submatrices. The parity check code storage block includes a plurality of column group storage blocks. Each of the column group storage blocks is configured to store a column group including one or more columns. The column group storage block which stores the column group including more of the columns is disposed closer to the center of the parity check code storage block. The computing engines are disposed on two sides of the parity check code storage block.

Description

低密度奇偶檢查解碼器LDPC decoder

本案是關於一種可降低時脈速度及減少功率消耗的低密度奇偶檢查解碼器。This application relates to a low-density parity check decoder that can reduce clock speed and power consumption.

低密度奇偶檢查(LDPC)碼被廣泛用為被動式光纖網路(PON)、乙太網路和其他資料通訊協定的糾錯碼,因為LDPC檢查碼的錯誤校正能力非常接近理論最大值(即香農極限(Shannon Limit))。而用於執行LDPC檢查碼的解碼和糾錯的一種常見的演算法是對數似然比(LLR)最小和演算法。Low-density parity-check (LDPC) codes are widely used as error-correcting codes for passive optical networks (PONs), Ethernet, and other data communication protocols because their error correction capability is very close to the theoretical maximum (i.e., the Shannon limit). A common algorithm for decoding and correcting LDPC codes is the log-likelihood ratio (LLR) minimum-sum algorithm.

於執行LDPC檢查碼的解碼和糾錯的一種常見的硬體實現方式為利用最小和運算引擎對LDPC檢查碼進行LLR最小和的運算。然而,若僅以單一個最小和運算引擎來對LDPC檢查碼進行運算,實現解碼的電路的時脈速度需要極快。以25G的PON為例,25G的PON的LDPC檢查碼是一個由256x256子矩陣的69x12陣列所組成的17664x3072的稀疏矩陣。若要對於25G的PON以單一個最小和運算引擎來對LDPC檢查碼進行運算,實現解碼的電路需要50GHz左右的極快時脈速度,這在今日或可預見的未來積體電路技術中是不可能實現的。A common hardware implementation for LDPC code decoding and error correction uses a min-sum engine to perform LLR min-sum operations on the LDPC code. However, using only a single min-sum engine to perform operations on the LDPC code requires an extremely fast clock speed for the decoding circuitry. For example, the 25G PON LDPC code is a 17664x3072 sparse matrix composed of 69x12 arrays of 256x256 sub-matrices. To operate LDPC check codes using a single min-sum computing engine for 25G PON, the decoding circuit would require an extremely fast clock speed of around 50 GHz, which is impossible to achieve with current or foreseeable future integrated circuit technology.

因此,於實務上,是透過多個並行的最小和運算引擎來實現解碼的運算。邏輯上,25G的PON可以使用256個並行的最小和運算引擎,但由於使用256個最小和運算引擎會導致電路的訊號量(訊號連接線)過多,當用以佈局及佈線(Place and Route)的電腦輔助設計(CAD)工具發現電路的訊號量過多,CAD工具會無法對此電路進行佈局及佈線。因此,對於25G的PON,並行的最小和運算引擎的數目於目前實務上的上限現為64個。然而,當使用64個最小和運算引擎時,實現解碼的電路所需的時脈速度仍接近1GHz,此電路仍不易實現且消耗大量功率。Therefore, in practice, decoding operations are implemented through multiple parallel min-sum computing engines. Logically, 25G PON can use 256 parallel min-sum computing engines. However, since using 256 min-sum computing engines will result in too many circuit signals (signal connection lines), when the computer-aided design (CAD) tools used for layout and routing (Place and Route) discover that the circuit has too many signals, the CAD tools will not be able to layout and route this circuit. Therefore, for 25G PON, the current practical upper limit of the number of parallel min-sum computing engines is now 64. However, when using 64 min-sum computing engines, the clock speed required to implement the decoding circuit is still close to 1GHz, which is still difficult to implement and consumes a lot of power.

在一些實施例中,一種低密度奇偶檢查(LDPC)解碼器包含奇偶檢查碼儲存區塊及多個運算引擎。奇偶檢查碼儲存區塊用以儲存奇偶檢查碼矩陣。奇偶檢查碼矩陣包含多個行,各行包含多個子矩陣。其中奇偶檢查碼儲存區塊包含多個行群組儲存區塊。各行群組儲存區塊用以儲存包含至少一個行的行群組。其中儲存包含越多行的行群組的行群組儲存區塊設置於越靠近奇偶檢查碼儲存區塊的中心。多個運算引擎耦接於奇偶檢查碼儲存區塊。其中多個運算引擎用以對奇偶檢查碼矩陣進行LLR最小和的運算,多個運算引擎設置於奇偶檢查碼儲存區塊的兩側。In some embodiments, a low-density parity-check (LDPC) decoder includes a parity-check code storage block and multiple computing engines. The parity-check code storage block is used to store a parity-check code matrix. The parity-check code matrix includes multiple rows, each row including multiple sub-matrices. The parity-check code storage block includes multiple row group storage blocks. Each row group storage block is used to store a row group including at least one row. The row group storage block storing a row group including more rows is located closer to the center of the parity-check code storage block. The multiple computing engines are coupled to the parity-check code storage block. Multiple computing engines are used to perform LLR minimum sum operations on the parity check code matrix. The multiple computing engines are set on both sides of the parity check code storage block.

在一些實施例中,多個運算引擎以棋盤式排列設置於奇偶檢查碼儲存區塊的兩側。In some embodiments, multiple computing engines are arranged in a checkerboard pattern on both sides of the parity check code storage block.

在一些實施例中,距離奇偶檢查碼儲存區塊越遠的運算引擎具有越快的運算速度。In some embodiments, the computing engine that is farther away from the parity check code storage block has a faster computing speed.

在一些實施例中,部分的相鄰兩運算引擎之間設置有緩衝區。緩衝區包含一個或多個緩衝單元。In some embodiments, a buffer is provided between some adjacent computing engines. The buffer includes one or more buffer units.

在一些實施例中,距離奇偶檢查碼儲存區塊越遠的緩衝區包含越多的多個緩衝單元且具有越強的緩衝能力。In some embodiments, a buffer area that is farther away from the parity check code storage block includes more buffer units and has a stronger buffering capacity.

在一些實施例中,設置於奇偶檢查碼儲存區塊的一側及另一側的多個運算引擎的數目為相同。In some embodiments, the number of the plurality of computing engines disposed on one side and the other side of the parity code storage block is the same.

在一些實施例中,LDPC解碼器為25G的被動式光纖網路(PON)解碼器。In some embodiments, the LDPC decoder is a 25G passive optical network (PON) decoder.

在一些實施例中,多個運算引擎的數目為256個,且設置於奇偶檢查碼儲存區塊的一側及另一側的多個運算引擎的數目均為128個。In some embodiments, the number of the plurality of computing engines is 256, and the number of the plurality of computing engines disposed on one side and the other side of the parity code storage block is both 128.

在一些實施例中,多個運算引擎以16x8的棋盤式排列設置於奇偶檢查碼儲存區塊的兩側。In some embodiments, multiple computing engines are arranged in a 16x8 checkerboard pattern on both sides of the parity check code storage block.

在一些實施例中,各行群組儲存區塊包含6個精度位元(Precision bit)。In some embodiments, each column group storage block includes 6 precision bits.

在一些實施例中,6個精度位元包含1個符號位元(Sign Bit)和5個值位元(Value Bit)。In some embodiments, the 6 precision bits include 1 sign bit and 5 value bits.

在一些實施例中,多個行群組儲存區塊的數目為24個。In some embodiments, the number of row group storage blocks is 24.

在一些實施例中,各行群組所包含行的數量範圍為1至4。In some embodiments, each row group includes a number of rows ranging from 1 to 4.

在一些實施例中,各行僅被分配給單一個行群組。In some embodiments, each row is assigned to only a single row group.

在一些實施例中,各行包含多個列,各子矩陣位於對應的列中,各子矩陣是零矩陣或平移的單位矩陣,各行群組中所有多個行的同一列中的零矩陣被合併。In some embodiments, each row includes multiple columns, each sub-matrix is located in the corresponding column, each sub-matrix is a zero matrix or a shifted unit matrix, and the zero matrices in the same column of all multiple rows in each row group are merged.

在一些實施例中,多個運算引擎對稱地設置於奇偶檢查碼儲存區塊的兩側。In some embodiments, multiple computing engines are symmetrically arranged on both sides of the parity check code storage block.

綜上所述,於任一實施例中,CAD工具能夠對包含最多256個並行運算引擎的LDPC解碼器進行佈局和佈線,使得LDPC解碼器可以具有盡可能慢的時脈速度,同時仍滿足目標解碼吞吐量。In summary, in any embodiment, the CAD tool can layout and route an LDPC decoder comprising up to 256 parallel computing engines, such that the LDPC decoder can have the slowest possible clock speed while still meeting the target decoding throughput.

以下在實施方式中詳細敘述本案之詳細特徵以及優點,其內容足以使任何熟習相關技藝者瞭解本案之技術內容並據以實施,且根據本說明書所揭露之內容、申請專利範圍及圖式,任何熟習相關技藝者可輕易地理解本案相關之目的及優點。The following detailed description of the features and advantages of the present invention is sufficient to enable anyone skilled in the art to understand the technical content of the present invention and implement it accordingly. Based on the contents disclosed in this specification, the scope of the patent application, and the drawings, anyone skilled in the art can easily understand the relevant objectives and advantages of the present invention.

請參閱圖1A至圖1C。奇偶檢查碼矩陣M1包含多個行(column)C,各行C包含多個子矩陣M2。圖1A至圖1C所示的奇偶檢查碼矩陣M1為適用於25G的PON的LDPC檢查碼,此奇偶檢查碼矩陣M1是一個由256x256的子矩陣M2的69x12陣列所組成的17664x3072的稀疏矩陣,即,此奇偶檢查碼矩陣M1包含69個行C,且各行C包含12個256x256的子矩陣M2。每個子矩陣M2為零矩陣或平移的單位矩陣。於圖1A至圖1C中,若代表子矩陣M2的格子中有數字,代表此子矩陣M2為單位矩陣且格子中的數字代表單位矩陣的平移量。而若代表子矩陣M2的格子中沒有數字,則代表此子矩陣M2為零矩陣。為方便說明,以下僅以7x7的單位矩陣舉例說明單位矩陣的平移量。7x7的單位矩陣如下表一。 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 表一 Please refer to Figures 1A through 1C. The parity-check code matrix M1 comprises multiple rows (columns) C, each of which contains multiple sub-matrices M2. The parity-check code matrix M1 shown in Figures 1A through 1C is an LDPC parity check code suitable for 25G PON. This parity-check code matrix M1 is a 17664x3072 sparse matrix composed of 69x12 arrays of 256x256 sub-matrices M2. That is, this parity-check code matrix M1 includes 69 rows C, each of which contains twelve 256x256 sub-matrices M2. Each sub-matrix M2 is either a zero matrix or a shifted unit matrix. In Figures 1A through 1C , if a number is displayed in the grid representing sub-matrix M2, it indicates that sub-matrix M2 is a unit matrix and the number in the grid represents the unit matrix's translation. If no number is displayed in the grid representing sub-matrix M2, it indicates that sub-matrix M2 is a zero matrix. For ease of explanation, the following example uses a 7x7 unit matrix to illustrate the unit matrix's translation. The 7x7 unit matrix is shown in Table 1. 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 Table 1

在一些實施例中,單位矩陣的平移量為向右平移量。當平移量為1時(即代表子矩陣M2的格子中的數字為1時),平移的單位矩陣如下表二。 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 表二 In some embodiments, the translation of the unit matrix is a rightward translation. When the translation is 1 (i.e., the number in the grid of the sub-matrix M2 is 1), the translated unit matrix is as shown in Table 2 below. 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 Table 2

當平移量為2時(即代表子矩陣M2的格子中的數字為2時),平移的單位矩陣如下表三。 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 表三 When the translation amount is 2 (i.e., the number in the grid representing sub-matrix M2 is 2), the unit matrix of the translation is shown in Table 3 below. 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 Table 3

如表一至表三所示,當平移量為1時,單位矩陣中所有的1值向右平移1行,而單位矩陣中的最右邊一行的1值則平移至最左邊一行。當平移量為2時,單位矩陣中所有的1值向右平移2行,而單位矩陣中的最右邊兩行的1值則平移至最左邊兩行。由表一至表三的例子可類推平移量為2以上的數字及256x256的單位矩陣的情形。在一些實施例中,單位矩陣的平移量為向左平移量。As shown in Tables 1 through 3, when the shift is 1, all 1 values in the unit matrix are shifted right by one row, and the 1 values in the rightmost row of the unit matrix are shifted to the leftmost row. When the shift is 2, all 1 values in the unit matrix are shifted right by two rows, and the 1 values in the two rightmost rows of the unit matrix are shifted to the two leftmost rows. The examples in Tables 1 through 3 can be extrapolated to the case of a shift of 2 or greater and a 256x256 unit matrix. In some embodiments, the unit matrix shift is a left shift.

於圖1A至圖1C中,為方便說明,奇偶檢查碼矩陣M1包含的69個行C稱為行C0~行C68,且各行C所包含的多個子矩陣M2為位於該行C正下方的12個子矩陣M2。以行C0為例,行C0所包含的多個子矩陣M2即為位於行C0正下方的從平移量為27的子矩陣M2至平移量為88的子矩陣M2的12個子矩陣M2。In Figures 1A to 1C , for ease of explanation, the 69 rows C included in the parity-check code matrix M1 are referred to as rows C0 to C68, and the multiple sub-matrices M2 included in each row C are the 12 sub-matrices M2 located directly below the row C. Taking row C0 as an example, the multiple sub-matrices M2 included in row C0 are the 12 sub-matrices M2 located directly below row C0, from the sub-matrix M2 with a translation amount of 27 to the sub-matrix M2 with a translation amount of 88.

於圖1A至圖1C中,奇偶檢查碼矩陣M1為適用於25G的PON的LDPC檢查碼,但本案並不以此為限。在一些實施例中,奇偶檢查碼矩陣M1可為適用於任意速率的PON(例如APON、BPON、EPON及GPON)、乙太網路或其他資料通訊協定的LDPC檢查碼。In Figures 1A to 1C , parity-check code matrix M1 is an LDPC code suitable for 25G PON, but the present invention is not limited to this. In some embodiments, parity-check code matrix M1 can be an LDPC code suitable for any rate PON (e.g., APON, BPON, EPON, and GPON), Ethernet, or other data communication protocols.

於圖1A至圖1C中,奇偶檢查碼矩陣M1包含69個行C,且每行C包含12個256x256的子矩陣M2,但本案並不以此為限。在一些實施例中,奇偶檢查碼矩陣M1可包含任意數量的行C,各行C可包含任意數量的子矩陣M2,且子矩陣M2可為任意大小。In Figures 1A to 1C , the parity-check code matrix M1 includes 69 rows C, and each row C includes twelve 256x256 sub-matrices M2, but the present invention is not limited to this. In some embodiments, the parity-check code matrix M1 may include any number of rows C, each row C may include any number of sub-matrices M2, and the sub-matrices M2 may be of any size.

在一些實施例中,奇偶檢查碼矩陣M1所包含的多個行C被分組成多個行群組G,各行群組G包含至少一個行C。請參閱圖2。圖1A至圖1C所示的奇偶檢查碼矩陣M1所包含的行C0至行C68被分組成圖2所示的多個行群組G。於此為方便說明,多個行群組G稱為行群組G0~G23,且各行群組G所包含的至少一個行C為位於該行群組G正下方的至少一個行C。以行群組G0~G3為例,行群組G0所包含的至少一個行C即為位於行群組G0正下方的行C0,行群組G1所包含的至少一個行C即為位於行群組G1正下方的行C1,行群組G2所包含的至少一個行C即為位於行群組G2正下方的行C2、行C8及行C52,行群組G3所包含的至少一個行C即為位於行群組G3正下方的行C3、行C12、行C23及行C49。在一些實施例中,各行群組G所包含的行C的數量範圍為1至4,但本發明不限於此。各行群組G所包含的行C的數量可為任意數目。In some embodiments, the multiple rows C included in the parity-check code matrix M1 are grouped into multiple row groups G, each row group G including at least one row C. See FIG2 . Rows C0 through C68 included in the parity-check code matrix M1 shown in FIG1A through FIG1C are grouped into multiple row groups G shown in FIG2 . For ease of explanation, the multiple row groups G are referred to herein as row groups G0 through G23, and the at least one row C included in each row group G is at least one row C located directly below the row group G. Taking row groups G0-G3 as an example, the at least one row C included in row group G0 is row C0 located directly below row group G0. The at least one row C included in row group G1 is row C1 located directly below row group G1. The at least one row C included in row group G2 is row C2, row C8, and row C52 located directly below row group G2. The at least one row C included in row group G3 is row C3, row C12, row C23, and row C49 located directly below row group G3. In some embodiments, the number of rows C included in each row group G ranges from 1 to 4, but the present invention is not limited thereto. The number of rows C included in each row group G can be any number.

在一些實施例中,將奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G的分組要求是各行群組G中的所有行C的同一列(row)的非零矩陣的數目不能超過1個。請參閱圖1A至圖1C及圖2。於此以行群組G0~G3為例,行C0的第1列至第12列中僅有第2列為零矩陣,其餘列皆為非零矩陣,而於行C1至行C68中並沒有僅第2列為非零矩陣的行C,使得行C0無法與任何其他行C分於同一組,因此,行群組G0僅包含行C0。同理,行C1的所有列皆為非零矩陣,使得行C1無法與任何其他行C分於同一組,因此,行群組G1僅包含行C1。行C2的第1列、第5列及第9列為非零矩陣,其餘列皆為零矩陣。行C8的第2列、第7列及第12列為非零矩陣,其餘列皆為零矩陣。行C52的第3列、第4列、第6列、第8列、第10列及第11列為非零矩陣,其餘列皆為零矩陣。行C2、行C8及行C52的所有同一列的非零矩陣都未超過1個,使得行C2、行C8及行C52可分於同一組,因此,行群組G2包含行C2、行C8及行C52。行C3的第7列、第9列及第10列為非零矩陣,其餘列皆為零矩陣。行C12的第2列、第5列及第11列為非零矩陣,其餘列皆為零矩陣。行C23的第1列、第8列及第12列為非零矩陣,其餘列皆為零矩陣。行C49的第3列、第4列及第6列為非零矩陣,其餘列皆為零矩陣。行C3、行C12、行C23及行C49的所有同一列的非零矩陣都未超過1個,使得行C3、行C12、行C23及行C49可分於同一組,因此,行群組G3包含行C3、行C12、行C23及行C49。由上述行群組G0~行群組G3的例子可類推行群組G4~行群組G23的分組情形。In some embodiments, the grouping of the multiple rows C included in the parity-check code matrix M1 into multiple row groups G requires that the number of non-zero matrices in the same column (row) of all rows C in each row group G cannot exceed one. See Figures 1A to 1C and Figure 2. Taking row groups G0 to G3 as an example, among the 1st to 12th columns of row C0, only the second column contains a zero matrix; the remaining columns contain non-zero matrices. Furthermore, among rows C1 to C68, there is no row C with only the second column containing a non-zero matrix. Therefore, row C0 cannot be grouped with any other row C. Therefore, row group G0 only contains row C0. Similarly, all columns of row C1 are nonzero matrices, making row C1 impossible to group with any other row C. Therefore, row group G1 contains only row C1. The 1st, 5th, and 9th columns of row C2 are nonzero matrices, and the remaining columns are zero matrices. The 2nd, 7th, and 12th columns of row C8 are nonzero matrices, and the remaining columns are zero matrices. The 3rd, 4th, 6th, 8th, 10th, and 11th columns of row C52 are nonzero matrices, and the remaining columns are zero matrices. Rows C2, C8, and C52 all have no more than one nonzero matrix in the same column, making them possible to group together. Therefore, row group G2 contains rows C2, C8, and C52. The 7th, 9th, and 10th columns of row C3 are non-zero matrices, and the remaining columns are zero matrices. The 2nd, 5th, and 11th columns of row C12 are non-zero matrices, and the remaining columns are zero matrices. The 1st, 8th, and 12th columns of row C23 are non-zero matrices, and the remaining columns are zero matrices. The 3rd, 4th, and 6th columns of row C49 are non-zero matrices, and the remaining columns are zero matrices. Rows C3, C12, C23, and C49 all have no more than one non-zero matrix in the same column, so rows C3, C12, C23, and C49 can be grouped together. Therefore, row group G3 includes rows C3, C12, C23, and C49. The above example of row group G0 to row group G3 can be used to analogously promote the grouping of row group G4 to row group G23.

透過將奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G,各行群組G的所有行C中位於同一列(row)的零矩陣會被合併且各行群組G包含的子矩陣M2的數目(即各行群組G包含的子矩陣M2的列數)為行C所包含的子矩陣M2的列數。舉例而言,請參閱圖3。行群組G0及行群組G1因皆僅包含1個行C,行群組G0及行群組G1沒有位於同一列的零矩陣會被合併。行群組G2因包含行C2、行C8及行C52,行C2、行C8及行C52中位於同一列的零矩陣會被合併。行群組G3因包含行C3、行C12、行C23及行C49,行C3、行C12、行C23及行C49中位於同一列的零矩陣會被合併。行群組G0、行群組G1、行群組G2及行群組G3包含的子矩陣M2的數目為行C所包含的子矩陣M2的列數,即12個。由上述行群組G0~行群組G3的例子可類推行群組G4~行群組G23的情形。By grouping the multiple rows C included in the parity-check code matrix M1 into multiple row groups G, the zero matrices located in the same row across all rows C of each row group G are merged, and the number of sub-matrices M2 included in each row group G (i.e., the number of columns in the sub-matrix M2 included in each row group G) is equal to the number of columns in the sub-matrix M2 included in row C. For example, see Figure 3. Since row groups G0 and G1 each contain only one row C, no zero matrices located in the same row in row groups G0 and G1 are merged. Since row group G2 includes rows C2, C8, and C52, the zero matrices located in the same column in rows C2, C8, and C52 are merged. Because row group G3 includes rows C3, C12, C23, and C49, the zero matrices in the same column of rows C3, C12, C23, and C49 are merged. The number of sub-matrices M2 contained in row groups G0, G1, G2, and G3 is equal to the number of columns in sub-matrix M2 contained in row C, i.e., 12. The above example of row groups G0 through G3 can be applied analogously to the situation of rows G4 through G23.

請參閱圖4。在一些實施例中,將奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G的方法為:將一初始的行C分於一當前的行群組G並設置初始的行C為當前的行C(步驟S01),並找尋當前的行C之後第一個可以分於當前的行群組G的行C(步驟S02)。當找到可以分於當前的行群組G的行C後,將可以分於當前的行群組G的行C分於當前行群組G(步驟S03)並將可以分於當前的行群組G的行C設置為當前的行C(步驟S04),接著再次執行步驟S02。當找不到可以分於當前的行群組G的行C時,當前的行群組G被視為滿組,並將當前的行C的下一個行C分於新的行群組G(步驟S05)且將新的行群組G設置為當前的行群組G及將當前的行C的下一個行C設置為當前的行C(步驟S06),接著再次執行步驟S02。See Figure 4. In some embodiments, the method for grouping the multiple rows C included in the parity-check code matrix M1 into multiple row groups G is as follows: an initial row C is assigned to a current row group G and the initial row C is set as the current row C (step S01), and the first row C after the current row C that can be assigned to the current row group G is found (step S02). After the row C that can be assigned to the current row group G is found, the row C that can be assigned to the current row group G is assigned to the current row group G (step S03), and the row C that can be assigned to the current row group G is set as the current row C (step S04), and then step S02 is executed again. When no row C can be found that can be added to the current row group G, the current row group G is considered full, and the row C next to the current row C is added to a new row group G (step S05). The new row group G is set as the current row group G, and the row C next to the current row C is set as the current row C (step S06). Then, step S02 is executed again.

請參閱圖1A至圖1C及圖4。於此透過將圖1A至圖1C所示之奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G來舉例說明圖4所示的方法。首先,將行C0(即初始的行C)分於行群組G0(即當前的行群組G)並設置行C0為當前的行C(步驟S01),並找尋行C0之後第一個可以分於行群組G0的行C(步驟S02)。當找不到可以分於行群組G0的行C時,行群組G0被視為滿組,並將行C1(即行C0的下一個行C)分於行群組G1(即新的行群組G)(步驟S05)且將行群組G1設置為當前的行群組G及將行C1設置為當前的行C(步驟S06),接著找尋行C1之後第一個可以分於行群組G1的行C(步驟S02)。當找不到可以分於行群組G1的行C時,行群組G1被視為滿組,並將行C2(即行C1的下一個行C)分於行群組G2(即新的行群組G)(步驟S05)且將行群組G2設置為當前的行群組G及將行C2設置為當前的行C(步驟S06),接著找尋行C2之後第一個可以分於行群組G2的行C(步驟S02)。當找到可以分於行群組G2的行C6後,將行C6分於行群組G2(步驟S03)並將行C6設置為當前的行C(步驟S04),接著找尋行C6之後第一個可以分於行群組G2的行C(步驟S02)。當找到可以分於行群組G2的行C8後,將行C8分於行群組G2(步驟S03)並將行C8設置為當前的行C(步驟S04),接著找尋行C8之後第一個可以分於行群組G2的行C(步驟S02)。當找到可以分於行群組G2的行C49後,將行C49分於行群組G2(步驟S03)並將行C49設置為當前的行C(步驟S04),接著找尋行C49之後第一個可以分於行群組G2的行C(步驟S02)。Please refer to Figures 1A through 1C and Figure 4. The method shown in Figure 4 is illustrated by grouping the multiple rows C included in the parity-check code matrix M1 shown in Figures 1A through 1C into multiple row groups G. First, row C0 (i.e., the initial row C) is assigned to row group G0 (i.e., the current row group G) and is set as the current row C (step S01). The first row C after row C0 that can be assigned to row group G0 is then found (step S02). When no row C that can be assigned to row group G0 is found, row group G0 is considered full, and row C1 (i.e., the row C next to row C0) is assigned to row group G1 (i.e., the new row group G) (step S05), row group G1 is set as the current row group G, and row C1 is set as the current row C (step S06). Then, the first row C after row C1 that can be assigned to row group G1 is found (step S02). If no row C can be found that can be split into row group G1, row group G1 is considered full, and row C2 (i.e., the row C following row C1) is split into row group G2 (i.e., the new row group G) (step S05). Row group G2 is set as the current row group G, and row C2 is set as the current row C (step S06). The first row C after row C2 that can be split into row group G2 is then searched for (step S02). If row C6 that can be split into row group G2 is found, row C6 is split into row group G2 (step S03), and row C6 is set as the current row C (step S04). The first row C after row C6 that can be split into row group G2 is then searched for (step S02). After finding row C8 that can be split into row group G2, row C8 is split into row group G2 (step S03) and row C8 is set as the current row C (step S04). Next, the first row C after row C8 that can be split into row group G2 is searched for (step S02). After finding row C49 that can be split into row group G2, row C49 is split into row group G2 (step S03) and row C49 is set as the current row C (step S04). Next, the first row C after row C49 that can be split into row group G2 is searched for (step S02).

當使用圖4所示的方法將圖1A至圖1C所示之奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G,行C0及行C1將獨立成組,行C2、行C6、行C8及行C49將分於同一個行群組G,行C3、行C4及行C5將分於同一個行群組G……,其餘的行C的分組結果便不於此贅述。於上述的例子中,是以行C0作為初始的行C,但本案不以此為限。在一些實施例中,可以奇偶檢查碼矩陣M1所包含的其中任意一個行C作為初始的行C。When the method shown in FIG4 is used to group the multiple rows C included in the parity-check code matrix M1 shown in FIG1A through FIG1C into multiple row groups G, rows C0 and C1 are grouped separately. Rows C2, C6, C8, and C49 are grouped together in the same row group G. Rows C3, C4, and C5 are grouped together in the same row group G. The grouping results for the remaining rows C are not described here. In the above example, row C0 is used as the initial row C, but the present invention is not limited to this. In some embodiments, any row C included in the parity-check code matrix M1 can be used as the initial row C.

請參閱圖5。在一些實施例中,將奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G的方法為:將一初始的行C分於一當前的行群組G並設置初始的行C為當前的行C(步驟S11),並判斷當前的行C的下一個行C是否可以分於當前的行群組G(步驟S12)。於當前的行C的下一個行C可以分於當前的行群組G時,將當前的行C的下一個行C分於當前行群組G(步驟S13)並將當前的行C的下一個行C設置為當前的行C(步驟S14),接著再次執行步驟S12。於當前的行C的下一個行C不可以分於當前的行群組G時,當前的行群組G被視為滿組,並將當前的行C的下一個行C分於新的行群組G(步驟S15)且將新的行群組G設置為當前的行群組G及將當前的行C的下一個行C設置為當前的行C(步驟S16),接著再次執行步驟S12。See Figure 5. In some embodiments, the method for grouping the multiple rows C included in the parity-check code matrix M1 into multiple row groups G is as follows: an initial row C is assigned to a current row group G and the initial row C is set as the current row C (step S11). Then, a determination is made as to whether the row C following the current row C can be assigned to the current row group G (step S12). If the row C following the current row C can be assigned to the current row group G, the row C following the current row C is assigned to the current row group G (step S13), the row C following the current row C is set as the current row C (step S14), and step S12 is then repeated. When the row C next to the current row C cannot be added to the current row group G, the current row group G is considered full, and the row C next to the current row C is added to a new row group G (step S15). The new row group G is set as the current row group G, and the row C next to the current row C is set as the current row C (step S16). Then, step S12 is executed again.

請參閱圖1A至圖1C及圖5。於此透過將圖1A至圖1C所示之奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G來舉例說明圖5所示的方法。首先,將行C0(即初始的行C)分於行群組G0(即當前的行群組G)並設置行C0為當前的行C(步驟S11),並判斷行C1(即行C0的下一個行C)是否可以分於行群組G0(步驟S12)。當行C1不可以分於行群組G0時,行群組G0被視為滿組,並將行C1(即行C0的下一個行C)分於行群組G1(即新的行群組G)(步驟S15)且將行群組G1設置為當前的行群組G及將行C1設置為當前的行C(步驟S16),接著判斷行C2(即行C1的下一個行C)是否可以分於行群組G1(步驟S12)。當行C2不可以分於行群組G1時,行群組G1被視為滿組,並將行C2(即行C1的下一個行C)分於行群組G2(即新的行群組G) (步驟S15)且將行群組G2設置為當前的行群組G及將行C2設置為當前的行C(步驟S16),接著判斷行C3(即行C2的下一個行C)是否可以分於行群組G2(步驟S12)。當行C3不可以分於行群組G2時,行群組G2被視為滿組,並將行C3(即行C2的下一個行C)分於行群組G3(即新的行群組G)(步驟S15)且將行群組G3設置為當前的行群組G及將行C3設置為當前的行C(步驟S16),接著判斷行C4(即行C3的下一個行C)是否可以分於行群組G3(步驟S12)。當行C4可以分於行群組G3時,將行C4分於行群組G3(步驟S13)並將行C4設置為當前的行C(步驟S14),接著判斷行C5(即行C4的下一個行C)是否可以分於行群組G3(步驟S12)。當行C5可以分於行群組G3時,將行C5分於行群組G3(步驟S13)並將行C5設置為當前的行C(步驟S14),接著判斷行C6(即行C5的下一個行C)是否可以分於行群組G3(步驟S12)。Please refer to Figures 1A to 1C and Figure 5. The method shown in Figure 5 is illustrated by grouping the multiple rows C included in the parity-check code matrix M1 shown in Figures 1A to 1C into multiple row groups G. First, row C0 (i.e., the initial row C) is assigned to row group G0 (i.e., the current row group G) and is set as the current row C (step S11). A determination is then made as to whether row C1 (i.e., the row C following row C0) can be assigned to row group G0 (step S12). When row C1 cannot be assigned to row group G0, row group G0 is considered full, and row C1 (i.e., the next row C after row C0) is assigned to row group G1 (i.e., the new row group G) (step S15). Row group G1 is set as the current row group G, and row C1 is set as the current row C (step S16). Then, it is determined whether row C2 (i.e., the next row C after row C1) can be assigned to row group G1 (step S12). When row C2 cannot be added to row group G1, row group G1 is considered full, and row C2 (i.e., the next row C after row C1) is added to row group G2 (i.e., the new row group G) (step S15). Row group G2 is set as the current row group G, and row C2 is set as the current row C (step S16). Then, it is determined whether row C3 (i.e., the next row C after row C2) can be added to row group G2 (step S12). If row C3 cannot be added to row group G2, row group G2 is considered full, and row C3 (i.e., the row C following row C2) is added to row group G3 (i.e., the new row group G) (step S15). Row group G3 is set as the current row group G, and row C3 is set as the current row C (step S16). A determination is then made as to whether row C4 (i.e., the row C following row C3) can be added to row group G3 (step S12). If row C4 can be added to row group G3, row C4 is added to row group G3 (step S13), and row C4 is set as the current row C (step S14). A determination is then made as to whether row C5 (i.e., the row C following row C4) can be added to row group G3 (step S12). When row C5 can be assigned to row group G3, row C5 is assigned to row group G3 (step S13) and row C5 is set as the current row C (step S14). Then, it is determined whether row C6 (i.e., the next row C after row C5) can be assigned to row group G3 (step S12).

當使用圖5所示的方法將圖1A至圖1C所示之奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G,行C0、行C1及行C2將獨立成組,行C3、行C4及行C5將分於同一個行群組G,行C6獨立成組,行C7及行C8將分於同一個行群組G,行C9將獨立成組……,其餘的行C的分組結果便不於此贅述。於上述的例子中,是以行C0作為初始的行C,但本案不以此為限。在一些實施例中,可以奇偶檢查碼矩陣M1所包含的其中任意一個行C作為初始的行C。When the method shown in FIG5 is used to group the multiple rows C included in the parity-check code matrix M1 shown in FIG1A through FIG1C into multiple row groups G, rows C0, C1, and C2 are grouped independently. Rows C3, C4, and C5 are grouped together in the same row group G. Row C6 is grouped independently. Rows C7 and C8 are grouped together in the same row group G. Row C9 is grouped independently. The grouping results for the remaining rows C are not described here. In the above example, row C0 is used as the initial row C, but the present invention is not limited to this. In some embodiments, any row C included in the parity-check code matrix M1 can be used as the initial row C.

在一些實施例中,奇偶檢查碼矩陣M1所包含的多個行C可透過試錯法(Trial and Error)分組成多個行群組G。在一些實施例中,是透過電腦程式(Computer Program)執行試錯法來將奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G,而圖2所示之多個行群組G的分組結果即為透過試錯法分組的結果。於圖2之實施例中,多個行群組G的數目為24個,但本案並不以此為限,在一些實施例中,多個行群組G的數目可為任意數字。由於各行C僅被分配給單一個行群組G,所以奇偶檢查碼矩陣M1能夠在不於各行群組G之間進行複用的情況被分割成多個平鋪佈局群組(Tile Layout Groups)。In some embodiments, the columns C included in the parity-check code matrix M1 can be grouped into a plurality of column groups G using a trial-and-error method. In some embodiments, a computer program executes the trial-and-error method to group the columns C included in the parity-check code matrix M1 into the plurality of column groups G. The grouping of the plurality of column groups G shown in FIG2 is the result of the trial-and-error method. In the embodiment of FIG2 , the number of the plurality of column groups G is 24, but the present invention is not limited to this. In some embodiments, the number of the plurality of column groups G can be any number. Since each row C is assigned to only one row group G, the parity check code matrix M1 can be divided into multiple tile layout groups without being reused between the row groups G.

請參閱圖6。奇偶檢查碼儲存區塊B1包含多個行群組儲存區塊B2。奇偶檢查碼儲存區塊B1用以儲存奇偶檢查碼矩陣M1。各行群組儲存區塊B2用以儲存各行群組G。圖6的多個行群組儲存區塊B2所儲存的多個行群組G對應於圖2的多個行群組G。其中儲存包含越多行C的行群組G的行群組儲存區塊B2設置於越靠近奇偶檢查碼儲存區塊B1的中心。以圖6所示之奇偶檢查碼儲存區塊B1為例,各行群組G所包含的行C的個數有1個至4個。其中儲存包含4個行C的行群組G15、行群組G10、行群組G12、行群組G7、行群組G9、行群組G5、行群組G6、行群組G3及行群組G4的行群組儲存區塊B2設置於奇偶檢查碼儲存區塊B1的中心區域。儲存包含3個行C的行群組G2、行群組G8、行群組G11、行群組G13及行群組G14的行群組儲存區塊B2相較於儲存包含4個行C的行群組G的行群組儲存區塊B2設置於較遠離奇偶檢查碼儲存區塊B1的中心。儲存包含2個行C的行群組G16、行群組G17、行群組G18、行群組G19、行群組G20、行群組G21、行群組G22及行群組G23的行群組儲存區塊B2相較於儲存包含3個行C的行群組G的行群組儲存區塊B2又設置於更遠離奇偶檢查碼儲存區塊B1的中心。儲存僅包含1個行C的行群組G0及行群組G1的行群組儲存區塊B2則設置於奇偶檢查碼儲存區塊B1的邊緣。See Figure 6. Parity-check code storage block B1 includes multiple row group storage blocks B2. Parity-check code storage block B1 is used to store parity-check code matrix M1. Each row group storage block B2 is used to store a row group G. The multiple row groups G stored in the multiple row group storage blocks B2 in Figure 6 correspond to the multiple row groups G in Figure 2. The row group storage block B2 storing the row group G containing more rows C is positioned closer to the center of parity-check code storage block B1. Taking the parity-check code storage block B1 shown in Figure 6 as an example, each row group G contains between one and four rows C. Row group storage block B2, which stores row group G15, row group G10, row group G12, row group G7, row group G9, row group G5, row group G6, row group G3, and row group G4, each containing four rows C, is located in the center of parity code storage block B1. Row group storage block B2, which stores row group G2, row group G8, row group G11, row group G13, and row group G14, each containing three rows C, is located farther from the center of parity code storage block B1 than row group storage block B2, which stores row group G, each containing four rows C. Row group storage block B2, which stores row groups G16, G17, G18, G19, G20, G21, G22, and G23, each containing two rows C, is located further from the center of parity code storage block B1 than row group storage block B2, which stores row group G, which contains three rows C. Row group storage block B2, which stores row group G0 and row group G1, each containing only one row C, is located at the edge of parity code storage block B1.

請參閱圖7。低密度奇偶檢查(LDPC)解碼器1包含奇偶檢查碼儲存區塊B1及多個運算引擎E。在一些實施例中,多個運算引擎E以棋盤式排列設置於奇偶檢查碼儲存區塊B1的兩側。於圖7所示之LDPC解碼器1中,多個運算引擎E的數量為256個。但本案並不以此為限,多個運算引擎E的數量可為任意數目。在一些實施例中,設置於奇偶檢查碼儲存區塊B1的一側及另一側的多個運算引擎E的數目為相同,以圖7之LDPC解碼器1為例。當多個運算引擎E的數量為256個時,設置於奇偶檢查碼儲存區塊B1的一側及另一側的多個運算引擎E的數目均為128個。但本案並不以此為限,設置於奇偶檢查碼儲存區塊B1的一側及另一側的多個運算引擎E的數目可為不同。在一些實施例中,當設置於奇偶檢查碼儲存區塊B1的一側及另一側的多個運算引擎E的數目均為128個時,多個運算引擎E是以16x8的棋盤式排列設置於奇偶檢查碼儲存區塊B1的兩側。但本案並不以此為限,多個運算引擎E可呈任意大小的矩陣排列設置於奇偶檢查碼儲存區塊B1的兩側。在一些實施例中,LDPC解碼器1為25G的PON解碼器,但本案並不以此為限。在一些實施例中,LDPC解碼器1可為任意速率的PON(例如APON、BPON、EPON及GPON)、乙太網路或其他資料通訊協定的解碼器。在一些實施例中,多個運算引擎E對稱地設置於奇偶檢查碼儲存區塊B1的兩側。See Figure 7. A low-density parity-check (LDPC) decoder 1 includes a parity-check code storage block B1 and a plurality of computing engines E. In some embodiments, the plurality of computing engines E are arranged in a checkerboard pattern on both sides of the parity-check code storage block B1. In the LDPC decoder 1 shown in Figure 7, the number of the plurality of computing engines E is 256. However, the present invention is not limited to this, and the number of the plurality of computing engines E can be any number. In some embodiments, the number of the plurality of computing engines E arranged on one side and the other side of the parity-check code storage block B1 is the same, taking the LDPC decoder 1 in Figure 7 as an example. When the number of the plurality of computing engines E is 256, the number of the plurality of computing engines E disposed on one side and the other side of the parity-check code storage block B1 is 128. However, the present invention is not limited thereto; the number of the plurality of computing engines E disposed on one side and the other side of the parity-check code storage block B1 may be different. In some embodiments, when the number of the plurality of computing engines E disposed on one side and the other side of the parity-check code storage block B1 is 128, the plurality of computing engines E are arranged in a 16x8 checkerboard pattern on both sides of the parity-check code storage block B1. However, the present invention is not limited to this. Multiple computation engines E can be arranged in a matrix of any size and placed on both sides of the parity-check code storage block B1. In some embodiments, LDPC decoder 1 is a 25G PON decoder, but the present invention is not limited to this. In some embodiments, LDPC decoder 1 can be a decoder for any rate PON (e.g., APON, BPON, EPON, and GPON), Ethernet, or other data communication protocols. In some embodiments, multiple computation engines E are symmetrically placed on both sides of the parity-check code storage block B1.

由於將奇偶檢查碼矩陣M1所包含的多個行C分組成多個行群組G後,各行群組G的所有行C中位於同一列(row)的零矩陣會被合併,多個運算引擎E不需對已合併的零矩陣進行運算以減少多個運算引擎E的所需的訊號量數目,進而提升多個運算引擎E的運算速度。因此,用以佈局及佈線(Place and Route)的電腦輔助設計(CAD)工具可成功的對圖7之LDPC解碼器1進行佈局及佈線而不會有因使用過多運算引擎E使得CAD工具無法對LDPC解碼器1進行佈局及佈線的問題。由於LDPC解碼器1可使用256個運算引擎E對奇偶檢查碼儲存區塊B1所儲存的奇偶檢查碼矩陣M1進行運算以對奇偶檢查碼矩陣M1進行解碼和糾錯,因此,LDPC解碼器1所需的時脈速度可大幅降低,進而使LDPC解碼器1的功率消耗也大幅減少。After the multiple rows C included in the parity-check code matrix M1 are grouped into multiple row groups G, the zero matrices located in the same row in all rows C of each row group G are merged. Therefore, the multiple computing engines E do not need to perform operations on the merged zero matrices, thereby reducing the number of signals required by the multiple computing engines E and thereby improving the computing speed of the multiple computing engines E. Therefore, computer-aided design (CAD) tools used for place and route can successfully place and route the LDPC decoder 1 in FIG. 7 without the problem of the CAD tool being unable to place and route the LDPC decoder 1 due to the use of too many computing engines E. Because LDPC decoder 1 can use 256 computing engines E to perform operations on parity-check code matrix M1 stored in parity-check code storage block B1 to decode and correct parity-check code matrix M1, the clock speed required by LDPC decoder 1 can be significantly reduced, thereby significantly reducing the power consumption of LDPC decoder 1.

於圖7所示之LDPC解碼器1中,為方便說明,多個運算引擎E稱為運算引擎E0~運算引擎E255。用以儲存行群組G1的行群組儲存區塊B2(下稱行群組儲存區塊B20)與運算引擎E15的距離d2為行群組儲存區塊B20至多個運算引擎E的最遠垂直距離,用以儲存行群組G15的行群組儲存區塊B2(下稱行群組儲存區塊B22)與運算引擎E15的距離d1為行群組儲存區塊B22至多個運算引擎E的最遠垂直距離,用以儲存行群組G0的行群組儲存區塊B2(下稱行群組儲存區塊B21)與運算引擎E240的距離d4為行群組儲存區塊B21至多個運算引擎E的最遠垂直距離,用以儲存行群組G12的行群組儲存區塊B2(下稱行群組儲存區塊B23)與運算引擎E240的距離d3為行群組儲存區塊B23至多個運算引擎E的最遠垂直距離。在一些實施例中,距離d2及距離d4長度相等且距離d1及距離d3長度相等,但本案並不以此為限。In the LDPC decoder 1 shown in FIG7 , for the convenience of explanation, the plurality of computing engines E are referred to as computing engines E0 to E255. The distance d2 between the row group storage block B2 (hereinafter referred to as row group storage block B20) for storing the row group G1 and the computing engine E15 is the farthest vertical distance from the row group storage block B20 to the plurality of computing engines E. The distance d1 between the row group storage block B2 (hereinafter referred to as row group storage block B22) for storing the row group G15 and the computing engine E15 is the farthest vertical distance from the row group storage block B22 to the plurality of computing engines E. The distance d4 between the row group storage block B2 storing row group G0 (hereinafter referred to as row group storage block B21) and computing engine E240 is the maximum vertical distance from row group storage block B21 to multiple computing engines E. The distance d3 between the row group storage block B2 storing row group G12 (hereinafter referred to as row group storage block B23) and computing engine E240 is the maximum vertical distance from row group storage block B23 to multiple computing engines E. In some embodiments, distance d2 and distance d4 are equal in length, and distance d1 and distance d3 are equal in length, but the present invention is not limited thereto.

在一些實施例中,多個運算引擎E是利用對數似然比(LLR)最小和演算法對奇偶檢查碼儲存區塊B1所儲存的奇偶檢查碼矩陣M1進行運算以對奇偶檢查碼矩陣M1進行解碼和糾錯。在一些實施例中,對數似然比是透過精度位元(Precision bit)來表示精確度。在一些實施例中,各行群組儲存區塊B2包含6個精度位元。但本案並不以此為限,各行群組儲存區塊B2可包含任意數量的精度位元。在一些實施例中,6個精度位元包含1個符號位元(Sign Bit)和5個值位元(Value Bit)。在一些實施例中,精度位元的數目是透過於大型的現場可程式化邏輯閘陣列(FPGA)的測試平台上進行大量實驗來決定。在一些實施例中,各運算引擎E包括288個訊號(24(多個行群組儲存區塊B2的數目)*6(精度位元的數目)*2(輸入及輸出)=288)。In some embodiments, multiple computation engines E utilize a log-likelihood ratio (LLR) minimum-sum algorithm to perform operations on the parity-check code matrix M1 stored in the parity-check code storage block B1 to decode and correct the parity-check code matrix M1. In some embodiments, the log-likelihood ratio represents precision using precision bits. In some embodiments, each row group storage block B2 includes six precision bits. However, the present invention is not limited to this, and each row group storage block B2 may include any number of precision bits. In some embodiments, the six precision bits include one sign bit and five value bits. In some embodiments, the number of bits of precision is determined through extensive experimentation on a large field-programmable gate array (FPGA) testbed. In some embodiments, each computation engine E includes 288 signals (24 (number of row group storage blocks B2) * 6 (number of bits of precision) * 2 (inputs and outputs) = 288).

請參閱圖8A及圖8B。在一些實施例中,多個運算引擎E以棋盤式排列設置於奇偶檢查碼儲存區塊B1的上下兩側(如圖8A所示)。在一些實施例中,多個運算引擎E以棋盤式排列設置於奇偶檢查碼儲存區塊B1的左右兩側(如圖8B所示)。在一些實施例中,圖8B所示的LDPC解碼器1的佈局為圖8A所示的LDPC解碼器1的佈局旋轉90度後的佈局。在一些實施例中,如果於IC製程中可用的水平佈線多於垂直佈線時,則圖8B所示的LDPC解碼器1的佈局會較圖8A所示的LDPC解碼器1的佈局更為適合。Please refer to Figures 8A and 8B. In some embodiments, multiple computing engines E are arranged in a checkerboard pattern on the upper and lower sides of the parity check code storage block B1 (as shown in Figure 8A). In some embodiments, multiple computing engines E are arranged in a checkerboard pattern on the left and right sides of the parity check code storage block B1 (as shown in Figure 8B). In some embodiments, the layout of the LDPC decoder 1 shown in Figure 8B is a layout of the LDPC decoder 1 shown in Figure 8A rotated 90 degrees. In some embodiments, if there are more horizontal wiring than vertical wiring available in the IC process, the layout of the LDPC decoder 1 shown in Figure 8B is more suitable than the layout of the LDPC decoder 1 shown in Figure 8A.

請參閱圖9A及圖9B。在一些實施例中,以棋盤式排列設置於奇偶檢查碼儲存區塊B1的一側及另一側的多個運算引擎E中的同一行的多個運算引擎E包含多個導線。以圖9A所示之設置於奇偶檢查碼儲存區塊B1的下側的同一行的8個運算引擎E及圖9B所示之設置於奇偶檢查碼儲存區塊B1的上側的同一行的8個運算引擎E為例,於多個行群組儲存區塊B2的數目為24個且各行群組儲存區塊B2包含6個精度位元時,圖9A所示的8個運算引擎E及圖9B所示的8個運算引擎E所包含的導線數目皆為2304(8(運算引擎E的數目)*24(多個行群組儲存區塊B2的數目)*6(精度位元的數目)*2(輸入及輸出)=2304)。而圖9A所示的8個運算引擎E的寬度w1及圖9B所示的8個運算引擎E的寬度w2於LDPC解碼器1使用台積電(TSMC)的12奈米(nm)製程製造時則為92.16(µm)(2304(導線數目)*0.08微米(µm)(導線寬度)/2(導線層數)=92.16(µm)),其中導線寬度及導線層數是由台積電的12nm製程所決定。在一些實施例中,導線寬度及導線層數是由LDPC解碼器1所使用的製程來決定。9A and 9B . In some embodiments, the plurality of computing engines E in the same row of the plurality of computing engines E arranged in a checkerboard pattern on one side and the other side of the parity check code storage block B1 include a plurality of wires. Taking the eight computing engines E arranged in the same row at the bottom side of the parity check code storage block B1 shown in Figure 9A and the eight computing engines E arranged in the same row at the top side of the parity check code storage block B1 shown in Figure 9B as examples, when the number of multiple row group storage blocks B2 is 24 and each row group storage block B2 includes 6 precision bits, the number of wires included in the eight computing engines E shown in Figure 9A and the eight computing engines E shown in Figure 9B are both 2304 (8 (number of computing engines E) * 24 (number of multiple row group storage blocks B2) * 6 (number of precision bits) * 2 (input and output) = 2304). The width w1 of the eight computation engines E shown in FIG9A and the width w2 of the eight computation engines E shown in FIG9B are 92.16 μm (2304 (number of wires) * 0.08 μm (wire width) / 2 (number of wire layers) = 92.16 μm) when the LDPC decoder 1 is manufactured using TSMC's 12 nm process. The wire width and number of wire layers are determined by TSMC's 12 nm process. In some embodiments, the wire width and number of wire layers are determined by the process used by the LDPC decoder 1.

在一些實施例中,距離奇偶檢查碼儲存區塊B1越遠的運算引擎E具有越大的電路面積(Circuit Area)及越快的運算速度。以圖9A為例,運算引擎E96相較於運算引擎E112具有越大的電路面積及越快的運算速度,運算引擎E80相較於運算引擎E96具有越大的電路面積及越快的運算速度……以此類推,運算引擎E0具有圖9A所示之多個運算引擎E中最大的電路面積及最快的運算速度。同理,運算引擎E240具有圖9B所示之多個運算引擎E中最大的電路面積及最快的運算速度。在一些實施例中,設置於同一行的多個運算引擎E中具有最大的電路面積的運算引擎E(即圖9A之運算引擎E0或圖9B之運算引擎E240)之電路面積可為但不限於3000平方奈米(squm)。以圖9A為例,假設8個運算引擎E的寬度w1為92.16µm且運算引擎E0的電路面積為3000squm,此時運算引擎E0的高度即為32.55(um)(3000 (squm) /91.6(µm)=32.55(um))。在一些實施例中,設置於同一行的多個運算引擎E中具有最小的電路面積的運算引擎E(即圖9A之運算引擎E112或圖9B之運算引擎E128)之電路面積可為但不限於2000 squm。以圖9A為例,假設8個運算引擎E的寬度w1為92.16µm且運算引擎E112的電路面積為2000squm,此時運算引擎E112的高度即為21.7(um)(2000 (squm) /91.6(µm)=21.7(um))。In some embodiments, computing engines E that are farther from parity-check code storage block B1 have larger circuit areas and faster computing speeds. For example, in Figure 9A , computing engine E96 has a larger circuit area and faster computing speed than computing engine E112 , while computing engine E80 has a larger circuit area and faster computing speed than computing engine E96 . Similarly, computing engine E0 has the largest circuit area and the fastest computing speed among the multiple computing engines E shown in Figure 9A . Similarly, computing engine E240 has the largest circuit area and the fastest computing speed among the multiple computing engines E shown in Figure 9B . In some embodiments, the circuit area of the computing engine E with the largest circuit area among the multiple computing engines E arranged in the same row (i.e., computing engine E0 in FIG. 9A or computing engine E240 in FIG. 9B ) may be, but is not limited to, 3000 square nanometers (squm). Taking FIG. 9A as an example, assuming that the width w1 of the eight computing engines E is 92.16 µm and the circuit area of computing engine E0 is 3000 squm, the height of computing engine E0 is 32.55 μm (3000 (squm) / 91.6 (μm) = 32.55 μm). In some embodiments, the circuit area of the computing engine E with the smallest circuit area among the multiple computing engines E arranged in the same row (i.e., computing engine E112 in FIG. 9A or computing engine E128 in FIG. 9B ) may be, but is not limited to, 2000 squm. Taking FIG. 9A as an example, assuming that the width w1 of the eight computing engines E is 92.16 µm and the circuit area of computing engine E112 is 2000 squm, the height of computing engine E112 is 21.7 μm (2000 (squm) / 91.6 (μm) = 21.7 μm).

由於從奇偶檢查碼儲存區塊B1到最遠的運算引擎E的距離(即圖9A的8個運算引擎E的總高度h1及圖9B的8個運算引擎E的總高度h2)相當長(以總高度h1及總高度h2為例,大約為217(um) (21.7(um)+32.55(um)/2*8 = 217(um) )),因此,在一些實施例中,需要對部分的相鄰兩運算引擎E之間設置緩衝區以對同一行的多個運算引擎E進行分段,以加強來自奇偶檢查碼儲存區塊B1的訊號強度,進而防止來自奇偶檢查碼儲存區塊B1的訊號傳播至部分的運算引擎E所需的時間過長。Since the distance from the parity-check code storage block B1 to the farthest computing engine E (i.e., the total height h1 of the eight computing engines E in FIG. 9A and the total height h2 of the eight computing engines E in FIG. 9B ) is quite long (taking the total height h1 and the total height h2 as examples, it is approximately 217 (um) (21.7 (um) + 32.55 (um) / 2 * 8 = 217 (um) )), in some embodiments, a buffer needs to be set between some adjacent computing engines E to segment the multiple computing engines E in the same row, so as to enhance the signal strength from the parity-check code storage block B1, thereby preventing the time required for the signal from the parity-check code storage block B1 to propagate to some computing engines E from being too long.

請參閱圖10。在一些實施例中,設置於同一行的部分之相鄰兩運算引擎E之間設置有緩衝區10,且同一行的多個運算引擎E中設置有多個緩衝區10。於此為方便說明,圖10所示之多個緩衝區10分別稱為緩衝區11、緩衝區12及緩衝區13。來自奇偶檢查碼儲存區塊B1的訊號必須傳播到運算引擎E112、運算引擎E96、運算引擎E80、運算引擎E64、運算引擎E48、運算引擎E32、運算引擎E16及運算引擎E0。經過緩衝區11的訊號需傳播至運算引擎E80、運算引擎E64、運算引擎E48、運算引擎E32、運算引擎E16及運算引擎E0、經過緩衝區12的訊號需傳播至運算引擎E48、運算引擎E32、運算引擎E16及運算引擎E0、經過緩衝區13的訊號僅需傳播至運算引擎E16及運算引擎E0。因此,緩衝區11的緩衝能力(即訊號強度的增強能力)必須大於緩衝區12及緩衝區13的緩衝能力,且緩衝區12的緩衝能力也必須大於緩衝區13的緩衝能力。在一些實施例中,緩衝區10包含一個或多個緩衝單元。緩衝區10所包含的緩衝單元的數目越多,緩衝能力越強。因此,緩衝區11所包含的緩衝單元的數目大於緩衝區12及緩衝區13所包含的緩衝單元的數目,且緩衝區12所包含的緩衝單元的數目也大於緩衝區13所包含的緩衝單元的數目。而緩衝區10所包含的緩衝單元的數目越多,其電路面積也越大。因此,緩衝區11的電路面積大於緩衝區12及緩衝區13的電路面積,且緩衝區12的電路面積也大於緩衝區13的電路面積。在一些實施例中,多個緩衝區10的設置位置及各緩衝區10所包含的緩衝單元的數目是依據導線的電阻(R)值、電感(L)值及電容(C)值而決定。在一些實施例中,緩衝單元可為但不限於緩衝閘(Buffer Gate)。在一些實施例中,多個運算引擎E及多個緩衝單元對稱地設置於奇偶檢查碼儲存區塊B1的兩側。See Figure 10 . In some embodiments, a buffer 10 is provided between two adjacent computing engines E in the same row, and multiple buffers 10 are provided within multiple computing engines E in the same row. For ease of explanation, the multiple buffers 10 shown in Figure 10 are referred to as buffer 11, buffer 12, and buffer 13. Signals from parity check code storage block B1 must be propagated to computing engines E112, E96, E80, E64, E48, E32, E16, and E0. Signals passing through buffer 11 must be propagated to computing engines E80, E64, E48, E32, E16, and E0. Signals passing through buffer 12 must be propagated to computing engines E48, E32, E16, and E0. Signals passing through buffer 13 must only be propagated to computing engines E16 and E0. Therefore, the buffering capacity (i.e., the ability to boost signal strength) of buffer 11 must be greater than the buffering capacity of buffers 12 and 13, and the buffering capacity of buffer 12 must also be greater than the buffering capacity of buffer 13. In some embodiments, buffer 10 includes one or more buffer cells. The more buffer cells buffer 10 includes, the stronger its buffering capability. Therefore, the number of buffer cells included in buffer 11 is greater than the number of buffer cells included in buffer 12 and buffer 13, and the number of buffer cells included in buffer 12 is also greater than the number of buffer cells included in buffer 13. Furthermore, the more buffer cells buffer 10 includes, the larger its circuit area. Therefore, the circuit area of buffer 11 is larger than the circuit areas of buffer 12 and buffer 13, and the circuit area of buffer 12 is also larger than the circuit area of buffer 13. In some embodiments, the location of the plurality of buffers 10 and the number of buffer cells included in each buffer 10 are determined based on the resistance (R), inductance (L), and capacitance (C) values of the wires. In some embodiments, the buffer cells may be, but are not limited to, buffer gates. In some embodiments, the plurality of computing engines E and the plurality of buffer cells are symmetrically arranged on both sides of the parity check code storage block B1.

綜上所述,在一些實施例中,LDPC解碼器1可使用256個運算引擎E對奇偶檢查碼儲存區塊B1所儲存的奇偶檢查碼矩陣M1進行運算以對奇偶檢查碼矩陣M1進行解碼和糾錯,因此,LDPC解碼器1所需的時脈速度可大幅降低,進而使LDPC解碼器1的功率消耗也大幅減少。In summary, in some embodiments, the LDPC decoder 1 can use 256 computing engines E to perform operations on the parity-check code matrix M1 stored in the parity-check code storage block B1 to decode and correct the parity-check code matrix M1. Therefore, the clock speed required by the LDPC decoder 1 can be significantly reduced, thereby significantly reducing the power consumption of the LDPC decoder 1.

雖然本案的技術內容已經以較佳實施例揭露如上,然其並非用以限定本案,任何熟習此技藝者,在不脫離本案之精神所作些許之更動與潤飾,皆應涵蓋於本案的範疇內,因此本案之保護範圍當視後附之申請專利範圍所界定者為準。Although the technical content of this case has been disclosed above through the preferred embodiments, it is not intended to limit this case. Any slight changes and embellishments made by anyone skilled in the art without departing from the spirit of this case should be included in the scope of this case. Therefore, the scope of protection of this case shall be determined by the scope of the attached patent application.

M1:奇偶檢查碼矩陣 M2:子矩陣 C,C0~C68:行 G,G0~G23:行群組 S01~S06,S11~S16:步驟 B1:奇偶檢查碼儲存區塊 B2,B20~B23:行群組儲存區塊 1:低密度奇偶檢查解碼器 E,E0~E255:運算引擎 d1~d4:距離 A1,A2:區域 w1,w2:寬度 h1,h2:高度 10~13:緩衝區 M1: Parity check code matrix M2: Submatrix C, C0-C68: Rows G, G0-G23: Row groups S01-S06, S11-S16: Steps B1: Parity check code storage block B2, B20-B23: Row group storage block 1: Low-density parity check decoder E, E0-E255: Calculation engine d1-d4: Distance A1, A2: Area w1, w2: Width h1, h2: Height 10-13: Buffer

圖1A至圖1C為奇偶檢查碼矩陣之一實施例的示意圖。 圖2為多個行群組之一實施例的示意圖。 圖3為多個行群組之一實施例的另一示意圖。 圖4為將奇偶檢查碼矩陣所包含的多個行分組成多個行群組的方法之一實施例的流程圖。 圖5為將奇偶檢查碼矩陣所包含的多個行分組成多個行群組的方法之另一實施例的流程圖。 圖6為奇偶檢查碼儲存區塊之一實施例的示意圖。 圖7為LDPC解碼器之一實施例的示意圖。 圖8A為LDPC解碼器之一實施例的另一示意圖。 圖8B為LDPC解碼器之另一實施例的示意圖。 圖9A為圖8A的區域A1的多個運算引擎之一實施例的放大圖。 圖9B為圖8A的區域A2的多個運算引擎之一實施例的放大圖。 圖10為圖8A的區域A1的多個運算引擎之另一實施例的放大圖。 Figures 1A to 1C are schematic diagrams of an embodiment of a parity-check code matrix. Figure 2 is a schematic diagram of an embodiment of multiple row groups. Figure 3 is another schematic diagram of an embodiment of multiple row groups. Figure 4 is a flow chart of an embodiment of a method for grouping multiple rows of a parity-check code matrix into multiple row groups. Figure 5 is a flow chart of another embodiment of a method for grouping multiple rows of a parity-check code matrix into multiple row groups. Figure 6 is a schematic diagram of an embodiment of a parity-check code storage block. Figure 7 is a schematic diagram of an embodiment of an LDPC decoder. Figure 8A is another schematic diagram of an embodiment of an LDPC decoder. Figure 8B is a schematic diagram of another embodiment of an LDPC decoder. Figure 9A is an enlarged view of one embodiment of the multiple computing engines in area A1 of Figure 8A. Figure 9B is an enlarged view of one embodiment of the multiple computing engines in area A2 of Figure 8A. Figure 10 is an enlarged view of another embodiment of the multiple computing engines in area A1 of Figure 8A.

1:低密度奇偶檢查解碼器 1: Low-density parity check decoder

B1:奇偶檢查碼儲存區塊 B1: Parity check code storage block

B2,B20~B23:行群組儲存區塊 B2, B20~B23: Row group storage block

C,C0~C68:行 C, C0~C68: Row

G,G0~G23:行群組 G, G0~G23: Row Group

E,E0~E255:運算引擎 E, E0~E255: Calculation Engine

d1~d4:距離 d1~d4: distance

Claims (11)

一種低密度奇偶檢查(LDPC)解碼器,包含: 一奇偶檢查碼儲存區塊,用以儲存一奇偶檢查碼矩陣,該奇偶檢查碼矩陣包含多個行,各該行包含多個子矩陣,其中該奇偶檢查碼儲存區塊包含多個行群組儲存區塊,各該行群組儲存區塊用以儲存包含至少一個該行的一行群組,其中儲存包含越多該些行的該行群組的該行群組儲存區塊設置於越靠近該奇偶檢查碼儲存區塊的中心;及 多個運算引擎,耦接於該奇偶檢查碼儲存區塊,其中該些運算引擎用以對該奇偶檢查碼矩陣進行LLR最小和的運算,該些運算引擎設置於該奇偶檢查碼儲存區塊的至少兩側; 其中各該行包含多個列,各該子矩陣位於對應的該列中,各該子矩陣是零矩陣或平移的單位矩陣,各該行群組中所有該些行中位於同一該列中的零矩陣被合併。 A low-density parity-check (LDPC) decoder comprises: A parity-check code storage block for storing a parity-check code matrix, the parity-check code matrix comprising a plurality of rows, each row comprising a plurality of sub-matrices, wherein the parity-check code storage block comprises a plurality of row group storage blocks, each row group storage block being configured to store a row group comprising at least one row, wherein the row group storage block storing a row group comprising a greater number of rows is positioned closer to the center of the parity-check code storage block; and Multiple computation engines are coupled to the parity-check code storage block, wherein the computation engines are configured to perform LLR minimum sum operations on the parity-check code matrix. The computation engines are disposed on at least two sides of the parity-check code storage block. Each row includes multiple columns, each sub-matrix is located in the corresponding column, and each sub-matrix is a zero matrix or a shifted unit matrix. In each row group, the zero matrices located in the same column of all rows are merged. 如請求項1所述的LDPC解碼器,其中該些運算引擎以棋盤式排列設置於該奇偶檢查碼儲存區塊的至少兩側。The LDPC decoder of claim 1, wherein the computing engines are arranged in a checkerboard pattern on at least two sides of the parity check code storage block. 如請求項1所述的LDPC解碼器,其中距離該奇偶檢查碼儲存區塊遠的該運算引擎的運算速度高於距離該奇偶檢查碼儲存區塊近的該運算引擎的運算速度。The LDPC decoder of claim 1, wherein the operation speed of the operation engine farther from the parity check code storage block is higher than the operation speed of the operation engine closer to the parity check code storage block. 如請求項1所述的LDPC解碼器,其中部分的相鄰兩該運算引擎之間設置有一緩衝區,該緩衝區包含一個或多個緩衝單元。In the LDPC decoder of claim 1, a buffer is provided between two adjacent operation engines, and the buffer includes one or more buffer units. 如請求項4所述的LDPC解碼器,其中距離該奇偶檢查碼儲存區塊越遠的該緩衝區包含越多的該些緩衝單元且具有越強的緩衝能力。The LDPC decoder as described in claim 4, wherein the buffer area farther away from the parity check code storage block contains more buffer units and has a stronger buffering capacity. 如請求項2所述的LDPC解碼器,其中設置於該奇偶檢查碼儲存區塊的一側及另一側的該些運算引擎的數目為相同。The LDPC decoder of claim 2, wherein the number of the computing engines disposed on one side and the other side of the parity check code storage block is the same. 如請求項1所述的LDPC解碼器,其中各該行群組儲存區塊包含6個精度位元(Precision Bit)。The LDPC decoder of claim 1, wherein each of the column group storage blocks includes 6 precision bits. 如請求項7所述的LDPC解碼器,其中6個精度位元包含1個符號位元(Sign Bit)和5個值位元(Value Bit)。The LDPC decoder of claim 7 , wherein the 6 precision bits include 1 sign bit and 5 value bits. 如請求項1所述的LDPC解碼器,其中該些行群組儲存區塊的數目為24個。The LDPC decoder of claim 1, wherein the number of the row group storage blocks is 24. 如請求項1所述的LDPC解碼器,其中各該行群組所包含的該行的數量範圍為1至4。The LDPC decoder of claim 1, wherein the number of rows included in each row group ranges from 1 to 4. 如請求項1所述的LDPC解碼器,其中各該行僅被分配給單一個該行群組。The LDPC decoder of claim 1, wherein each of the rows is assigned to only a single row group.
TW113124590A 2023-10-04 2024-07-01 Low density parity check decoder TWI895029B (en)

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
TW202516346A TW202516346A (en) 2025-04-16
TWI895029B true TWI895029B (en) 2025-08-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 After (2)

Application Number Title Priority Date Filing Date
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

Country Status (1)

Country Link
TW (3) TWI895029B (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120297273A1 (en) * 2011-05-17 2012-11-22 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory apparatus and decoding method
US20160294415A1 (en) * 2013-12-09 2016-10-06 Mitsubishi Electric Corporation Error correction decoding apparatus
CN115425988A (en) * 2022-07-29 2022-12-02 北京融为科技有限公司 High-speed LDPC full-mode column transformation method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7836383B2 (en) * 2006-04-28 2010-11-16 Intel Corporation Low density parity check (LDPC) code decoder
KR102606829B1 (en) * 2019-01-09 2023-11-27 에스케이하이닉스 주식회사 Ldpc decoder, semiconductor memory system and operating method thereof
CN112632911B (en) * 2021-01-04 2022-05-13 福州大学 Chinese Character Encoding Method Based on Character Embedding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120297273A1 (en) * 2011-05-17 2012-11-22 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory apparatus and decoding method
US20160294415A1 (en) * 2013-12-09 2016-10-06 Mitsubishi Electric Corporation Error correction decoding apparatus
CN115425988A (en) * 2022-07-29 2022-12-02 北京融为科技有限公司 High-speed LDPC full-mode column transformation method

Also Published As

Publication number Publication date
TW202516346A (en) 2025-04-16
TWI898775B (en) 2025-09-21
TWI890516B (en) 2025-07-11
TW202516347A (en) 2025-04-16
TW202516866A (en) 2025-04-16

Similar Documents

Publication Publication Date Title
Bhatt et al. A framework for solving VLSI graph layout problems
US8751902B2 (en) Methods and apparatus for encoding LDPC codes
CA2536259C (en) Methods and apparatus for encoding ldpc codes
US12402543B2 (en) Two-dimensional scalable superconducting qubit structure and method for controlling cavity mode thereof
Chee et al. Constructions for $ q $-ary constant-weight codes
WO2008042186B1 (en) Information processing using binary gates structured by code-selected pass transistors
CN106936708B (en) NxN wavelength routing network topology, photonic integrated chip and optical router
CN105282556A (en) matrix transposition circuit
CN116245072B (en) Quantum chip layout wiring method, device, equipment and storage medium
TWI895029B (en) Low density parity check decoder
CN111753484B (en) A layout method of multi-die structure FPGA based on circuit performance
CN114925018B (en) On-chip crossbar switch system and chip
US6215786B1 (en) Implementation of multi-stage switching networks
CN103353632A (en) Optical switching unit based on micro-ring resonator
CN118713683A (en) LDPC Decoder
US12476655B2 (en) Low-density parity check decoder
JP5024530B2 (en) Wiring structure of three-dimensional integrated electric circuit and layout method thereof
CN111710356B (en) Coding type flash memory device and coding method
CN118868966A (en) LDPC Decoder
US20250117284A1 (en) Low-density parity check decoder
US20130257478A1 (en) Permutable switching network with enhanced interconnectivity for multicasting signals
CN100592640C (en) LDPC Decoder Based on Pipeline Working Mode
JP7626837B2 (en) Determination method, exchange device, electronic device and computer-readable medium
CN115016068A (en) Photonic integrated chip of 1×N optical switch based on M-level binary tree
KR101810771B1 (en) 3D repairable semiconductor device, and the method of repairing of the same