-
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
2022-03-12 21:30:07资源名:LDPC译码算法_最小和算法_和积算法_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及... -
LDPC2_sum-product_比特翻转_LDPC译码_LDPC_
2021-09-30 06:30:56LDPC的译码算法 -
ldpc译码算法_matlab_完全模拟fpga_硬件实现语言_量化处理_fpga
2022-03-12 21:34:18资源名:ldpc译码算法_matlab_完全模拟fpga_硬件实现语言_量化处理_fpga 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换... -
LDPC译码原理
2021-08-17 17:20:381.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。
第一次迭代:每个变量节点给所有与之相邻的校验节点传送一个可靠消息,这个可靠消息就是信道传送过来的值;每个校验节点接收到变量节点传送过来的可靠消息之后,进行处理,然后返回一个新的可靠消息信息给与之相邻的变量节点,这样就完成第一次迭代;此时可以进行判决,如果满足校验方程,则不需要再迭代,直接输出判决结果,否则进行第二次迭代。
第二次迭代:每个变量节点处理第一次迭代完成时校验节点传送过来的可靠消息,处理完成后新的消息发送给校验节点,同理,校验节点处理完后返回给变量节点,这样就完成了第二次迭代。完成后同样进行判决,如果满足校验方程则结束译码,否则如此反复多次迭代,每次都进行判决,直到达到设定的最大迭代次数,译码失败。在每次迭代过程中,无论是变量节点传送给校验节点的信息或者校验节点传送给变量节点的信息,都不应该包括前次迭代中接收方发送给发送方的信息,这样是为了保证发送的信息与接受节点已得到的信息相互对立。
译码结束:
如果
或者达到最大译码迭代次数时,译码停止。
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
2021-08-18 21:27:22基于深度学习的低复杂度LDPC译码器.pdf -
LDPC_NMS_decode_LDPC译码NMS译码_LDPC_
2021-09-30 00:27:33LDPC_NMS译码函数,输入变量为待译码数据和校验矩阵,对于校验矩阵H大小无要求,可直接使用。 -
matlab_LDPC码编码译码_LDPC_BSN
2022-03-12 21:38:31资源名:matlab_LDPC码编码译码_LDPC_BSN 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定... -
ldpc decoding全_LDPC译码_LDPC_
2021-10-01 08:49:30低密度奇偶校验码的译码程序,内容非常丰富 -
基于最小和算法的QC-LDPC译码器的FPGA实现
2021-06-07 17:04:58本文以WIMAX标准(2304,1152)QC-LDPC码为例,以现场可编程门阵列(FPGA)作为实现平台,仿真并实现了基于最小和算法的QC-LDPC译码器。结果表明,当译码器工作频率为200 MHz、迭代次数为10次时,吞吐量可达到1 Gbit/s。 -
研究论文-基于BP算法的QC_LDPC译码器的DSP实现
2019-08-07 15:22:33针对QC_LDPC码校验矩阵的结构特性,研究了BP算法的特点,并利用TMS320C6747系列DSP作为实现平台,在硬件资源存储、数据精度处理方面提出了改进,成功实现了基于BP算法的QC_LDPC码译码器.系统性能测试表明,经优化的... -
基于MATLAB的多进制LDPC译码算法的仿真
2022-03-17 02:21:28基于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 -
LDPC_LDPCmatlab_LDPC译码_ldpc编码_
2021-09-29 07:57:13BPSK调制,awgn通道,Matlab LDPC编码译码算法仿真 -
_LDPC编译码技术的研究与实现,ldpc译码算法,C,C++
2021-09-10 15:40:52LDPC 译码算法主要研究了基于概率测度的BP 译码算法、基于LLR 的BP 译码算法、归一化最小和译码算法等算法。最终的实现选择了适合 FPGA 硬件实现的归一化最小和译码算法。在实现结构方面,对 TPMP 和 TDMP 两种实现... -
基于Matlab ldpc译码算法
2022-04-24 11:31:50基于Matlab ldpc译码算法,码长960,码率0.5,完全模拟fpga硬件实现语言,量化处理 -
LDPC_3_比特翻转_LDPC硬译码_LDPC比特翻转_LDPC硬判决_timehdd_
2021-10-04 06:26:03ldpc译码,比特翻转译码,硬判决。需要更好的方法,实现更简单/ -
M-QAM系统中QC_LDPC译码性能研究
2021-01-31 04:09:42研究了M-QAM与QC-LDPC结合的调制编码系统的...QC-LDPC译码采用M.Mansour最新提出的P-TDMP算法,仿真结果显示,P-TDMP算法比传统的置信传播译码算法有一定的性能增益,它还提高了硬件实现的并行度,降低了系统的开销。 -
多码率QC-LDPC译码器设计与实现
2021-01-19 22:33:34提出了一种通用的多码率QC-LDPC 译码器设计方法,并在FPGA 上完成了实现和测试。测试结果表明,该多码率译码器在资源占用不超过2 种码率译码器资源之和的前提下能够有效支持至少3 种码率;且工作时钟在110 MHZ 时,... -
基于FPGA的LDPC译码算法,包括MATLAB仿真,verilog程序,3万字word版论文
2022-03-03 18:33:58本次研究对LDPC译码器所采取的独特的设计结构以及存储器的控制策略,在保证速度的前提下增强了性能,从而实现了以小资源换取高性能的目标,随着通信系统和CMMB技术的普及,本次LDPC译码器的研究对其它系统译码器的... -
采用EMS算法的多元LDPC译码器的FPGA实现 (2011年)
2021-05-22 23:03:21针对多元低密度奇偶校验码(LDPC)译码器的资源消耗过大问题,设计了一种采用扩展最小和算法的低资源需求的多元LDPC译码器。采用以块为单位对信息进行迭代更新和Flooding传递调度策略的结构。为降低译码器的存储资源和... -
最小和LDPC译码算法MATLAB实现
2021-04-20 09:37:48Min-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译码算法
2021-01-19 22:30:02采用BPSK调制方式的系统发生跳周现象后,输入LDPC译码器的信息序列符号与原序列符号相反,导致译码器失效。提出了基于置信传播算法的抗跳周LDPC译码算法。该算法通过增加一次迭代译码的运算量,根据校验节点与变量... -
84fheufh845t59dj_LDPC译码NMS译码_
2021-10-04 12:25:55LDPC_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的行数和列数 ... -
Verilog LDPC码_LDPCverilog_LDPC码译码_ldpc译码_LDPC_LDPC译码verilog
2011-10-15 10:13:07LDPC码的BP译码verliong程序 -
EDA/PLD中的多码率QC-LDPC译码器设计与实现
2020-11-03 02:29:53提出了一种通用的多码率QC-LDPC 译码器设计方法,并在FPGA 上完成了实现和测试。测试结果表明,该多码率译码器在资源占用不超过2 种码率译码器资源之和的前提下能够有效支持至少3 种码率;且工作时钟在110 MHZ 时,... -
基于verilog的LDPC译码算法的实现。
2022-04-04 05:41:30module 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译码算法总结归纳.ppt
2020-11-22 00:11:18LDPC译码算法及其改进算法;LLR BP算法;UMP BP-Based算法最小和或最大积;迭代APP算法;迭代APP-Based算法迭代APP+UMP BP-Based;简化算法比较以码率为1/2的LDPC码(n,p,2p)为例;BP-Based与BP算法校验节点处理的比较;N-BP...