精华内容
下载资源
问答
  • LDPC 译码问题
    2020-12-19 13:41:17

    最近开始学习LDPC,还是刚接触有点生疏,现在主要在看LDPC译码

    网上有好多LDPC的译码例程,matlab的。

    我看了大部分都是一个译码函数,有点看不懂。

    求大家指教

    问题一:参数f0,f1含义

    问题二:这个使用的是什么译码方法 BP?

    问题三:有人能讲清楚如何译码的就更好了,哈哈。

    先谢谢大家了,和大家学习了。

    LDPC译码程序如下

    function [x_hat, success, k] = ldpc_decode(f0,f1,H)

    [m,n] = size(H);

    if m>n, H=H'; [m,n] = size(H);

    end

    if ~issparse(H) % make H sparse if it is not sparse yet

    [ii,jj,sH] = find(H);

    H = sparse(ii,jj,sH,m,n);

    end

    %initialization

    [ii,jj] = find(H);             % subscript index to nonzero elements of H

    indx = sub2ind(size(H),ii,jj); % linear index to nonzero elements of H

    q0 = H * spdiags(f0(:),0,n,n);

    sq0 = full(q0(indx));

    sff0 = sq0;

    q1 = H * spdiags(f1(:),0,n,n);

    sq1 = full(q1(indx));

    sff1 = sq1;

    %iterations

    k=0;

    success = 0;

    max_iter = 100;

    while ((success == 0) & (k < max_iter)),

    k = k+1;

    %horizontal step

    sdq = sq0 - sq1; sdq(find(sdq==0)) = 1e-20; % if   f0 = f1 = .5

    dq = sparse(ii,jj,sdq,m,n);

    Pdq_v = full(real(exp(sum(spfun('log',dq),2))));

    Pdq = spdiags(Pdq_v(:),0,m,m) * H;

    sPdq = full(Pdq(indx));

    sr0 = (1+sPdq./sdq)./2; sr0(find(abs(sr0) < 1e-20)) = 1e-20;

    sr1 = (1-sPdq./sdq)./2; sr1(find(abs(sr1) < 1e-20)) = 1e-20;

    r0 = sparse(ii,jj,sr0,m,n);

    r1 = sparse(ii,jj,sr1,m,n);

    %vertical step

    Pr0_v = full(real(exp(sum(spfun('log',r0),1))));

    Pr0 = H * spdiags(Pr0_v(:),0,n,n);

    sPr0 = full(Pr0(indx));

    Q0 = full(sum(sparse(ii,jj,sPr0.*sff0,m,n),1))';

    sq0 = sPr0.*sff0./sr0;

    Pr1_v = full(real(exp(sum(spfun('log',r1),1))));

    Pr1 = H * spdiags(Pr1_v(:),0,n,n);

    sPr1 = full(Pr1(indx));

    Q1 = full(sum(sparse(ii,jj,sPr1.*sff1,m,n),1))';

    sq1 = sPr1.*sff1./sr1;

    sqq = sq0+sq1;

    sq0 = sq0./sqq;

    sq1 = sq1./sqq;

    %tentative decoding

    QQ = Q0+Q1;

    Q0 = Q0./QQ;

    Q1 = Q1./QQ;

    x_hat = (sign(Q1-Q0)+1)/2;

    if rem(H*x_hat,2) == 0, success = 1; end

    end

    更多相关内容
  • 资源名:LDPC译码算法_最小和算法_和积算法_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及...
  • LDPC译码算法
  • 资源名:ldpc译码算法_matlab_完全模拟fpga_硬件实现语言_量化处理_fpga 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换...
  • LDPC译码原理

    千次阅读 2021-08-17 17:20:38
    1.LDPC译码的背景及内容 LDPC译码分为硬判决译码和软判决译码。 硬判决译码又称代数译码,主要代表是比特翻转(BF)译码算法,它的实现比较简单,但是译码性能很差。硬判决译码的基本假设是当校验方程不成立时,...

    1.LDPC译码的背景及内容

            LDPC译码分为硬判决译码和软判决译码。

            硬判决译码又称代数译码,主要代表是比特翻转(BF)译码算法,它的实现比较简单,但是译码性能很差。硬判决译码的基本假设是当校验方程不成立时,说明此时必定有比特位发生了错误,而所有可能发生错误的比特中不满足检验方程个数最多的比特发生错误的概率最大。在每次迭代时翻转发生错误概率最大的比特并用更新之后的码字重新进行译码。

            软判决译码是一种基于概率论的译码算法,通常需要与迭代译码进行结合,才能体现成译码性能的优势,基本算法是置信传播(BP)译码算法,它的实现比代数译码方法的复杂度高很多,但译码性能非常好。

            为了解决BP译码算法实现困难问题,在学术界牵起了优化算法的浪潮,对数域置信传播译码(LLR BP)算法、最小和(Min-Sum)译码算法、Normalized Min-Sum译码算法、Offset Min-Sum译码算法等相继涌现。

            在迭代译码的过程中,信息调度方式分为两种:泛滥式调度和分层式调度。泛滥式调度的特点在于每一次译码迭代过程中,首先计算从变量节点到校验节点的所有软信息,然后计算从校验节点到变量节点的所有软信息。分层调度的特点是在计算每层软信息时,更新此次迭代中的相关的节点信息,用于下一层的软信息计算。

            LDPC译码结构的设计方面主要分为三种:全并行译码结果、行并行译码结构、块并行译码结构。泛滥式的调度比较适合全并行结构,但是译码器的硬件复杂度始终是一个技术瓶颈。分层式的调度适合行并行和块并行结构,可以减少译码所需的迭代次数。

    2.LDPC码设计

            LDPC码是一种分组码,其校验矩阵只含有很少量非零元素(稀疏矩阵)。

            码的设计是以设计一个校验矩阵开始的,然后才通过它确定一个生成矩阵进行后续编码。而LDPC的编码就是本文所要讨论的主体内容。对于LDPC码而言,校验矩阵的选取十分关键,不仅影响LDPC码的纠错性能力,也影响LDPC编译码的复杂度及硬件实现的复杂度。准循环LDPC码(Quasi-Cycle,QC-LDPC是LDPC码中重要的一类,是指一个码字以右移或左移固定位数的符号位得到的仍是一个码字。QC-LDPC码的校验矩阵是由循环子矩阵的阵列组成,相对于其他类型的LDPC码,在编码和解码的硬件实现上具有许多优点。

            置信传播(BP)译码算法置信传播算法是基于Tanner图的迭代译码算法。在迭代过程中,可靠性消息,即“消息”通过Tanner图上的边在变量节点和校验节点中来回传递,经多次迭代后趋于稳定值,然后据此进行最佳判决,BP译码算法有着非常好的译码性能。

    校验矩阵:

     对应Tanner 图:

            n个码字比特顶点(称为比特节点),分别与校验矩阵的各列相对应;

            m个校验方程顶点(称为校验节点),分别与校验矩阵的各行对应。

            循环以这群顶点中的一个同时作为起点和终点,且只经过每个顶点一次。循环的长度定义为它所包含的连线的数量,而图形的围长,也可叫做图形的尺寸,定义为图中最小的循环长度。上图围长为6

    2.1置信传播算法

            置信传播算法(Belief Propagation)译码算法是消息传递(Message Passing)算法在LDPC译码中的运用。消息传递算法是一个算法类,最初运用于人工智能领域,人们将其运用到LDPC码的译码算法中,提出来LDPC码的置信传播算法。置信传播算法是基于Tanner图的迭代译码算法在迭代过程中,可靠性消息,即“消息”通过Tanner图上的边在变量节点和校验节点中来回传递,经过多次迭代后区域稳定值,然后据此进行最佳判决。

            置信传播译码算法的基本流程如下:

            在迭代前,译码器接收到信道传送过来的实值序列y = (y1,y2,…,yn),所有变量节点接收到对应的接收值yi

            第一次迭代:每个变量节点给所有与之相邻的校验节点传送一个可靠消息,这个可靠消息就是信道传送过来的值;每个校验节点接收到变量节点传送过来的可靠消息之后,进行处理,然后返回一个新的可靠消息信息给与之相邻的变量节点,这样就完成第一次迭代;此时可以进行判决,如果满足校验方程,则不需要再迭代,直接输出判决结果,否则进行第二次迭代。

            第二次迭代:每个变量节点处理第一次迭代完成时校验节点传送过来的可靠消息,处理完成后新的消息发送给校验节点,同理,校验节点处理完后返回给变量节点,这样就完成了第二次迭代。完成后同样进行判决,如果满足校验方程则结束译码,否则如此反复多次迭代,每次都进行判决,直到达到设定的最大迭代次数,译码失败。在每次迭代过程中,无论是变量节点传送给校验节点的信息或者校验节点传送给变量节点的信息,都不应该包括前次迭代中接收方发送给发送方的信息,这样是为了保证发送的信息与接受节点已得到的信息相互对立。

            译码结束:

            如果H*C^{^{T}} = 0或者达到最大译码迭代次数时,译码停止。

    2.2对数域置信传播算法

            置信传播算法中包含大量乘法运算,乘法运算结果稳定性比较差,波动性高,且复杂度高,运算时间较长,因而出现了对数域置信传播算法,将概率消息用对数似然比进行表示,概率域的乘法转换成对数域的加法。

            根据以上,LLR BP译码算法的迭代译码步骤如下:

            (主要是根据3-9对数域、概率域之间的转换

            以上可知,LLR BP相较于BP译码算法在保证译码性能的同时也大大减少了运算的复杂度。

    2.3最小和译码算法

            最小和译码(MS,Min-Sum)算法是以LLR BP算法译码为基础,对校验节点信息更新的表达式进行的简化,其余步骤均与LLR BP译码算法一致。

            Tanh函数:

             由上图,可以知道tanh的一些特点。tanh函数是奇函数,定义域内单调增加,值域在(-1,1)之间。

            比较LLR BP译码算法和Min-Sum译码算法的校验节点信息更新过程,可以看到他们的主要区别在于LLR BP译码算法中的tanh(.)运算和加法运算在Min-Sum译码算法中被最小值和运算符号进行替换,MS译码简化了LLR BP译码算法,降低了译码算法的复杂度。 

    2.4改进的最小和译码算法

            Min-Sum算法的简化方案不是精确计算而是近似方案,因而计算出的校验节点信息值和原始的实际值会存在误差,即过大估计问题。这将会导致译码过程的收敛速度减慢,译码性能也会有所损失。因此,研究人员提出了两种有效的方案:Normalized Min-Sum算法和Offset Min-Sum算法。

            (1)Normalized Min-Sum算法

    算法主要思想是在MS算法计算校验节点信息更新的步骤中对计算结果乘一个修正因子进行调整,缩小两者之间的差距。

             (2) Offset Min-Sum算法

    算法主要思想是在MS算法计算校验节点更新信息的步骤中对计算结果减一个修正因子进行误差补偿。

             这两种改进方案复杂度差不多,但在译码性能方面远超MS译码算法,具有比较接近LLR BP译码算法的性能。

    展开全文
  • 基于深度学习的低复杂度LDPC译码器.pdf
  • LDPC_NMS译码函数,输入变量为待译码数据和校验矩阵,对于校验矩阵H大小无要求,可直接使用。
  • 资源名:matlab_LDPC码编码译码_LDPC_BSN 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定...
  • 低密度奇偶校验码的译码程序,内容非常丰富
  • 本文以WIMAX标准(2304,1152)QC-LDPC码为例,以现场可编程门阵列(FPGA)作为实现平台,仿真并实现了基于最小和算法的QC-LDPC译码器。结果表明,当译码器工作频率为200 MHz、迭代次数为10次时,吞吐量可达到1 Gbit/s。
  • 针对QC_LDPC码校验矩阵的结构特性,研究了BP算法的特点,并利用TMS320C6747系列DSP作为实现平台,在硬件资源存储、数据精度处理方面提出了改进,成功实现了基于BP算法的QC_LDPC译码器.系统性能测试表明,经优化的...
  • 基于MATLAB的多进制LDPC译码算法的仿真 %进行多进制准循环LDPC编码 y = func_Ldpc_enc(x,G,q); %多进制信道处理 yb = (fliplr(de2bi(y,nbits)))'; yb = yb(:); zb = 2*yb-1; zb = zb + sigma*randn...
  • LDPC译码

    2020-04-02 20:27:51
    本文将介绍LDPC译码器的FPGA实现,译码器设计对应CCSDS131x1o1s文档中提到的适用于深空通信任务的LDPC编码。本文档将简述Verilog代码的基本结构和信号说明。 简介 本文中FPGA实现特指通过Verilog HDL实现LDPC译码器...

    概述

    本文将介绍LDPC译码器的FPGA实现,译码器设计对应CCSDS131x1o1s文档中提到的适用于深空通信任务的LDPC编码。本文档将简述Verilog代码的基本结构和信号说明。

    简介

    本文中FPGA实现特指通过Verilog HDL实现LDPC译码器功能,然而对于VHDL来说也似类似的的。Verilog HDL不像MATLAB代码那样有很强的通用性,或者说我暂时编不出通用性太好的代码。因此,这里的FPGA实现仅针对CCSDS文档(06版)中1024信息位1/2码率的适用于深空通信LDPC码,采用最小和算法下的实现。由于在截位补零下最小和算法性能奇差,因此此处不做补零处理,即码率实际为0.4。

    LDPC相关文档包括《程序说明:LDPC编码(CCSDS)算法概述》、《程序说明:LDPC译码算法概述》、《学习笔记:LDPC编译码基本原理》以及《CCSDS_LDPC_V1》(代码),同时与本文档同名的学习笔记将阐述编程过程和思路,均可作为本文档的参考。

    译码器的输入输出至少应该包括以下信号

    input clk;                //时钟

    input rst;                //复位信号,高有效

    input decode_start;    //开始译码信号,持续高电平一个clock有效

    output output_ready;    //开始输出

    output frame_error;    //输出结果不满足校验矩阵

    output data_out;        //输出译码后数据

    output busy;            //译码模块正在译码,此时不响应decode_start信号

    对应应该有如下的状态

    parameter IDLE = 5’b00001;            //空闲状态,等待译码

    parameter VML_INIT = 5’b00010;        //初始化变量节点取值

    parameter UML_UPDATE = 5’b00100;        //更新校验节点,同时计算校验方程

    parameter VML_UPDATE = 5’b01000;        //更新变量节点

    parameter DECODER_END = 5’b10000;    //输出译码结果

    下文将具体叙述程序结构和信号说明。

    程序结构

    图 1 程序结构图

    顶层模块为decoder_top,以下具体阐述各个模块和改进思路

    图 2 状态机

    这是decoder_top内唯一有意义的代码,输出5个状态,输入包括

    decode_start

    vmlram_addra

    hrowram_addra

    frame_error

    MAX_ITER_NUM

    这是状态机跳转的所有条件,第2、3个是可选择的,可以考虑替换掉,但这两个是很很方便的。

    图 3 信道信息控制模块

    通过state和umlram_addrb控制尝试inputram_addra对应输出不同的信息。输入umlram_addrb是必须的,因为需要控制在uml2vml中信道信息的输出。

    显然这两个模块可以合成一个,不应该直接将InputRam放在decoder_top之下。

    图 4 Vml寄存器写控制

    vmlram写控制需要即控制vmlram_wea,dina,addra三路信号。针对不同阶段,vml的输入是不一样的,该模块起到了一个输入选择作用对inputram_douta,vmlram_updae_dina,decoded_data_check三个信号进行处理,同时根据state不同产生写入地址。模块设计较为合理。

    图 5 vml2uml模块

    这个模块还包括了hrowram、vml2uml_caculate和check_data三个部分。模块完成了decoded_data的校验和vmlram_doutb到变量节点的更新。输出的hrowram_addra作为了state和uml地址生成的控制(挺方便,是否合适,有无更好选择?),hrowram_douta用于生成uml的写地址。

    图 6 umlram_write_control模块

    umlram_write_control模块控制产生uml写地址,为什么没有写数据,因为vml2uml模块的输出直接连接到ram上面去了。写地址和使能通过hrowram_addra和hrowram_douta控制产生。

    图 7 uml2vml模块

    变量节点更新模块技术按vml更新值即vmlram_update_dina和decoded_data_check.

    信号说明

    Decoder_top顶层控制模块

    表格 1 decoder_top模块信号说明

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    decode_start

    input

    开始译码信号,持续高电平一个clock有效

    optput_ready

    output

    开始输出

    frame_error

    output

    输出结果不满足校验矩阵

    data_out

    output

    输出译码后数据

    busy

    output,reg

    译码模块正在译码,此时不响应decode_start信号

    state

    reg[4:0]

    状态寄存器

    MAX_ITER_NUM

    reg[7:0]

    最大迭代次数

    vmlram_update_dina

    wire[7:0]

    vml更新过程中的数据输入

    decoded_data_check

    wire

    待校验的译码结果

    inputram_addra

    wire[11:0]

    被译码数据地址控制

    inputram_douta

    wire[7:0]

    被译码数据输出

    hrowram_addra

    wire[12:0]

    行列地址转化ROM地址

    hrowram_douta

    wire[12:0]

    作为vml_addrb的输入

    vmlram_addra

    wire[12:0]

    变量存储器写地址

    vmlram_dina

    wire[8:0]

    变量存储器写输入

    vmlram_doutb

    wire[7:0]

    变量存储器写输出

    decoded_data

    wire

    也存在变量存储器的译码结果

    vmlram_wea

    wire

    变量存储器写使能

    umlram_addra

    wire[12:0]

    校验存储器写地址

    umlram_addrb

    wire[12:0]

    校验存储器读地址

    umlram_dina

    wire[7:0]

    校验存储器写数据

    umlram_doutb

    wire[7:0]

    校验存储器读数据

    umlram_wea

    wire

    校验存储器写使能

    Inputram_control:根据输入产生inputram的地址控制

    表格 2 inputram_control控制模块信号说明

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    umlram_addrb

    input[12:0]

    校验存储器读地址

    state

    input[4:0]

    状态寄存器

    inputram_addra

    output[11:0],reg[11:0]

    被译码数据地址控制

    input_count

    reg[2:0]

    地址更新计数器

    input_count_max

    reg[2:0]

    最大计数次数控制

    input_init_addr

    reg[11:0]

    VML_INIT状态下inputram_addra地址

    input_update_addr

    reg[11:0]

    VML_UPDATA状态下inputram_addra地址

    Vmlram_write_control: vml寄存器写控制,通过输入inputram_douta, vmlram_update_dina等信息自动判断输出写地址、写使能和数据。

    表格 3 vmlram_write_control模块的信号说明

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    inputram_douta

    input[7:0]

    VML下数据输入

    state

    input[4:0]

    状态

    vmlram_update_dina

    input[7:0]

    vml更新过程中的数据输入

    decoded_data_check

    input

    待校验的译码结果

    vmlram_addra

    output[12:0] ,reg[12:0]

    vmlram_dina

    output[8:0], reg[8:0]

    vmlram_wea

    output, reg

    vmlram_init_addra

    reg[12:0]

    addr_update_count

    reg[1:0]

    VML_UPDATE下实际上是要对地址做延迟的,这是控制延迟的寄存器

    vmlram_update_addra

    reg[12:0]

    vmlram_init_addratemp

    reg[12:0]

    这个是开始数错了时钟周期,添加一个clk延时

    vmlram_update_addratemp

    reg[12:0]

    这个是开始数错了时钟周期,添加一个clk延时

    Vml2uml: 接收vml读出的数据,处理后写入uml中。同时完成校验伴随式的计算

    Vml2uml包含了以下几个模块:

    hrowram

    vml2uml_caculate

    check_data

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    state

    input[4:0]

    状态信息

    decoded_data

    input

    vmlram_doutb

    input[7:0]

    hrowram_addra

    output[12:0], reg[12:0]

    hrowram_douta

    output[12:0], wire[12:0]

    umlram_dina

    output[7:0]

    frame_error

    output

    输出帧错误指示

    vmltempcount

    reg[2:0]

    计算是三个一更新还是六个

    Vml2uml_calculate.v 校验节点更新的计算部分内容

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    state

    input[4:0]

    状态信息

    vmltempcount

    input[2:0]

    计算是三个一更新还是六个

    vmlram_doutb

    input[7:0]

    vmlram输出

    umlram_dina

    output[7:0],reg[7:0]

    umlram输入

    vmlmark

    reg

    每组计算出符号

    vmltemp

    reg[47:0]

    缓存6个clock的vmlram输出

    vmltempmark

    reg[5:0]

    缓存6个clock的vmlram输出符号

    vmlmin1

    reg[7:0]

    最小值计算

    vmlmin2

    reg[7:0]

    次小值计算

    vmlmin1temp

    reg[7:0]

    缓存最小值计算结果

    vmlmin2temp

    reg[7:0]

    缓存次小值计算结果

    vmltempcomp

    reg[7:0]

    取出用于比较的vml输出(绝对值)

    vmlMarkcomp

    reg

    缓存符号计算结果

    vmltempmarkcomp

    reg

    取出用于比较的vml符号

    vmlram_doutb_inv

    wire[7:0]

    负数取绝对值

    check_data.v 计算是否满足校验方程

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    state

    input[4:0]

    状态信息

    vmltempcount

    input[2:0]

    计算是三个一更新还是六个

    decoded_data

    input

    待校验数据

    hrowram_addra

    input[12:0]

    校验起始控制

    frame_error

    output, reg

    帧错误指示

    sum_mod2

    reg

    计算模二和

    Umlram_write_control.v: uml寄存器写控制

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    hrowram_douta

    input[12:0]

    hrowram输出,用于生成umlram地址

    hrowram_addra

    input[12:0]

    hrowram地址,计数判断

    umlram_addra

    output[12:0], reg[12:0]

    生成的umlram地址

    umlram_wea

    output,reg

    umlram使能信号

    hrowram_douta_temp

    reg[116:0]

    存储hrowram输出,延时生成umlram地址

    Uml2vml.v: 校验节点到变量节点更新,同时生成译码后结果

    信号

    类型

    功能

    clk

    input

    时钟

    rst

    input

    复位信号,高有效

    state

    input[4:0]

    umlram_doutb

    input[7:0]

    inputram_douta

    input[7:0]

    umlram_addrb

    output[12:0]

    vmlram_update_dina

    output[7:0]

    decoded_data_check

    output

    umltempcount

    reg[2:0]

    判断uml延迟

    umltemp

    reg[47:0]

    uml输出缓存

    umlsum

    reg[10:0]

    uml输出求和

    umlsumtemp

    reg[10:0]

    缓存求和结果

    vmltempcount_max

    reg[2:0]

    控制此时几个数据做一次操作

    vmltempcount

    reg[2:0]

    控制此时几个数据做一次操作

    vmlram_update_dina

    reg[7:0]

    vml需要写入的数据

    umltempsub

    reg[7:0]

    做减法的uml取值

    umltempsub_delay

    reg[2:0]

    uml取值延时控制

    vmltempcount_maxtemp

    reg[2:0]

    uml取值延时控制

    改进

    模块划分是否合理?

    功能实现是否足够合适?

    存储器设计显然不够合理,都是8bit。

    参考他人毕业论文的模块化方法。

    了解并行、部分并行的方法

    完成输入输出部分模块的设计。

    完成整个硬件仿真平台的思路构想。
    ————————————————
    版权声明:本文为CSDN博主「简单同学」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/l471094842/article/details/103494680

    展开全文
  • BPSK调制,awgn通道,Matlab LDPC编码译码算法仿真
  • LDPC 译码算法主要研究了基于概率测度的BP 译码算法、基于LLR 的BP 译码算法、归一化最小和译码算法等算法。最终的实现选择了适合 FPGA 硬件实现的归一化最小和译码算法。在实现结构方面,对 TPMP 和 TDMP 两种实现...
  • 基于Matlab ldpc译码算法,码长960,码率0.5,完全模拟fpga硬件实现语言,量化处理
  • ldpc译码,比特翻转译码,硬判决。需要更好的方法,实现更简单/
  • 研究了M-QAM与QC-LDPC结合的调制编码系统的...QC-LDPC译码采用M.Mansour最新提出的P-TDMP算法,仿真结果显示,P-TDMP算法比传统的置信传播译码算法有一定的性能增益,它还提高了硬件实现的并行度,降低了系统的开销。
  • 提出了一种通用的多码率QC-LDPC 译码器设计方法,并在FPGA 上完成了实现和测试。测试结果表明,该多码率译码器在资源占用不超过2 种码率译码器资源之和的前提下能够有效支持至少3 种码率;且工作时钟在110 MHZ 时,...
  • 本次研究对LDPC译码器所采取的独特的设计结构以及存储器的控制策略,在保证速度的前提下增强了性能,从而实现了以小资源换取高性能的目标,随着通信系统和CMMB技术的普及,本次LDPC译码器的研究对其它系统译码器的...
  • 针对多元低密度奇偶校验码(LDPC)译码器的资源消耗过大问题,设计了一种采用扩展最小和算法的低资源需求的多元LDPC译码器。采用以块为单位对信息进行迭代更新和Flooding传递调度策略的结构。为降低译码器的存储资源和...
  • Min-sum 10000PE-RetentionErr.xlsx 1000PE-RetentionErr.xlsx Gguifan.m Gguifan.mat H.h H.txt H128x1152.mat H2048x10240.mat H2P.m H341x8533.mat H440x8632.mat H512x8704.mat Hguifan.m Hguifan.mat LDPC_MSA....

    Min-sum

    10000PE-RetentionErr.xlsx

    1000PE-RetentionErr.xlsx

    Gguifan.m

    Gguifan.mat

    H.h

    H.txt

    H128x1152.mat

    H2048x10240.mat

    H2P.m

    H341x8533.mat

    H440x8632.mat

    H512x8704.mat

    Hguifan.m

    Hguifan.mat

    LDPC_MSA.m

    LDPC_MSA_layered.m

    Main.m

    P.h

    P.txt

    P128x1152.mat

    P2048x10240(8192).mat

    P341x8533(8192).mat

    P440x8632(8192).mat

    P512x8704(8192).mat

    Untitled1.prj

    channel.m

    channel_MLC.m

    channel_MLC_MSB.m

    channel_part.m

    channel_special.m

    channel_special_LSB.m

    channel_special_MSB.m

    codegen

    lib

    ldpc_encode_G

    buildInfo.mat

    codeInfo.mat

    html

    coder_report.mat

    contents_file.tmp

    hilite_warning.png

    index.css

    index.html

    inference.mat

    ldpc_encode_G1_mcode.html

    ldpc_encode_G1_watch.html

    ldpc_encode_G_buildlog1.html

    ldpc_encode_G_c.html

    ldpc_encode_G_h.html

    ldpc_encode_G_initialize_c.html

    ldpc_encode_G_initialize_h.html

    ldpc_encode_G_terminate_c.html

    ldpc_encode_G_terminate_h.html

    ldpc_encode_G_types_h.html

    metrics.html

    mod_c.html

    mod_h.html

    replacements.html

    rtGetInf_c.html

    rtGetInf_h.html

    rtGetNaN_c.html

    rtGetNaN_h.html

    rt_nonfinite_c.html

    rt_nonfinite_h.html

    rtwshrink.js

    rtwtypes_h.html

    interface

    _coder_ldpc_encode_G_api.c

    _coder_ldpc_encode_G_api.h

    _coder_ldpc_encode_G_info.c

    _coder_ldpc_encode_G_info.h

    _coder_ldpc_encode_G_mex.c

    ldpc_encode_G.c

    ldpc_encode_G.h

    ldpc_encode_G_initialize.c

    ldpc_encode_G_initialize.h

    ldpc_encode_G_ref.rsp

    ldpc_encode_G_rtw.bat

    ldpc_encode_G_rtw.mk

    ldpc_encode_G_terminate.c

    ldpc_encode_G_terminate.h

    ldpc_encode_G_types.h

    mod.c

    mod.h

    rtGetInf.c

    rtGetInf.h

    rtGetNaN.c

    rtGetNaN.h

    rt_nonfinite.c

    rt_nonfinite.h

    rtw_proj.tmw

    rtwtypes.h

    min_sum_decode

    abs.c

    abs.h

    buildInfo.mat

    codeInfo.mat

    html

    abs_c.html

    abs_h.html

    coder_report.mat

    contents_file.tmp

    hilite_warning.png

    index.css

    index.html

    inference.mat

    metrics.html

    min_sum_decode1_mcode.html

    min_sum_decode1_watch.html

    min_sum_decode_buildlog1.html

    min_sum_decode_c.html

    min_sum_decode_emxutil_c.html

    min_sum_decode_emxutil_h.html

    min_sum_decode_h.html

    min_sum_decode_initialize_c.html

    min_sum_decode_initialize_h.html

    min_sum_decode_terminate_c.html

    min_sum_decode_terminate_h.html

    min_sum_decode_types_h.html

    mod_c.html

    mod_h.html

    prod_c.html

    prod_h.html

    replacements.html

    rtGetInf_c.html

    rtGetInf_h.html

    rtGetNaN_c.html

    rtGetNaN_h.html

    rt_nonfinite_c.html

    rt_nonfinite_h.html

    rtwshrink.js

    rtwtypes_h.html

    sign_c.html

    sign_h.html

    sum_c.html

    sum_h.html

    interface

    _coder_min_sum_decode_api.c

    _coder_min_sum_decode_api.h

    _coder_min_sum_decode_info.c

    _coder_min_sum_decode_info.h

    _coder_min_sum_decode_mex.c

    min_sum_decode.c

    min_sum_decode.h

    min_sum_decode_emxutil.c

    min_sum_decode_emxutil.h

    min_sum_decode_initialize.c

    min_sum_decode_initialize.h

    min_sum_decode_ref.rsp

    min_sum_decode_rtw.bat

    min_sum_decode_rtw.mk

    min_sum_decode_terminate.c

    min_sum_decode_terminate.h

    min_sum_decode_types.h

    mod.c

    mod.h

    prod.c

    prod.h

    rtGetInf.c

    rtGetInf.h

    rtGetNaN.c

    rtGetNaN.h

    rt_nonfinite.c

    rt_nonfinite.h

    rtw_proj.tmw

    rtwtypes.h

    sign.c

    sign.h

    sum.c

    sum.h

    genH.m

    generateH.m

    ldpc_encode.m

    ldpc_encode_G.m

    load_mat.m

    min_sum_decode.m

    min_sum_decode_new.m

    minsumdata.xlsx

    model.m

    mul_GF2.m

    rearranged_cols.h

    rearranged_cols.txt

    rearranged_cols128x1152.mat

    rearranged_cols2048x10240.mat

    rearranged_cols341x8533.mat

    rearranged_cols440x8632.m

    rearranged_cols440x8632.mat

    reorder_bits.m

    reorder_bits_reverse.m

    第20000次擦除单页数据.xlsx

    展开全文
  • 采用BPSK调制方式的系统发生跳周现象后,输入LDPC译码器的信息序列符号与原序列符号相反,导致译码器失效。提出了基于置信传播算法的抗跳周LDPC译码算法。该算法通过增加一次迭代译码的运算量,根据校验节点与变量...
  • LDPC_NMS译码函数,输入变量为待译码数据和校验矩阵,对于校验矩阵H大小无要求,可直接使用。
  • LDPC译码器的FPGA实现

    千次阅读 2019-12-11 16:17:31
    本文将介绍LDPC译码器的FPGA实现,译码器设计对应CCSDS131x1o1s文档中提到的适用于深空通信任务的LDPC编码。本文档将简述Verilog代码的基本结构和信号说明。 简介 本文中FPGA实现...
  • LDPC译码算法

    千次阅读 2021-01-11 15:09:53
    %function [uhat,vhat]=ldpc_llrbpdecode(rx_waveform,SNR,amp,scale,H,rearranged_cols) max_iter=100; H=round(rand(128,256));%随机生成的矩阵 dim=size(H); rows=dim(1); cols=dim(2);%分别表示H的行数和列数 ...
  • LDPC码的BP译码verliong程序
  • 提出了一种通用的多码率QC-LDPC 译码器设计方法,并在FPGA 上完成了实现和测试。测试结果表明,该多码率译码器在资源占用不超过2 种码率译码器资源之和的前提下能够有效支持至少3 种码率;且工作时钟在110 MHZ 时,...
  • module LDPC (clk,reset, data_in, data_in_en, velocity, data_out, data_out_en, indication /*输出信号,第一个127要删除前5成7488,指示第一个127*/ ); input clk,reset; input data_in,...
  • LDPC译码算法及其改进算法;LLR BP算法;UMP BP-Based算法最小和或最大积;迭代APP算法;迭代APP-Based算法迭代APP+UMP BP-Based;简化算法比较以码率为1/2的LDPC码(n,p,2p)为例;BP-Based与BP算法校验节点处理的比较;N-BP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,124
精华内容 449
关键字:

ldpc译码