资源简介

笔者在2015年学生时代就基本上搞定了解码的原理和方法,其后将RS(255,239)解码算法进行了详细的解读,在这里使用的是BM迭代算法。 本文参考国外某位大牛Ming-Han Lei(hendrik@humanistic.org) 写的RS(31,19)解码代码。 本文的多项式采用的是MATLAB进行编解码的本原多项式,因此编码部分的效果可以直接用MATLAB进行验证。 解码部分使用可以参考了RS编解码的FPGA实现 -- 俞旋 东南大学硕士学位论文,解码部分的效果可参考论文得以验证。 相当于公开了这篇硕士论文背后的源代码。 关键词: RS(255,239)编解码 BM迭代算法 verilog 详细解读 该解码算法迭代过程可以改进,如果需要改进的算法可以向笔者索取。

资源截图

代码片段和文件信息

% chien search 
% multiply block
% alpha = 2 to multiply a^0 ~ a^15;
% 2015-10-28
% edit by leo

% reserved in other file...
%g = [79 44 81 100 49 183 56 17 232 187 126 104 31 103 52 118 1];

seq = [0 0 0 0 0 0 0 0];
cnt = 0;
%syms x;
gf2poly = gf([1 0 0 0 1 1 1 0 1] 8);
a = roots(gf2poly);
fprintf(‘CHIEN process start!\n‘);
% calc the a^0 ~ a^15 then change to double type and store in seq co(i) 
% co means coeffiency
fprintf(‘start calc a.^(i) in GF(28).\n‘);
for i = 1 : 1 : 16
    GFa    = a.^(i - 1);
    temp1  = GFa.x;
    co(i)  = temp1(1);
end
g = co;

fid1 = fopen(‘f:\FPGApro\POST\SECOND\1RSDec\MATLAB\CHIEN.txt‘‘wt‘);
fprintf(‘next copy from multi_multiply.m to calc the m0~m15 block.\n‘);

for z = 0 : 1 : 15;
gi = g(z+1);
% convert gi into bin mode
xx = fi(gi080);
bxx = bin(xx);
% bxx is in char type change to double and store in sequence m
for i = 1 : 1 : 8
    m(i) =  double( bxx(i) - 48 );
end
x = m(1)*a.^7 + m(2)*a.^6 + m(3)*a.^5 + m(4)*a.^4 + m(5)*a.^3 + ...
    m(6)*a.^2 + m(7)*a.^1 + m(8);
% to generate Y = M * X; -> matrix M
for j = 1 : 1 : 8
    xi = x*2^(j-1);
    temp = xi(1);
    t1 = double(temp.x);
    t2 = fi(t1080);
    ct = bin(t2);
    for i = 1 : 1 : 8
        mm(i9-j) = double(ct(i) - 48);
    end
end

fprintf(fid1‘g[%d] = %d \n‘zg(z+1));

for j = 8 : -1 : 1       %line
    for i = 8 : -1 : 1  %coloum
        if(mm(ji) ~= 0) 
            seq(cnt+1) = (8 - i);
            cnt = cnt + 1;
        end
    end
    fprintf(fid1‘   y[%d] = x[%d]‘8-jseq(1));
    if(cnt >= 2)
        for i = 2: 1: cnt
            fprintf(fid1‘ ^ x[%d]‘seq(i));
        end
    end
    fprintf(fid1‘;\n‘);
    cnt = 0;
end
end

fclose(fid1);
% end  
fprintf(‘CHIEN process END!\n‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4000  2015-11-03 11:27  all_sim+MATLAB+doc\all_sim\123.cr.mti

     文件      16861  2015-11-03 11:27  all_sim+MATLAB+doc\all_sim\123.mpf

     文件       4008  2015-11-03 09:53  all_sim+MATLAB+doc\all_sim\decode.v

     文件       3996  2015-11-02 15:45  all_sim+MATLAB+doc\all_sim\decode.v.bak

     文件       5771  2015-10-23 11:23  all_sim+MATLAB+doc\all_sim\inverse.v

     文件      10366  2015-11-03 09:44  all_sim+MATLAB+doc\all_sim\rsdec_berl.v

     文件       8398  2015-10-23 15:20  all_sim+MATLAB+doc\all_sim\rsdec_berl.v.bak

     文件      14923  2015-10-28 11:31  all_sim+MATLAB+doc\all_sim\rsdec_chien.v

     文件       9309  2015-10-08 10:42  all_sim+MATLAB+doc\all_sim\rsdec_syn.v

     文件       9865  2015-11-02 14:43  all_sim+MATLAB+doc\all_sim\rsencode.v

     文件       9867  2015-09-28 11:58  all_sim+MATLAB+doc\all_sim\rsencode.v.bak

     文件        190  2015-11-02 14:48  all_sim+MATLAB+doc\all_sim\sigin.v

     文件        190  2015-09-28 11:56  all_sim+MATLAB+doc\all_sim\sigin.v.bak

     文件       4496  2015-11-02 16:07  all_sim+MATLAB+doc\all_sim\test-bench.v

     文件       4102  2015-11-02 15:12  all_sim+MATLAB+doc\all_sim\test-bench.v - 副本.bak

     文件       4490  2015-11-02 15:22  all_sim+MATLAB+doc\all_sim\test-bench.v.bak

     文件         16  2015-11-02 14:04  all_sim+MATLAB+doc\all_sim\testbench.txt

     文件      31263  2015-11-03 11:26  all_sim+MATLAB+doc\all_sim\transcript

     文件     532480  2015-11-03 11:27  all_sim+MATLAB+doc\all_sim\vsim.wlf

     文件    2958586  2015-11-03 11:27  all_sim+MATLAB+doc\all_sim\wave.vcd

     文件      42234  2015-11-03 09:53  all_sim+MATLAB+doc\all_sim\work\decode\verilog.psm

     文件       2792  2015-11-03 09:53  all_sim+MATLAB+doc\all_sim\work\decode\_primary.dat

     文件       8240  2015-11-03 09:53  all_sim+MATLAB+doc\all_sim\work\decode\_primary.dbs

     文件        489  2015-11-03 09:53  all_sim+MATLAB+doc\all_sim\work\decode\_primary.vhd

     文件      23875  2015-11-02 16:07  all_sim+MATLAB+doc\all_sim\work\inverse\verilog.psm

     文件       6044  2015-11-02 16:07  all_sim+MATLAB+doc\all_sim\work\inverse\_primary.dat

     文件       8703  2015-11-02 16:07  all_sim+MATLAB+doc\all_sim\work\inverse\_primary.dbs

     文件        214  2015-11-02 16:07  all_sim+MATLAB+doc\all_sim\work\inverse\_primary.vhd

     文件      75028  2015-11-03 09:44  all_sim+MATLAB+doc\all_sim\work\multiply\verilog.psm

     文件       5525  2015-11-03 09:44  all_sim+MATLAB+doc\all_sim\work\multiply\_primary.dat

............此处省略322个文件信息

评论

共有 条评论