bch算法生成nand flash中512byte校驗和


bch算法可以分為四步:

第一步:構造擴域

第二部:求最小多項式

第三步:計算bch碼生成多項式

第四步:計算bch編碼

一、本原bch碼構造舉例

 

 

 

 

 

 

 

 

 

 

 

上圖中m(x)代表信息源碼,C(x)的結果表示bch編碼的結果,前面k位是信息位,后面n-k位位為校驗位。

或者也可以直接計算校驗位:計算過程如下:

 

 

可直接計算上圖中的n-k位校驗位。

總結:計算bch碼需要四步

1)構造擴域GF(2^)

2)計算最小多項式

3)計算bch碼生成多項式g(x)

4)計算bch編碼,有兩種方法,方法一:

 

 

,c(x)就是n位碼的多項式;方法二:

 

 

,結果是n-k位校驗位的多項式;

 

二、用m次本原多項式構造擴域

 

 

 

 

三、求最小多項式

 

 

 

四、例子

 

 

 

 

 

 

五、Matlab仿真

1) Matlab環境-Matlab R2014a

2) Matlab腳本

腳本說明:腳本中m=13,但是信息位只有4096bitn=8191,校驗位m*t=13*8=104。所以前面3991位信息補0

本原多項式選擇:P(X)=X^13+X^4+X^3+X^1+1;

M=13時,本原多項式有630個,腳本中選擇的是最小的那個,也是第一個。

校驗位位置:encodedData數據寫入out1.txt文件,文件中每個0或者1用空格隔開,最后的13*8=104個是校驗位。

腳本代碼如下:

clc;

clear all;

m = 13;

t = 8;

n = 2^m-1;   % Codeword length

k = n-m*t;       % Message length

%  data = randi([0 1], k, 1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

fid=fopen('in.txt','rt'); %寫的方式打開文件(若不存在,建立文件);

data=fscanf(fid,'%d ');  % %d 表示以整數形式寫入數據,這正是我想要的;

fclose(fid);  %關閉文件;

%data=mx';

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%disp(['隨機生成的序列為 m= ',num2str(mx)])

pr = primpoly(m,'all');

[r,c]=size(pr);%r就是本原多項式的個數

for i=1:1

enc = comm.BCHEncoder(n,k);

enc.PrimitivePolynomialSource='Property';

enc.PrimitivePolynomial=de2bi(pr(i),'left-msb');

%enc.PrimitivePolynomial=de2bi(pr(i));

encodedData = step(enc, data);

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    filename=['out',num2str(i),'.txt'];

    fid=fopen(filename,'wt'); %寫的方式打開文件(若不存在,建立文件);

    fprintf(fid,'%d ',encodedData);  % %d 表示以整數形式寫入數據,這正是我想要的;

    fclose(fid);  %關閉文件;   

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    

end

dec = comm.BCHDecoder(n,k);   

  receivedBits = step(dec, encodedData);

 if data==receivedBits

     disp('譯碼正確  ')   

else disp('譯碼錯誤  ')

end

 

3) 仿真結果與flash中結果比對

Flash中數據存儲特點,一個page中存放連續的4512byte的數據,接着是12byteFF,然后是52byte的校驗位信息。每一個512byte的數據,產生一個13byte的校驗和,4個校驗和依次存放。

仿真數據及校驗結果如下4個圖所示:

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM