1.修改sync to symb数据接口 2.修改symb 外存地址为SM,新增symb各个部分耗时
This commit is contained in:
parent
0ea3c06767
commit
9a1c13edda
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@ -27,6 +27,9 @@
|
||||
"typedef.h": "c",
|
||||
"receiver_bit_func.h": "c",
|
||||
"drv_ape.h": "c",
|
||||
"transmitter_func.h": "c"
|
||||
"transmitter_func.h": "c",
|
||||
"freoffestimpl.h": "c",
|
||||
"freoffcompimpl.h": "c",
|
||||
"freoffcomp.h": "c"
|
||||
}
|
||||
}
|
@ -475,7 +475,7 @@ void test_speed_recv_msg_pcie()
|
||||
|
||||
void pcie_test_task_func(void)
|
||||
{
|
||||
// return ;
|
||||
return ;
|
||||
g_time_start[1] = TIME_NS();
|
||||
RUN_CNT(TRACE_PCIE_ADDR, 0);
|
||||
//uint32_t clockTick = 0;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef FREOFFCOMP_H_
|
||||
#define FREOFFCOMP_H_
|
||||
#ifndef FREOFFCOMPIMPL_H_
|
||||
#define FREOFFCOMPIMPL_H_
|
||||
#include "ucps2.h"
|
||||
#include "ucpm2.h"
|
||||
#include "ape_common.h"
|
||||
@ -7,6 +7,6 @@
|
||||
|
||||
MPU_ENTRY void freOffCompAsm(v16u32 src);
|
||||
|
||||
void freOffCompImpl(v16u32 * SVRReg, int* ConfigAddr_comp, int* ConfigAddr_cordic, int *freEstOutAddr,int* data_ptr_ddr,int* res_ptr_ddr, int *ava_ptr_dm2, int *ava_ptr_dm3);
|
||||
void freOffCompImpl(int* ConfigAddr_comp, int* ConfigAddr_cordic, int *freEstOutAddr,int* data_ptr_ddr,int* res_ptr_ddr, int *ava_ptr_dm2, int *ava_ptr_dm3);
|
||||
|
||||
#endif /* FREQOFFSETEST_H_ */
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
MPU_ENTRY void freOffEstAsm(v16u32 src);
|
||||
|
||||
void freOffEstImpl(v16u32 * SVRReg, int* ConfigBaseAddr_est,int *InputAddr0,int *InputAddr1, int *freEstOutAddr);
|
||||
void freOffEstImpl(int* ConfigBaseAddr_est,int *InputAddr0,int *InputAddr1, int *freEstOutAddr);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
#include "osp_ape.h"
|
||||
#include "task_define.h"
|
||||
#include "trace.h"
|
||||
#include "freOffEstImpl.h"
|
||||
#include "freOffCompImpl.h"
|
||||
//include mpu header files
|
||||
|
||||
|
||||
@ -38,7 +40,7 @@ extern int32_t storedfreoffestvalue ;
|
||||
void Receiver_Symb_Init();
|
||||
void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len);
|
||||
void Receiver_Symb_Proc(
|
||||
uint32_t* param_ptr,
|
||||
receiver_sync2symb_t* param_ptr,
|
||||
int32_t* temp_dm0_ptr,
|
||||
int32_t* temp_dm1_ptr,
|
||||
int32_t* temp_dm2_ptr,
|
||||
|
@ -9,7 +9,7 @@
|
||||
*****************************************************************/
|
||||
#ifndef RECEIVER_SYMB_MACRO_H
|
||||
#define RECEIVER_SYMB_MACRO_H
|
||||
|
||||
#include "mem_def.h"
|
||||
//GENERATE with Generate_RECEIVER_SYMB_symb_macro_h.m
|
||||
//DO NOT MODIFY
|
||||
//=======================================================================
|
||||
@ -45,10 +45,6 @@
|
||||
//=======================================================================
|
||||
|
||||
|
||||
#define COMPENSATED_DATA_DDR_PTR (RECEIVER_SYMB_OUT)
|
||||
#define CHANNELEST_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000)
|
||||
#define CHANNELEQU_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000 + 0x8000) //equ output
|
||||
#define TRANSFORMER_DATA_DDR_PTR (RECEIVER_SYMB_OUT)
|
||||
|
||||
|
||||
//SPU查找表各字段长度定义,单位为word(4Byte)
|
||||
|
@ -1,55 +1,76 @@
|
||||
|
||||
#include "ucps2.h"
|
||||
#include "ucpm2.h"
|
||||
#include <freOffComp.h>
|
||||
#include <freOffCompImpl.h>
|
||||
#include <cordicSC.h>
|
||||
#include "freOffComp.h"
|
||||
#include "freOffCompImpl.h"
|
||||
#include "cordicSC.h"
|
||||
#include "ape_common.h"
|
||||
#include "common.h"
|
||||
#include "trace.h"
|
||||
//v16u32 KI = {2,4,6};
|
||||
|
||||
void freOffCompImpl(v16u32 * SVRReg, int* ConfigAddr_comp, int* ConfigAddr_cordic, int *freEstOutAddr,int* data_ptr_ddr,int* res_ptr_ddr, int *ava_ptr_dm2, int *ava_ptr_dm3){
|
||||
void freOffCompImpl(int* ConfigAddr_comp, int* ConfigAddr_cordic, int *freEstOutAddr,int* data_ptr_ddr,int* res_ptr_ddr, int *ava_ptr_dm2, int *ava_ptr_dm3){
|
||||
|
||||
|
||||
volatile int a = 1;
|
||||
int count = 7680;
|
||||
freEstOutAddr[0] = freEstOutAddr[0]>>10;
|
||||
int increment = freEstOutAddr[0];
|
||||
uint32_t time0, time1;
|
||||
|
||||
for(int i=0;i<8;i++){
|
||||
for(int i=0;i<1;i++)
|
||||
{
|
||||
|
||||
int res_ptr_offset = i*count;
|
||||
|
||||
int *input_data_ptr = ava_ptr_dm3;
|
||||
int *fre_comp_exp_ptr = ava_ptr_dm2;
|
||||
int *output_data_ptr = ava_ptr_dm3;
|
||||
|
||||
time0 = Time_offset(0);
|
||||
int time_data_length = count;
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)data_ptr_ddr,
|
||||
(uint64_t)DM_TO_CSU_ADDR(input_data_ptr),
|
||||
time_data_length*4,
|
||||
DMA_TAG_G2L,
|
||||
0);
|
||||
|
||||
1);
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 9, time1-time0);
|
||||
time0 =time1;
|
||||
|
||||
cordicSC(ConfigAddr_cordic,MPU_ADDR(freEstOutAddr),MPU_ADDR(fre_comp_exp_ptr),increment,count);
|
||||
SVRReg[0][0] = MPU_ADDR(ConfigAddr_cordic);
|
||||
cordicSCAsm(*SVRReg);
|
||||
a = __ucps2_getStatB();
|
||||
__ucps2_delay();
|
||||
WAIT_MPU_STOP;
|
||||
SVRReg[0] = MPU_ADDR(ConfigAddr_cordic);
|
||||
cordicSCAsm(SVRReg);
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 10, time1-time0);
|
||||
time0 =time1;
|
||||
|
||||
freOffComp(ConfigAddr_comp,MPU_ADDR(input_data_ptr),MPU_ADDR(fre_comp_exp_ptr),MPU_ADDR(output_data_ptr));
|
||||
SVRReg[0][0] = MPU_ADDR(ConfigAddr_comp);
|
||||
freOffCompAsm(*SVRReg);
|
||||
a = __ucps2_getStatB();
|
||||
__ucps2_delay();
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
WAIT_MPU_STOP;
|
||||
SVRReg[0] = MPU_ADDR(ConfigAddr_comp);
|
||||
freOffCompAsm(SVRReg);
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 11, time1-time0);
|
||||
time0 =time1;
|
||||
|
||||
ape_csu_dma_1D_L2G_ch0ch1_transfer((uint64_t)DM_TO_CSU_ADDR((uint32_t)output_data_ptr),
|
||||
(uint64_t)(res_ptr_ddr + res_ptr_offset),
|
||||
time_data_length*4 ,
|
||||
DMA_TAG_L2G,
|
||||
1);
|
||||
}
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 12, time1-time0);
|
||||
time0 =time1;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
return ;
|
||||
|
@ -1,24 +1,24 @@
|
||||
|
||||
#include "ucps2.h"
|
||||
#include "ucpm2.h"
|
||||
#include<freOffEst.h>
|
||||
#include<freOffEstImpl.h>
|
||||
#include "freOffEst.h"
|
||||
#include "freOffEstImpl.h"
|
||||
#include "ape_common.h"
|
||||
#include "common.h"
|
||||
|
||||
|
||||
v16u32 KI = {2,4,6};
|
||||
|
||||
|
||||
void freOffEstImpl(v16u32 * SVRReg,int* ConfigBaseAddr_est, int *InputAddr0,int *InputAddr1,int *freEstOutAddr){
|
||||
void freOffEstImpl(int* ConfigBaseAddr_est, int *InputAddr0,int *InputAddr1,int *freEstOutAddr){
|
||||
|
||||
|
||||
|
||||
volatile int a = 1;
|
||||
|
||||
freOffEst(ConfigBaseAddr_est, MPU_ADDR(InputAddr0), MPU_ADDR(InputAddr1), MPU_ADDR(freEstOutAddr));
|
||||
SVRReg[0][0] = MPU_ADDR(ConfigBaseAddr_est);
|
||||
freOffEstAsm(*SVRReg);
|
||||
a = __ucps2_getStatB();
|
||||
__ucps2_delay();
|
||||
WAIT_MPU_STOP;
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
SVRReg[0] = MPU_ADDR(ConfigBaseAddr_est);
|
||||
freOffEstAsm(SVRReg);
|
||||
|
||||
|
||||
return ;
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
|
||||
#include "receiver_symb_func.h"
|
||||
#include "ape_common.h"
|
||||
|
||||
|
||||
void FreOff_Proc(
|
||||
@ -16,6 +17,7 @@ void FreOff_Proc(
|
||||
uint32_t time_data_length;
|
||||
uint32_t time_data_dm3_ptr = ((((uint32_t)&temp_dm3_ptr[0] + 4095)>>12)<<12);
|
||||
uint32_t res_ptr = RECEIVER_SYMB_OUT;
|
||||
uint32_t time0, time1;
|
||||
|
||||
// Read Global Buff
|
||||
time_data_ddr_ptr = (uint32_t)*param_ptr;
|
||||
@ -36,14 +38,12 @@ void FreOff_Proc(
|
||||
uint32_t *InputCPAddr = (uint32_t *)time_data_dm3_ptr;
|
||||
uint32_t *InputPilotAddr = InputCPAddr + 1024;
|
||||
|
||||
v16u32 * SVRReg = (v16u32 *)temp_dm1_ptr;
|
||||
uint32_t *freEstOutAddr = (uint32_t *)(temp_dm1_ptr + 0x0020);
|
||||
SVRReg[0] = (v16u32){0, 0, 0, 0,
|
||||
0x40, 0, 0, 0,
|
||||
0xff00ff, 0, 0, 0x0000,
|
||||
0xffff, 0x6, 0, 0};
|
||||
freOffEstImpl(SVRReg,ConfigAddr_est, InputCPAddr, InputPilotAddr, freEstOutAddr);
|
||||
|
||||
time0 = Time_offset(0);
|
||||
freOffEstImpl(ConfigAddr_est, InputCPAddr, InputPilotAddr, freEstOutAddr);
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 9, time1-time0);
|
||||
time0 = time1;
|
||||
// Low-pass Filter
|
||||
if(storedfreoffestvalue > 600000){
|
||||
storedfreoffestvalue = freEstOutAddr[0];
|
||||
@ -57,7 +57,6 @@ void FreOff_Proc(
|
||||
uint32_t *available_ptr_dm2 = temp_dm2_ptr;
|
||||
uint32_t *available_ptr_dm3 = temp_dm3_ptr;
|
||||
freOffCompImpl(
|
||||
SVRReg,
|
||||
ConfigAddr_comp,
|
||||
ConfigAddr_cordic,
|
||||
freEstOutAddr,
|
||||
@ -66,31 +65,12 @@ void FreOff_Proc(
|
||||
available_ptr_dm2,
|
||||
available_ptr_dm3
|
||||
);
|
||||
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 10, time1-time0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// //计算结果搬移到SM
|
||||
//
|
||||
|
@ -16,7 +16,7 @@
|
||||
* @Date: 2024年10月30日
|
||||
*/
|
||||
void Receiver_Symb_Proc(
|
||||
uint32_t *param_ptr,
|
||||
receiver_sync2symb_t *param_ptr,
|
||||
int32_t *temp_dm0_ptr,
|
||||
int32_t *temp_dm1_ptr,
|
||||
int32_t *temp_dm2_ptr,
|
||||
@ -32,17 +32,39 @@ void Receiver_Symb_Proc(
|
||||
uint32_t mpu_temp_dm3_ptr;
|
||||
uint32_t temp_u32;
|
||||
uint32_t time_data_dm0_ptr = ((((uint32_t)&temp_dm0_ptr[0] + 4095)>>12)<<12);
|
||||
uint32_t res_ptr = RECEIVER_OUT2;
|
||||
uint32_t time0, time1;
|
||||
|
||||
//data读入
|
||||
//获取源数据地址
|
||||
receiver_sync2symb_t* para_dm_ptr = (receiver_sync2symb_t*)param_ptr;
|
||||
receiver_sync2symb_t* para_dm_ptr = param_ptr;
|
||||
|
||||
uint32_t cur_sfn = get_rx_nr_sfn();
|
||||
uint32_t cur_slot = get_rx_nr_slot();
|
||||
uint32_t cur_time = TIME_NS();
|
||||
// LOG_ERROR_S("%d %d %d %d %d %d %d 0x%08x 0x%08x %d %d\n", cur_sfn, cur_slot, cur_time, para_dm_ptr->sfn, para_dm_ptr->slot, para_dm_ptr->num_data_section,
|
||||
// para_dm_ptr->proc_id, para_dm_ptr->data_section0_ptr, para_dm_ptr->data_section1_ptr, para_dm_ptr->data_section0_length, para_dm_ptr->data_section1_length);
|
||||
LOG_ERROR_S("%d %d %d %d %d %d %d 0x%08x 0x%08x %d %d\n", cur_sfn, cur_slot, cur_time, para_dm_ptr->sfn, para_dm_ptr->slot, para_dm_ptr->num_data_section,
|
||||
para_dm_ptr->proc_id, para_dm_ptr->data_section0_ptr, para_dm_ptr->data_section1_ptr, para_dm_ptr->data_section0_length, para_dm_ptr->data_section1_length);
|
||||
|
||||
// if(1 == para_dm_ptr->num_data_section)
|
||||
// {
|
||||
// ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(para_dm_ptr->data_section0_ptr),
|
||||
// (uint64_t)DM_TO_CSU_ADDR(temp_dm0_ptr),
|
||||
// (para_dm_ptr->data_section0_length)<<2,
|
||||
// DMA_TAG_G2L,
|
||||
// 1);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(para_dm_ptr->data_section0_ptr),
|
||||
// (uint64_t)DM_TO_CSU_ADDR(temp_dm0_ptr),
|
||||
// (para_dm_ptr->data_section0_length)<<2,
|
||||
// DMA_TAG_G2L,
|
||||
// 0);
|
||||
// ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(para_dm_ptr->data_section1_ptr),
|
||||
// (uint64_t)DM_TO_CSU_ADDR(temp_dm0_ptr + (para_dm_ptr->data_section0_length)),
|
||||
// (para_dm_ptr->data_section1_length)<<2,
|
||||
// DMA_TAG_G2L,
|
||||
// 1);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@ -52,22 +74,39 @@ void Receiver_Symb_Proc(
|
||||
// temp_u32 = 1000;//计算byte数
|
||||
// WAIT_MPU_STOP;
|
||||
// ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
|
||||
// ape_csu_dma_1D_L2G_ch0ch1_transfer((uint64_t)DM_TO_CSU_ADDR(time_data_dm0_ptr),
|
||||
// (uint64_t)res_ptr,
|
||||
// temp_u32,
|
||||
// DMA_TAG_L2G,
|
||||
// 1);
|
||||
FreOff_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
ChannelEst_Proc(param_ptr,temp_dm0_ptr,temp_dm1_ptr);
|
||||
ChannelEqu_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
Transform_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 2);
|
||||
time0 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 4, time0);
|
||||
|
||||
FreOff_Proc((uint32_t*)para_dm_ptr->data_section0_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 3);
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 5, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
// ChannelEst_Proc(param_ptr,temp_dm0_ptr,temp_dm1_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 4);
|
||||
// time1 = Time_offset(0);
|
||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 6, time1 -time0);
|
||||
// time0 = time1;
|
||||
|
||||
// ChannelEqu_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 5);
|
||||
// time1 = Time_offset(0);
|
||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 7, time1 -time0);
|
||||
// time0 = time1;
|
||||
|
||||
// Transform_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 6);
|
||||
// time1 = Time_offset(0);
|
||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 8, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
#ifdef IDE_TEST
|
||||
printf("DataTrans");
|
||||
#endif
|
||||
|
||||
|
||||
return ;
|
||||
//7.核间消息to APE2
|
||||
//需要定义结构体
|
||||
receiver_symb2bit_t data_send2bit_task;
|
||||
|
@ -43,7 +43,7 @@ void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
||||
dmalloc_trim(0, APE_DM3);
|
||||
|
||||
//1. DM0空间申请
|
||||
receiver_symb_malloc_dm0_ptr = dmemalign_unit(0x4000, 131072, APE_DM0); //申请了128KiB 首地址16k对齐
|
||||
receiver_symb_malloc_dm0_ptr = dmemalign_unit(0x4000, 204800, APE_DM0); //申请了128KiB 首地址16k对齐
|
||||
if (NULLPTR == receiver_symb_malloc_dm0_ptr)
|
||||
{
|
||||
LOG_ERROR_S("rec sync DM0 fail\n");
|
||||
@ -156,7 +156,7 @@ void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
||||
|
||||
//6. 计算流程
|
||||
Receiver_Symb_Proc(
|
||||
(uint32_t*)receiver_symb_param_ptr,
|
||||
(receiver_sync2symb_t*)receiver_symb_param_ptr,
|
||||
receiver_symb_temp_dm0_ptr,
|
||||
receiver_symb_temp_dm1_ptr,
|
||||
receiver_symb_temp_dm2_ptr,
|
||||
@ -177,5 +177,12 @@ void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
||||
RUN_CNT(TRACE_RECEIVER_SYMB_ADDR, 1);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 2, Time_offset(0));
|
||||
|
||||
|
||||
// __ucps2_synch(0);
|
||||
// __ucps2_synch(0);
|
||||
// __ucps2_synch(0);
|
||||
// __ucps2_synch(0);
|
||||
// __ucps2_synch(0);
|
||||
// __ucps2_dbgbreak();
|
||||
return;
|
||||
}
|
||||
|
@ -234,8 +234,6 @@ void Receiver_Sync_Proc(
|
||||
//用于跟踪同步
|
||||
void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
{
|
||||
//DBG
|
||||
return ;
|
||||
g_time_start[2] = TIME_NS();
|
||||
uint16_t dbg_time0, dbg_time1;
|
||||
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 0);
|
||||
@ -245,7 +243,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
uint32_t time0 = g_time_start;
|
||||
volatile uint32_t time1 = time0;
|
||||
uint32_t task_idx = 0;
|
||||
uint32_t frame_head_offset;
|
||||
volatile uint32_t frame_head_offset;
|
||||
uint32_t src_addr0;
|
||||
uint32_t src_addr1;
|
||||
|
||||
@ -259,7 +257,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
Receiver_Sync_Memory_Alloc();
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 2);
|
||||
|
||||
dbg_time0 = Time_offset(0);
|
||||
dbg_time0 = Time_offset(2);
|
||||
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||
|
||||
if( 1 == (slot & 0x01) )
|
||||
@ -280,16 +278,17 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
if(16 > frame_head_offset)
|
||||
{
|
||||
//上个buffer尾
|
||||
memcpy_ext(receiver_sync_temp_dm0_ptr, src_addr1 + ((61440 - (16 - frame_head_offset) ) <<2), (16 - frame_head_offset)<<2 );
|
||||
//当前buffer头
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(src_addr0),
|
||||
(uint64_t)DM_TO_CSU_ADDR(receiver_sync_temp_dm0_ptr + (16 - frame_head_offset) ),
|
||||
(1055 - (16 - frame_head_offset) )<<2,
|
||||
DMA_TAG_G2L,
|
||||
0);
|
||||
//上个buffer尾
|
||||
memcpy_ext(receiver_sync_temp_dm0_ptr, src_addr1 + ((61440 - (16 - frame_head_offset) ) <<2), (16 - frame_head_offset)<<2 );
|
||||
|
||||
|
||||
LOG_ERROR_S("csu1:%d %d\n", (16 - frame_head_offset)<<2 , (1055 - (16 - frame_head_offset) )<<2 );
|
||||
// LOG_ERROR_S("csu1:%d %d\n", (16 - frame_head_offset)<<2 , (1055 - (16 - frame_head_offset) )<<2 );
|
||||
}
|
||||
else if(61440 - (15 + 1024) < frame_head_offset)
|
||||
{
|
||||
@ -300,9 +299,9 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
DMA_TAG_G2L,
|
||||
0);
|
||||
//下个buffer头 等待保证数据被jesd_csu存入
|
||||
while(time1 - time0 < 10)
|
||||
while(time1 - time0 < 10000)
|
||||
{
|
||||
time1 = TIME_NS();
|
||||
time1 = Time_offset(2);
|
||||
}
|
||||
ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(src_addr1),
|
||||
(uint64_t)DM_TO_CSU_ADDR(receiver_sync_temp_dm0_ptr + (61440 - (frame_head_offset -16) ) ),
|
||||
@ -310,7 +309,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
DMA_TAG_G2L,
|
||||
0);
|
||||
|
||||
LOG_ERROR_S("csu2:%d %d\n", ((61440 - (frame_head_offset -16)) )<<2 , (1055 - (61440 - (frame_head_offset -16)) )<<2 );
|
||||
// LOG_ERROR_S("csu2:%d %d\n", ((61440 - (frame_head_offset -16)) )<<2 , (1055 - (61440 - (frame_head_offset -16)) )<<2 );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -321,7 +320,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
DMA_TAG_G2L,
|
||||
0);
|
||||
|
||||
LOG_ERROR_S("csu3:0x%08x 0x%08x\n", (src_addr0 + ((frame_head_offset -16) <<2) ) , receiver_sync_temp_dm0_ptr );
|
||||
// LOG_ERROR_S("csu3:0x%08x 0x%08x\n", (src_addr0 + ((frame_head_offset -16) <<2) ) , receiver_sync_temp_dm0_ptr );
|
||||
}
|
||||
|
||||
//复制数据DM0 -> DM1
|
||||
@ -331,11 +330,11 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
MPU_ADDR(receiver_sync_temp_dm1_ptr),
|
||||
(1055) << 2);
|
||||
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 3);
|
||||
WAIT_MPU_STOP;
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 3);
|
||||
|
||||
dbg_time1 = Time_offset(0);
|
||||
dbg_time1 = Time_offset(2);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 5, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
// LOG_ERROR_S("%d %d %d\n", sfn, slot , dbg_cur_time);
|
||||
@ -370,7 +369,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 4);
|
||||
dbg_time1 = Time_offset(0);
|
||||
dbg_time1 = Time_offset(2);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 6, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||
@ -380,28 +379,29 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
// 得到验证后的同步位置
|
||||
WAIT_MPU_STOP;
|
||||
dbg_time1 = Time_offset(0);
|
||||
dbg_time1 = Time_offset(2);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 7, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 5);
|
||||
uint32_t maxWindowSum = receiver_sync_temp_dm3_ptr[1];
|
||||
//更新最佳位置
|
||||
uint32_t bestPosition =receiver_sync_temp_dm3_ptr[0]-16 + frame_head_offset;
|
||||
|
||||
LOG_ERROR_S("%d %d\n", receiver_sync_temp_dm3_ptr[0], receiver_sync_temp_dm3_ptr[1]);
|
||||
//更新sync2symb的buffer状态记录
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len, LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len) + 61440);
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_offset , 61440 * buffer_sel2);
|
||||
|
||||
|
||||
if(-1 == LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_proc_data_offset) ) //初始态,初始化数据处理偏移
|
||||
volatile cylic_buffer_proc_data_offset = LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_proc_data_offset);
|
||||
if(-1 == cylic_buffer_proc_data_offset ) //初始态,初始化数据处理偏移
|
||||
{
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_proc_data_offset , 61440 * buffer_sel);
|
||||
|
||||
__ucps2_synch(0);
|
||||
cylic_buffer_proc_data_offset = 61440 * buffer_sel;
|
||||
}
|
||||
__ucps2_synch(0);
|
||||
|
||||
|
||||
uint32_t cylic_buffer_data_offset = LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_offset);
|
||||
uint32_t cylic_buffer_proc_data_offset = LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_proc_data_offset);
|
||||
volatile cylic_buffer_data_offset = 61440 * buffer_sel2;
|
||||
uint32_t cylic_buffer_data_offset_temp = (cylic_buffer_data_offset >= cylic_buffer_proc_data_offset) ?
|
||||
cylic_buffer_data_offset :
|
||||
(cylic_buffer_data_offset + 61440 * RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER);
|
||||
@ -428,6 +428,15 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
cylic_buffer_data_len = cylic_buffer_data_offset_temp - offset_temp;
|
||||
cylic_buffer_proc_data_offset = offset_temp % (61440*4);
|
||||
|
||||
//为了适配SYMB接口,如果数据是两段,搬移成一块
|
||||
if(2 == data_send2symb_task[task_idx].num_data_section)
|
||||
{
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(data_send2symb_task[task_idx].data_section1_ptr),
|
||||
(uint64_t)(data_send2symb_task[task_idx].data_section0_ptr + data_send2symb_task[task_idx].data_section0_length),
|
||||
(data_send2symb_task[task_idx].data_section1_length)<<2,
|
||||
DMA_TAG_G2G,
|
||||
1);
|
||||
}
|
||||
//发核间消息给SYMB_TASK
|
||||
phy_et_msg_send((uint32_t)(&data_send2symb_task[task_idx]),
|
||||
sizeof(receiver_sync2symb_t),
|
||||
@ -445,7 +454,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len , cylic_buffer_data_len);
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_proc_data_offset, cylic_buffer_proc_data_offset);
|
||||
|
||||
dbg_time1 = Time_offset(0);
|
||||
dbg_time1 = Time_offset(2);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 8, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
|
||||
|
@ -23,6 +23,13 @@
|
||||
#define SM4_BASE (0x0A200000)//1.5M
|
||||
#define SM5_BASE (0x0A380000)//1.5M
|
||||
|
||||
//空间规划:
|
||||
/*
|
||||
SM0:()
|
||||
SM5:(1201/1024KB)用于存放RECV_SYNC后给RECV_SYMB的数据
|
||||
SM2:(/1536KB)用于存放Transmitter的输出结果
|
||||
*/
|
||||
|
||||
//len define
|
||||
//SM0
|
||||
|
||||
@ -37,9 +44,7 @@
|
||||
#define TRACE_GRP_LEN (0x00000200) //128Word
|
||||
|
||||
/************************************SM0--1M*************************************************/
|
||||
#define RECEIVER_SYNC_CFG_BASE (SM0_BASE)
|
||||
#define RECEIVER_SYMB_CFG_BASE (RECEIVER_SYNC_CFG_BASE + 0x100)
|
||||
#define RECEIVER_BIT_CFG_BASE (RECEIVER_SYMB_CFG_BASE + 0x100)
|
||||
#define RECEIVER_BIT_CFG_BASE (SM0_BASE)
|
||||
/************************************SM1---1M ***********************************************/
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER0_ADDR (SM1_BASE)
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER1_ADDR (RECEIVER_SYNC2SYMB_BUFFER0_ADDR + TIME_DATA_SLOT_LEN)
|
||||
@ -47,20 +52,27 @@
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER3_ADDR (RECEIVER_SYNC2SYMB_BUFFER2_ADDR + TIME_DATA_SLOT_LEN)
|
||||
#define RECEIVER_SYNC2SYNC_FIRST_INF_ADDR (RECEIVER_SYNC2SYMB_BUFFER3_ADDR + TIME_DATA_SLOT_LEN) //LEN: sizeof(receiver_sync_status_t)
|
||||
/************************************SM2--1.5M***********************************************/
|
||||
#define TRANSMITTER_OUT (SM2_BASE)
|
||||
#define TRANSMITTER_BASE (TRANSMITTER_OUT) //4k对齐
|
||||
#define TRANSMITTER_OUT (SM2_BASE) //4k对齐
|
||||
/************************************SM3--1.5M***********************************************/
|
||||
#define SM3_PHY_MSG_BUFFER_ADDR (SM3_BASE)
|
||||
#define SM3_PHY_TASKS_MGR_ADDR (SM3_PHY_MSG_BUFFER_ADDR + SM3_PHY_MSG_BUFFER_LEN)
|
||||
#define SM3_PHY_MSG_BUFFER_ADDR (SM3_BASE)
|
||||
#define SM3_PHY_TASKS_MGR_ADDR (SM3_PHY_MSG_BUFFER_ADDR + SM3_PHY_MSG_BUFFER_LEN)
|
||||
#define RECEIVER_OUT3 (SM3_BASE + 0x4000)
|
||||
/************************************SM4--1.5M***********************************************/
|
||||
//TODO:地址规划
|
||||
#define RECEIVER_OUT1 (SM4_BASE)
|
||||
#define RECEIVER_OUT2 (SM4_BASE + 0x4000)
|
||||
#define RECEIVER_OUT3 (SM4_BASE + 0x8000)
|
||||
#define RECEIVER_SYMB_OUT (RECEIVER_OUT1)
|
||||
#define RECEIVER_SYMB_OUT (SM4_BASE)
|
||||
#define COMPENSATED_DATA_DDR_PTR (RECEIVER_SYMB_OUT)
|
||||
#define CHANNELEST_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000)
|
||||
#define CHANNELEQU_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000 + 0x8000) //equ output
|
||||
#define TRANSFORMER_DATA_DDR_PTR (RECEIVER_SYMB_OUT)
|
||||
|
||||
/************************************SM5--1.5M***********************************************/
|
||||
#define RECEIVER_BASE (SM5_BASE) //4k对齐
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER0_ADDR (RECEIVER_BASE)
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER1_ADDR (RECEIVER_SYNC2SYMB_BUFFER0_ADDR + TIME_DATA_SLOT_LEN)
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER2_ADDR (RECEIVER_SYNC2SYMB_BUFFER1_ADDR + TIME_DATA_SLOT_LEN)
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER3_ADDR (RECEIVER_SYNC2SYMB_BUFFER2_ADDR + TIME_DATA_SLOT_LEN)
|
||||
#define RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR (RECEIVER_SYNC2SYMB_BUFFER3_ADDR + TIME_DATA_SLOT_LEN)
|
||||
#define RECEIVER_SYNC2SYNC_FIRST_INF_ADDR (RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR + TIME_DATA_SLOT_LEN) //LEN: sizeof(receiver_sync_status_t)
|
||||
/**************************************DDR***************************************************/
|
||||
#define DDR_PHY_BASE (0x6BC00000) //共579M可用0x6BC00000-0x8FFFFFFF
|
||||
#define DDR_ERROR_RECORD_CNT_ADDR (0x79FF8000)
|
||||
|
Loading…
x
Reference in New Issue
Block a user