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_Task(void* msg_ptr, uint32_t msg_len);
void Receiver_Bit_Proc( void Receiver_Bit_Proc(
receiver_symb2bit_t* symb2bit_info, receiver_symb2bit_t* symb2bit_info,
uint32_t* param_ptr, // uint32_t* param_ptr,
int32_t* temp_dm0_ptr, int32_t* temp_dm0_ptr,
int32_t* temp_dm1_ptr, int32_t* temp_dm1_ptr,
int32_t* temp_dm2_ptr, int32_t* temp_dm2_ptr,

View File

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

View File

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

View File

@ -32,6 +32,7 @@ void Receiver_Bit_Init()
//DM1 //DM1
g_receiver_bit_table_param.LdpcDecBG1AllZc_LUT2_Offset = 0; 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.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 //DM2
g_receiver_bit_table_param.LdpcDecBG1AllZc_LUT3_Offset = 0; 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; 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"); //LOG_ERROR_S("timedata.dat not found!\n");
//} //}
uint32_t gain_mmse_test_ptr; // uint32_t gain_mmse_test_ptr;
int32_t gain_mmse_test_len; // int32_t gain_mmse_test_len;
ret = osp_get_cfgfile("gain_test.dat", // ret = osp_get_cfgfile("gain_test.dat",
(uint32_t *)&(gain_mmse_test_ptr), // (uint32_t *)&(gain_mmse_test_ptr),
(int32_t *)&(gain_mmse_test_len)); // (int32_t *)&(gain_mmse_test_len));
if(0 != ret) // if(0 != ret)
{ // {
LOG_ERROR_S("gain_test.dat not found!\n"); // LOG_ERROR_S("gain_test.dat not found!\n");
} // }
STORE_EX_W(RECV_BIT_OUT_DATA_FLAG_DDR_ADDR,0); // STORE_EX_W(RECV_BIT_OUT_DATA_FLAG_DDR_ADDR,0);
int* param_ptr = (int *)RECEIVER_BIT_CFG_BASE; // int* param_ptr = (int *)RECEIVER_BIT_CFG_BASE;
//STORE_EX_W(param_ptr, timedata_ptr); //STORE_EX_W(param_ptr, timedata_ptr);
//STORE_EX_W((param_ptr+1), timedata_len); //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); //STORE_EX_W((param_ptr+3), gain_mmse_test_len);
} }

View File

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

View File

@ -157,7 +157,7 @@ void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len)
//6. 计算流程 //6. 计算流程
Receiver_Bit_Proc( Receiver_Bit_Proc(
&symb2bit_info, &symb2bit_info,
(uint32_t*)receiver_bit_param_ptr, // (uint32_t*)receiver_bit_param_ptr,
receiver_bit_temp_dm0_ptr, receiver_bit_temp_dm0_ptr,
receiver_bit_temp_dm1_ptr, receiver_bit_temp_dm1_ptr,
receiver_bit_temp_dm2_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_ADDR (RECEIVER_BIT_IDE_BASE_ADDR)
#define RECEIVER_BIT_IDE_CONFIG_DM0_LEN (10592*4) #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_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_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_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_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_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_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_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_ADDR (RECEIVER_BIT_IDE_CONFIG_DM3_ADDR + RECEIVER_BIT_IDE_CONFIG_DM3_LEN)
#define RECEIVER_BIT_IDE_DATA_IN_LEN (57344*4) #define RECEIVER_BIT_IDE_DATA_IN_LEN (28672*4)
extern __VIRT_SM uint32_t g_deofdm_test_file[]; 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_dm1.dat"
#include "./../../Config/Receiver_Bit_cfg_dm2.dat" #include "./../../Config/Receiver_Bit_cfg_dm2.dat"
#include "./../../Config/Receiver_Bit_cfg_dm3.dat" #include "./../../Config/Receiver_Bit_cfg_dm3.dat"
#include "./../../Config/gain_test.dat" // #include "./../../Config/gain_test.dat"
#include "./../testdata/timedata_li.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; *psize = RECEIVER_BIT_IDE_DATA_IN_LEN;
return 0; return 0;
} }
if(0 == strcmp(name,"gain_test.dat")) // if(0 == strcmp(name,"gain_test.dat"))
{ // {
*pbuf = (uint32_t)(RECEIVER_BIT_IDE_GAIN_TEST_ADDR); // *pbuf = (uint32_t)(RECEIVER_BIT_IDE_GAIN_TEST_ADDR);
*psize = RECEIVER_BIT_IDE_GAIN_TEST_LEN; // *psize = RECEIVER_BIT_IDE_GAIN_TEST_LEN;
return 0; // return 0;
} // }
return -1; return -1;
} }

File diff suppressed because it is too large Load Diff