FPGA实现ECC的计算很简单,但是如果想要使用matlab来实现,如果不注意很容易卡住,或者写出来的代码很复杂,可读性也会变得很差。
如下存在verilog实现的ECC计算
ecc_o[0]=da_i[0]^da_i[1]^da_i[3]^da_i[4]^da_i[6];
ecc_o[1]=da_i[0]^da_i[2]^da_i[3]^da_i[5]^da_i[6];
ecc_o[2]=da_i[1]^da_i[2]^da_i[3]^da_i[7];
ecc_o[3]=da_i[4]^da_i[5]^da_i[6]^da_i[7];
ecc_o[4]=(^dat_i[7:0])^(^ecc_o[3:0]);
显然,HDL语言描述和处理很容易。
但是,Matlab上实现对于Matlab初学者 可能会有一点麻烦。
function ecc = ecc_capture(dat)
dat_i = de2bi(dat, 8, 'right-msb');
ecc_0 = dat_i( 0 );
for i = [ 1 3 4 6 ]
ecc_0 = bitxor( ecc_0,dat_i( i ));
end
ecc_1 = dat_i( 0 );
for i = [ 2 3 5 6]
ecc_1 = bitxor( ecc_1,dat_i( i ));