⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tx_ldpc_enc.cpp

📁 模拟cmmb系统中ldpc译码的部分
💻 CPP
字号:

/************************************/
/*函数说明:
/*功能:LDPC编码
/*输出参数:
/*tx_ldpced_bit:经过LDPC编码后的bit流,要初始化为0
/*输入参数:
/*tx_rsed_bit:经过RS编码,字节交织后的输出bit流;
/*tx_rsed_bit_len:经过RS编码,字节交织后的输出bit流的长度;
/*ldpc_rate:LDPC码率;
/*备注:输入信息位 乘以 生成矩阵 得到编码后的码字
/************************************/

#include <stdlib.h>
#include <stdio.h>
#include "tx_ldpc_enc.h"

void tx_ldpc_enc(char * tx_rsed_bit, long int tx_rsed_bit_len, double ldpc_rate, char * tx_ldpced_bit)
{
	int code_num,i,j,t;
	char **G;	
	int N=9216,M,K;
	FILE *fp;
	K = (int)(N*ldpc_rate);
	M = N-K;
	
	if(tx_rsed_bit_len%K != 0)
	{		
		printf("LDPC ENCODED DATA LEN ERROR 1");
		return ;
	}
    
	code_num = tx_rsed_bit_len /K;			/*得到此时隙ldpc帧的数目*/
	
	G = (char **)malloc(N*sizeof(char *));	/*为生成矩阵G分配空间*/
	for(i=0 ; i<N ; i++)
	{
		G[i] = (char *)calloc(K,sizeof(char));
	}
	
	switch (M)	
	{	
		case 4608:    
    		fp = fopen("GG12.dat","r");    		
    		if(fp==NULL)
			{
				printf("GG12.dat can not open the file!\n");					
				return ;
			}
			for(j=0;j<N;j++)									
				fread(G[j],sizeof(char),K,fp);				 	
			fclose(fp);	
				
			/*编码过程*/
	
    		for(i=0;i<code_num;i++)
    		{
    			for(j=0;j<N;j++)
				{
    				for(t=0;t<K;t++)
    					tx_ldpced_bit[i*N+j] ^= (tx_rsed_bit[t+i*K]&&G[j][t]);  
				}
    		}

			/*释放空间*/
			for( j=0 ; j<N ; j++)
				free(G[j]);
			free(G);
			break;
			
		case 2304:
    		fp = fopen("GG34.dat","r");    		
    		if(fp==NULL)
			{
				printf("GG34.dat can not open the file!\n");					
				return ;
			}
			for(j=0;j<N;j++)									
				fread(G[j],sizeof(char),K,fp);					 	
			fclose(fp);	

    		for(i=0;i<code_num;i++)
    		{
    			for(j=0;j<N;j++)
				{
    				for(t=0;t<K;t++)
    					tx_ldpced_bit[i*N+j] ^= (tx_rsed_bit[t+i*K]&&G[j][t]);  
				}
    		}			
			for( j=0 ; j<N ; j++)
			{
				free(G[j]);
			}
			free(G);
			break;
			
		default:
      	printf("LDPC_RATE PARAMETER ERROR!"); 
      	for( j=0 ; j<N ; j++)
		{
			free(G[j]);
		}
		free(G);
      	return ;  
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -