Browse Source

AFEs HV DACs could be controlled seperatelly.

v4.8
Arash Aletayeb 1 year ago
parent
commit
b1ca8b2eb3
  1. 2
      developHw.pro.user
  2. 7
      include/model/hardware/core/lowLevelApi/TrxBoard.h
  3. 2
      include/model/hardware/core/lowLevelApi/TrxBoardUtils/PreProcessorDef.h
  4. 1
      mainwindow.cpp
  5. 2
      mainwindow.ui
  6. 179
      src/model/hardware/core/lowLevelApi/TrxBoard.cpp

2
developHw.pro.user

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.10.0, 2024-01-21T13:54:45. --> <!-- Written by QtCreator 4.10.0, 2024-02-07T13:55:31. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

7
include/model/hardware/core/lowLevelApi/TrxBoard.h

@ -161,7 +161,6 @@ private:
void setAfesHeartBeat(const bool heartBeat) const; void setAfesHeartBeat(const bool heartBeat) const;
void afesHeartBeatDisable(const bool mode) const; void afesHeartBeatDisable(const bool mode) const;
void sonoLiveTimeout(); void sonoLiveTimeout();
void sonoHeartBeatsEnable(void) const;
void sendPacket(void); void sendPacket(void);
void delay(quint16 ms) const; void delay(quint16 ms) const;
@ -211,6 +210,9 @@ signals:
public: public:
#ifndef DEVELOP_UI #ifndef DEVELOP_UI
HardwarePacketEngine packetEngine; HardwarePacketEngine packetEngine;
void scenPlayerStart(int count, bool afeHvPwrOn = false);
void readLimitedData(int count);
void scenStopAfterReadLimited();
#else #else
void afeAdcsSync(const quint8& slaveMounted); void afeAdcsSync(const quint8& slaveMounted);
void gtReadReset(void); void gtReadReset(void);
@ -232,6 +234,8 @@ public:
void setStbCoefficient(QVector<quint32>& stbLut); void setStbCoefficient(QVector<quint32>& stbLut);
void setDtgcLut(QVector<float>& dtgcLut); void setDtgcLut(QVector<float>& dtgcLut);
void afesHvDacsOn(void) const;
void afesHvDacsOff(void) const;
void scenPlayerStart(bool afeHvPwrOn = false); void scenPlayerStart(bool afeHvPwrOn = false);
void scenPlayerStop(bool afeHvPwrOff = false); void scenPlayerStop(bool afeHvPwrOff = false);
//void scenPlayerPause (bool pause) const; //void scenPlayerPause (bool pause) const;
@ -243,6 +247,7 @@ public:
void setAfesPwr(eAfePwrdnMode pwrMode) const; void setAfesPwr(eAfePwrdnMode pwrMode) const;
void setAfesFastPwr(eAfePwrdnMode pwrMode) const; void setAfesFastPwr(eAfePwrdnMode pwrMode) const;
void sonoHeartBeatsDisable(void) const; void sonoHeartBeatsDisable(void) const;
void sonoHeartBeatsEnable(void) const;
/////////////////////////////// Built-in Test API ///////////////////////////// /////////////////////////////// Built-in Test API /////////////////////////////
void setBiteDacData(const QByteArray& iData, const QByteArray& qData) const; void setBiteDacData(const QByteArray& iData, const QByteArray& qData) const;

2
include/model/hardware/core/lowLevelApi/TrxBoardUtils/PreProcessorDef.h

@ -2,6 +2,6 @@
#define PREPROCESSORDEF_H #define PREPROCESSORDEF_H
#define MPS_BOARD #define MPS_BOARD
#define DEVELOP_UI //#define DEVELOP_UI
#endif //PREPROCESSORDEF_H #endif //PREPROCESSORDEF_H

1
mainwindow.cpp

@ -1086,6 +1086,7 @@ void MainWindow::programThreadFinish()
#ifdef DEVELOP_UI #ifdef DEVELOP_UI
_trx.afeAdcsSync(MOUNTED_SLAVE_FPGA); _trx.afeAdcsSync(MOUNTED_SLAVE_FPGA);
_trx.gtReadReset(); _trx.gtReadReset();
_trx.sonoHeartBeatsEnable();
#endif #endif
QString str = "done"; QString str = "done";

2
mainwindow.ui

@ -7933,7 +7933,7 @@
<widget class="QLabel" name="label_29"> <widget class="QLabel" name="label_29">
<property name="font"> <property name="font">
<font> <font>
<pointsize>11</pointsize> <pointsize>9</pointsize>
<weight>75</weight> <weight>75</weight>
<italic>true</italic> <italic>true</italic>
<bold>true</bold> <bold>true</bold>

179
src/model/hardware/core/lowLevelApi/TrxBoard.cpp

@ -475,7 +475,6 @@ TrxBoard::TrxBoard() : _offsetSlave0(0), _offsetSlave1(0x400000), _offsetSlave2(
setFpgaOffset(); setFpgaOffset();
setAfeModuleOffset(); setAfeModuleOffset();
systemLutCompletion(); systemLutCompletion();
sonoHeartBeatsEnable();
} }
TrxBoard::ScenHwRegister::ScenHwRegister() TrxBoard::ScenHwRegister::ScenHwRegister()
@ -1559,6 +1558,7 @@ void TrxBoard::slaveFpgaProgram(const QString path)
#ifndef DEVELOP_UI #ifndef DEVELOP_UI
afeAdcsSync(MOUNTED_SLAVE_FPGA); afeAdcsSync(MOUNTED_SLAVE_FPGA);
gtReadReset(); gtReadReset();
sonoHeartBeatsEnable();
#endif #endif
} }
@ -1567,6 +1567,177 @@ void TrxBoard::setBeamFormerMode(eClkMode mode) const
this->_clkDistributer->clockMode(CLOCK_DIVISION, mode); 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 */ /* set afeHvPwrOn true when unfreeze happen */
void TrxBoard::scenPlayerStart(bool afeHvPwrOn) void TrxBoard::scenPlayerStart(bool afeHvPwrOn)
{ {
@ -1597,7 +1768,9 @@ void TrxBoard::scenPlayerStart(bool afeHvPwrOn)
this->_bCtrlMngt->mpsDacsOn(); this->_bCtrlMngt->mpsDacsOn();
#endif #endif
#ifdef DEVELOP_UI
this->delay(170); this->delay(170);
#endif
} }
this->_scenPlayer->control.setCommand(true); this->_scenPlayer->control.setCommand(true);
@ -1648,7 +1821,9 @@ void TrxBoard::scenPlayerStop(bool afeHvPwrOff)
this->_bCtrlMngt->mpsDacsOff(); this->_bCtrlMngt->mpsDacsOff();
#endif #endif
this->delay(140); #ifdef DEVELOP_UI
this->delay(140);
#endif
} }
} }

Loading…
Cancel
Save