gain从独立文件改为放到DM1里;bit_proc的LLR解调改为64QAM,输入28次1024个符号;修正Test_Func_Receiver_Bit.h里面的DM3长度

This commit is contained in:
daoshuailin 2025-06-08 22:46:27 +08:00
parent c063526904
commit e56438da15
11 changed files with 29745 additions and 89133 deletions

View File

@ -41,7 +41,7 @@ void Receiver_Bit_Init();
void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len);
void Receiver_Bit_Proc(
receiver_symb2bit_t* symb2bit_info,
uint32_t* param_ptr,
// uint32_t* param_ptr,
int32_t* temp_dm0_ptr,
int32_t* temp_dm1_ptr,
int32_t* temp_dm2_ptr,

View File

@ -36,5 +36,6 @@
#define RECEIVER_LdpcDecBG1AllZc_LUT1_LENGTH (0x0100)
#define RECEIVER_LdpcDecBG1AllZc_LUT2_LENGTH (0x0030)
#define RECEIVER_LdpcDecBG1AllZc_LUT3_LENGTH (0x0030)
#define RECEIVER_LLRDemodulation_LUT1_LENGTH (0x0400)
//=======================================================================
#endif

View File

@ -41,6 +41,7 @@ typedef struct receiver_bit_table_param_s
uint32_t LdpcDecBG1AllZc_LUT1_Offset;
uint32_t LdpcDecBG1AllZc_LUT2_Offset;
uint32_t LdpcDecBG1AllZc_LUT3_Offset;
uint32_t LLRDemodulation_LUT1_Offset;
// SPU LUT SM基地址和长度

View File

@ -32,6 +32,7 @@ void Receiver_Bit_Init()
//DM1
g_receiver_bit_table_param.LdpcDecBG1AllZc_LUT2_Offset = 0;
g_receiver_bit_table_param.LdpcDecBG1AllZc_CFG3_Offset = g_receiver_bit_table_param.LdpcDecBG1AllZc_LUT2_Offset + RECEIVER_LdpcDecBG1AllZc_LUT2_LENGTH;
g_receiver_bit_table_param.LLRDemodulation_LUT1_Offset = g_receiver_bit_table_param.LdpcDecBG1AllZc_CFG3_Offset + RECEIVER_LdpcDecBG1AllZc_CFG3_LENGTH;
//DM2
g_receiver_bit_table_param.LdpcDecBG1AllZc_LUT3_Offset = 0;
g_receiver_bit_table_param.LdpcDecBG1AllZc_CFG4_Offset = g_receiver_bit_table_param.LdpcDecBG1AllZc_LUT3_Offset + RECEIVER_LdpcDecBG1AllZc_LUT3_LENGTH;
@ -81,19 +82,19 @@ void Receiver_Bit_Init()
//{
//LOG_ERROR_S("timedata.dat not found!\n");
//}
uint32_t gain_mmse_test_ptr;
int32_t gain_mmse_test_len;
ret = osp_get_cfgfile("gain_test.dat",
(uint32_t *)&(gain_mmse_test_ptr),
(int32_t *)&(gain_mmse_test_len));
if(0 != ret)
{
LOG_ERROR_S("gain_test.dat not found!\n");
}
STORE_EX_W(RECV_BIT_OUT_DATA_FLAG_DDR_ADDR,0);
int* param_ptr = (int *)RECEIVER_BIT_CFG_BASE;
// uint32_t gain_mmse_test_ptr;
// int32_t gain_mmse_test_len;
// ret = osp_get_cfgfile("gain_test.dat",
// (uint32_t *)&(gain_mmse_test_ptr),
// (int32_t *)&(gain_mmse_test_len));
// if(0 != ret)
// {
// LOG_ERROR_S("gain_test.dat not found!\n");
// }
// STORE_EX_W(RECV_BIT_OUT_DATA_FLAG_DDR_ADDR,0);
// int* param_ptr = (int *)RECEIVER_BIT_CFG_BASE;
//STORE_EX_W(param_ptr, timedata_ptr);
//STORE_EX_W((param_ptr+1), timedata_len);
STORE_EX_W((param_ptr+2), gain_mmse_test_ptr);
// STORE_EX_W((param_ptr+2), gain_mmse_test_ptr);
//STORE_EX_W((param_ptr+3), gain_mmse_test_len);
}

View File

@ -17,7 +17,7 @@
*/
void Receiver_Bit_Proc(
receiver_symb2bit_t* symb2bit_info,
uint32_t *param_ptr,
// uint32_t *param_ptr,
int32_t *temp_dm0_ptr,
int32_t *temp_dm1_ptr,
int32_t *temp_dm2_ptr,
@ -28,8 +28,8 @@ void Receiver_Bit_Proc(
int32_t *cfg_addr;
uint32_t time_data_ddr_ptr;
uint32_t time_data_length;
uint32_t gain_test_ddr_ptr;
uint32_t gain_test_length;
// uint32_t gain_test_ddr_ptr;
// uint32_t gain_test_length;
uint32_t mpu_temp_dm0_ptr;
uint32_t mpu_temp_dm1_ptr;
uint32_t mpu_temp_dm2_ptr;
@ -42,17 +42,18 @@ void Receiver_Bit_Proc(
// 16QAM_LDPC-----------------------------------------------------------------------------------------------
int i;
int NumCB = 28;
uint32_t gain_mmse_input = (uint32_t)(temp_dm1_ptr);
// uint32_t gain_mmse_input = (uint32_t)(temp_dm1_ptr);
int32_t *gain_mmse_input = (int32_t *)receiver_bit_config_dm1_ptr + g_receiver_bit_table_param.LLRDemodulation_LUT1_Offset;
uint32_t TempRNV = (uint32_t)(temp_dm1_ptr) + 8192;
uint32_t TempQ = (uint32_t)(temp_dm3_ptr);
uint32_t Qam16Out = (uint32_t)(temp_dm2_ptr);
int Qm = 4;
int ReNum = 2048;
int Qm = 6; // 4-16QAM6-64QAM8-256QAM从 4 改 6
int ReNum = 1024; // 从 2048 改 1024
int front_nullen = 208 * 2;//=416byte,104word
int32_t *ldpc_pre_data_ptr = (int32_t *)receiver_bit_config_dm3_ptr + g_receiver_bit_table_param.ByteCopy_CFG2_Offset;
uint32_t bytecopy_out;
int efect_len = 8192;
int efect_len = ReNum * Qm;
uint32_t ByteShiftOut = (uint32_t)(temp_dm2_ptr);
int totalCBlen = 14144;
@ -84,23 +85,23 @@ void Receiver_Bit_Proc(
DMA_TAG_G2L,
0);
ape_csu_task_lookup(DMA_TAG_G2L, 1);//等待之前的 DMA 传输完成
gain_test_ddr_ptr = (uint32_t)*(param_ptr + 2);//addr->4;(ReNum*2)byte/4=(ReNum/2)word
gain_test_length = (uint32_t)4096;
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)gain_test_ddr_ptr,
(uint64_t)DM_TO_CSU_ADDR(gain_mmse_input),
gain_test_length,
DMA_TAG_G2L,
0);
ape_csu_task_lookup(DMA_TAG_G2L, 1);
// gain_test_ddr_ptr = (uint32_t)*(param_ptr + 2);//addr->4;(ReNum*2)byte/4=(ReNum/2)word
// gain_test_length = (uint32_t)4096;
// ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)gain_test_ddr_ptr,
// (uint64_t)DM_TO_CSU_ADDR(gain_mmse_input),
// gain_test_length,
// DMA_TAG_G2L,
// 0);
// ape_csu_task_lookup(DMA_TAG_G2L, 1);
cfg_addr = (int32_t *)receiver_bit_config_dm0_ptr + g_receiver_bit_table_param.LLRDemodulation_CFG1_Offset;
LLRDemodulationSetConfig((int)cfg_addr,
MPU_ADDR(time_data_dm0_ptr),
MPU_ADDR(gain_mmse_input),
MPU_ADDR((uint32_t)gain_mmse_input),
MPU_ADDR(TempQ),
MPU_ADDR(TempRNV),
MPU_ADDR(Qam16Out),
Qm, // Qm16QAM
ReNum); // ReNum符号数2048
MPU_ADDR(Qam16Out), // ReNum * Qm
Qm, // Qm
ReNum); // ReNum符号数
SVRReg[0] = MPU_ADDR(cfg_addr);
LLRDemodulationAsm(SVRReg);
WAIT_MPU_STOP;

View File

@ -157,7 +157,7 @@ void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len)
//6. 计算流程
Receiver_Bit_Proc(
&symb2bit_info,
(uint32_t*)receiver_bit_param_ptr,
// (uint32_t*)receiver_bit_param_ptr,
receiver_bit_temp_dm0_ptr,
receiver_bit_temp_dm1_ptr,
receiver_bit_temp_dm2_ptr,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -12,15 +12,15 @@
#define RECEIVER_BIT_IDE_CONFIG_DM0_ADDR (RECEIVER_BIT_IDE_BASE_ADDR)
#define RECEIVER_BIT_IDE_CONFIG_DM0_LEN (10592*4)
#define RECEIVER_BIT_IDE_CONFIG_DM1_ADDR (RECEIVER_BIT_IDE_CONFIG_DM0_ADDR + RECEIVER_BIT_IDE_CONFIG_DM0_LEN)
#define RECEIVER_BIT_IDE_CONFIG_DM1_LEN (9392*4)
#define RECEIVER_BIT_IDE_CONFIG_DM1_LEN (10416*4)
#define RECEIVER_BIT_IDE_CONFIG_DM2_ADDR (RECEIVER_BIT_IDE_CONFIG_DM1_ADDR + RECEIVER_BIT_IDE_CONFIG_DM1_LEN)
#define RECEIVER_BIT_IDE_CONFIG_DM2_LEN (9392*4)
#define RECEIVER_BIT_IDE_CONFIG_DM3_ADDR (RECEIVER_BIT_IDE_CONFIG_DM2_ADDR + RECEIVER_BIT_IDE_CONFIG_DM2_LEN)
#define RECEIVER_BIT_IDE_CONFIG_DM3_LEN (12280*4)
#define RECEIVER_BIT_IDE_GAIN_TEST_ADDR (RECEIVER_BIT_IDE_CONFIG_DM3_ADDR + RECEIVER_BIT_IDE_CONFIG_DM3_LEN)
#define RECEIVER_BIT_IDE_GAIN_TEST_LEN (28672*4)
#define RECEIVER_BIT_IDE_DATA_IN_ADDR (RECEIVER_BIT_IDE_GAIN_TEST_ADDR + RECEIVER_BIT_IDE_GAIN_TEST_LEN)
#define RECEIVER_BIT_IDE_DATA_IN_LEN (57344*4)
// #define RECEIVER_BIT_IDE_GAIN_TEST_ADDR (RECEIVER_BIT_IDE_CONFIG_DM3_ADDR + RECEIVER_BIT_IDE_CONFIG_DM3_LEN)
// #define RECEIVER_BIT_IDE_GAIN_TEST_LEN (28672*4)
#define RECEIVER_BIT_IDE_DATA_IN_ADDR (RECEIVER_BIT_IDE_CONFIG_DM3_ADDR + RECEIVER_BIT_IDE_CONFIG_DM3_LEN)
#define RECEIVER_BIT_IDE_DATA_IN_LEN (28672*4)
extern __VIRT_SM uint32_t g_deofdm_test_file[];

View File

@ -7,7 +7,7 @@ __VIRT_SM uint32_t g_deofdm_test_file[] = {
#include "./../../Config/Receiver_Bit_cfg_dm1.dat"
#include "./../../Config/Receiver_Bit_cfg_dm2.dat"
#include "./../../Config/Receiver_Bit_cfg_dm3.dat"
#include "./../../Config/gain_test.dat"
// #include "./../../Config/gain_test.dat"
#include "./../testdata/timedata_li.dat"
};
@ -47,12 +47,12 @@ int osp_get_cfgfile(char* name, uint32_t *pbuf, int* psize)
*psize = RECEIVER_BIT_IDE_DATA_IN_LEN;
return 0;
}
if(0 == strcmp(name,"gain_test.dat"))
{
*pbuf = (uint32_t)(RECEIVER_BIT_IDE_GAIN_TEST_ADDR);
*psize = RECEIVER_BIT_IDE_GAIN_TEST_LEN;
return 0;
}
// if(0 == strcmp(name,"gain_test.dat"))
// {
// *pbuf = (uint32_t)(RECEIVER_BIT_IDE_GAIN_TEST_ADDR);
// *psize = RECEIVER_BIT_IDE_GAIN_TEST_LEN;
// return 0;
// }
return -1;
}

File diff suppressed because it is too large Load Diff