diff --git a/developHw.pro b/developHw.pro index 205d42a..bffcaa1 100644 --- a/developHw.pro +++ b/developHw.pro @@ -25,7 +25,6 @@ SOURCES += \ $$files(hdf5Scenario/*.cpp, true) \ HEADERS += \ - include/model/hardware/core/lowLevelApi/TrxBoardUtils/e2promFormat.h \ mainwindow.h \ qcustomplot.h \ api.h \ diff --git a/developHw.pro.user b/developHw.pro.user index 6a3dbad..b2abcd8 100644 --- a/developHw.pro.user +++ b/developHw.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/include/model/hardware/core/lowLevelApi/TrxBoard.h b/include/model/hardware/core/lowLevelApi/TrxBoard.h index c48eae0..b721985 100644 --- a/include/model/hardware/core/lowLevelApi/TrxBoard.h +++ b/include/model/hardware/core/lowLevelApi/TrxBoard.h @@ -158,7 +158,10 @@ private: * _scenParams; + void setAfesHeartBeat(const bool heartBeat) const; + void afesHeartBeatDisable(const bool mode) const; void sonoLiveTimeout(); + void sonoHeartBeatsEnable(void) const; void sendPacket(void); void delay(quint16 ms) const; @@ -237,6 +240,10 @@ public: void setFramesMetaData(const QByteArray& metaData); void setMChangeParams(SramTx* tx, SramRx* rx) const; + void setAfesPwr(eAfePwrdnMode pwrMode) const; + void setAfesFastPwr(eAfePwrdnMode pwrMode) const; + void sonoHeartBeatsDisable(void) const; + /////////////////////////////// Built-in Test API ///////////////////////////// void setBiteDacData(const QByteArray& iData, const QByteArray& qData) const; void biteScenPlayerStart(void); @@ -340,7 +347,6 @@ public: void adcLoggerStart(const QString path, const QString fileName); void setDebuggerMode(eDebugMode bfMode, bool enable); void setAfeConfig(AfeConfig& afeCfg) const; - void setAfePwr(eAfePwrdnMode pwrMode) const; /////////////////////////////// DMA Data Packet /////////////////////////////// void readData(); diff --git a/include/model/hardware/core/lowLevelApi/register/afe/Afe.h b/include/model/hardware/core/lowLevelApi/register/afe/Afe.h index e33ff9f..dfa0cda 100644 --- a/include/model/hardware/core/lowLevelApi/register/afe/Afe.h +++ b/include/model/hardware/core/lowLevelApi/register/afe/Afe.h @@ -1,6 +1,7 @@ #ifndef AFE_H #define AFE_H +#include "registerDefinition/FastPowerDown.h" #include "registerDefinition/AdcSyncStatus.h" #include "registerDefinition/AdcLatency.h" #include "registerDefinition/ActiveTerm.h" @@ -137,6 +138,7 @@ Q_DECLARE_METATYPE(AfeConfig) class Afe { private: + FastPowerDown* _fastPwrdn; AdcSyncStatus* _adcSync; AdcLatency* _adcLatency; ActiveTerm* _actTerm; @@ -157,6 +159,9 @@ public: void setAfeParams(const AfeConfig afe) const; void setAfeGblPwr(const bool pwrdn) const; void setReadRegEnable(const bool rdEn) const; + void setAfeFastPwr(const bool pwrdn) const; + void setAfeHeartBeat(const bool heartBeat) const; + void heartBeatsDisable(const bool mode) const; quint32 getAdcLatency(void) const; bool getAfeSyncDone(void) const; diff --git a/include/model/hardware/core/lowLevelApi/register/afe/registerDefinition/FastPowerDown.h b/include/model/hardware/core/lowLevelApi/register/afe/registerDefinition/FastPowerDown.h new file mode 100644 index 0000000..d283896 --- /dev/null +++ b/include/model/hardware/core/lowLevelApi/register/afe/registerDefinition/FastPowerDown.h @@ -0,0 +1,39 @@ +#ifndef FASTPOWERDOWN_H +#define FASTPOWERDOWN_H + +#include "model/hardware/core/lowLevelApi/register/Register.h" +#include "model/hardware/core/lowLevelApi/register/RegUtils.h" + +#undef BAR + +#define FAST_POWER_DOWN_MASK 0x00000001 +#define HEART_BEATS_MASK 0x00000002 +#define HEART_BEATS_MODE_MASK 0x00000004 + +#define BAR 0U +#define OFFSET 0x43C36C + +class FastPowerDown : public Register +{ + +public: + Field* fastPowerDown; + Field* heartBeats; + Field* heartBeatsMode; + + FastPowerDown(SonoDevice* device, quint32 offset) : Register(BAR, OFFSET + offset, device) + { + ADD_UNSIGNED_FIELD(fastPowerDown, FAST_POWER_DOWN_MASK); + ADD_UNSIGNED_FIELD(heartBeats, HEART_BEATS_MASK); + ADD_UNSIGNED_FIELD(heartBeatsMode, HEART_BEATS_MODE_MASK); + } +}; + +#undef FAST_POWER_DOWN_MASK +#undef HEART_BEATS_MASK +#undef HEART_BEATS_MODE_MASK + +#undef BAR +#undef OFFSET + +#endif // FASTPOWERDOWN_H diff --git a/include/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.h b/include/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.h index 3b4b3ac..d872c88 100644 --- a/include/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.h +++ b/include/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.h @@ -19,6 +19,7 @@ private: bool getCommand(void) const; void pause(bool pause) const; void setHeartBeats(bool heartBeat) const; + void heartBeatsDisable(const bool mode) const; }; public: diff --git a/include/model/hardware/core/lowLevelApi/register/scenPlayer/registerDefinition/ScenPlayerCtrl.h b/include/model/hardware/core/lowLevelApi/register/scenPlayer/registerDefinition/ScenPlayerCtrl.h index 951e21e..4169cd1 100644 --- a/include/model/hardware/core/lowLevelApi/register/scenPlayer/registerDefinition/ScenPlayerCtrl.h +++ b/include/model/hardware/core/lowLevelApi/register/scenPlayer/registerDefinition/ScenPlayerCtrl.h @@ -6,9 +6,10 @@ #undef BAR -#define START_MASK 0x00000001 -#define PAUSE_MASK 0x00000004 -#define HEART_BEATS_MASK 0x00000010 +#define START_MASK 0x00000001 +#define PAUSE_MASK 0x00000004 +#define HEART_BEATS_MASK 0x00000010 +#define HEART_BEATS_MODE_MASK 0x00000020 #define BAR 0U #define OFFSET 0x800 @@ -19,18 +20,21 @@ public: Field* start; Field* pause; Field* heartBeats; + Field* heartBeatsMode; ScenPlayerCtrl(SonoDevice* device) : Register(BAR, OFFSET, device) { ADD_UNSIGNED_FIELD(start, START_MASK); ADD_UNSIGNED_FIELD(pause, PAUSE_MASK); ADD_UNSIGNED_FIELD(heartBeats, HEART_BEATS_MASK); + ADD_UNSIGNED_FIELD(heartBeatsMode, HEART_BEATS_MODE_MASK); } }; #undef START_MASK #undef PAUSE_MASK #undef HEART_BEATS_MASK +#undef HEART_BEATS_MODE_MASK #undef BAR #undef OFFSET diff --git a/mainwindow.cpp b/mainwindow.cpp index ee3465d..f8a0fc1 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -4970,7 +4970,7 @@ void MainWindow::catchAdcLog() capConfig.sampleCount = sampleCnt; delay(1000); - _trx.setAfePwr(afePwrdnDisable); + _trx.setAfesPwr(afePwrdnDisable); _trx.adcCaptureConfig(capConfig); //Sync ADC log state for both mode: Auto & Manual @@ -5099,7 +5099,7 @@ void MainWindow::catchAdcLog() color = Qt::green; emit labelState(ui->l_adcLogDone, str, color); } - _trx.setAfePwr(afePwrdnEnable); + _trx.setAfesPwr(afePwrdnEnable); _trx.setTxDacEnable(BITE_INTERVAL, false); _trx.setAdgCfg(adgGnd); @@ -5108,7 +5108,7 @@ void MainWindow::catchAdcLog() } catch(SonoException& e) { - _trx.setAfePwr(afePwrdnEnable); + _trx.setAfesPwr(afePwrdnEnable); _trx.setDebuggerMode(pulserHz, true); _trx.setDebuggerMode(pulserHz, false); _trx.setTxDacEnable(BITE_INTERVAL, false); @@ -5127,7 +5127,7 @@ void MainWindow::on_btn_setAdcLog_clicked() } catch(SonoException& e) { - _trx.setAfePwr(afePwrdnEnable); + _trx.setAfesPwr(afePwrdnEnable); _trx.setDebuggerMode(pulserHz, true); _trx.setDebuggerMode(pulserHz, false); _trx.setTxDacEnable(BITE_INTERVAL, false); diff --git a/src/model/hardware/core/lowLevelApi/TrxBoard.cpp b/src/model/hardware/core/lowLevelApi/TrxBoard.cpp index 74c4bf5..d98fbd5 100644 --- a/src/model/hardware/core/lowLevelApi/TrxBoard.cpp +++ b/src/model/hardware/core/lowLevelApi/TrxBoard.cpp @@ -26,6 +26,19 @@ void TrxBoard::sonoLiveTimeout() { _sonoHeartBeats = !_sonoHeartBeats; this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); + this->setAfesHeartBeat(_sonoHeartBeats); +} + +void TrxBoard::sonoHeartBeatsEnable() const +{ + this->_scenPlayer->control.heartBeatsDisable(false); + this->afesHeartBeatDisable(false); +} + +void TrxBoard::sonoHeartBeatsDisable(void) const +{ + this->_scenPlayer->control.heartBeatsDisable(true); + this->afesHeartBeatDisable(true); } void TrxBoard::sendPacket() @@ -462,7 +475,7 @@ TrxBoard::TrxBoard() : _offsetSlave0(0), _offsetSlave1(0x400000), _offsetSlave2( setFpgaOffset(); setAfeModuleOffset(); systemLutCompletion(); - + sonoHeartBeatsEnable(); } TrxBoard::ScenHwRegister::ScenHwRegister() @@ -709,11 +722,8 @@ void TrxBoard::setProbeDependParams(ScenPrbDepHardwareParam& prbDepParams) /////////////////////////// AFE setting /////////////////////////// setAfeConfig(prbDepParams.afeCfg); - setAfePwr(afePwrdnEnable); - //quint32 afeFastPdn = 0x43C36C; - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0, static_cast(1)); - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x400000, static_cast(1)); - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x800000, static_cast(1)); + setAfesPwr(afePwrdnEnable); +// setAfesFastPwr(afePwrdnEnable); } void TrxBoard::setScenario(ScenHardware& scenGenHw) @@ -1580,15 +1590,9 @@ void TrxBoard::scenPlayerStart(bool afeHvPwrOn) 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(0)); - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x400000, - //static_cast(0)); - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x800000, - //static_cast(0)); + setAfesPwr(afePwrdnDisable); +// setAfesFastPwr(afePwrdnDisable); + #ifdef MPS_BOARD this->_bCtrlMngt->mpsDacsOn(); #endif @@ -1604,6 +1608,7 @@ void TrxBoard::scenPlayerStart(bool afeHvPwrOn) _sonoLiveTimer->start(5000); _sonoHeartBeats = true; this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); + this->setAfesHeartBeat(_sonoHeartBeats); _run = true; @@ -1628,21 +1633,17 @@ void TrxBoard::scenPlayerStop(bool afeHvPwrOff) //uncrustify on _sonoLiveTimer->stop(); - _sonoHeartBeats = false; this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); + this->setAfesHeartBeat(_sonoHeartBeats); this->_scenPlayer->control.setCommand(false); if(afeHvPwrOff) { - 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(1)); - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x400000, static_cast(1)); - //this->_device.device.writeWord(BAR_REG, afeFastPdn + 0x800000, static_cast(1)); + setAfesPwr(afePwrdnEnable); +// setAfesFastPwr(afePwrdnEnable); + #ifdef MPS_BOARD this->_bCtrlMngt->mpsDacsOff(); #endif @@ -1726,6 +1727,7 @@ void TrxBoard::emulatorStart() _sonoLiveTimer->start(5000); _sonoHeartBeats = true; this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); + this->setAfesHeartBeat(_sonoHeartBeats); _run = true; @@ -1735,9 +1737,9 @@ void TrxBoard::emulatorStart() void TrxBoard::emulatorStop() { _sonoLiveTimer->stop(); - _sonoHeartBeats = false; this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); + this->setAfesHeartBeat(_sonoHeartBeats); _run = false; @@ -2789,9 +2791,30 @@ void TrxBoard::setAfeConfig(AfeConfig& afeCfg) const this->_afeSlave2->setAfeParams(afeCfg); } -void TrxBoard::setAfePwr(eAfePwrdnMode pwrMode) const +void TrxBoard::setAfesPwr(eAfePwrdnMode pwrMode) const { this->_afeSlave0->setAfeGblPwr(pwrMode); this->_afeSlave1->setAfeGblPwr(pwrMode); this->_afeSlave2->setAfeGblPwr(pwrMode); } + +void TrxBoard::setAfesFastPwr(eAfePwrdnMode pwrMode) const +{ + this->_afeSlave0->setAfeFastPwr(pwrMode); + this->_afeSlave1->setAfeFastPwr(pwrMode); + this->_afeSlave2->setAfeFastPwr(pwrMode); +} + +void TrxBoard::setAfesHeartBeat(const bool heartBeat) const +{ + this->_afeSlave0->setAfeHeartBeat(heartBeat); + this->_afeSlave1->setAfeHeartBeat(heartBeat); + this->_afeSlave2->setAfeHeartBeat(heartBeat); +} + +void TrxBoard::afesHeartBeatDisable(const bool mode) const +{ + this->_afeSlave0->heartBeatsDisable(mode); + this->_afeSlave1->heartBeatsDisable(mode); + this->_afeSlave2->heartBeatsDisable(mode); +} diff --git a/src/model/hardware/core/lowLevelApi/register/afe/Afe.cpp b/src/model/hardware/core/lowLevelApi/register/afe/Afe.cpp index a44ed23..b586a68 100644 --- a/src/model/hardware/core/lowLevelApi/register/afe/Afe.cpp +++ b/src/model/hardware/core/lowLevelApi/register/afe/Afe.cpp @@ -52,6 +52,7 @@ void Afe::setPga(const AfeConfig afe) const Afe::Afe(SonoDevice *device, quint32 offset) { _adcSync = new AdcSyncStatus (device, offset); + _fastPwrdn = new FastPowerDown (device, offset); _adcLatency = new AdcLatency (device, offset); _actTerm = new ActiveTerm (device, offset); _lnaHpf = new LnaHpf (device, offset); @@ -63,6 +64,7 @@ Afe::Afe(SonoDevice *device, quint32 offset) Afe::~Afe() { delete _adcLatency; + delete _fastPwrdn; delete _adcSync; delete _actTerm; delete _lnaHpf; @@ -93,6 +95,27 @@ void Afe::setReadRegEnable(const bool rdEn) const this->_global->update(); } +void Afe::setAfeFastPwr(const bool pwrdn) const +{ + quint32 value = pwrdn ? 1 : 0; + this->_fastPwrdn->fastPowerDown->setValue(value); + this->_fastPwrdn->update(); +} + +void Afe::setAfeHeartBeat(const bool heartBeat) const +{ + quint32 pulse = heartBeat ? 1 : 0; + this->_fastPwrdn->heartBeats->setValue(pulse); + this->_fastPwrdn->update(); +} + +void Afe::heartBeatsDisable(const bool mode) const +{ + quint32 dis = mode ? 0 : 1; + this->_fastPwrdn->heartBeatsMode->setValue(dis); + this->_fastPwrdn->update(); +} + quint32 Afe::getAdcLatency() const { this->_adcLatency->sync(); diff --git a/src/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.cpp b/src/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.cpp index c6992a0..d19ce14 100644 --- a/src/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.cpp +++ b/src/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.cpp @@ -62,3 +62,10 @@ void ScenPalyer::PlayerControl::setHeartBeats(bool heartBeat) const _playerctrl->heartBeats->setValue(pulse); _playerctrl->update(); } + +void ScenPalyer::PlayerControl::heartBeatsDisable(const bool mode) const +{ + quint32 dis = mode ? 0 : 1; + _playerctrl->heartBeatsMode->setValue(dis); + _playerctrl->update(); +}