精华内容
下载资源
问答
  • 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

    展开全文
  • ldpc译码算法

    2012-02-13 21:13:44
    ldpc译码算法的实现,采用C语言FPGA技术实现LDPC码译码算法
  • LDPC译码硬判决辅助迭代VBLAST检测
  • CMMB标准LDPC译码算法研究,陈礼文,,本文对CMMB标准LDPC译码算法进行了研究。首先介绍了CMMB标准的LDPC码基本特征,然后分析了几种常用的LDPC译码算法;最后提出了一种针对CMM
  • LDPC译码差错的相关性研究,段宝栋,杨鸿文,LDPC译码之后各个数据分段中的差错的相关性对相关技术的应用有重要意义,本文通过仿真对LDPC译码后各分段的差错关联性进行了统计观�
  • 采用BPSK调制方式的系统发生跳周现象后,输入LDPC译码器的信息序列符号与原序列符号相反,导致译码器失效。提出了基于置信传播算法的抗跳周LDPC译码算法。该算法通过增加一次迭代译码的运算量,根据校验节点与变量...
  • 用BP算法实现LDPC译码

    2018-06-24 16:54:19
    用BP算法实现LDPC译码,包含多种算法,支持的matlab程序
  • CRC辅助LDPC译码的改进摄动法。
  • 对空间数据系统委员会(CCSDS)推荐的QC-LDPC码进行了研究,给出了改进的分层译码算法。基于改进的分层译码算法设计部分并行结构QC-LDPC译码器,译码速率较快,适合应用需求,并通过仿真验证所设计的译码器的性能。
  • Gallager原版LDPC译码算法仿真程序,大佬的风格,供大家参考
  • LDPC译码算法及其改进算法;LLR BP算法;UMP BP-Based算法最小和或最大积;迭代APP算法;迭代APP-Based算法迭代APP+UMP BP-Based;简化算法比较以码率为1/2的LDPC码(n,p,2p)为例;BP-Based与BP算法校验节点处理的比较;N-BP...
  • LDPC译码仿真实验,需要的下载,希望对大家的学习理解有帮助
  • LDPC译码复杂度的优化,冯飞,张欣,本文主要研究了LDPC(Low Density Parity Check Code)即低密度奇偶校验码的随机译码算法的译码复杂度。LDPC是研究人员发现的一种具有非常好��
  • LDPC译码器的FPGA实现

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

    概述

     

    本文将介绍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。

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

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

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

    完成整个硬件仿真平台的思路构想。

    展开全文
  • 近地通信系统中高速LDPC译码器的研究和实现
  • 基于泰勒级数近似的LDPC译码算法研究及FPGA实现
  • 提出了一种通用的多码率QC-LDPC 译码器设计方法,并在FPGA 上完成了实现和测试。测试结果表明,该多码率译码器在资源占用不超过2 种码率译码器资源之和的前提下能够有效支持至少3 种码率;且工作时钟在110 MHZ 时,...
  • QC-LDPC译码器设计

    2013-12-12 11:52:12
    这是一些有关QC-LDPC译码器设计的一些经典文章,非常详细的介绍了如何FPGA实现。希望对学习QC-LDPC的人士有帮助
  • ldpc译码算法的matlab实现,码长960,码率0.5,完全模拟fpga硬件实现语言,量化处理
  • 提出一种改进型LLRBP算法,它能通过调整变量节点信息的迭代过程来降低变量节点之间信息的相关性。仿真结果表明改进型LLRBP算法比LLRBP译码算法、NormalizedBP算法以及OffsetBP算法具有更好的LDPC译码性能。
  • 研究了M-QAM与QC-LDPC结合的调制编码系统的...QC-LDPC译码采用M.Mansour最新提出的P-TDMP算法,仿真结果显示,P-TDMP算法比传统的置信传播译码算法有一定的性能增益,它还提高了硬件实现的并行度,降低了系统的开销。
  • 本文以WIMAX标准(2304,1152)QC-LDPC码为例,以现场可编程门阵列(FPGA)作为实现平台,仿真并实现了基于最小和算法的QC-LDPC译码器。结果表明,当译码器工作频率为200 MHz、迭代次数为10次时,吞吐量可达到1 Gbit/s。
  • DTTB系统中LDPC译码量化问题研究,解飞,,LDPC码是一种性能非常好的线性分组校验码,因为其性能接近香浓限而受到广泛关注。不少文章针对传统的log-BP译码算法提出了量化方案��
  • 本文提出了多输入多输出系统中频率选择性衰落信道下的一种联合迭代检测和LDPC译码的算法,采用因子图的模型将检测器和译码器融合到了一个框架中,通过检测器与译码器两个处理器内部及全局的信息混合调度改善系统性能。...
  • 一种新型的LDPC译码器设计,钟贵锋,李庆,摘要:性能逼近Shannon限的低密度奇偶校验(Low-Density Parity-Check, LDPC) 纠错码,在实际应用中需要解决的问题是尽可能降低译码的复杂度。��
  • 针对多元低密度奇偶校验码(LDPC)译码器的资源消耗过大问题,设计了一种采用扩展最小和算法的低资源需求的多元LDPC译码器。采用以块为单位对信息进行迭代更新和Flooding传递调度策略的结构。为降低译码器的存储资源和...
  • LDPC译码器的ImpulseC编程设计
  • ldpc译码程序

    2014-01-14 21:41:15
    ldpc译码算法研究的代码,用matlab语言编写的,希望对你有用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 476
精华内容 190
关键字:

ldpc译码