TWI804359B - 低密度奇偶校檢碼的解碼方法及裝置 - Google Patents
低密度奇偶校檢碼的解碼方法及裝置 Download PDFInfo
- Publication number
- TWI804359B TWI804359B TW111123326A TW111123326A TWI804359B TW I804359 B TWI804359 B TW I804359B TW 111123326 A TW111123326 A TW 111123326A TW 111123326 A TW111123326 A TW 111123326A TW I804359 B TWI804359 B TW I804359B
- Authority
- TW
- Taiwan
- Prior art keywords
- calculation circuit
- area
- check
- node calculation
- node
- Prior art date
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本發明涉及一種低密度奇偶校檢碼的解碼方法及裝置。該方法包含:當偵測到碼字儲存到靜態隨機存取記憶體時,低密度奇偶校檢解碼器進入第一階段狀態,校驗節點計算電路計算相應於碼字的第一校驗子;當第一校驗子指出在第一階段狀態中所獲取的碼字不正確時,低密度奇偶校檢解碼器使用位元翻轉演算法以產生多個變化節點,校驗節點計算電路計算相應於變化節點的第二校驗子;當第二校驗子指出在第二階段狀態中產生的變化節點不正確時,低密度奇偶校檢解碼器反覆進入第三階段狀態,直到解碼成功或者第三階段狀態的迭代次數超過閾值為止。通過低密度奇偶校檢解碼器的三階段組態,可提供一般性機制來統合校驗節點計算電路和變化節點計算電路的操作。
Description
本發明涉及儲存裝置,尤指一種低密度奇偶校檢碼的解碼方法及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。減少從閃存模組讀取資料的過程中的計算資源消耗,一直是影響閃存控制器的整體效能的重要課題。因此,本發明提出一種低密度奇偶校檢碼的解碼方法及裝置,用於減少計算資源的消耗。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種由低密度奇偶校檢解碼器執行的低密度奇偶校檢碼的解碼方法。所述方法包含以下步驟:當偵測到碼字儲存到靜態隨機存取記憶體時,低密度奇偶校檢(Low-Density Parity-Check,LDPC)解碼器進入第一階段狀態,在所述第一階段狀態中,所述校驗節點計算電路對碼字和奇偶校檢矩陣執行模二乘法以計算出第一校驗子。當第一校驗子指出在第一階段狀態中所獲取的碼字不正確時,LDPC解碼器進入第二階段狀態,在第二階段狀態中,變化節點計算電路依據碼字、相應於碼字的多個第一軟位元和第一校驗子執行位元翻轉演算法以產生多個變化節點,並且計算變化節點的多個第二軟位元;校驗節點計算電路對變化節點和奇偶校檢矩陣執行模二乘法以計算出第二校驗子。當第二校驗子指出在第二階段狀態中產生的變化節點不正確時,LDPC解碼器反覆進入第三階段狀態,直到解碼成功或者第三階段狀態的迭代次數超過閾值為止。在第三階段狀態的每次迭代中,變化節點計算電路依據變化節點、相應於變化節點的第二軟位元和第二校驗子執行位元翻轉演算法以產生多個新的變化節點,並且計算新的變化節點的多個新的第二軟位元;校驗節點計算電路對新的變化節點和奇偶校檢矩陣執行模二乘法以計算出新的第二校驗子。
本說明書另涉及一種低密度奇偶校檢碼的解碼裝置,包含:變化節點計算電路,耦接於靜態隨機存取記憶體;以及校驗節點計算電路,耦接於所述變化節點計算電路。LDPC碼的解碼裝置實施如上所述的低密度奇偶校檢碼的解碼方法。
碼字包含使用者資料和LDPC碼。碼字中的每個硬位元對應至少一個第一軟位元,用於指出此硬位元的信心程度,每個變化節點對應至少一個第二軟位元,用於指出此變化節點的信心程度。
上述實施例的優點之一,通過如上所述的低密度奇偶校檢解碼器的三階段組態,可提供一般性機制來統合校驗節點計算電路和變化節點計算電路的操作。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。
參考圖1。電子裝置10包含主機端(Host Side)110、閃存控制器130及閃存模組150,並且閃存控制器130及閃存模組150可合稱為裝置端(Device Side)。電子裝置10可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品之中。主機端110與閃存控制器130的主機介面(Host Interface)131之間可以通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)、通用快閃記憶儲存(Universal Flash Storage,UFS)、嵌入式多媒體卡(Embedded Multi-Media Card,eMMC)等通訊協定彼此溝通。NAND閃存控制器(NAND Flash Controller,NFC)137的閃存介面(Flash Interface)139與閃存模組150之間可以雙倍資料率(Double Data Rate,DDR)通訊協定彼此溝通,例如,開放NAND快閃(Open NAND Flash Interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他通訊協定。閃存控制器130包含處理單元134,可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體以及/或韌體指令時,提供之後描述的功能。處理單元134通過主機介面131接收主機命令,例如讀取命令(Read Command)、寫入命令(Write Command)、丟棄命令(Discard Command)、抹除命令(Erase Command)等,排程並執行這些命令。閃存控制器130另包含隨機存取記憶體(Random Access Memory, RAM)136,可實施為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)或上述兩者的結合,用於配置空間作為資料緩衝區,儲存從主機端110讀取並即將寫入閃存模組150的使用者資料(也可稱為主機資料),以及從閃存模組150讀取並即將輸出給主機端110的使用者資料。隨機存取記憶體136另可儲存執行過程中需要的資料,例如,變數、資料表、主機與閃存位址對照表(Host-to-Flash Address Mapping Table,簡稱H2F表)、閃存與主機位址對照表(Flash-to-Host Address Mapping Table,簡稱F2H表)等。NAND閃存控制器137提供存取閃存模組150時需要的功能,例如命令序列器(Command Sequencer)、低密度奇偶校驗(Low-Density Parity-Check,LDPC)等。
閃存控制器130中可配置共享匯流排架構(Shared Bus Architecture),用於讓元件之間彼此耦接以傳遞資料、位址、控制訊號等,這些元件包含主機介面131、處理單元134、RAM 136、NAND閃存控制器137等。匯流排包含並行的物理線,連接閃存控制器130中兩個以上的組件。共享匯流排是一種共享的傳輸媒體,在任意的時間上,只能有兩個裝置可以使用這些線來彼此溝通,用於傳遞資料。資料及控制訊號能夠在組件間分別沿資料和控制線進行雙向傳播,但另一方面,位址訊號只能沿位址線進行單向傳播。例如,當處理單元134想要讀取RAM 136的特定位址上的資料時,處理單元134在位址線上傳送此位址給RAM 136。接著,此位址的資料會在資料線上回覆給處理單元134。為了完成資料讀取操作,控制訊號會使用控制線進行傳遞。
閃存模組150提供大量的儲存空間,通常是數百個千兆位元組(Gigabytes,GB),甚至是數個兆兆位元組(Terabytes,TB),用於儲存大量的使用者資料,例如高解析度圖片、影片等。閃存模組150中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可組態為單層式單元(Single Level Cells,SLCs)、多層式單元(Multiple Level Cells,MLCs)三層式單元(Triple Level Cells,TLCs)、四層式單元(Quad-Level Cells,QLCs)或上述的任意組合。處理單元134可通過閃存介面139寫入使用者資料到閃存模組150中的指定位址(目的位址),以及從閃存模組150中的指定位址(來源位址)讀取使用者資料。閃存介面139使用數個電子訊號來協調閃存控制器130與閃存模組150間的資料與命令傳遞,包含資料線(Data Line)、時脈訊號(Clock Signal)與控制訊號(Control Signal)。資料線可用於傳遞命令、位址、讀出及寫入的資料;控制訊號線可用於傳遞晶片致能(Chip Enable,CE)、位址提取致能(Address Latch Enable,ALE)、命令提取致能(Command Latch Enable,CLE)、寫入致能(Write Enable,WE)等控制訊號。
參考圖2,閃存模組150中的介面151可包含四個輸出入通道(I/O channels,以下簡稱通道)CH#0至CH#3,每一個通道連接四個NAND閃存單元,例如,通道CH#0連接NAND閃存單元153#0、153#4、153#8及153#12。每個NAND閃存單元可封裝為獨立的芯片(die)。閃存介面139可通過介面151發出致能訊號CE#0至CE#3中的一個來致能NAND閃存單元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接著以並行的方式從致能的NAND閃存單元讀取使用者資料,或者寫入使用者資料至致能的NAND閃存單元。所屬技術領域人員可依據系統的需求改變閃存模組150的設計,在閃存模組150中配置更多或更少的通道,和/或將每個通道連接上更多或更少的NAND閃存單元,本發明並不因此受限。
NAND閃存控制器137可包含低密度奇偶校檢編碼器(LDPC Encoder),用於依據使用者資料來產生低密度奇偶校檢碼(LDPC Code),其是一種線性的錯誤修正碼(Linear Error Correcting Code)。舉例來說,LDPC碼的產生可使用以下公式表示:
MSG
1xn⊙ PCM
nx (n+m)= CW
1x(n+m)其中,MSG
1xn代表使用者資料的1列、n行矩陣,PCM
nx (n+m)代表n列、(n+m)行奇偶校檢矩陣(Parity Check Matrix),CW
1x(n+m)代表最後產生的碼字(Codeword)的1列、(n+m)行矩陣,⊙代表模2乘法(Modulo 2 Multiplication)。奇偶校檢矩陣可包含類循環(Quasi-Cyclic,QC)結構,並且CW
1x(n+m)中的前n個位元的值等於MSG
1xn的值,而CW
1x(n+m)中的後m個位元的值稱為LDPC碼。舉例如下:
所屬技術領域人員知道可使用習知的奇偶校檢矩陣和高效演算法來產生LDPC碼,例如二階段編碼(2-stage Encoding)等。
NAND閃存控制器137可包含LDPC解碼器(LDPC Decoder)138,用於校驗通過閃存介面139從閃存模組150被讀出的碼字(Codeword,包含使用者資料和LDPC碼)並判斷碼字中是否包含錯誤位元。一旦發現碼字中存在錯誤位元,LDPC解碼器138嘗試回復出正確的碼字,並且從碼字中獲取使用者資料。如果經過預定數目的嘗試,還沒有辦法回復出正確的碼字,則LDPC解碼器138判定此碼字為無法修復錯誤的碼字(Uncorrectable Codeword)。關於LDPC解碼,參考圖3所示的範例(n=3, k=6)LDPC碼。方塊33#0至33#5代表變化節點(Variable Nodes),方塊31#0至31#2代表校驗節點(Check Nodes)。變化節點33#0至33#5中的位元形成碼字,由使用者資料和LDPC碼組成,其中的位元必須滿足圖形限制(Graphical Constrains)。詳細來說,所有連接到一個變化節點的線具有相同的值,並且所有連接到一個校驗節點的加總必須除以二後的餘數為0(也就是說,其加總起來為偶數,或者具有偶數個奇數值)。校驗節點31#0至31#2又可稱為校驗子(Syndrome)。
NAND閃存控制器137還包含靜態隨機存取記憶體(Static Random Access Memory,SRAM)140,用於儲存解碼過程中所需的資料。閃存介面139可儲存從閃存模組150讀取的碼字(又可稱為硬位元)和軟位元在SRAM 140中的指定位址。每個硬位元可對應至少一個軟位元,對應的軟位元用於指出此硬位元的信心程度(Likelihood of Belief)。為了修正碼字中的錯誤位元,SRAM 140還需要配置空間來儲存在解碼過程中的更新後的變化節點以及其對應的軟位元。類似地,每個變化節點可對應至少一個軟位元,對應的軟位元用於指出此變化節點的信心程度。然而,SRAM 140是珍貴的資源,需要妥善的規劃和使用以提高其利用率(Utilization)。
LDPC解碼器(LDPC Decoder)138包含兩個重要的電路:校驗節點計算電路(Check-node Calculation Circuit)和變化節點計算電路(Variable-node Calculation Circuit)。校驗節點計算電路對碼字或者變化節點,以及奇偶校檢矩陣執行模二乘法以計算出校驗子。變化節點計算電路依據相應於碼字或者變化節點的軟位元,以及校驗子執行習知的位元翻轉演算法(Bit Flipping Algorithm)以產生新的變化節點,並且使用習知的公式來計算新的變化節點的軟位元。然而,校驗節點計算電路和變化節點計算電路的操作之間是相互依賴的,一個電路產生的結果會是另一個電路的輸入,因此,需要一般性機制來統合校驗節點計算電路和變化節點計算電路的操作。
為了統合校驗節點計算電路和變化節點計算電路的操作,本發明實施例提出三階段的LDPC解碼。LDPC解碼器138可視情況進入三階段中的一者,使得其中的校驗節點計算電路和變化節點計算電路據以完成進入階段的操作。詳細來說,當偵測到碼字儲存到靜態隨機存取記憶體140時,LDPC解碼器138進入第一階段狀態。在第一階段狀態中,校驗節點計算電路對碼字和預設的奇偶校檢矩陣執行模二乘法以計算出第一校驗子,其中,碼字包含使用者資料和低密度奇偶校檢碼的多個位元。當第一校驗子指出在第一階段狀態中所獲取的碼字不正確時,LDPC解碼器138進入第二階段狀態。在第二階段狀態中,變化節點計算電路依據碼字、相應於碼字的多個第一軟位元和第一校驗子執行位元翻轉演算法以產生多個變化節點,並且計算變化節點的多個第二軟位元。校驗節點計算電路對變化節點和預設的奇偶校檢矩陣執行模二乘法以計算出第二校驗子。碼字中的每個硬位元對應至少一個第一軟位元,用於指出此硬位元的信心程度。每個變化節點對應至少一個第二軟位元,用於指出此變化節點的信心程度。當第二校驗子指出在第二階段狀態中產生的變化節點不正確時,LDPC解碼器138反覆進入第三階段狀態,直到解碼成功或者第三階段狀態的迭代次數超過閾值為止。在第三階段狀態的每次迭代中,變化節點計算電路依據變化節點、相應於變化節點的第二軟位元和第二校驗子執行位元翻轉演算法以產生多個新的變化節點,並且計算新的變化節點的多個新的第二軟位元。校驗節點計算電路對新的變化節點和奇偶校檢矩陣執行模二乘法以計算出新的第二校驗子。
在一些實施例中,LDPC解碼器138可包含有限狀態機,用於因應碼字儲存到靜態隨機存取記憶體140的情況時,讓LDPC解碼器138處於第一階段狀態;因應第一校驗子指出在第一階段狀態中所獲取的碼字不正確的情況時,讓LDPC解碼器138處於第二階段狀態;因應第二校驗子指出在第二階段狀態或前一個第三階段中所產生的變化節點不正確的情況時,讓LDPC解碼器138處於第三階段狀態;以及控制進入第三階段狀態的迭代次數不超過閾值。
在一些實施例中,閃存介面139可包含軟位元計算電路(Soft-bit Calculation Circuit),用於在從閃存模組150讀取碼字的時候,為碼字中的每個硬位元計算軟位元。因應這種設置,參考圖4所示的NAND閃存控制器137的方塊圖。SRAM 430中可配置四個區域431、433、435和437,用於分別儲存硬位元、硬位元所對應的軟位元、變化節點、變化節點所對應的軟位元。閃存介面139將從閃存模組150讀取的硬位元寫入區域431,並且將計算出來的軟位元寫入區域433。LDPC解碼器410包含有限狀態機(Finite State Machine,FSM)412、多工器413、414、變化節點計算電路416和校驗節點計算電路418。校驗節點計算電路418用於依據區域431中儲存的硬位元或者區域435中儲存的變化節點,以及奇偶校檢矩陣來計算出校驗子。校驗子的產生可使用以下公式表示:
PCM
nx (n+m)⊙ CW
( n+m )x 1= SYD
mx1其中,PCM
nx (n+m)代表n列、(n+m)行奇偶校檢矩陣,MSG
(n+m)x1代表碼字的(n+m)列、1行矩陣, SYD
mx1代表校驗子的m列、1行矩陣,⊙代表模2乘法。舉例如下:
由於計算後的校驗子為全”0”,碼字中不包含錯誤位元。如果計算後的校驗子不為全”0”,則碼字中包含錯誤位元。校驗節點計算電路418可輸出硬位元或者變化節點,以及計算出的校驗子至變化節點計算電路416。在一些實施例中,校驗節點計算電路418可依據相應於硬位元或者變化節點的軟位元計算校驗子的可靠度(Reliability of Syndrome),並且將校驗子及其可靠度一併傳送到變化節點計算電路416。
變化節點計算電路416用於依據從校驗節點計算電路418輸入的校驗子判斷是否需要修正碼字。如果不需要(也就是校驗子為全”0”),則變化節點計算電路416傳送解碼成功的訊息給有限狀態機412。如果需要(也就是校驗子不為全”0”),則變化節點計算電路416傳送解碼失敗的訊息給有限狀態機412,並且根據校驗子、硬位元或者變化節點、相應於硬位元或者變化節點的軟位元,執行習知的位元翻轉演算法,用於將碼字中可能出錯的一個或者多個硬位元或者變化節點進行狀態改變(也就是將”0b0”改變為”0b1”,或者將”0b1”改變為”0b0”)。變化節點計算電路416儲存更新後的變化節點至SRAM 430中的區域435。接著,變化節點計算電路416依據更新後的變化節點使用習知的公式來計算相應於更新後的變化節點的軟位元,並且儲存計算出的軟位元至SRAM 430中的區域437。軟位元可以是對數似然比(Log-likelihood Ratio,LLR)、對數似然比的量化值(Quantization of LLR)等。
有限狀態機412使用三個階段來管理LDPC解碼的整個流程,在每個階段中,輸出適當的控制訊號給多工器413、414和變化節點計算電路416,用於驅動這些元件以共同完成LDPC解碼。圖5顯示有限狀態機412的範例狀態轉換。多工器413的輸出端耦接至變化節點計算電路416,並且多工器413的兩個輸入端分別耦接至SRAM 430中的區域431和435。多工器414的輸出端耦接至變化節點計算電路416,並且多工器414的兩個輸入端分別耦接至SRAM 430中的區域433和437。
當閃存介面139將硬位元和軟位元分別儲存到區域431和433後,有限狀態機412從等待狀態510進入第一階段狀態531。第一階段可稱為硬位元初始階段。在第一階段中,有限狀態機412發出控制訊號給多工器413以將區域431耦接上變化節點計算電路416,接著,驅動變化節點計算電路416執行第一階段的操作。參考圖6所示的第一階段的資料流示意圖,變化節點計算電路416通過多工器413從區域431讀取硬位元(以符號“sgn”表示),並且將硬位元傳送到校驗節點計算電路418。校驗節點計算電路418依據獲取的硬位元和預設的奇偶校檢矩陣計算校驗子,並且將硬位元和校驗子傳送到變化節點計算電路416。當校驗子為全”0”時,變化節點計算電路416傳送解碼成功的訊息給有限狀態機412,使得有限狀態機412進入解碼成功狀態551。當校驗子不為全”0”時,變化節點計算電路416將硬位元儲存至區域435,並且傳送解碼失敗的訊息給有限狀態機412,使得有限狀態機412進入第二階段狀態532。由於硬位元已經成功儲存到區域435,區域431已經不需要給目前正處理中的碼字使用,因此,區域431可被釋放以儲存從閃存模組150讀出的下一個碼字,從而讓此碼字和下個碼字的解碼能夠並行,提升資料讀取的效率。
第二階段可稱為軟位元初始和解碼階段,包含解碼的第一次迭代。在第二階段中,有限狀態機412發出控制訊號給多工器413以將區域435連接上變化節點計算電路416,發出控制訊號給多工器414以將區域433耦接上變化節點計算電路416,接著,驅動變化節點計算電路416執行第二階段的操作。參考圖7所示的第二階段的資料流示意圖,變化節點計算電路416通過多工器413從區域435讀取硬位元(以符號“sgn”表示),通過多工器414從區域433讀取軟位元(以符號“mag”表示),依據第一階段計算出來的校驗子、硬位元sgn和軟位元mag,執行習知的位元翻轉演算法,用於更新硬位元sgn成為變化節點sgn’,並且依據更新後的變化節點sgn’使用習知的公式來計算相應的軟位元mag’。接著,變化節點計算電路416傳送變化節點sgn’和相應的軟位元mag’到校驗節點計算電路418。校驗節點計算電路418依據獲取的變化節點sgn’和預設的奇偶校檢矩陣計算校驗子,並且將變化節點sgn’、相應的軟位元mag’和校驗子傳送到變化節點計算電路416。當校驗子為全”0”時,變化節點計算電路416傳送解碼成功的訊息給有限狀態機412,使得有限狀態機412進入解碼成功狀態551。當校驗子不為全”0”時,變化節點計算電路416將變化節點sgn’儲存至區域435,將相應軟位元mag’儲存至區域437,並且傳送解碼失敗的訊息給有限狀態機412,使得有限狀態機412進入第三階段狀態533。由於初始的軟位元已經更新並且成功地儲存到區域437,區域433已經不需要給目前正處理中的碼字使用,因此,區域433可被釋放以讓閃存介面139儲存相應於下一個碼字的軟位元,從而讓此碼字和下個碼字的解碼能夠並行,提升資料讀取的效率。
第三階段可包含第二次或者以後次數的解碼迭代。此階段會反覆執行,直到解碼成功,或者超過預設次數的迭代還不能解碼成功為止。進入第三階段的一開始,有限狀態機412發出控制訊號給多工器414以將區域437連接上變化節點計算電路416,接著,驅動變化節點計算電路416執行第三階段的操作。參考圖8所示的第三階段的資料流示意圖,變化節點計算電路416通過多工器413從區域435讀取變化節點(以符號“sgn’”表示),通過多工器414從區域437讀取相應的軟位元(以符號“mag’”表示),依據前一個解碼迭代(可存在第二階段或者第三階段之中)計算出來的校驗子、變化節點sgn’和軟位元mag’,執行習知的位元翻轉演算法,用於更新變化節點sgn’成為變化節點sgn”,並且依據更新後的變化節點sgn”使用習知的公式來計算相應的軟位元mag”。接著,變化節點計算電路416傳送變化節點sgn”和相應的軟位元mag”到校驗節點計算電路418。校驗節點計算電路418依據獲取的變化節點sgn”和預設的奇偶校檢矩陣計算校驗子,並且將變化節點sgn”、相應的軟位元mag”和校驗子傳送到變化節點計算電路416。當校驗子為全”0”時,變化節點計算電路416傳送解碼成功的訊息給有限狀態機412,使得有限狀態機412進入解碼成功狀態551。當校驗子不為全”0”時,變化節點計算電路416將變化節點sgn”儲存至區域435,將相應軟位元mag”儲存至區域437,並且傳送解碼失敗的訊息給有限狀態機412,使得有限狀態機412維持在第三階段狀態533,或者進入到解碼錯誤狀態553。
當有限狀態機412處於第三階段狀態533並且從變化節點計算電路416獲取解碼失敗的訊息時,有限狀態機412會判斷第三階段的已執行的迭代次數是否超過預設的閾值。如果是,有限狀態機412進入解碼錯誤狀態553。否則,有限狀態機412維持在第三階段狀態533,並且驅動變化節點計算電路416執行第三階段的操作。
在解碼成功狀態551中,有限狀態機412獲取碼字中的使用者資料,儲存使用者資料到RAM 136中的指定位置,並且回覆解碼成功的訊息給處理單元134。
在解碼錯誤狀態553中,有限狀態機412回覆解碼失敗的訊息給處理單元134,使得理單元134能夠據以判定出現了UECC頁面。
在另一些實施例中,閃存介面139不包含軟位元計算電路。因應這種設置,圖4所示的NAND閃存控制器137可改為圖9所示的方塊圖。相較於SRAM 430,SRAM 930減少了用以儲存硬位元所對應的軟位元的區域433。相較於LDPC解碼器410,LDPC解碼器910減少了多工器414。有限狀態機912可使用圖5所示的範例狀態轉換來控制整個LDPC解碼的過程。在以上所述的三個階段中,只有第二階段做了些許改變,其餘的技術細節都類似。
圖10所示的第一階段的資料流示意圖,相似於圖6,因此,第一階段的技術細節可從圖6的說明推導而得,為求簡明不再贅述。
在第二階段中,有限狀態機912發出控制訊號給多工器413以將區域435連接上變化節點計算電路916,接著,驅動變化節點計算電路916執行第二階段的操作。參考圖11所示的第二階段的資料流示意圖,變化節點計算電路416通過多工器413從區域435讀取硬位元(以符號“sgn”表示),將軟位元設為預設值(以符號“mag*”表示,例如,全部都強、全部都中等或者全部都弱),依據第一階段計算出來的校驗子、硬位元sgn和預設軟位元mag*,執行習知的位元翻轉演算法,用於更新硬位元sgn成為變化節點sgn’,並且依據更新後的變化節點sgn’使用習知的公式來計算相應的軟位元mag’。接著,變化節點計算電路416傳送變化節點sgn’和相應的軟位元mag’到校驗節點計算電路418。第二階段中的後續技術細節,可參考圖7的相應說明,為求簡明不再贅述。
圖12所示的第三階段的資料流示意圖,相似於圖8,因此,第三階段的技術細節可從圖8的說明推導而得,為求簡明不再贅述。
在另一些實施例中,閃存介面139包含軟位元計算電路,並且LDPC編碼器為一種以零為基礎的差異編碼器(Zero-based Differential Decoder)。因應這種設置,圖4所示的NAND閃存控制器137可改為圖13所示的方塊圖。相較於SRAM 430,SRAM 1330中沒有配置儲存變動節點的區域,取而代之的是在SRAM 1330中配置了儲存翻轉狀態的區域1335。翻轉狀態包含多個位元,每個位元儲存相應硬位元是否翻轉的資訊,例如,”0b1”代表翻轉(也就是改變狀態),”0b0”代表不翻轉(也就是維持原來的狀態)。翻轉狀態初始時為全”0”。LDPC解碼器1310包含有限狀態機1312、互斥或計算器1313、多工器414、變化節點計算電路1316和校驗節點計算電路1318。互斥或計算器1313用於將區域431中儲存的硬位元和區域1335中儲存的翻轉狀態進行互斥或計算,用於產生原始的硬位元或者更新後的變化節點。校驗節點計算電路1318用於依據互斥或計算器1313所輸出的計算結果,以及奇偶校檢矩陣來計算出校驗子。變化節點計算電路1316針對校驗子的判斷及其後續操作、習知的位元翻轉演算法的執行,以及軟位元的計算等技術細節,大致相同於變化節點計算電路416,為求簡明不再贅述。與變化節點計算電路416不同的是,變化節點計算電路1316儲存更新後的翻轉狀態至SRAM 1330中的區域1335。
有限狀態機1312使用三個階段來管理LDPC解碼的整個流程,在每個階段中,輸出適當的控制訊號給多工器1314和變化節點計算電路1316,用於驅動這些元件以共同完成LDPC解碼。有限狀態機1312可使用圖5所示的範例狀態轉換來控制整個LDPC解碼的過程。
在第一階段中,有限狀態機1312驅動變化節點計算電路1316執行第一階段的操作。參考圖14所示的第一階段的資料流示意圖,變化節點計算電路1316通過互斥或計算器1313讀取硬位元(以符號“sgn”表示),並且將硬位元傳送到校驗節點計算電路1318。校驗節點計算電路1318依據獲取的硬位元和預設的奇偶校檢矩陣計算校驗子,並且將校驗子傳送到變化節點計算電路1316。在這裡需要注意的是,校驗節點計算電路1318並不將硬位元傳送給變化節點計算電路1316。當校驗子為全”0”時,變化節點計算電路1316傳送解碼成功的訊息給有限狀態機1312,使得有限狀態機1312進入解碼成功狀態551。當校驗子不為全”0”時,變化節點計算電路1316將硬位元儲存至區域435,並且傳送解碼失敗的訊息給有限狀態機1312,使得有限狀態機1312進入第二階段狀態532。在這裡需要注意的是,由於硬位元一直需要被使用,因此區域431不能被釋放。
參考圖15所示的第二階段的資料流示意圖,在第二階段中,有限狀態機1312發出控制訊號給多工器1314以將區域433連接上變化節點計算電路1316,接著,驅動變化節點計算電路1316執行第二階段的操作。參考圖13所示的第二階段的資料流示意圖,變化節點計算電路1316通過多工器1314從區域433讀取軟位元(以符號“mag”表示),依據第一階段計算出來的校驗子、預設硬位元(預設為全”0”,以符號“sgn*”表示,也就是以預設值暫代區域431中儲存的實際硬位元)和軟位元mag,執行習知的位元翻轉演算法,用於更新硬位元sgn成為變化節點sgn’(此時的變化節點包含了錯誤模式,Error Pattern),計算硬位元sgn和變化節點sgn’之間的差異以產生翻轉狀態(以符號“flp’”表示),並且依據更新後的變化節點sgn’使用習知的公式來計算相應的軟位元mag’。接著,變化節點計算電路1316傳送變化節點sgn’和相應的軟位元mag’到校驗節點計算電路1318。校驗節點計算電路1318依據獲取的變化節點sgn’和預設的奇偶校檢矩陣計算校驗子,並且將變化節點sgn’、相應的軟位元mag’和校驗子傳送到變化節點計算電路1316。由於變化節點sgn’是錯誤模式,因此,變化節點計算電路1316獲取校驗子不為全”0”的結果,將翻轉狀態flp’儲存至區域1335,將相應軟位元mag’儲存至區域437,並且傳送解碼失敗的訊息給有限狀態機1312,使得有限狀態機1312進入第三階段狀態533。由於初始的軟位元已經更新並且成功地儲存到區域437,區域433已經不需要給目前正處理中的碼字使用,因此,區域433可被釋放以讓閃存介面139儲存相應於下一個碼字的軟位元。
第三階段可包含第二次或者以後次數的解碼迭代。此階段會反覆執行,直到解碼成功,或者超過預設次數的迭代還不能解碼成功為止。進入第三階段的一開始,有限狀態機1312發出控制訊號給多工器1314以將區域437連接上變化節點計算電路1316,接著,驅動變化節點計算電路1316執行第三階段的操作。參考圖16所示的第三階段的資料流示意圖,變化節點計算電路1316從互斥或計算器1313獲取變化節點(以符號“sgn’”表示),通過多工器1314從區域437讀取相應的軟位元(以符號“mag’”表示),依據前一個解碼迭代(可存在第二階段或者第三階段之中)計算出來的校驗子、變化節點sgn’和軟位元mag’,執行習知的位元翻轉演算法,用於更新變化節點sgn’成為變化節點sgn” ,計算硬位元sgn和變化節點sgn”之間的差異以產生新的翻轉狀態(以符號“flp’’”表示),並且依據更新後的變化節點sgn”使用習知的公式來計算相應的軟位元mag”。接著,變化節點計算電路1316傳送變化節點sgn”和相應的軟位元mag”到校驗節點計算電路1318。校驗節點計算電路1318依據獲取的變化節點sgn”和預設的奇偶校檢矩陣計算校驗子,並且將變化節點sgn”、相應的軟位元mag”和校驗子傳送到變化節點計算電路1316。當校驗子為全”0”時,變化節點計算電路1316傳送解碼成功的訊息給有限狀態機1312,使得有限狀態機1312進入解碼成功狀態551。當校驗子不為全”0”時,變化節點計算電路1316將翻轉狀態flp”儲存至區域1335,將相應軟位元mag”儲存至區域437,並且傳送解碼失敗的訊息給有限狀態機1312,使得有限狀態機1312維持在第三階段狀態533,或者進入到解碼錯誤狀態553。
雖然圖1、圖2、圖4、圖9、圖13中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
10:電子裝置
110:主機端
130:閃存控制器
131:主機介面
134:處理單元
136:隨機存取記憶體
137:NAND閃存控制器
138:LDPC解碼器
139:閃存介面
140:靜態隨機存取記憶體
150:閃存模組
151:介面
153#0~153#15:NAND閃存單元
CH#0~CH#3:通道
CE#0~CE#3:致能訊號
31#0~31#2:校驗節點
33#0~33#5:變化節點
410:LDPC編碼器
412:有限狀態機
413,414:多工器
416:變化節點計算電路
418:校驗節點計算電路
430:靜態隨機存取記憶體
431,433,435,437:靜態隨機存取記憶體中的區域
510,531~533,551~553:狀態
910:LDPC編碼器
912:有限狀態機
916:變化節點計算電路
930:靜態隨機存取記憶體
1310:LDPC編碼器
1312:有限狀態機
1313:互斥或計算器
1314:多工器
1316:變化節點計算電路
1318:校驗節點計算電路
1330:靜態隨機存取記憶體
1335:靜態隨機存取記憶體中的區域
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為依據本發明實施例的範例LDPC碼的示意圖。
圖4為依據本發明實施例的NAND閃存控制器的方塊圖。
圖5為依據本發明實施例的有限狀態機的狀態轉換的示意圖。
圖6為依據本發明實施例的相應於圖4的硬體架構的第一階段的資料流示意圖。
圖7為依據本發明實施例的相應於圖4的硬體架構的第二階段的資料流示意圖。
圖8為依據本發明實施例的相應於圖4的硬體架構的第三階段的資料流示意圖。
圖9為依據本發明實施例的NAND閃存控制器的方塊圖。
圖10為依據本發明實施例的相應於圖9的硬體架構的第一階段的資料流示意圖。
圖11為依據本發明實施例的相應於圖9的硬體架構的第二階段的資料流示意圖。
圖12為依據本發明實施例的相應於圖9的硬體架構的第三階段的資料流示意圖。
圖13為依據本發明實施例的NAND閃存控制器的方塊圖。
圖14為依據本發明實施例的相應於圖13的硬體架構的第一階段的資料流示意圖。
圖15為依據本發明實施例的相應於圖13的硬體架構的第二階段的資料流示意圖。
圖16為依據本發明實施例的相應於圖13的硬體架構的第三階段的資料流示意圖。
510,531~533,551~553:狀態
Claims (14)
- 一種低密度奇偶校檢碼的解碼方法,由低密度奇偶校檢解碼器執行,其中,所述低密度奇偶校檢解碼器包含變化節點計算電路和校驗節點計算電路,所述方法包含: 當偵測到碼字儲存到靜態隨機存取記憶體時,所述低密度奇偶校檢解碼器進入第一階段狀態,在所述第一階段狀態中,所述校驗節點計算電路對所述碼字和奇偶校檢矩陣執行模二乘法以計算出第一校驗子,其中,所述碼字包含使用者資料和低密度奇偶校檢碼; 當所述第一校驗子指出在所述第一階段狀態中所獲取的所述碼字不正確時,所述低密度奇偶校檢解碼器進入第二階段狀態,在所述第二階段狀態中,所述變化節點計算電路依據所述碼字、相應於所述碼字的多個第一軟位元和所述第一校驗子執行位元翻轉演算法以產生多個變化節點,並且計算所述變化節點的多個第二軟位元;所述校驗節點計算電路對所述變化節點和所述奇偶校檢矩陣執行模二乘法以計算出第二校驗子,其中,所述碼字中的每個硬位元對應至少一個所述第一軟位元,用於指出此硬位元的信心程度,每個所述變化節點對應至少一個所述第二軟位元,用於指出此變化節點的信心程度;以及 當所述第二校驗子指出在所述第二階段狀態中產生的所述變化節點不正確時,所述低密度奇偶校檢解碼器反覆進入第三階段狀態,直到解碼成功或者所述第三階段狀態的迭代次數超過閾值為止,在所述第三階段狀態的每次迭代中,所述變化節點計算電路依據所述變化節點、相應於所述變化節點的所述第二軟位元和所述第二校驗子執行位元翻轉演算法以產生多個新的變化節點,並且計算所述新的變化節點的多個新的第二軟位元;所述校驗節點計算電路對所述新的變化節點和所述奇偶校檢矩陣執行模二乘法以計算出新的第二校驗子。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述低密度奇偶校檢解碼器包含有限狀態機,所述低密度奇偶校檢碼的解碼方法包含: 所述有限狀態機因應所述碼字儲存到所述靜態隨機存取記憶體的情況時,讓所述低密度奇偶校檢解碼器處於所述第一階段狀態; 所述有限狀態機因應所述第一校驗子指出在所述第一階段狀態中所獲取的所述碼字不正確的情況時,讓所述低密度奇偶校檢解碼器處於所述第二階段狀態; 所述有限狀態機因應所述第二校驗子指出在所述第二階段狀態或前一個所述第三階段狀態中所產生的所述變化節點不正確的情況時,讓所述低密度奇偶校檢解碼器處於所述第三階段狀態;以及 所述有限狀態機控制進入所述第三階段狀態的所述迭代次數不超過所述閾值。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述碼字經由閃存介面從閃存模組中被讀取並且被儲存到所述靜態隨機存取記憶體。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述低密度奇偶校檢解碼器包含有限狀態機、第一多工器和第二多工器,所述第一多工器的輸出端耦接至所述變化節點計算電路,所述第一多工器的二個輸入端分別耦接至所述靜態隨機存取記憶體中的第一區域和第二區域,所述第二多工器的輸出端耦接至所述變化節點計算電路,所述第二多工器的二個輸入端分別耦接至所述靜態隨機存取記憶體中的第三區域和第四區域,所述碼字經由閃存介面從閃存模組被讀取並且被儲存到所述第一區域,所述閃存介面產生相應於所述碼字的所述第一軟位元,並且所述第一軟位元被儲存到所述第三區域,所述低密度奇偶校檢碼的解碼方法包含: 在所述第一階段狀態中,所述有限狀態機發出第一控制訊號給所述第一多工器以將所述第一區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第一階段的操作,所述變化節點計算電路通過所述第一多工器從所述第一區域讀取所述碼字,傳送所述碼字給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第一校驗子,依據所述第一校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,以及儲存所述碼字至所述第二區域; 在所述第二階段狀態中,所述有限狀態機發出第二控制訊號給所述第二多工器以將所述第三區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第二階段的操作,所述變化節點計算電路通過所述第二多工器從所述第三區域讀取所述第一軟位元,傳送所述變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第二校驗子,依據所述第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述變化節點至所述第二區域,以及儲存所述第二軟位元至所述第四區域; 在所述第三階段狀態的每次迭代中,所述有限狀態機發出第三控制訊號給所述第一多工器以將所述第二區域耦接至所述變化節點計算電路,發出第四控制訊號給所述第二多工器以將所述第四區域耦接至所述變化節點計算電路,所述變化節點計算電路通過所述第一多工器從所述第二區域讀取所述變化節點,通過所述第二多工器從所述第四區域讀取相應於所述變化節點的所述第二軟位元,傳送所述新的變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述新的第二校驗子,依據所述新的第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述新的變化節點至所述第二區域,以及儲存所述新的第二軟位元至所述第四區域。
- 如請求項4所述的低密度奇偶校檢碼的解碼方法,包含: 在所述碼字儲存至所述第二區域後,釋放所述第一區域;以及 在所述第二軟位元儲存至所述第四區域後,釋放所述第三區域。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述低密度奇偶校檢解碼器包含有限狀態機、多工器,所述多工器的輸出端耦接至所述變化節點計算電路,所述多工器的二個輸入端分別耦接至所述靜態隨機存取記憶體中的第一區域和第二區域,所述碼字經由閃存介面從閃存模組被讀取並且被儲存到所述第一區域,所述低密度奇偶校檢碼的解碼方法包含: 在所述第一階段狀態中,所述有限狀態機發出第一控制訊號給所述多工器以將所述第一區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第一階段的操作,所述變化節點計算電路通過所述多工器從所述第一區域讀取所述碼字,傳送所述碼字給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第一校驗子,依據所述第一校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,以及儲存所述碼字至所述第二區域; 在所述第二階段狀態中,所述有限狀態機驅動所述變化節點計算電路執行第二階段的操作,所述變化節點計算電路以預設值當作所述第一軟位元,傳送所述變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第二校驗子,依據所述第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述變化節點至所述第二區域,以及儲存所述第二軟位元至第三區域;以及 在所述第三階段狀態的每次迭代中,所述有限狀態機發出第二控制訊號給所述多工器以將所述第二區域耦接至所述變化節點計算電路,所述變化節點計算電路通過所述多工器從所述第二區域讀取所述變化節點,從所述第三區域讀取相應於所述變化節點的所述第二軟位元,傳送所述新的變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述新的第二校驗子,依據所述新的第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述新的變化節點至所述第二區域,以及儲存所述新的第二軟位元至所述第三區域。
- 如請求項6所述的低密度奇偶校檢碼的解碼方法,包含: 在所述碼字儲存至所述第二區域後,釋放所述第一區域。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述低密度奇偶校檢解碼器包含有限狀態機、互斥或計算器、多工器,所述多工器的輸出端耦接至所述變化節點計算電路,所述多工器的二個輸入端分別耦接至所述靜態隨機存取記憶體中的第三區域和第四區域,所述碼字經由閃存介面從閃存模組被讀取並且被儲存到所述靜態隨機存取記憶體中的所述第一區域,所述靜態隨機存取記憶體中的所述第二區域儲存翻轉狀態,所述翻轉狀態初始為全”0”,所述閃存介面產生相應於所述碼字的所述第一軟位元,所述第一軟位元被儲存到所述第三區域,所述互斥或計算器對所述第一區域中的所述碼字和所述第二區域中的所述翻轉狀態進行互斥或計算並且輸出計算結果至所述變化節點計算電路,所述低密度奇偶校檢碼的解碼方法包含: 在所述第一階段狀態中,所述有限狀態機驅動所述變化節點計算電路執行第一階段的操作,所述變化節點計算電路從所述互斥或計算器獲取所述碼字,傳送所述碼字給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第一校驗子,以及依據所述第一校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機; 在所述第二階段狀態中,所述有限狀態機發出控制訊號給所述多工器以將所述第三區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第二階段的操作,所述變化節點計算電路將所述碼字當作全”0”,通過所述多工器從所述第三區域讀取所述第一軟位元,計算所述碼字和所述變化節點間的差異以產生所述翻轉狀態,傳送所述變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第二校驗子,依據所述第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述翻轉狀態至所述第二區域,以及儲存所述第二軟位元至所述第四區域; 在所述第三階段狀態的每次迭代中,所述有限狀態機發出第二控制訊號給所述多工器以將所述第四區域耦接至所述變化節點計算電路,所述變化節點計算電路從所述互斥或計算器獲取所述變化節點,通過所述多工器從所述第四區域讀取相應於所述變化節點的所述第二軟位元,計算所述碼字和所述新的變化節點間的差異以產生新的翻轉狀態,傳送所述新的變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述新的第二校驗子,依據所述新的第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述新的翻轉狀態至所述第二區域,以及儲存所述新的第二軟位元至所述第四區域。
- 如請求項8所述的低密度奇偶校檢碼的解碼方法,包含: 在所述第二軟位元儲存至所述第四區域後,釋放所述第三區域。
- 一種低密度奇偶校檢碼的解碼裝置,包含: 變化節點計算電路,耦接於靜態隨機存取記憶體;以及 校驗節點計算電路,耦接於所述變化節點計算電路, 其中,當偵測到碼字儲存到所述靜態隨機存取記憶體時,所述低密度奇偶校檢碼的解碼裝置進入第一階段狀態,在所述第一階段狀態中,所述校驗節點計算電路對所述碼字和奇偶校檢矩陣執行模二乘法以計算出第一校驗子,其中,所述碼字包含使用者資料和低密度奇偶校檢碼; 當所述第一校驗子指出在所述第一階段狀態中所獲取的所述碼字不正確時,所述低密度奇偶校檢碼的解碼裝置進入第二階段狀態,在所述第二階段狀態中,所述變化節點計算電路依據所述碼字、相應於所述碼字的多個第一軟位元和所述第一校驗子執行位元翻轉演算法以產生多個變化節點,並且計算所述變化節點的多個第二軟位元;所述校驗節點計算電路對所述變化節點和所述奇偶校檢矩陣執行模二乘法以計算出第二校驗子,其中,所述碼字中的每個硬位元對應至少一個所述第一軟位元,用於指出此硬位元的信心程度,每個所述變化節點對應至少一個所述第二軟位元,用於指出此變化節點的信心程度;以及 當所述第二校驗子指出在所述第二階段狀態中產生的所述變化節點不正確時,所述低密度奇偶校檢碼的解碼裝置反覆進入第三階段狀態,直到解碼成功或者所述第三階段狀態的迭代次數超過閾值為止,在所述第三階段狀態的每次迭代中,所述變化節點計算電路依據所述變化節點、相應於所述變化節點的所述第二軟位元和所述第二校驗子執行位元翻轉演算法以產生多個新的變化節點,並且計算所述新的變化節點的多個新的第二軟位元;所述校驗節點計算電路對所述新的變化節點和所述奇偶校檢矩陣執行模二乘法以計算出新的第二校驗子。
- 如請求項10所述的低密度奇偶校檢碼的解碼裝置,包含: 有限狀態機,用於因應所述碼字儲存到所述靜態隨機存取記憶體的情況時,讓所述低密度奇偶校檢碼的解碼裝置處於所述第一階段狀態;因應所述第一校驗子指出在所述第一階段狀態中所獲取的所述碼字不正確的情況時,讓所述低密度奇偶校檢的解碼裝置處於所述第二階段狀態;因應所述第二校驗子指出在所述第二階段狀態或前一個所述第三階段狀態中所產生的所述變化節點不正確的情況時,讓所述低密度奇偶校檢的解碼裝置處於所述第三階段狀態;以及控制進入所述第三階段狀態的所述迭代次數不超過所述閾值。
- 如請求項10所述的低密度奇偶校檢碼的解碼裝置,包含: 有限狀態機; 第一多工器,包含第一輸出端耦接至所述變化節點計算電路,以及二個第一輸入端分別耦接至所述靜態隨機存取記憶體中的第一區域和第二區域;以及 第二多工器,包含第二輸出端耦接至所述變化節點計算電路,以及二個第二輸入端分別耦接至所述靜態隨機存取記憶體中的第三區域和第四區域, 其中,所述碼字經由閃存介面從閃存模組被讀取並且被儲存到所述第一區域, 其中,所述閃存介面產生相應於所述碼字的所述第一軟位元,並且所述第一軟位元被儲存到所述第三區域, 其中,在所述第一階段狀態中,所述有限狀態機發出第一控制訊號給所述第一多工器以將所述第一區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第一階段的操作,所述變化節點計算電路通過所述第一多工器從所述第一區域讀取所述碼字,傳送所述碼字給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第一校驗子,依據所述第一校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,以及儲存所述碼字至所述第二區域,使得所述第一區域能夠被釋放; 其中,在所述第二階段狀態中,所述有限狀態機發出第二控制訊號給所述第二多工器以將所述第三區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第二階段的操作,所述變化節點計算電路通過所述第二多工器從所述第三區域讀取所述第一軟位元,傳送所述變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第二校驗子,依據所述第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述變化節點至所述第二區域,以及儲存所述第二軟位元至所述第四區域,使得所述第三區域能夠被釋放, 其中,在所述第三階段狀態的每次迭代中,所述有限狀態機發出第三控制訊號給所述第一多工器以將所述第二區域耦接至所述變化節點計算電路,發出第四控制訊號給所述第二多工器以將所述第四區域耦接至所述變化節點計算電路,所述變化節點計算電路通過所述第一多工器從所述第二區域讀取所述變化節點,通過所述第二多工器從所述第四區域讀取相應於所述變化節點的所述第二軟位元,傳送所述新的變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述新的第二校驗子,依據所述新的第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述新的變化節點至所述第二區域,以及儲存所述新的第二軟位元至所述第四區域。
- 如請求項10所述的低密度奇偶校檢碼的解碼裝置,包含: 有限狀態機;以及 多工器,包含輸出端耦接至所述變化節點計算電路,以及二個輸入端分別耦接至所述靜態隨機存取記憶體中的第一區域和第二區域, 其中,碼字經由閃存介面從閃存模組被讀取並且被儲存到所述第一區域, 其中,在所述第一階段狀態中,所述有限狀態機發出第一控制訊號給所述多工器以將所述第一區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第一階段的操作,所述變化節點計算電路通過所述多工器從所述第一區域讀取所述碼字,傳送所述碼字給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第一校驗子,依據所述第一校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述碼字至所述第二區域,使得所述第一區域能夠被釋放, 其中,在所述第二階段狀態中,所述有限狀態機驅動所述變化節點計算電路執行第二階段的操作,所述變化節點計算電路以預設值當作所述第一軟位元,傳送所述變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第二校驗子,依據所述第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述變化節點至所述第二區域,以及儲存所述第二軟位元至第三區域, 其中,在所述第三階段狀態的每次迭代中,所述有限狀態機發出第二控制訊號給所述多工器以將所述第二區域耦接至所述變化節點計算電路,所述變化節點計算電路通過所述多工器從所述第二區域讀取所述變化節點,從所述第三區域讀取相應於所述變化節點的所述第二軟位元,傳送所述新的變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述新的第二校驗子,依據所述新的第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述新的變化節點至所述第二區域,以及儲存所述新的第二軟位元至所述第三區域。
- 如請求項10所述的低密度奇偶校檢碼的解碼裝置,包含: 有限狀態機; 互斥或計算器;以及 多工器,包含輸出端耦接至所述變化節點計算電路,以及二個輸入端分別耦接至所述靜態隨機存取記憶體中的第三區域和第四區域, 其中,所述碼字經由閃存介面從閃存模組被讀取並且被儲存到所述靜態隨機存取記憶體中的所述第一區域, 其中,所述靜態隨機存取記憶體中的所述第二區域儲存翻轉狀態,所述翻轉狀態初始為全”0”, 其中,所述閃存介面產生相應於所述碼字的所述第一軟位元,所述第一軟位元被儲存到所述第三區域, 其中,所述互斥或計算器對所述第一區域中的所述碼字和所述第二區域中的所述翻轉狀態進行互斥或計算並且輸出計算結果至所述變化節點計算電路, 其中,在所述第一階段狀態中,所述有限狀態機驅動所述變化節點計算電路執行第一階段的操作,所述變化節點計算電路從所述互斥或計算器獲取所述碼字,傳送所述碼字給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第一校驗子,以及依據所述第一校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機, 其中,在所述第二階段狀態中,所述有限狀態機發出控制訊號給所述多工器以將所述第三區域耦接至所述變化節點計算電路,以及驅動所述變化節點計算電路執行第二階段的操作,所述變化節點計算電路將所述碼字當作全”0”,通過所述多工器從所述第三區域讀取所述第一軟位元,計算所述碼字和所述變化節點間的差異以產生所述翻轉狀態,傳送所述變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述第二校驗子,依據所述第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述翻轉狀態至所述第二區域,以及儲存所述第二軟位元至所述第四區域, 其中,在所述第三階段狀態的每次迭代中,所述有限狀態機發出第二控制訊號給所述多工器以將所述第四區域耦接至所述變化節點計算電路,所述變化節點計算電路從所述互斥或計算器獲取所述變化節點,通過所述多工器從所述第四區域讀取相應於所述變化節點的所述第二軟位元,計算所述碼字和所述新的變化節點間的差異以產生新的翻轉狀態,傳送所述新的變化節點給所述校驗節點計算電路,從所述校驗節點計算電路獲取所述新的第二校驗子,依據所述新的第二校驗子傳送解碼成功或者解碼失敗的訊息給所述有限狀態機,儲存所述新的翻轉狀態至所述第二區域,以及儲存所述新的第二軟位元至所述第四區域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111123326A TWI804359B (zh) | 2022-06-23 | 2022-06-23 | 低密度奇偶校檢碼的解碼方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111123326A TWI804359B (zh) | 2022-06-23 | 2022-06-23 | 低密度奇偶校檢碼的解碼方法及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI804359B true TWI804359B (zh) | 2023-06-01 |
TW202401251A TW202401251A (zh) | 2024-01-01 |
Family
ID=87803391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111123326A TWI804359B (zh) | 2022-06-23 | 2022-06-23 | 低密度奇偶校檢碼的解碼方法及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI804359B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071780A (zh) * | 2018-01-23 | 2019-07-30 | 华为技术有限公司 | 应用于低密度奇偶校检ldpc的校验方法及装置、通信设备 |
TWI717171B (zh) * | 2019-12-26 | 2021-01-21 | 大陸商深圳大心電子科技有限公司 | 資料讀取方法、儲存控制器與儲存裝置 |
US20220038114A1 (en) * | 2020-07-29 | 2022-02-03 | Electronics And Telecommunications Research Institute | Method and apparatus for decoding low-density parity-check code |
-
2022
- 2022-06-23 TW TW111123326A patent/TWI804359B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071780A (zh) * | 2018-01-23 | 2019-07-30 | 华为技术有限公司 | 应用于低密度奇偶校检ldpc的校验方法及装置、通信设备 |
TWI717171B (zh) * | 2019-12-26 | 2021-01-21 | 大陸商深圳大心電子科技有限公司 | 資料讀取方法、儲存控制器與儲存裝置 |
US20220038114A1 (en) * | 2020-07-29 | 2022-02-03 | Electronics And Telecommunications Research Institute | Method and apparatus for decoding low-density parity-check code |
Also Published As
Publication number | Publication date |
---|---|
TW202401251A (zh) | 2024-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628256B2 (en) | Updating reliability data | |
US11184030B2 (en) | Storage controller for correcting error, storage device including the same, and operating method thereof | |
US11050438B2 (en) | Memory controller | |
US11128315B2 (en) | Error correction decoder | |
US20190132010A1 (en) | Method of operating decoder for reducing computational complexity and method of operating data storage device including the decoder | |
US11115064B2 (en) | Error correction decoder and memory system having the same | |
KR102543059B1 (ko) | 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 | |
US20170134049A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN112039532A (zh) | 错误校正解码器及具有错误校正解码器的存储器*** | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US9236886B1 (en) | Universal and reconfigurable QC-LDPC encoder | |
US10942805B2 (en) | Error correcting circuit performing error correction on user data and error correcting method using the error correcting circuit | |
TW202107284A (zh) | 使用藉助於先算資訊輪換的資料保護的非揮發性記憶體寫入方法和設備 | |
TWI804359B (zh) | 低密度奇偶校檢碼的解碼方法及裝置 | |
CN113658618B (zh) | 错误校正解码器、具有其的错误校正电路及操作其的方法 | |
TWI829252B (zh) | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 | |
US20230421175A1 (en) | Method and apparatus for decoding low-density parity-check (ldpc) code | |
US11336296B2 (en) | Controller and memory system having the controller | |
TWI823436B (zh) | 低密度奇偶檢查碼的產生裝置及方法 | |
CN117472643A (zh) | 低密度奇偶校检码的译码方法、存储介质和装置 | |
TWI831333B (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
KR102678314B1 (ko) | 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법 | |
TWI836558B (zh) | 記憶體控制器及解碼管線之資料控制方法 | |
US20230421178A1 (en) | Apparatus and method for generating low-density parity-check (ldpc) code |