sync_first修改合入

This commit is contained in:
HUOHUO 2025-06-10 07:35:50 -07:00
parent f6b074e58e
commit 6b43c76e3f
15 changed files with 127570 additions and 104906 deletions

View File

@ -15,8 +15,8 @@
//=======================================================================
//微码配置空间长度定义单位为word(4Byte)
#define RECEIVER_SYNC_FIRST_ConfigByteCopy_CFG1_LENGTH (0x0030)
#define RECEIVER_SYNC_FIRST_ConfigSlidingCorrelation_CFG2_LENGTH (0x00a0)
#define RECEIVER_SYNC_FIRST_ConfigSlidingCorrelationSecond_CFG3_LENGTH (0x0080)
#define RECEIVER_SYNC_FIRST_ConfigSlidingCorrelation_CFG2_LENGTH (0x0070)
#define RECEIVER_SYNC_FIRST_ConfigSlidingCorrelationSecond_CFG3_LENGTH (0x0070)
#define RECEIVER_SYNC_FIRST_ConfigSyncVer_CFG4_LENGTH (0x00a0)
//SPU查找表各字段长度定义,单位为word(4Byte)

View File

@ -178,7 +178,7 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
uint32_t maxPosition = 0;
uint32_t maxsum;
volatile uint16_t dbg_time0, dbg_time1;
volatile uint32_t time1 = Time_offset(0);
//Proc的DM空间申请
Receiver_Sync_First_Memory_Alloc();
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 1);
@ -209,12 +209,6 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
(61440)<<2,
DMA_TAG_G2G,
1);
volatile uint32_t time1 = Time_offset(0);
while(time1 < 500000)
{
time1 = Time_offset(0);
}
ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(src_addr1),
(uint64_t)JESD_NRFDD_RX_SLOT_SRC1_DATA_ADDR,//第一次固定搬移到dm0
(2048)<<2,
@ -295,15 +289,17 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 12, maxPosition);
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 13, maxsum);
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 14, receiver_sync_first_temp_dm3_ptr[2]);
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 15, receiver_sync_first_temp_dm3_ptr[3]);
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(src_addr0 + (sample_per_csu<<2)),
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(src_addr0 + ((sample_per_csu-1024)<<2)),
(uint64_t)DM_TO_CSU_ADDR(receiver_sync_first_temp_dm0_ptr),//
(61440 - sample_per_csu)<<2,
(61440 - sample_per_csu+1024)<<2,
DMA_TAG_G2L,
0);
while(time1 < 500000)
{
time1 = Time_offset(0);
}
ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(src_addr1),
(uint64_t)DM_TO_CSU_ADDR(receiver_sync_first_temp_dm0_ptr + (61440 - sample_per_csu)),//
(uint64_t)DM_TO_CSU_ADDR(receiver_sync_first_temp_dm0_ptr + (61440 - sample_per_csu+1024)),//
(2048)<<2,
DMA_TAG_G2L,
0);
@ -316,7 +312,7 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
ByteCopy((int)cfg_addr,
MPU_ADDR(receiver_sync_first_temp_dm0_ptr + 1024),//数据之间相差1024
MPU_ADDR(receiver_sync_first_temp_dm1_ptr),
((sample_per_csu)<<2));
((sample_per_csu+1024)<<2));
WAIT_MPU_STOP;
@ -353,9 +349,11 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 7);
LOG_ERROR_S("2 maxPosition:%d maxsum:%d\n",0xffff & receiver_sync_first_temp_dm3_ptr[0], receiver_sync_first_temp_dm3_ptr[1]);
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 14, maxPosition);
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 15, maxsum);
if(maxsum < receiver_sync_first_temp_dm3_ptr[1])
{
maxPosition = 0xffff & receiver_sync_first_temp_dm3_ptr[0];
maxPosition = 0xffff & receiver_sync_first_temp_dm3_ptr[0]+30208;
maxsum = receiver_sync_first_temp_dm3_ptr[1];
}
LOG_ERROR_S("3 maxPosition:%d maxsum:%d\n",maxPosition, maxsum);

View File

@ -130,22 +130,6 @@
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
0x00000000,
0x00020002,
0xf000f000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000004,
0x00000000,
0x00000000,
@ -174,38 +158,6 @@
0x00000000,
0x00000000,
0x00000000,
0x02434241,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x02424140,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000200,
0x00000207,
0x00000207,
@ -226,6 +178,38 @@
0x00000000,
0x00000000,
0x00000000,
0x00000004,
0x00000000,
0x00000000,
0x00000000,
0xffffffff,
0x00000000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000004,
0x00000000,
0x00000000,
0x00000000,
0xffffffff,
0x00000000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
@ -270,23 +254,7 @@
0x0000000e,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000004,
0x00000000,
0x00000000,
0x00000000,
0xffffffff,
0x00000000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
0x00000295,
0x00000400,
0x00000400,
0x00007a00,
0x00000000,
@ -302,38 +270,6 @@
0x00000000,
0x00000000,
0x00000000,
0x02434241,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x02424140,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000200,
0x00000207,
0x00000207,

View File

@ -59,7 +59,7 @@
0x00000000,
0x00000000,
0x00020002,
0xf000f000,
0xffffffff,
0x00000000,
0x00000000,
0x003fffff,
@ -76,25 +76,7 @@
0x00000000,
0x00000000,
0x00020002,
0xf000f000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
//Output2 useless
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
0x00000000,
0x00020002,
0xf000f000,
0xffffffff,
0x00000000,
0x00000000,
0x003fffff,
@ -137,39 +119,3 @@
0x00000000,
0x00000000,
0x00000000,
//index1
0x02434241,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
//index2
0x02424140,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,

View File

@ -15,44 +15,7 @@
0x00000207,
0x00000207,
0x00000207,
//InputA2
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
0x00000000,
0x00020002,
0xf000f000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
//InputB2
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
0x00000000,
0x00020002,
0xf000f000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
//Maxdata read
//InputA
0x00000000,
0x00000000,
0x00000000,
@ -69,8 +32,59 @@
0x0000000e,
0x00000000,
0x00000000,
//InputB
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000004,
0x00000000,
0x00000000,
0x00000000,
0xffffffff,
0x00000000,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
//InputA2
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
0x00000000,
0x00020002,
0xffffffff,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
//InputB2
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00001000,
0x00000004,
0x00000000,
0x00000000,
0x00020002,
0xffffffff,
0x00000000,
0x00000000,
0x003fffff,
0x0000000e,
0x00000000,
0x00000000,
//Maxdata write
//Maxdata
0x00000000,
0x00000000,
0x00000000,
@ -89,7 +103,7 @@
0x00000000,
//KI0
0x00000295,
0x00000400,
0x00000400,
0x00007600,
0x00000000,
@ -105,39 +119,3 @@
0x00000000,
0x00000000,
0x00000000,
//index1
0x02434241,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
//index2
0x02424140,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,11 +14,11 @@
BIU1:Load(T0)(A++) -> M[2](Mode0);//InputB
BIU1:Load(T0)(A++) -> M[3](Mode0);//InputA2
BIU1:Load(T0)(A++) -> M[4](Mode0);//InputB2
BIU1:Load(T0)(A++) -> M[5](Mode0);//useless
//BIU1:Load(T0)(A++) -> M[5](Mode0);//useless
BIU1:Load(T0)(A++) -> M[6](Mode0);//Maxdata
BIU1:Load(T0)(A++) -> M[63](Mode0);//KI0
BIU1:Load(T0)(A++) -> SHU0.T0(Mode0);//index1
BIU1:Load(T0)(A++) -> SHU0.T4(Mode0);//index2
//BIU1:Load(T0)(A++) -> SHU0.T0(Mode0);//index1
//BIU1:Load(T0)(A++) -> SHU0.T4(Mode0);//index2
NOP;
NOP;
NOP;
@ -75,24 +75,6 @@ Sum_1024:
IMA3:V(1) -> IMA3.T1;
IMA3:V(0) -> IMA3.T0;
IMA1:V(0) -> IMA1.T0;
/*IMA0:ReadMR(L)-> SHU0.T1(Mode0);
IMA0:ReadMR(O1)-> SHU0.T2(Mode0);
IMA0:ReadMR(O1)-> IMA2.T2(Mode0);
R0:M[3] -> BIU0.T0(Mode0);
R3:M[4] -> BIU3.T0(Mode0);
IMA1:0+0*0(ShiftMode0)(C)(B)(SSS)(T) -> IMA1.MR(Mode0);
IMA3:V(1) -> IMA3.T1;
IMA3:V(0) -> IMA3.T0;
IMA1:V(0) -> IMA1.T0;
SHU0:Index(T1,T0)(Mode0);
SHU0:Index(T2,T0)->IMA2.T1(Mode0);
IMA2:T2 >> 2 (W) (U) -> SHU0.T2;
NOP;
IMA2:T1 >> 2 (W) (U) -> SHU0.T1;
NOP;
NOP;
SHU0:Index(T1,T4)(Mode0);
SHU0:Index(T2,T4)->IMA1.T3(Mode0);*/
MFetch:LPTO %Slide_Win @(KI2 - 0);
BIU0:Load(T0)(A++) -> IMA0.T0(Mode0)||BIU3:Load(T0)(A++) -> IMA0.T1(Mode0);
BIU0:Load(T0)(A++) -> IMA0.T2(Mode0)||BIU3:Load(T0)(A++) -> IMA0.T3(Mode0);
@ -145,21 +127,11 @@ Slide_Win:
NOP;
BIU2:Store(T1,T0)(Mode0)(A++);
BIU2:Store(T2,T0)(Mode0)(A++);
BIU2:Store(T3,T0)(Mode0)(A++);
//BIU2:Store(T3,T0)(Mode0)(A++);
NOP;
NOP;
NOP;
NOP;
IMA0:ReadMR(L)-> BIU2.T1(Mode0);
IMA0:ReadMR(O1)-> BIU2.T2(Mode0);
NOP;
NOP;
NOP;
NOP;
NOP;
BIU2:Store(T1,T0)(Mode0)(A++);
BIU2:Store(T2,T0)(Mode0)(A++);
NOP;
NOP;
NOP;
NOP;

View File

@ -10,13 +10,13 @@
NOP;
NOP;
BIU1:Load(T0)(A++) -> M[0](Mode0);
BIU1:Load(T0)(A++) -> M[1](Mode0);//InputA2
BIU1:Load(T0)(A++) -> M[2](Mode0);//InputB2
BIU1:Load(T0)(A++) -> M[3](Mode0);//Maxdata read
BIU1:Load(T0)(A++) -> M[4](Mode0);//Maxdata write
BIU1:Load(T0)(A++) -> M[1](Mode0);//InputA
BIU1:Load(T0)(A++) -> M[2](Mode0);//InputB
BIU1:Load(T0)(A++) -> M[3](Mode0);//InputA2
BIU1:Load(T0)(A++) -> M[4](Mode0);//InputB2
//BIU1:Load(T0)(A++) -> M[5](Mode0);//useless
BIU1:Load(T0)(A++) -> M[6](Mode0);//Maxdata
BIU1:Load(T0)(A++) -> M[63](Mode0);//KI0
BIU1:Load(T0)(A++) -> SHU0.T0(Mode0);//index1
BIU1:Load(T0)(A++) -> SHU0.T4(Mode0);//index2
NOP;
NOP;
NOP;
@ -25,17 +25,20 @@
R0:M[0] -> IMA0.T0(Mode0);
R0:M[1] -> BIU0.T0(Mode0) || R1:M[0] -> IMA1.T0(Mode0);
R3:M[2] -> BIU3.T0(Mode0) || R2:M[0] -> IMA2.T0(Mode0);
R2:M[3] -> BIU2.T0(Mode0) || R3:M[0] -> IMA3.T0(Mode0);
R2:M[4] -> BIU2.T1(Mode0);
R3:M[0] -> IMA3.T0(Mode0);
R5:PreConfig(M[63])(Mode0);
R5:WriteConf(Mfetch)->KI[0-3](Mode0)||IMA0:SetShiftMode(T0) -> SHIFTMODE0(Mode0);
R5:WriteConf(Mfetch)->KI[4-7](Mode0)||IMA1:SetShiftMode(T0) -> SHIFTMODE0(Mode0);
IMA2:SetShiftMode(T0) -> SHIFTMODE0(Mode0)||R2:M[6]->BIU2.T0(Mode0);
IMA0:0+0*0(ShiftMode0)(C)(B)(SSS)(T) -> IMA0.MR(Mode0);
BIU2:Load(T0)(A++) -> IMA1.T0(Mode0);
BIU2:Load(T0)(A++) -> IMA1.T3(Mode0);
BIU2:Load(T0)(A++) -> IMA0.T1(Mode0);
BIU2:Load(T0)(A++) -> IMA0.T2(Mode0);
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
MFetch:LPTO %Sum_1024 @(KI0 - 0);
BIU0:Load(T0)(A++) -> IMA0.T1(Mode0)||BIU3:Load(T0)(A++) -> IMA0.T2(Mode0);
NOP;
NOP;
NOP;
@ -46,11 +49,31 @@
NOP;
NOP;
NOP;
IMA0:SetMR(T1)(O1) (Mode0);
IMA0:SetMR(T2)(L) (Mode0);
IMA0: MR+T1*T2(ShiftMode0)(C)(S)(SSS)(T) -> IMA0.MR(Mode0);
NOP;
NOP;
NOP;
//IMA0:SetMR(0)(H)(Mode0);
Sum_1024:
//IMA0: MR + 0*0(ShiftMode0)(C)(S)(SSS)(T) -> IMA0.T3(Mode0);
R0:M[3] -> BIU0.T0(Mode0);
R3:M[4] -> BIU3.T0(Mode0);
IMA0:ReadMR(L)->IMA2.T0;//real
IMA0:ReadMR(O1)->IMA2.T2;//overflow real
NOP;
NOP;
NOP;
NOP;
IMA2:T0>>10(W)(U)->T0;
NOP;
NOP;
IMA2:T2>>16(W)(U)->T2;
IMA2:Ttmp<<22(W)(T)->IMA2.T2;
IMA2:T0+Ttmp(W)(U)->IMA1.T3;
IMA3:V(1) -> IMA3.T1;
IMA3:V(0) -> IMA3.T0;
IMA1:V(0) -> IMA1.T0;
MFetch:LPTO %Slide_Win @(KI2 - 0);
BIU0:Load(T0)(A++) -> IMA0.T0(Mode0)||BIU3:Load(T0)(A++) -> IMA0.T1(Mode0);
BIU0:Load(T0)(A++) -> IMA0.T2(Mode0)||BIU3:Load(T0)(A++) -> IMA0.T3(Mode0);
@ -94,13 +117,19 @@ Slide_Win:
NOP;
NOP;
NOP;
IMA1:T0 -> BIU2.T2;
IMA1:T3 -> BIU2.T3;
IMA1:T0 -> BIU2.T1;
IMA1:T3 -> BIU2.T2;
NOP;
NOP;
NOP;
NOP;
NOP;
BIU2:Store(T1,T0)(Mode0)(A++);
BIU2:Store(T2,T0)(Mode0)(A++);
//BIU2:Store(T3,T0)(Mode0)(A++);
NOP;
NOP;
NOP;
BIU2:Store(T2,T1)(Mode0)(A++);
BIU2:Store(T3,T1)(Mode0)(A++);
NOP;
NOP;
NOP;
@ -109,4 +138,3 @@ Slide_Win:
NOP;
MFetch:REPEAT @(10);
MFetch:MPU.STOP;

View File

@ -9,5 +9,5 @@ void SlidingCorrelation(int ConfigAddr, int InAddr1, int InAddr2, int MaxAddr) {
Para[16*3+1] = InAddr1;
Para[16*4+0] = InAddr2;
Para[16*4+1] = InAddr2;
Para[16*6+0] = MaxAddr;
Para[16*5+0] = MaxAddr;
}

View File

@ -4,10 +4,11 @@ void SlidingCorrelationSecond(int ConfigAddr, int InAddr1, int InAddr2, int MaxA
volatile unsigned int *Para = (volatile unsigned int *)ConfigAddr;
Para[16*1+0] = InAddr1;
Para[16*1+1] = InAddr1;
Para[16*2+0] = InAddr2;
Para[16*2+1] = InAddr2;
Para[16*3+0] = MaxAddr;
Para[16*4+0] = MaxAddr;
Para[16*3+0] = InAddr1;
Para[16*3+1] = InAddr1;
Para[16*4+0] = InAddr2;
Para[16*4+1] = InAddr2;
Para[16*5+0] = MaxAddr;
}

View File

@ -39,8 +39,8 @@ __DM3 int ConfigMatrix2[] = {
__DM1 int slice1[1055]; // 用于存储Input1切片数据
__DM2 int slice2[1055]; // 用于存储Input2切片数据
__DM5 int MaxData[4];//bestposition maxsum lastsum
__DM5 int MaxData2[4];//bestposition maxsum
__DM5 int MaxData[2];//bestposition maxsum lastsum
__DM5 int MaxData2[2];//bestposition maxsum
__DM0 int result[2]; // 存储SyncVer微码模块的计算结果
__DM4 int OutputData2[1055];
@ -78,10 +78,10 @@ int main(void) {
SlidingCorrelationAsm(SVRReg);
a = __ucps2_getStatB();
__ucps2_delay();
MaxData2[0] = MaxData[0];
MaxData2[1] = MaxData[1];
MaxData2[2] = MaxData[2];
MaxData2[3] = MaxData[3];
maxPosition = MaxData[0]&0x0000ffff;
maxsum = MaxData[1];
printf("初步同步位置:%d\n", maxPosition);
printf("maxsum%d\n", maxsum);
//second part
SlidingCorrelationSecond((int)ConfigMatrix2, MPU_ADDR(Input1_part2), MPU_ADDR(Input2_part2), MPU_ADDR(MaxData2));
SVRReg[0] = MPU_ADDR(ConfigMatrix2);
@ -89,7 +89,8 @@ int main(void) {
a = __ucps2_getStatB();
__ucps2_delay();
uint32_t time1 = tick();
if(0==MaxData2[0])
/*if(0==MaxData2[0])
{
if(MaxData[1]==MaxData2[1])
{
@ -104,13 +105,14 @@ int main(void) {
{
maxPosition = MaxData2[0]&0x0000ffff+DATA_SIZE/2-1;
maxsum = MaxData2[1];
};
};*/
// 设置同步标志
is_synced = 1;
maxPosition = MaxData2[0]&0x0000ffff;
maxsum = MaxData2[1];
printf("初步同步位置:%d\n", maxPosition);
printf("maxsum%d\n", maxsum);
printf("time%d\n", time1-time0);
}
/*// 同步后,执行精确同步位置计算