軟式解碼演算法在錯誤更正碼的發展,重點就是透過疊代方式尋找出最大概 似度的碼字,在說明 BCH 軟式解碼演算法之前,我想透過之前研究 JN 所提出軟
3 3.5 4 4.5 5 5.5 6 6.5
10-6 10-5 10-4 10-3 10-2 10-1
Eb/N0,dB
Bit Error Rate
比 較 圖 Code Length = 2000
shannon
BCH-Hard Decision BCH-Soft Decision LDPC(8/9,3,3)
35
式編碼的數據說明為何我要使用軟式解碼架構是在梯度下降法在快閃記憶體當中,
而不是其他軟式解碼演算法。
表 6 各 JN 應用軟式解碼演算法 軟式解碼演算法 內容
Chase 解碼演算法 產生多組錯誤樣本(Error patterns)與接收信號做加 洛法(GF)相加,將產生的多組碼字送進後面硬式解 碼找出最有可能碼字的解碼演算法。
OSD 解碼演算法 [18]
利用二位元生成矩陣由信任度大至小的位置進行高 斯消去法,並結合 Chase 方式透過生成矩陣產生多 組候選碼做比較直接輸出
Outer-round 演算法 [19]
利用多次疊代迴圈不斷改變步階函數(alpha)找出可 能碼字比較並做輸出
增加硬式解碼 在軟式解碼後,再做一次硬式解碼做輸出。
為了設計並規劃能夠在硬體能夠實現的軟式解碼演算法,在表 6 所評估各相 關 JN 所探討的演算法,在硬體上都會佔據不少成本以及增加解碼時間,所以對於 在硬體上的應用將會以最原始軟式解碼演算法-梯度下降法,找出最有大概似度碼 字。
快閃記憶體軟式和積演算法解碼架構與傳統軟式解碼架構碼字發生出錯比較。
透過 Log 計算我們可以得知該碼字各個位元節點信任度,經過高斯演算法所得到 的校驗矩陣搭配梯度下降法,傳統軟式解碼的信任度值不見得會透過梯度下降法 透過訊號傳遞(9)式,因為梯度下降法是參考校驗矩陣每一行(row)為 1 的位置做訊 號傳遞,所以正負數不見得在每次疊代都會一樣,導致最後無法解決此點錯誤位 置,這也是就是梯度下降法所發散的一個問題,如下圖 21 所示。
36
圖 21 傳統梯度下降法示意圖
快閃記憶體因為在寫入的時候會有增量階躍脈衝程式,所以快閃記憶體碼字 出錯機率會發生在是電壓平移(shift)過大導致該 MLC 電壓會跑到隔壁較高準位電 壓,如下圖 22。在和積演算法中,快閃記憶體因為發生錯誤事件只會在單方面,
所以碼字發生在信任度的編緣地區碼字不會像有傳統解碼上的問題,所以在快閃 記憶體和積演算法修正如下式(20)。
) ( ) ( ) 1
( l
ext l
l L L
L + = +α 修正為
) ( ) ( ) 1
( l
ext l
l L L
L + = −α (20)
圖 22 快閃記憶體電壓耦合電容平移電壓示意圖 資料來源[8]
37
為了與作者文獻在通道環境是一樣,圖 23 我們使用相同 BCH 碼字長度與文 獻[8]通道做相同碼字率做硬式解碼的驗證,使用(15)式浮動干擾閘和圖 15 0.12um 製程中的電容耦合參數完成浮動閘電壓干擾通道上的 BCH 碼字(32767,31133)上 碼字驗證。
圖 23 快閃記憶體浮動閘電壓干擾通道驗證