diff --git a/APELib/Receiver_symb/src/channelEqu_proc.s.c b/APELib/Receiver_symb/src/channelEqu_proc.s.c index 86d6f13..b7e149f 100644 --- a/APELib/Receiver_symb/src/channelEqu_proc.s.c +++ b/APELib/Receiver_symb/src/channelEqu_proc.s.c @@ -20,7 +20,7 @@ void ChannelEqu_Proc( // Temporary input for test uint32_t * InputNoise = ((((uint32_t)&temp_dm3_ptr[0] + 4095)>>12)<<12); - ByteSet(ConfigByteSet,0,MPU_ADDR(InputNoise),16384); + ByteSet(ConfigByteSet,0,MPU_ADDR(InputNoise),32768); SVRReg[0] = MPU_ADDR(ConfigByteSet); ByteSetAsm(SVRReg); WAIT_MPU_STOP; @@ -28,7 +28,7 @@ void ChannelEqu_Proc( // available address space for channelEqu uint32_t * available_ptr_dm0 = temp_dm0_ptr; - uint32_t * available_ptr_dm1 = temp_dm1_ptr; + uint32_t * available_ptr_dm1 = temp_dm1_ptr + 0x1000; uint32_t * available_ptr_dm2 = temp_dm2_ptr; uint32_t * available_ptr_dm3 = InputNoise + 0x1000; @@ -66,14 +66,10 @@ void ChannelEqu_Proc( int NRE = 4096; int ShiftFactor[] = {7,1,0,0,0,0,0,0,0,0,0,0}; int NumCB = 2; - const int16_t dataPilotDiff = 5; + const int16_t dataPilotDiff = 6; // int16_t baseScale = -2; - for(int ii=0;ii<32;ii++) - { - Lut_agcFactor[ii] = 0; - } for(int i=0;i>12)<<12); uint32_t *ConfigByteSet = receiver_symb_config_dm0_ptr + g_receiver_symb_table_param.ByteSet_CFG15_Offset; - ByteSet(ConfigByteSet,0,MPU_ADDR(channelEstOutAddr),32768); - SVRReg[0] = MPU_ADDR(ConfigByteSet); - ByteSetAsm(SVRReg); + int numSub = 2; int sliceIndex[2] = {1024,31268}; // position of pilot + ByteSet(ConfigByteSet,0,MPU_ADDR(channelEstOutAddr),32768); + SVRReg[0] = MPU_ADDR(ConfigByteSet); + ByteSetAsm(SVRReg); + WAIT_MPU_STOP; for(int subIndex=0;subIndex 600000){ + if(storedfreoffestvalue > 600000){ storedfreoffestvalue = freEstOutAddr[0]; } else{ storedfreoffestvalue = 0.7*storedfreoffestvalue + 0.3*freEstOutAddr[0]; } + freEstOutAddr[0] = storedfreoffestvalue; TRACE(TRACE_RECEIVER_SYMB_ADDR, 12, freEstOutAddr[0]); TRACE(TRACE_RECEIVER_SYMB_ADDR, 13, 0xa0870); - freEstOutAddr[0] = storedfreoffestvalue;*/ + freEstOutAddr[0] = storedfreoffestvalue; // Frequency Offset Compensate uint32_t *available_ptr_dm2 = temp_dm2_ptr; @@ -108,7 +109,7 @@ void FreOff_Proc( for(int i=0;i<4;i++) { - int res_ptr_offset = i*count*128; + int res_ptr_offset = i*count*128*4; int *input_data_ptr = available_ptr_dm3; int *fre_comp_exp_ptr = available_ptr_dm2; @@ -125,7 +126,7 @@ void FreOff_Proc( cordicSCAsm(SVRReg); ape_csu_task_lookup(DMA_TAG_G2L, 1); - ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)time_data_ddr_ptr, + ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)time_data_ddr_ptr + res_ptr_offset, (uint64_t)DM_TO_CSU_ADDR(input_data_ptr), time_data_length*4, DMA_TAG_G2L, @@ -146,7 +147,7 @@ void FreOff_Proc( ape_csu_task_lookup(DMA_TAG_G2L, 1); WAIT_MPU_STOP; SVRReg[0] = MPU_ADDR(ConfigAddr_comp); - freOffCompAsm(SVRReg); + freOffCompAsm1(SVRReg); WAIT_MPU_STOP; TRACE(TRACE_RECEIVER_SYMB_ADDR, 21, *output_data_ptr); diff --git a/APELib/Receiver_symb/src/receiver_Symb_Init.s.c b/APELib/Receiver_symb/src/receiver_Symb_Init.s.c index 6a6cb00..93f7d9d 100644 --- a/APELib/Receiver_symb/src/receiver_Symb_Init.s.c +++ b/APELib/Receiver_symb/src/receiver_Symb_Init.s.c @@ -115,33 +115,33 @@ void Receiver_Symb_Init() 1); #endif - uint32_t ptr1,ptr2,len1,len2; - ret = osp_get_cfgfile("channel_est_1_Quan.dat", - (uint32_t *)&(ptr1), - (int32_t *)&(len1)); + // uint32_t ptr1,ptr2,len1,len2; + // ret = osp_get_cfgfile("channel_est_1_Quan.dat", + // (uint32_t *)&(ptr1), + // (int32_t *)&(len1)); - if(-1 == ret) - { - LOG_ERROR_S("channel_est_1_Quan not found!\n"); - } - ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(ptr1), - (uint64_t)CHANNELEST_DATA_DDR_PTR,//第一次固定搬移到dm0 - len1, - DMA_TAG_G2G, - 1); - ret = osp_get_cfgfile("EquIn_Quan.dat", - (uint32_t *)&(ptr2), - (int32_t *)&(len2)); + // if(-1 == ret) + // { + // LOG_ERROR_S("channel_est_1_Quan not found!\n"); + // } + // ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(ptr1), + // (uint64_t)CHANNELEST_DATA_DDR_PTR,//第一次固定搬移到dm0 + // len1, + // DMA_TAG_G2G, + // 1); + // ret = osp_get_cfgfile("EquIn_Quan.dat", + // (uint32_t *)&(ptr2), + // (int32_t *)&(len2)); - if(-1 == ret) - { - LOG_ERROR_S("timedatasym.dat not found!\n"); - } - ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(ptr2), - (uint64_t)COMPENSATED_DATA_DDR_PTR,//第一次固定搬移到dm0 - len2, - DMA_TAG_G2G, - 1); + // if(-1 == ret) + // { + // LOG_ERROR_S("timedatasym.dat not found!\n"); + // } + // ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(ptr2), + // (uint64_t)COMPENSATED_DATA_DDR_PTR,//第一次固定搬移到dm0 + // len2, + // DMA_TAG_G2G, + // 1); } diff --git a/APELib/Receiver_symb/src/transform_Proc.s.c b/APELib/Receiver_symb/src/transform_Proc.s.c index f75c169..31cd813 100644 --- a/APELib/Receiver_symb/src/transform_Proc.s.c +++ b/APELib/Receiver_symb/src/transform_Proc.s.c @@ -78,8 +78,8 @@ void Transform_Proc( uint32_t loop_idx; for (loop_idx = 0; loop_idx < 4; loop_idx++) { - db_real_tmp[loop_idx] = *(db_real + loop_idx) * 1.42; - db_imag_tmp[loop_idx] = *(db_imag + loop_idx) * 1.42; + db_real_tmp[loop_idx] = *(db_real + loop_idx) * 1; + db_imag_tmp[loop_idx] = *(db_imag + loop_idx) * 1; } Transform((int)Cfg_DeTransform2,MPU_ADDR(InputAddr_Trans),MPU_ADDR(TransTemp), 2, &db_real_tmp[0], &db_imag_tmp[0], -1); SVRReg[0] = MPU_ADDR(Cfg_DeTransform2); diff --git a/MicroCode/Fre_comp/src/mpu0/freOffCompAsm1.m0.asm b/MicroCode/Fre_comp/src/mpu0/freOffCompAsm1.m0.asm index 807b737..8ab10e5 100644 --- a/MicroCode/Fre_comp/src/mpu0/freOffCompAsm1.m0.asm +++ b/MicroCode/Fre_comp/src/mpu0/freOffCompAsm1.m0.asm @@ -28,13 +28,16 @@ freOffCompAsm1: MFetch: REPEAT @(10); - BIU0: Wait 0 || BIU1: Wait 0 || IMA0: Wait 10 || IMA1: Wait 10 || BIU3: Wait 15; + BIU0: Wait 0 || BIU1: Wait 0 || IMA0: Wait 10 || IMA1: Wait 14 || BIU3: Wait 17; MFetch: Lpto %ENDFRECOMP @(KI0); - BIU0: Load(T0)(A++) -> IMA0.T3(Mode0) || BIU1: Load(T1)(A++) -> IMA0.T2(Mode0) || IMA0: 0 + T2*T3(ShiftMode0)(C)(S)(SSS)(T) -> BIU3.T1(Mode0) || BIU3: Store(T1,T3)(A++)(Mode0); + // BIU0: Load(T0)(A++) -> IMA0.T3(Mode0) || BIU1: Load(T1)(A++) -> IMA0.T2(Mode0) || IMA0: 0 + T2*T3(ShiftMode0)(C)(S)(SSS)(T) -> BIU3.T1(Mode0) || BIU3: Store(T1,T3)(A++)(Mode0); + + BIU0: Load(T0)(A++) -> IMA0.T3(Mode0) || BIU1: Load(T1)(A++) -> IMA0.T2(Mode0) || IMA0: 0 + T2*T3(ShiftMode0)(C)(S)(SSS)(T) -> IMA1.T1(Mode0) || + IMA1: T1 << 4(S) -> BIU3.T1(Mode0) || BIU3: Store(T1,T3)(A++)(Mode0); ENDFRECOMP: BIU0: Wait 0 || BIU1: Wait 0 || IMA0: Wait 0 || IMA1: Wait 0 || BIU3: Wait 0; - MFetch: REPEAT @(15); + MFetch: REPEAT @(20); MFetch:MPU.STOP; diff --git a/Test/src/Test_Func.s.c b/Test/src/Test_Func.s.c index 5e6943a..bc78042 100644 --- a/Test/src/Test_Func.s.c +++ b/Test/src/Test_Func.s.c @@ -417,10 +417,10 @@ int ape_csu_dma_2Dto2D_transfer(uint64_t addrSrc, uint16_t blockLenSrc, uint64_t { loop = dataLen / blockLenDst; ratio = blockLenSrc / blockLenDst; - mod_val = blockLenSrc / blockLenDst; + mod_val = blockLenSrc % blockLenDst; cp_type = 1; } - if(0 == mod_val) + if(0 != mod_val) { printf("csu2Dto2D para not support!\n"); return 1;