Merge branch 'PCIE' of http://47.100.68.68:3000/jinhong/YB_TX_RX_SPU into PCIE
This commit is contained in:
commit
168f1bb98e
@ -37,11 +37,12 @@ void ChannelEquImpl(
|
||||
){
|
||||
|
||||
volatile int a = 1;
|
||||
int numSym = 7 ; ///7;
|
||||
int numSym = 7;
|
||||
int Scale = 13;
|
||||
int NRE=4096;
|
||||
int ShiftFactor[] = {7,1,0,0,0,0,0,0,0,0,0,0};
|
||||
int NumCB = 2;
|
||||
CfgAgcShift[0] = 1;
|
||||
|
||||
for(int i=0;i<NumCB;i++){
|
||||
|
||||
@ -83,6 +84,28 @@ void ChannelEquImpl(
|
||||
|
||||
|
||||
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 24, *channelEst_dm0_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 25, *(channelEst_dm0_ptr+1));
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 26, *(channelEst_dm0_ptr+2));
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 27, *(channelEst_dm0_ptr+3));
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
AgcShiftForFftInt32(
|
||||
(int)CfgAgcShift,
|
||||
MPU_ADDR(Fft_est_dm3_ptr),
|
||||
MPU_ADDR(Fft_est_dm3_ptr),
|
||||
4096,
|
||||
1,
|
||||
MPU_ADDR(AgcFactor),
|
||||
MPU_ADDR(AgcFactor),
|
||||
MPU_ADDR(channelEst_dm0_ptr),
|
||||
MPU_ADDR(channelEst_dm0_ptr)
|
||||
);
|
||||
SVRReg[0] = MPU_ADDR(CfgAgcShift);
|
||||
AgcShiftForFftInt32Asm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
|
||||
|
||||
Fft4096Int32(
|
||||
(int)CfgFft4096,
|
||||
1,
|
||||
@ -101,6 +124,22 @@ void ChannelEquImpl(
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
|
||||
ape_csu_dma_1D_L2G_ch0ch1_transfer(
|
||||
(uint64_t)DM_TO_CSU_ADDR(Fft_est_dm3_ptr),
|
||||
(uint64_t)0x84c00000,
|
||||
4096*4 ,
|
||||
DMA_TAG_L2G,
|
||||
1);
|
||||
|
||||
//构造第二根天线
|
||||
ByteCopy((int)CfgByteCopy, MPU_ADDR(channelEst_dm0_ptr),MPU_ADDR(Fft_est_dm3_ptr + 4096),16384);
|
||||
SVRReg[0] = MPU_ADDR(CfgByteCopy);
|
||||
ByteCopyAsm(SVRReg);
|
||||
|
||||
if(i==1){
|
||||
InData_ddr_ptr = InData_ddr_ptr + 7*(68+4096) + 1024 + 72;
|
||||
}
|
||||
|
||||
ape_csu_dma_1D_L2G_ch0ch1_transfer(
|
||||
(uint64_t)DM_TO_CSU_ADDR(Fft_est_dm3_ptr),
|
||||
(uint64_t)0x84c00000,
|
||||
@ -121,6 +160,42 @@ void ChannelEquImpl(
|
||||
|
||||
int *Fft_outputdata_dm3_ptr = Fft_est_dm3_ptr + 0x2000;
|
||||
int *InData_dm0_ptr = channelEst_dm0_ptr + 0x2000;
|
||||
|
||||
int *Fft_outputdata_dm3_ptr = Fft_est_dm3_ptr + 0x2000;
|
||||
int *InData_dm0_ptr = channelEst_dm0_ptr + 0x2000;
|
||||
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer(
|
||||
(uint64_t)(InData_ddr_ptr + 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),
|
||||
MPU_ADDR(Fft_outputdata_dm3_ptr),
|
||||
4096,
|
||||
1,
|
||||
MPU_ADDR(AgcFactor),
|
||||
MPU_ADDR(AgcFactor),
|
||||
MPU_ADDR(InData_dm0_ptr),
|
||||
MPU_ADDR(InData_dm0_ptr)
|
||||
);
|
||||
SVRReg[0] = MPU_ADDR(CfgAgcShift);
|
||||
AgcShiftForFftInt32Asm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 12, *Fft_outputdata_dm3_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 13, *(Fft_outputdata_dm3_ptr+1));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 14, *InData_dm0_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 15, *(InData_dm0_ptr+1));
|
||||
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer(
|
||||
@ -175,6 +250,15 @@ void ChannelEquImpl(
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
|
||||
ape_csu_dma_1D_L2G_ch0ch1_transfer(
|
||||
(uint64_t)DM_TO_CSU_ADDR(Fft_outputdata_dm3_ptr),
|
||||
(uint64_t)0x84d00000,
|
||||
4096*4 ,
|
||||
DMA_TAG_L2G,
|
||||
1);
|
||||
|
||||
|
||||
|
||||
ape_csu_dma_1D_L2G_ch0ch1_transfer(
|
||||
(uint64_t)DM_TO_CSU_ADDR(Fft_outputdata_dm3_ptr),
|
||||
(uint64_t)0x84d00000,
|
||||
@ -248,6 +332,27 @@ void ChannelEquImpl(
|
||||
|
||||
|
||||
|
||||
/****************************** IFFT ****************************************8*/
|
||||
int *Temp1 = Fft_outputdata_dm3_ptr + 0x1000; // 缓存
|
||||
|
||||
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));
|
||||
|
||||
|
||||
//提前准备下一块数据
|
||||
if(j<numSym-1){
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(InData_ddr_ptr + (68+4096)*(j+1) + 68), //(68+4096)*(j+1) + 68)
|
||||
(uint64_t)DM_TO_CSU_ADDR(Fft_outputdata_dm3_ptr),
|
||||
4096*4,
|
||||
DMA_TAG_G2L,
|
||||
0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************** IFFT ****************************************8*/
|
||||
int *Temp1 = Fft_outputdata_dm3_ptr + 0x1000; // 缓存
|
||||
IFFT4096DataTurn(
|
||||
@ -264,6 +369,7 @@ void ChannelEquImpl(
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
|
||||
|
||||
int *Temp0 = available_ptr_dm2; // buff, Equ_Output_2
|
||||
IFFT4096(
|
||||
(int)CfgIFFT4096,
|
||||
@ -301,6 +407,12 @@ void ChannelEquImpl(
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 20, *(Equ_Output_2));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 21, *(Equ_Output_2+1));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 22, *(Equ_Output_2+2));
|
||||
SVRReg[0] = MPU_ADDR(ConfigAddCp);
|
||||
AddCPAsm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 20, *(Equ_Output_2));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 21, *(Equ_Output_2+1));
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 22, *(Equ_Output_2+2));
|
||||
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
ape_csu_dma_1D_L2G_ch0ch1_transfer(
|
||||
|
@ -38,7 +38,7 @@ void Receiver_Symb_Proc(
|
||||
//data读入
|
||||
//获取源数据地址
|
||||
receiver_sync2symb_t* para_dm_ptr = param_ptr;
|
||||
//TODO: 计算完成结果需要存到下面两个buffer地址中的一个
|
||||
//TODO: 计算完成结果需要存到下面两个buffer地址中的一个
|
||||
uint32_t cur_out_ddr_ptr = (0 == g_symb2bit_buffer_sel) ? ((uint32_t)RECEIVER_SYMB2BIT_BUFFER0_ADDR) : ((uint32_t)RECEIVER_SYMB2BIT_BUFFER1_ADDR);
|
||||
|
||||
//LOG_ERROR_S("%d %d %d %d 0x%08x 0x%08x %d %d\n",para_dm_ptr->sfn, para_dm_ptr->slot, para_dm_ptr->num_data_section,
|
||||
@ -108,32 +108,18 @@ void Receiver_Symb_Proc(
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 8, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
// #ifdef IDE_TEST
|
||||
// printf("DataTrans");
|
||||
// #endif
|
||||
//return ;
|
||||
|
||||
#ifdef IDE_TEST
|
||||
printf("DataTrans");
|
||||
#endif
|
||||
|
||||
return ;
|
||||
//7.核间消息to APE2
|
||||
//需要定义结构体
|
||||
|
||||
//更新buffer
|
||||
g_symb2bit_buffer_sel = (g_symb2bit_buffer_sel + 1) & 0x1;
|
||||
|
||||
data_send2bit_task.proc_id = para_dm_ptr->proc_id;
|
||||
data_send2bit_task.sfn = para_dm_ptr->sfn;
|
||||
data_send2bit_task.slot = para_dm_ptr->slot;
|
||||
data_send2bit_task.data_ptr = cur_out_ddr_ptr;
|
||||
data_send2bit_task.data_length = 57344;//TODO:待确认,单位WORD
|
||||
//LOG_ERROR_S("%d 0x%08x %d\n",data_send2bit_task.proc_id, data_send2bit_task.data_ptr, g_symb2bit_buffer_sel);
|
||||
#ifdef CORE_ODD
|
||||
uint8_t cur_core_id = APE3_CORE_ID;
|
||||
#else
|
||||
uint8_t cur_core_id = APE5_CORE_ID;
|
||||
#endif
|
||||
receiver_symb2bit_t data_send2bit_task;
|
||||
phy_et_msg_send((uint32_t)(&data_send2bit_task),
|
||||
sizeof(receiver_symb2bit_t),
|
||||
UCP4008_KERNEL_INTER,
|
||||
cur_core_id,
|
||||
APE5_CORE_ID,
|
||||
APE6_CORE_ID,
|
||||
PHY_TASK_RECEIVER_SYMB,
|
||||
PHY_TASK_RECEIVER_BIT);
|
||||
|
@ -45,10 +45,15 @@ freOffEstAsm:
|
||||
IMA0: ReadMR(L) -> IMA0.T0; // real
|
||||
IMA0: ReadMR(H) -> IMA1.T0; // imag
|
||||
NOP;NOP;NOP;NOP;
|
||||
|
||||
IMA0: T0 >> 12(W) -> IMA0.T0 || IMA1: T0 >> 12(W) -> IMA1.T0;
|
||||
NOP;NOP;
|
||||
|
||||
IMA0: RAdd(T0)(W)(SlipMode1) -> SHU0.T2;
|
||||
NOP;
|
||||
NOP;
|
||||
NOP;
|
||||
NOP;
|
||||
IMA1: RAdd(T0)(W)(SlipMode1) -> SHU1.T2;
|
||||
SHU1: VImm(0) -> SHU1.T0;
|
||||
IMA0: V(0) -> IMA0.T1;
|
||||
@ -56,7 +61,8 @@ freOffEstAsm:
|
||||
|
||||
SHU0: Index(T2,T6) -> IMA3.T1;
|
||||
SHU1: Index(T2,T6) -> IMA3.T0;
|
||||
NOP;NOP;
|
||||
NOP;NOP;NOP;NOP;
|
||||
|
||||
|
||||
IMA3: RAdd(T0)(W)(SlipMode1) -> IMA3.T0;
|
||||
IMA3: RAdd(T1)(W)(SlipMode1) -> IMA3.T1;
|
||||
@ -66,8 +72,8 @@ freOffEstAsm:
|
||||
IMA3: T1 -> IMA2.T1;
|
||||
MFetch: REPEAT @(5);
|
||||
|
||||
//CORDIC ATAN2
|
||||
|
||||
//CORDIC ATAN2
|
||||
|
||||
Mfetch: Lpto %ENDCORDIC @(KI1);
|
||||
IMA3: T0>>8(W) -> M[19];
|
||||
@ -78,10 +84,11 @@ freOffEstAsm:
|
||||
NOP;NOP;NOP;NOP;
|
||||
IMA3: T1 >> T4(W) -> IMA3.T2;
|
||||
IMA3: T0 >> T4(W) -> IMA3.T3;
|
||||
NOP;
|
||||
NOP;NOP;NOP;NOP;NOP;NOP;NOP;
|
||||
|
||||
MFetch: IF(KI3>=KI11) JUMP %IFFI;
|
||||
|
||||
//IMA1: 0 -> T0;
|
||||
IMA3: 0 - T2(W) -> IMA3.T2;
|
||||
IMA0: 0 - T0(W) -> IMA0.T0;
|
||||
IMA3: 0 - T3(W) -> IMA3.T3;
|
||||
@ -96,13 +103,11 @@ freOffEstAsm:
|
||||
|
||||
ENDCORDIC:
|
||||
MFetch: REPEAT @(10);
|
||||
|
||||
IMA0: T1 -> BIU2.T0(Mode0);
|
||||
NOP;NOP;NOP;NOP;
|
||||
BIU2: Store(T0,T1)(A++);
|
||||
|
||||
|
||||
|
||||
|
||||
MFetch: REPEAT @(15);
|
||||
|
||||
MFetch:MPU.STOP;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user