|
|
@ -475,7 +475,6 @@ TrxBoard::TrxBoard() : _offsetSlave0(0), _offsetSlave1(0x400000), _offsetSlave2( |
|
|
|
setFpgaOffset(); |
|
|
|
setAfeModuleOffset(); |
|
|
|
systemLutCompletion(); |
|
|
|
sonoHeartBeatsEnable(); |
|
|
|
} |
|
|
|
|
|
|
|
TrxBoard::ScenHwRegister::ScenHwRegister() |
|
|
@ -1559,6 +1558,7 @@ void TrxBoard::slaveFpgaProgram(const QString path) |
|
|
|
#ifndef DEVELOP_UI |
|
|
|
afeAdcsSync(MOUNTED_SLAVE_FPGA); |
|
|
|
gtReadReset(); |
|
|
|
sonoHeartBeatsEnable(); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
@ -1567,6 +1567,177 @@ void TrxBoard::setBeamFormerMode(eClkMode mode) const |
|
|
|
this->_clkDistributer->clockMode(CLOCK_DIVISION, mode); |
|
|
|
} |
|
|
|
|
|
|
|
void TrxBoard::afesHvDacsOn() const |
|
|
|
{ |
|
|
|
setAfesPwr(afePwrdnDisable); |
|
|
|
// setAfesFastPwr(afePwrdnDisable);
|
|
|
|
|
|
|
|
#ifdef MPS_BOARD |
|
|
|
this->_bCtrlMngt->mpsDacsOn(); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
void TrxBoard::afesHvDacsOff() const |
|
|
|
{ |
|
|
|
setAfesPwr(afePwrdnEnable); |
|
|
|
// setAfesFastPwr(afePwrdnEnable);
|
|
|
|
|
|
|
|
#ifdef MPS_BOARD |
|
|
|
this->_bCtrlMngt->mpsDacsOff(); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
#ifndef DEVELOP_UI |
|
|
|
void TrxBoard::scenPlayerStart(int count, bool afeHvPwrOn) |
|
|
|
{ |
|
|
|
if(_allow) |
|
|
|
{ |
|
|
|
_run = false; |
|
|
|
|
|
|
|
this->_beamFormerSlave0->regValid(true); |
|
|
|
this->_beamFormerSlave1->regValid(true); |
|
|
|
this->_beamFormerSlave2->regValid(true); |
|
|
|
|
|
|
|
this->_misc->setGtSendMode(bfMode); |
|
|
|
|
|
|
|
this->_misc->setSyncMode(bfSyncMode); |
|
|
|
|
|
|
|
this->_emul->setEmulatorDis(); |
|
|
|
|
|
|
|
this->_device.resetCounter(); |
|
|
|
|
|
|
|
this->_device.startDma(); |
|
|
|
|
|
|
|
if(afeHvPwrOn) |
|
|
|
{ |
|
|
|
this->_afeSlave0->setAfeGblPwr(afePwrdnDisable); |
|
|
|
this->_afeSlave1->setAfeGblPwr(afePwrdnDisable); |
|
|
|
this->_afeSlave2->setAfeGblPwr(afePwrdnDisable); |
|
|
|
//quint32 afeFastPdn = 0x43C36C;
|
|
|
|
//this->_device.device.writeWord(BAR_REG, afeFastPdn + 0, static_cast<quint32>(0));
|
|
|
|
//this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x400000,
|
|
|
|
//static_cast<quint32>(0));
|
|
|
|
//this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x800000,
|
|
|
|
//static_cast<quint32>(0));
|
|
|
|
#ifdef MPS_BOARD |
|
|
|
this->_bCtrlMngt->mpsDacsOn(); |
|
|
|
#endif |
|
|
|
|
|
|
|
this->delay(170); |
|
|
|
} |
|
|
|
|
|
|
|
this->_scenPlayer->control.setCommand(true); |
|
|
|
_sonoLiveTimer->start(5000); |
|
|
|
_sonoHeartBeats = true; |
|
|
|
this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); |
|
|
|
this->setAfesHeartBeat(_sonoHeartBeats); |
|
|
|
|
|
|
|
packetEngine.init(); |
|
|
|
|
|
|
|
_run = true; |
|
|
|
|
|
|
|
QtConcurrent::run(this, &TrxBoard::readLimitedData, count); |
|
|
|
//QtConcurrent::run(this, &TrxBoard::sendPacket);
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
throw SonoException("Total scenario luts and sram parameters are not written compeletely"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void TrxBoard::readLimitedData(int count) |
|
|
|
{ |
|
|
|
int generatedFrame = 0; |
|
|
|
preBatch = 0; |
|
|
|
_swCounter = _device.getCounter(); |
|
|
|
do |
|
|
|
{ |
|
|
|
auto cnt = _device.getCounter(); |
|
|
|
|
|
|
|
if(cnt == 0) |
|
|
|
{ |
|
|
|
_hwCounter = 0; |
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(3)); |
|
|
|
continue; |
|
|
|
} |
|
|
|
else if(cnt != _hwCounter) |
|
|
|
{ |
|
|
|
_hwCounter++; |
|
|
|
|
|
|
|
if(_hwCounter > HW_BUFFER_NUM) |
|
|
|
{ |
|
|
|
_hwCounter = 1; |
|
|
|
} |
|
|
|
|
|
|
|
_device.copy(_hwCounter - 1, _swCounter); |
|
|
|
|
|
|
|
auto framePacket = |
|
|
|
QByteArray::fromRawData(_device.getBufferPtr(_swCounter), BUFFER_SIZE); |
|
|
|
|
|
|
|
auto batch = ((static_cast<quint16>(framePacket[128])) & 0x00FF) | |
|
|
|
(((static_cast<quint16>(framePacket[129])) << 8) & 0xFF00); |
|
|
|
auto subBbatch = ((static_cast<quint16>(framePacket[130])) & 0x00FF); |
|
|
|
|
|
|
|
if((batch == preBatch && subBbatch - preSubBatch != 1) || |
|
|
|
(preSubBatch == -1 && (batch != 0 || subBbatch != 0)) || |
|
|
|
(batch - preBatch > 1) || |
|
|
|
(batch - preBatch == 1 && subBbatch != 0)) |
|
|
|
{ |
|
|
|
//throw;
|
|
|
|
} |
|
|
|
if(batch != preBatch) |
|
|
|
{ |
|
|
|
generatedFrame++; |
|
|
|
} |
|
|
|
qDebug() << "*******************batch " << batch << "|geteratedFrame " << |
|
|
|
generatedFrame; |
|
|
|
preBatch = batch; |
|
|
|
preSubBatch = subBbatch; |
|
|
|
packetEngine.newData(framePacket); |
|
|
|
|
|
|
|
_swCounter++; |
|
|
|
if(_swCounter >= SW_BUFFER_NUM) |
|
|
|
{ |
|
|
|
_swCounter = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
}while (generatedFrame < count); |
|
|
|
scenStopAfterReadLimited(); |
|
|
|
} |
|
|
|
|
|
|
|
void TrxBoard::scenStopAfterReadLimited() |
|
|
|
{ |
|
|
|
_run = false; |
|
|
|
|
|
|
|
this->_device.stopDma(); |
|
|
|
|
|
|
|
//uncrustify off
|
|
|
|
while(_device.isDmaBusy()); |
|
|
|
//uncrustify on
|
|
|
|
|
|
|
|
_sonoLiveTimer->stop(); |
|
|
|
_sonoHeartBeats = false; |
|
|
|
this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); |
|
|
|
this->setAfesHeartBeat(_sonoHeartBeats); |
|
|
|
|
|
|
|
this->_scenPlayer->control.setCommand(false); |
|
|
|
|
|
|
|
this->_afeSlave0->setAfeGblPwr(afePwrdnEnable); |
|
|
|
this->_afeSlave1->setAfeGblPwr(afePwrdnEnable); |
|
|
|
this->_afeSlave2->setAfeGblPwr(afePwrdnEnable); |
|
|
|
//quint32 afeFastPdn = 0x43C36C;
|
|
|
|
//this->_device.device.writeWord(BAR_REG, afeFastPdn + 0, static_cast<quint32>(1));
|
|
|
|
//this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x400000, static_cast<quint32>(1));
|
|
|
|
//this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x800000, static_cast<quint32>(1));
|
|
|
|
#ifdef MPS_BOARD |
|
|
|
this->_bCtrlMngt->mpsDacsOff(); |
|
|
|
#endif |
|
|
|
|
|
|
|
QThread::msleep(140); |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
/* set afeHvPwrOn true when unfreeze happen */ |
|
|
|
void TrxBoard::scenPlayerStart(bool afeHvPwrOn) |
|
|
|
{ |
|
|
@ -1597,7 +1768,9 @@ void TrxBoard::scenPlayerStart(bool afeHvPwrOn) |
|
|
|
this->_bCtrlMngt->mpsDacsOn(); |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef DEVELOP_UI |
|
|
|
this->delay(170); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
this->_scenPlayer->control.setCommand(true); |
|
|
@ -1648,7 +1821,9 @@ void TrxBoard::scenPlayerStop(bool afeHvPwrOff) |
|
|
|
this->_bCtrlMngt->mpsDacsOff(); |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef DEVELOP_UI |
|
|
|
this->delay(140); |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|