Browse Source

Sono heart beats for slave is added.

Sono heart beats enable/disable is added.
Arash Aletayeb 1 year ago
parent
commit
38f2288b9f
  1. 1
      developHw.pro
  2. 2
      developHw.pro.user
  3. 8
      include/model/hardware/core/lowLevelApi/TrxBoard.h
  4. 5
      include/model/hardware/core/lowLevelApi/register/afe/Afe.h
  5. 39
      include/model/hardware/core/lowLevelApi/register/afe/registerDefinition/FastPowerDown.h
  6. 1
      include/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.h
  7. 10
      include/model/hardware/core/lowLevelApi/register/scenPlayer/registerDefinition/ScenPlayerCtrl.h
  8. 8
      mainwindow.cpp
  9. 73
      src/model/hardware/core/lowLevelApi/TrxBoard.cpp
  10. 23
      src/model/hardware/core/lowLevelApi/register/afe/Afe.cpp
  11. 7
      src/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.cpp

1
developHw.pro

@ -25,7 +25,6 @@ SOURCES += \
$$files(hdf5Scenario/*.cpp, true) \ $$files(hdf5Scenario/*.cpp, true) \
HEADERS += \ HEADERS += \
include/model/hardware/core/lowLevelApi/TrxBoardUtils/e2promFormat.h \
mainwindow.h \ mainwindow.h \
qcustomplot.h \ qcustomplot.h \
api.h \ api.h \

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-16T18:26:44. --> <!-- Written by QtCreator 4.10.0, 2024-01-21T13:54:45. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

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

@ -158,7 +158,10 @@ private:
* _scenParams; * _scenParams;
void setAfesHeartBeat(const bool heartBeat) 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;
@ -237,6 +240,10 @@ public:
void setFramesMetaData(const QByteArray& metaData); void setFramesMetaData(const QByteArray& metaData);
void setMChangeParams(SramTx* tx, SramRx* rx) const; 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 ///////////////////////////// /////////////////////////////// Built-in Test API /////////////////////////////
void setBiteDacData(const QByteArray& iData, const QByteArray& qData) const; void setBiteDacData(const QByteArray& iData, const QByteArray& qData) const;
void biteScenPlayerStart(void); void biteScenPlayerStart(void);
@ -340,7 +347,6 @@ public:
void adcLoggerStart(const QString path, const QString fileName); void adcLoggerStart(const QString path, const QString fileName);
void setDebuggerMode(eDebugMode bfMode, bool enable); void setDebuggerMode(eDebugMode bfMode, bool enable);
void setAfeConfig(AfeConfig& afeCfg) const; void setAfeConfig(AfeConfig& afeCfg) const;
void setAfePwr(eAfePwrdnMode pwrMode) const;
/////////////////////////////// DMA Data Packet /////////////////////////////// /////////////////////////////// DMA Data Packet ///////////////////////////////
void readData(); void readData();

5
include/model/hardware/core/lowLevelApi/register/afe/Afe.h

@ -1,6 +1,7 @@
#ifndef AFE_H #ifndef AFE_H
#define AFE_H #define AFE_H
#include "registerDefinition/FastPowerDown.h"
#include "registerDefinition/AdcSyncStatus.h" #include "registerDefinition/AdcSyncStatus.h"
#include "registerDefinition/AdcLatency.h" #include "registerDefinition/AdcLatency.h"
#include "registerDefinition/ActiveTerm.h" #include "registerDefinition/ActiveTerm.h"
@ -137,6 +138,7 @@ Q_DECLARE_METATYPE(AfeConfig)
class Afe class Afe
{ {
private: private:
FastPowerDown* _fastPwrdn;
AdcSyncStatus* _adcSync; AdcSyncStatus* _adcSync;
AdcLatency* _adcLatency; AdcLatency* _adcLatency;
ActiveTerm* _actTerm; ActiveTerm* _actTerm;
@ -157,6 +159,9 @@ public:
void setAfeParams(const AfeConfig afe) const; void setAfeParams(const AfeConfig afe) const;
void setAfeGblPwr(const bool pwrdn) const; void setAfeGblPwr(const bool pwrdn) const;
void setReadRegEnable(const bool rdEn) 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; quint32 getAdcLatency(void) const;
bool getAfeSyncDone(void) const; bool getAfeSyncDone(void) const;

39
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

1
include/model/hardware/core/lowLevelApi/register/scenPlayer/ScenPlayer.h

@ -19,6 +19,7 @@ private:
bool getCommand(void) const; bool getCommand(void) const;
void pause(bool pause) const; void pause(bool pause) const;
void setHeartBeats(bool heartBeat) const; void setHeartBeats(bool heartBeat) const;
void heartBeatsDisable(const bool mode) const;
}; };
public: public:

10
include/model/hardware/core/lowLevelApi/register/scenPlayer/registerDefinition/ScenPlayerCtrl.h

@ -6,9 +6,10 @@
#undef BAR #undef BAR
#define START_MASK 0x00000001 #define START_MASK 0x00000001
#define PAUSE_MASK 0x00000004 #define PAUSE_MASK 0x00000004
#define HEART_BEATS_MASK 0x00000010 #define HEART_BEATS_MASK 0x00000010
#define HEART_BEATS_MODE_MASK 0x00000020
#define BAR 0U #define BAR 0U
#define OFFSET 0x800 #define OFFSET 0x800
@ -19,18 +20,21 @@ public:
Field* start; Field* start;
Field* pause; Field* pause;
Field* heartBeats; Field* heartBeats;
Field* heartBeatsMode;
ScenPlayerCtrl(SonoDevice* device) : Register(BAR, OFFSET, device) ScenPlayerCtrl(SonoDevice* device) : Register(BAR, OFFSET, device)
{ {
ADD_UNSIGNED_FIELD(start, START_MASK); ADD_UNSIGNED_FIELD(start, START_MASK);
ADD_UNSIGNED_FIELD(pause, PAUSE_MASK); ADD_UNSIGNED_FIELD(pause, PAUSE_MASK);
ADD_UNSIGNED_FIELD(heartBeats, HEART_BEATS_MASK); ADD_UNSIGNED_FIELD(heartBeats, HEART_BEATS_MASK);
ADD_UNSIGNED_FIELD(heartBeatsMode, HEART_BEATS_MODE_MASK);
} }
}; };
#undef START_MASK #undef START_MASK
#undef PAUSE_MASK #undef PAUSE_MASK
#undef HEART_BEATS_MASK #undef HEART_BEATS_MASK
#undef HEART_BEATS_MODE_MASK
#undef BAR #undef BAR
#undef OFFSET #undef OFFSET

8
mainwindow.cpp

@ -4970,7 +4970,7 @@ void MainWindow::catchAdcLog()
capConfig.sampleCount = sampleCnt; capConfig.sampleCount = sampleCnt;
delay(1000); delay(1000);
_trx.setAfePwr(afePwrdnDisable); _trx.setAfesPwr(afePwrdnDisable);
_trx.adcCaptureConfig(capConfig); _trx.adcCaptureConfig(capConfig);
//Sync ADC log state for both mode: Auto & Manual //Sync ADC log state for both mode: Auto & Manual
@ -5099,7 +5099,7 @@ void MainWindow::catchAdcLog()
color = Qt::green; color = Qt::green;
emit labelState(ui->l_adcLogDone, str, color); emit labelState(ui->l_adcLogDone, str, color);
} }
_trx.setAfePwr(afePwrdnEnable); _trx.setAfesPwr(afePwrdnEnable);
_trx.setTxDacEnable(BITE_INTERVAL, false); _trx.setTxDacEnable(BITE_INTERVAL, false);
_trx.setAdgCfg(adgGnd); _trx.setAdgCfg(adgGnd);
@ -5108,7 +5108,7 @@ void MainWindow::catchAdcLog()
} }
catch(SonoException& e) catch(SonoException& e)
{ {
_trx.setAfePwr(afePwrdnEnable); _trx.setAfesPwr(afePwrdnEnable);
_trx.setDebuggerMode(pulserHz, true); _trx.setDebuggerMode(pulserHz, true);
_trx.setDebuggerMode(pulserHz, false); _trx.setDebuggerMode(pulserHz, false);
_trx.setTxDacEnable(BITE_INTERVAL, false); _trx.setTxDacEnable(BITE_INTERVAL, false);
@ -5127,7 +5127,7 @@ void MainWindow::on_btn_setAdcLog_clicked()
} }
catch(SonoException& e) catch(SonoException& e)
{ {
_trx.setAfePwr(afePwrdnEnable); _trx.setAfesPwr(afePwrdnEnable);
_trx.setDebuggerMode(pulserHz, true); _trx.setDebuggerMode(pulserHz, true);
_trx.setDebuggerMode(pulserHz, false); _trx.setDebuggerMode(pulserHz, false);
_trx.setTxDacEnable(BITE_INTERVAL, false); _trx.setTxDacEnable(BITE_INTERVAL, false);

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

@ -26,6 +26,19 @@ void TrxBoard::sonoLiveTimeout()
{ {
_sonoHeartBeats = !_sonoHeartBeats; _sonoHeartBeats = !_sonoHeartBeats;
this->_scenPlayer->control.setHeartBeats(_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() void TrxBoard::sendPacket()
@ -462,7 +475,7 @@ TrxBoard::TrxBoard() : _offsetSlave0(0), _offsetSlave1(0x400000), _offsetSlave2(
setFpgaOffset(); setFpgaOffset();
setAfeModuleOffset(); setAfeModuleOffset();
systemLutCompletion(); systemLutCompletion();
sonoHeartBeatsEnable();
} }
TrxBoard::ScenHwRegister::ScenHwRegister() TrxBoard::ScenHwRegister::ScenHwRegister()
@ -709,11 +722,8 @@ void TrxBoard::setProbeDependParams(ScenPrbDepHardwareParam& prbDepParams)
/////////////////////////// AFE setting /////////////////////////// /////////////////////////// AFE setting ///////////////////////////
setAfeConfig(prbDepParams.afeCfg); setAfeConfig(prbDepParams.afeCfg);
setAfePwr(afePwrdnEnable); setAfesPwr(afePwrdnEnable);
//quint32 afeFastPdn = 0x43C36C; // setAfesFastPwr(afePwrdnEnable);
//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));
} }
void TrxBoard::setScenario(ScenHardware& scenGenHw) void TrxBoard::setScenario(ScenHardware& scenGenHw)
@ -1580,15 +1590,9 @@ void TrxBoard::scenPlayerStart(bool afeHvPwrOn)
if(afeHvPwrOn) if(afeHvPwrOn)
{ {
this->_afeSlave0->setAfeGblPwr(afePwrdnDisable); setAfesPwr(afePwrdnDisable);
this->_afeSlave1->setAfeGblPwr(afePwrdnDisable); // setAfesFastPwr(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 #ifdef MPS_BOARD
this->_bCtrlMngt->mpsDacsOn(); this->_bCtrlMngt->mpsDacsOn();
#endif #endif
@ -1604,6 +1608,7 @@ void TrxBoard::scenPlayerStart(bool afeHvPwrOn)
_sonoLiveTimer->start(5000); _sonoLiveTimer->start(5000);
_sonoHeartBeats = true; _sonoHeartBeats = true;
this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats);
this->setAfesHeartBeat(_sonoHeartBeats);
_run = true; _run = true;
@ -1628,21 +1633,17 @@ void TrxBoard::scenPlayerStop(bool afeHvPwrOff)
//uncrustify on //uncrustify on
_sonoLiveTimer->stop(); _sonoLiveTimer->stop();
_sonoHeartBeats = false; _sonoHeartBeats = false;
this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats);
this->setAfesHeartBeat(_sonoHeartBeats);
this->_scenPlayer->control.setCommand(false); this->_scenPlayer->control.setCommand(false);
if(afeHvPwrOff) if(afeHvPwrOff)
{ {
this->_afeSlave0->setAfeGblPwr(afePwrdnEnable); setAfesPwr(afePwrdnEnable);
this->_afeSlave1->setAfeGblPwr(afePwrdnEnable); // setAfesFastPwr(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 #ifdef MPS_BOARD
this->_bCtrlMngt->mpsDacsOff(); this->_bCtrlMngt->mpsDacsOff();
#endif #endif
@ -1726,6 +1727,7 @@ void TrxBoard::emulatorStart()
_sonoLiveTimer->start(5000); _sonoLiveTimer->start(5000);
_sonoHeartBeats = true; _sonoHeartBeats = true;
this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats);
this->setAfesHeartBeat(_sonoHeartBeats);
_run = true; _run = true;
@ -1735,9 +1737,9 @@ void TrxBoard::emulatorStart()
void TrxBoard::emulatorStop() void TrxBoard::emulatorStop()
{ {
_sonoLiveTimer->stop(); _sonoLiveTimer->stop();
_sonoHeartBeats = false; _sonoHeartBeats = false;
this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats); this->_scenPlayer->control.setHeartBeats(_sonoHeartBeats);
this->setAfesHeartBeat(_sonoHeartBeats);
_run = false; _run = false;
@ -2789,9 +2791,30 @@ void TrxBoard::setAfeConfig(AfeConfig& afeCfg) const
this->_afeSlave2->setAfeParams(afeCfg); this->_afeSlave2->setAfeParams(afeCfg);
} }
void TrxBoard::setAfePwr(eAfePwrdnMode pwrMode) const void TrxBoard::setAfesPwr(eAfePwrdnMode pwrMode) const
{ {
this->_afeSlave0->setAfeGblPwr(pwrMode); this->_afeSlave0->setAfeGblPwr(pwrMode);
this->_afeSlave1->setAfeGblPwr(pwrMode); this->_afeSlave1->setAfeGblPwr(pwrMode);
this->_afeSlave2->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);
}

23
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) Afe::Afe(SonoDevice *device, quint32 offset)
{ {
_adcSync = new AdcSyncStatus (device, offset); _adcSync = new AdcSyncStatus (device, offset);
_fastPwrdn = new FastPowerDown (device, offset);
_adcLatency = new AdcLatency (device, offset); _adcLatency = new AdcLatency (device, offset);
_actTerm = new ActiveTerm (device, offset); _actTerm = new ActiveTerm (device, offset);
_lnaHpf = new LnaHpf (device, offset); _lnaHpf = new LnaHpf (device, offset);
@ -63,6 +64,7 @@ Afe::Afe(SonoDevice *device, quint32 offset)
Afe::~Afe() Afe::~Afe()
{ {
delete _adcLatency; delete _adcLatency;
delete _fastPwrdn;
delete _adcSync; delete _adcSync;
delete _actTerm; delete _actTerm;
delete _lnaHpf; delete _lnaHpf;
@ -93,6 +95,27 @@ void Afe::setReadRegEnable(const bool rdEn) const
this->_global->update(); 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 quint32 Afe::getAdcLatency() const
{ {
this->_adcLatency->sync(); this->_adcLatency->sync();

7
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->heartBeats->setValue(pulse);
_playerctrl->update(); _playerctrl->update();
} }
void ScenPalyer::PlayerControl::heartBeatsDisable(const bool mode) const
{
quint32 dis = mode ? 0 : 1;
_playerctrl->heartBeatsMode->setValue(dis);
_playerctrl->update();
}

Loading…
Cancel
Save