Recv_symb部分拉齐,Recv的transform问题遗留待修复
This commit is contained in:
parent
7d39a9bf84
commit
a9cc2350f1
@ -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<NumCB;i++)
|
||||
{
|
||||
@ -98,7 +94,10 @@ void ChannelEqu_Proc(
|
||||
DMA_TAG_G2L,
|
||||
1);
|
||||
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
for(int ii=0;ii<32;ii++)
|
||||
{
|
||||
Lut_agcFactor[ii] = 0;
|
||||
}
|
||||
|
||||
AgcShiftForFftInt32(
|
||||
(int)CfgAgcShift,
|
||||
@ -142,12 +141,16 @@ void ChannelEqu_Proc(
|
||||
1);
|
||||
*/
|
||||
|
||||
ByteCopy((int)CfgByteCopy, MPU_ADDR(Fft_est_dm3_ptr),MPU_ADDR(channelEst_dm0_ptr + 4096),16384);
|
||||
SVRReg[0] = MPU_ADDR(CfgByteCopy);
|
||||
ByteCopyAsm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
//构造第二根天线
|
||||
ByteCopy((int)CfgByteCopy, MPU_ADDR(channelEst_dm0_ptr),MPU_ADDR(Fft_est_dm3_ptr + 4096),16384);
|
||||
SVRReg[0] = MPU_ADDR(CfgByteCopy);
|
||||
ByteCopyAsm(SVRReg);
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
if(i==1){
|
||||
InputData_ddr_ptr = InputData_ddr_ptr + 7*(68+4096) + 1024 + 72;
|
||||
}
|
||||
@ -157,19 +160,20 @@ void ChannelEqu_Proc(
|
||||
int *Fft_outputdata_dm3_ptr = Fft_est_dm3_ptr + 0x2000;
|
||||
int *InData_dm0_ptr = channelEst_dm0_ptr + 0x2000;
|
||||
|
||||
for(int j=0;j<numSym;j++){
|
||||
|
||||
if(j==0){
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer(
|
||||
(uint64_t)(InputData_ddr_ptr + 68) ,
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(InputData_ddr_ptr + (68+4096)*j + 68) ,
|
||||
(uint64_t)DM_TO_CSU_ADDR(Fft_outputdata_dm3_ptr),
|
||||
4096*4,
|
||||
DMA_TAG_G2L,
|
||||
1);
|
||||
WAIT_MPU_STOP;
|
||||
}
|
||||
|
||||
|
||||
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
|
||||
for(int j=0;j<numSym;j++)
|
||||
{
|
||||
AgcShiftForFftInt32(
|
||||
(int)CfgAgcShift,
|
||||
MPU_ADDR(Fft_outputdata_dm3_ptr),
|
||||
@ -212,7 +216,7 @@ void ChannelEqu_Proc(
|
||||
|
||||
/* -------------- 拉齐信道估计FFT ------------*/
|
||||
int16_t dataFftScale = Scalep[0] & (0xFFFF);
|
||||
int16_t shiftScale = pilotFFtScale - dataFftScale - dataPilotDiff;
|
||||
int16_t shiftScale = -(pilotFFtScale - dataFftScale - dataPilotDiff);
|
||||
|
||||
int cc = i;
|
||||
int ccc = j;
|
||||
@ -221,16 +225,12 @@ void ChannelEqu_Proc(
|
||||
if(shiftScale!=0){
|
||||
Lut_agcMultiSymFactor[0] = shiftScale;
|
||||
|
||||
//tmp0暂存移位后FFT结果
|
||||
AgcShiftMultiSym((int)CfgAgcMultiSym, MPU_ADDR(Fft_est_dm3_ptr), 8192,1, MPU_ADDR(tmp0),MPU_ADDR(Lut_agcMultiSymFactor));
|
||||
AgcShiftMultiSym((int)CfgAgcMultiSym, MPU_ADDR(channelEst_dm0_ptr), 8192,1, MPU_ADDR(Fft_est_dm3_ptr),MPU_ADDR(Lut_agcMultiSymFactor));
|
||||
SVRReg[0] = MPU_ADDR(CfgAgcMultiSym);
|
||||
AgcShiftMultiSymAsm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
ByteCopy((int)CfgByteCopy, MPU_ADDR(tmp0),MPU_ADDR(Fft_est_dm3_ptr),16384*2);
|
||||
SVRReg[0] = MPU_ADDR(CfgByteCopy);
|
||||
ByteCopyAsm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -279,13 +279,20 @@ void ChannelEqu_Proc(
|
||||
SVRReg[0]= MPU_ADDR(CfgEQ1Part2);
|
||||
EQ1Part2Asm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 16, *Equ_Output_2);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 17, *(Equ_Output_2+1));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 18, *(Equ_Output_2+2));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 19, *(Equ_Output_2+3));
|
||||
|
||||
//ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
// ape_csu_dma_1D_L2G_ch0ch1_transfer(
|
||||
// (uint64_t)DM_TO_CSU_ADDR((Equ_Output_2)),
|
||||
// (uint64_t)res_ptr,
|
||||
// 4096*4 ,
|
||||
// DMA_TAG_L2G,
|
||||
// 1);
|
||||
|
||||
|
||||
|
||||
//提前准备下一块数据
|
||||
if(j<numSym-1){
|
||||
@ -362,6 +369,7 @@ void ChannelEqu_Proc(
|
||||
DMA_TAG_L2G,
|
||||
1);
|
||||
|
||||
|
||||
res_ptr = res_ptr + 16384;
|
||||
|
||||
}
|
||||
|
@ -27,17 +27,19 @@ void ChannelEst_Proc(
|
||||
uint32_t *ConfigAddr_channelEst = receiver_symb_config_dm0_ptr + g_receiver_symb_table_param.ChannelEst_CFG4_Offset;
|
||||
uint32_t *cfg_transform8 = receiver_symb_config_dm0_ptr + g_receiver_symb_table_param.Transform8_CFG14_Offset;
|
||||
|
||||
uint32_t *Pilot_orig_LUT = receiver_symb_config_dm2_ptr;
|
||||
int32_t *Pilot_orig_LUT = receiver_symb_config_dm2_ptr;
|
||||
uint32_t *InputPilotAddr = (uint32_t *)time_data_dm0_ptr;
|
||||
uint32_t *channelEstOutAddr = (uint32_t *)(temp_dm1_ptr);
|
||||
uint32_t *channelEstOutAddr = (uint32_t *)((((uint32_t)temp_dm1_ptr + 4096)>>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<numSub;subIndex++){
|
||||
|
||||
time_data_ddr_ptr = COMPENSATED_DATA_DDR_PTR + sliceIndex[subIndex]*4;
|
||||
@ -60,7 +62,7 @@ void ChannelEst_Proc(
|
||||
double db_real[4] = {-0.3827, 0.8660, -0.7071, 0.5};
|
||||
double db_imag[4] = {0.9239, 0.5, -0.7071, 0.8660};
|
||||
|
||||
uint32_t *PilotTrans = temp_dm3_ptr;
|
||||
int32_t *PilotTrans = temp_dm3_ptr;
|
||||
Transform((int)cfg_transform8,
|
||||
MPU_ADDR(Pilot_orig_LUT),
|
||||
MPU_ADDR(PilotTrans),
|
||||
@ -87,7 +89,7 @@ void ChannelEst_Proc(
|
||||
SVRReg[0] = MPU_ADDR(ConfigAddr_channelEst);
|
||||
channelEstAsm(SVRReg);
|
||||
|
||||
//WAIT_MPU_STOP;
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
}
|
||||
//保证最后一次微码计算结束再搬出
|
||||
|
@ -44,7 +44,7 @@ void FreOff_Proc(
|
||||
uint32_t *InputPilotAddr = temp_dm2_ptr;
|
||||
//uint32_t *InputPilotAddr = InputCPAddr + 1024;
|
||||
|
||||
uint32_t *freEstOutAddr = (uint32_t *)(temp_dm1_ptr + 0x0020);
|
||||
int32_t *freEstOutAddr = (uint32_t *)(temp_dm1_ptr + 0x0020);
|
||||
|
||||
|
||||
ByteCopy((int)CfgByteCopy,
|
||||
@ -85,17 +85,18 @@ void FreOff_Proc(
|
||||
time0 = time1;
|
||||
|
||||
// Low-pass Filter
|
||||
/*if(storedfreoffestvalue > 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);
|
||||
|
@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user