*bugfix: correct frequency estimation calculating process
This commit is contained in:
@@ -850,14 +850,6 @@ double Phy_GetFreqEst(PHY_INST *instPtr)
|
|||||||
fineReg = PhyRead(instPtr, FINE_FREQEST);
|
fineReg = PhyRead(instPtr, FINE_FREQEST);
|
||||||
estAbs = fineReg & FINE_FREQEST_VAL_MASK;
|
estAbs = fineReg & FINE_FREQEST_VAL_MASK;
|
||||||
if (frameType >= L1_200KBPS_5MS_FRAME)
|
if (frameType >= L1_200KBPS_5MS_FRAME)
|
||||||
{
|
|
||||||
// 1.5M Rc
|
|
||||||
coarse = (double)(80 - acqFreqIdx) * (31.25e3 / 4);
|
|
||||||
coarse += (double)syncFreqIdx * 1.5e6 / 64 / 128;
|
|
||||||
|
|
||||||
fine = 12e6/2048*((double)estAbs)/8192.0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// 12M Rc
|
// 12M Rc
|
||||||
coarse = (double)(8 - acqFreqIdx) * (250e3 / 4);
|
coarse = (double)(8 - acqFreqIdx) * (250e3 / 4);
|
||||||
@@ -865,6 +857,14 @@ double Phy_GetFreqEst(PHY_INST *instPtr)
|
|||||||
|
|
||||||
fine = 48e6/2048*((double)estAbs)/8192.0;
|
fine = 48e6/2048*((double)estAbs)/8192.0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 1.5M Rc
|
||||||
|
coarse = (double)(80 - acqFreqIdx) * (31.25e3 / 4);
|
||||||
|
coarse += (double)syncFreqIdx * 1.5e6 / 64 / 128;
|
||||||
|
|
||||||
|
fine = 12e6/2048*((double)estAbs)/8192.0;
|
||||||
|
}
|
||||||
|
|
||||||
fine = ((fineReg & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ?
|
fine = ((fineReg & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ?
|
||||||
-fine : fine;
|
-fine : fine;
|
||||||
@@ -899,17 +899,17 @@ double Phy_GetCoarseFreqEst(PHY_INST *instPtr)
|
|||||||
acqFreqIdx = (regValue & COASE_FREQEST_ACQ_MASK) >> COASE_FREQEST_ACQ_SHIFT;
|
acqFreqIdx = (regValue & COASE_FREQEST_ACQ_MASK) >> COASE_FREQEST_ACQ_SHIFT;
|
||||||
syncFreqIdx = (regValue & COASE_FREQEST_SYNC_MASK) >> COASE_FREQEST_SYNC_SHIFT;
|
syncFreqIdx = (regValue & COASE_FREQEST_SYNC_MASK) >> COASE_FREQEST_SYNC_SHIFT;
|
||||||
if (frameType >= L1_200KBPS_5MS_FRAME)
|
if (frameType >= L1_200KBPS_5MS_FRAME)
|
||||||
{
|
|
||||||
// 1.5M Rc
|
|
||||||
freqEst = (double)(80 - acqFreqIdx) * (31.25e3 / 4);
|
|
||||||
freqEst += (double)syncFreqIdx * 1.5e6 / 64 / 128;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// 12M Rc
|
// 12M Rc
|
||||||
freqEst = (double)(8 - acqFreqIdx) * (250e3 / 4);
|
freqEst = (double)(8 - acqFreqIdx) * (250e3 / 4);
|
||||||
freqEst += (double)syncFreqIdx * 12e6 / 64 / 128;
|
freqEst += (double)syncFreqIdx * 12e6 / 64 / 128;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 1.5M Rc
|
||||||
|
freqEst = (double)(80 - acqFreqIdx) * (31.25e3 / 4);
|
||||||
|
freqEst += (double)syncFreqIdx * 1.5e6 / 64 / 128;
|
||||||
|
}
|
||||||
|
|
||||||
return freqEst;
|
return freqEst;
|
||||||
}
|
}
|
||||||
@@ -938,13 +938,13 @@ double Phy_GetFineFreqEst(PHY_INST *instPtr)
|
|||||||
estAbs = regValue & FINE_FREQEST_VAL_MASK;
|
estAbs = regValue & FINE_FREQEST_VAL_MASK;
|
||||||
if (frameType >= L1_200KBPS_5MS_FRAME)
|
if (frameType >= L1_200KBPS_5MS_FRAME)
|
||||||
{
|
{
|
||||||
// 1.5M Rc
|
// 12M Rc
|
||||||
freqEst = 12e6/2048*((double)estAbs)/8192.0;
|
freqEst = 48e6/2048*((double)estAbs)/8192.0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 12M Rc
|
// 1.5M Rc
|
||||||
freqEst = 48e6/2048*((double)estAbs)/8192.0;
|
freqEst = 12e6/2048*((double)estAbs)/8192.0;
|
||||||
}
|
}
|
||||||
freqEst = ((regValue & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ?
|
freqEst = ((regValue & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ?
|
||||||
-freqEst : freqEst;
|
-freqEst : freqEst;
|
||||||
|
|||||||
Reference in New Issue
Block a user