bch算法生成nand flash中512byte校验和
bch算法可以分為四步:
第一步:構(gòu)造擴(kuò)域
第二部:求最小多項(xiàng)式
第三步:計(jì)算bch碼生成多項(xiàng)式
第四步:計(jì)算bch編碼
一、本原bch碼構(gòu)造舉例
上圖中m(x)代表信息源碼,C(x)的結(jié)果表示bch編碼的結(jié)果,前面k位是信息位,后面n-k位位為校驗(yàn)位。
或者也可以直接計(jì)算校驗(yàn)位:計(jì)算過(guò)程如下:
可直接計(jì)算上圖中的n-k位校驗(yàn)位。
總結(jié):計(jì)算bch碼需要四步
1)構(gòu)造擴(kuò)域GF(2^)
2)計(jì)算最小多項(xiàng)式
3)計(jì)算bch碼生成多項(xiàng)式g(x)
4)計(jì)算bch編碼,有兩種方法,方法一:
,c(x)就是n位碼的多項(xiàng)式;方法二:
,結(jié)果是n-k位校驗(yàn)位的多項(xiàng)式;
二、用m次本原多項(xiàng)式構(gòu)造擴(kuò)域
三、求最小多項(xiàng)式
四、例子
五、Matlab仿真
1)Matlab環(huán)境-Matlab R2014a
2)Matlab腳本
腳本說(shuō)明:腳本中m=13,但是信息位只有4096bit,n=8191,校驗(yàn)位m*t=13*8=104。所以前面3991位信息補(bǔ)0;
本原多項(xiàng)式選擇:P(X)=X^13+X^4+X^3+X^1+1;
M=13時(shí),本原多項(xiàng)式有630個(gè),腳本中選擇的是最小的那個(gè),也是第一個(gè)。
校驗(yàn)位位置:encodedData數(shù)據(jù)寫入out1.txt文件,文件中每個(gè)0或者1用空格隔開,最后的13*8=104個(gè)是校驗(yàn)位。
腳本代碼如下:
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 表示以整數(shù)形式寫入數(shù)據(jù),這正是我想要的;
fclose(fid); %關(guān)閉文件;
%data=mx';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%disp(['隨機(jī)生成的序列為 m= ',num2str(mx)])
pr = primpoly(m,'all');
[r,c]=size(pr);%r就是本原多項(xiàng)式的個(gè)數(shù)
fori=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 表示以整數(shù)形式寫入數(shù)據(jù),這正是我想要的;
fclose(fid); %關(guān)閉文件;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
dec = comm.BCHDecoder(n,k);
receivedBits = step(dec, encodedData);
ifdata==receivedBits
disp('譯碼正確 ')
elsedisp('譯碼錯(cuò)誤 ')
end
3)仿真結(jié)果與flash中結(jié)果比對(duì)
Flash中數(shù)據(jù)存儲(chǔ)特點(diǎn),一個(gè)page中存放連續(xù)的4個(gè)512byte的數(shù)據(jù),接著是12個(gè)byte的FF,然后是52byte的校驗(yàn)位信息。每一個(gè)512byte的數(shù)據(jù),產(chǎn)生一個(gè)13byte的校驗(yàn)和,4個(gè)校驗(yàn)和依次存放。
仿真數(shù)據(jù)及校驗(yàn)結(jié)果如下4個(gè)圖所示:
總結(jié)
以上是生活随笔為你收集整理的bch算法生成nand flash中512byte校验和的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SAP CRM点了附件的超链接后报错的处
- 下一篇: windows无法找到网络适配器的驱动程