From d9ebce68c5979f71bc40889436f1995e044ada04 Mon Sep 17 00:00:00 2001 From: Arash Aletayeb <Arash.Aletayeb@gmail.com> Date: Tue, 8 Oct 2024 16:18:41 +0330 Subject: [PATCH] HV & PM5 regulator sync clock have generated. --- developHw.pro.user | 2 +- .../hardware/core/lowLevelApi/TrxBoard.h | 1 + .../register/boardsCtrlMngt/BoardsCtrlMngt.h | 13 +++ mainwindow.cpp | 79 ++++++++++++++++ mainwindow.h | 4 + mainwindow.ui | 89 ++++++++++++++++++- .../hardware/core/lowLevelApi/TrxBoard.cpp | 10 +++ .../boardsCtrlMngt/BoardsCtrlMngt.cpp | 24 +++++ 8 files changed, 218 insertions(+), 4 deletions(-) diff --git a/developHw.pro.user b/developHw.pro.user index 451f95b..892ff6f 100644 --- a/developHw.pro.user +++ b/developHw.pro.user @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> -<!-- Written by QtCreator 4.10.0, 2024-09-17T16:03:01. --> +<!-- Written by QtCreator 4.10.0, 2024-10-08T16:16:35. --> <qtcreator> <data> <variable>EnvironmentId</variable> diff --git a/include/model/hardware/core/lowLevelApi/TrxBoard.h b/include/model/hardware/core/lowLevelApi/TrxBoard.h index f6a6169..730e838 100644 --- a/include/model/hardware/core/lowLevelApi/TrxBoard.h +++ b/include/model/hardware/core/lowLevelApi/TrxBoard.h @@ -325,6 +325,7 @@ public: void getHealthStatus(HealthStatus* healStat) const; void setTrxFanRpm(const eFanPwm& fan, const quint8& dutyCyclePercent) const; + void setRegulatorSyncClk(const eRegSync& regType, const regulatorSync& regSyncParams) const; //////////////////////////////// BPI Flash API //////////////////////////////// void mcsProgram(QString path); diff --git a/include/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.h b/include/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.h index 6ff8e5a..5b71b48 100644 --- a/include/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.h +++ b/include/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.h @@ -160,6 +160,18 @@ struct criticalComponentTemperature float slave2; }; +struct regulatorSync +{ + quint16 halfPeriod; + bool enable; +}; + +enum eRegSync : quint8 +{ + HVReg, + PM5Reg +}; + class BoardsCtrlMngt : private BoardsSpecs { private: @@ -316,6 +328,7 @@ public: void getFpgaVccBram(FpgaVccBram& coreBram); void getFanRpm(FanRpm* _rpm); void setFanPwm(const eFanPwm& fan, const quint8& dcPercent) const; + void setPllRefClk(const eRegSync& regType, const regulatorSync& regSyncParams) const; QByteArray trxEepromRead(quint32 address, quint32 length); QByteArray mpsEepromRead(quint32 address, quint32 length); diff --git a/mainwindow.cpp b/mainwindow.cpp index ca91d5a..ac7a33b 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2640,6 +2640,85 @@ void MainWindow::on_btn_setAo_clicked() } } +/*************************************************************************************************/ +void MainWindow::on_chk_hvRegEn_clicked(bool checked) +{ + try + { + if(checked) + { + auto hvClk = ui->tb_hvRegulatorClk->text().toUInt(); + regulatorSync regSyncParams = + { + static_cast<quint16>(hvClk), + true + }; + + _trx.setRegulatorSyncClk(HVReg, regSyncParams); + } + else + { + regulatorSync regSyncParams = + { + 0, + false + }; + + _trx.setRegulatorSyncClk(HVReg, regSyncParams); + } + } + catch(SonoException& e) + { + regulatorSync regSyncParams = + { + 0, + false + }; + + _trx.setRegulatorSyncClk(HVReg, regSyncParams); + qDebug() << e.what(); + } +} + +void MainWindow::on_chk_pm5RegEn_clicked(bool checked) +{ + try + { + if(checked) + { + auto pm5Clk = ui->tb_pm5RegulatorClk->text().toUInt(); + regulatorSync regSyncParams = + { + static_cast<quint16>(pm5Clk), + true + }; + + _trx.setRegulatorSyncClk(PM5Reg, regSyncParams); + } + else + { + regulatorSync regSyncParams = + { + 0, + false + }; + + _trx.setRegulatorSyncClk(PM5Reg, regSyncParams); + } + } + catch(SonoException& e) + { + regulatorSync regSyncParams = + { + 0, + false + }; + + _trx.setRegulatorSyncClk(PM5Reg, regSyncParams); + qDebug() << e.what(); + } +} + /*************************************************************************************************/ void MainWindow::on_chk_mpsInit_clicked() { diff --git a/mainwindow.h b/mainwindow.h index eef26e8..5dbb9a6 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -584,6 +584,10 @@ private slots: void on_checkBox_clicked(bool checked); + void on_chk_hvRegEn_clicked(bool checked); + + void on_chk_pm5RegEn_clicked(bool checked); + signals: void showMessage(QString message); void threeDReady(); diff --git a/mainwindow.ui b/mainwindow.ui index fe51fd3..1213926 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -42,7 +42,7 @@ <string/> </property> <property name="currentIndex"> - <number>3</number> + <number>1</number> </property> <widget class="QWidget" name="tab_0"> <attribute name="title"> @@ -2159,6 +2159,89 @@ </property> </widget> </widget> + <widget class="QGroupBox" name="groupBox_20"> + <property name="geometry"> + <rect> + <x>0</x> + <y>390</y> + <width>361</width> + <height>131</height> + </rect> + </property> + <property name="title"> + <string>PLL Sync Clk</string> + </property> + <widget class="QWidget" name="horizontalLayoutWidget_12"> + <property name="geometry"> + <rect> + <x>10</x> + <y>30</y> + <width>191</width> + <height>41</height> + </rect> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_41"> + <item> + <widget class="QLabel" name="label_103"> + <property name="text"> + <string>HV Regulator: </string> + </property> + </widget> + </item> + <item alignment="Qt::AlignRight"> + <widget class="QLineEdit" name="tb_hvRegulatorClk"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="horizontalLayoutWidget_59"> + <property name="geometry"> + <rect> + <x>10</x> + <y>80</y> + <width>191</width> + <height>41</height> + </rect> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_130"> + <item> + <widget class="QLabel" name="label_107"> + <property name="text"> + <string>PM5 Regulator:</string> + </property> + </widget> + </item> + <item alignment="Qt::AlignRight"> + <widget class="QLineEdit" name="tb_pm5RegulatorClk"/> + </item> + </layout> + </widget> + <widget class="QCheckBox" name="chk_hvRegEn"> + <property name="geometry"> + <rect> + <x>220</x> + <y>30</y> + <width>111</width> + <height>31</height> + </rect> + </property> + <property name="text"> + <string>HV Enable</string> + </property> + </widget> + <widget class="QCheckBox" name="chk_pm5RegEn"> + <property name="geometry"> + <rect> + <x>220</x> + <y>80</y> + <width>111</width> + <height>31</height> + </rect> + </property> + <property name="text"> + <string>PM5 Enable</string> + </property> + </widget> + </widget> </widget> <widget class="QWidget" name="tab_1"> <attribute name="title"> @@ -6707,9 +6790,9 @@ Dynamic Contrast</string> <widget class="QDialogButtonBox" name="btn_discard"> <property name="geometry"> <rect> - <x>720</x> + <x>630</x> <y>310</y> - <width>81</width> + <width>171</width> <height>41</height> </rect> </property> diff --git a/src/model/hardware/core/lowLevelApi/TrxBoard.cpp b/src/model/hardware/core/lowLevelApi/TrxBoard.cpp index 3b0f2cd..b2913dc 100644 --- a/src/model/hardware/core/lowLevelApi/TrxBoard.cpp +++ b/src/model/hardware/core/lowLevelApi/TrxBoard.cpp @@ -2518,6 +2518,16 @@ void TrxBoard::setTrxFanRpm(const eFanPwm& fan, const quint8& dutyCyclePercent) this->_bCtrlMngt->setFanPwm(fan, dutyCyclePercent); } +void TrxBoard::setRegulatorSyncClk(const eRegSync& regType, const regulatorSync& regSyncParams) const +{ + if(regSyncParams.halfPeriod > 8192) + { + throw SonoException("Out of range for PLL sync clk."); + } + + this->_bCtrlMngt->setPllRefClk(regType, regSyncParams); +} + void TrxBoard::mcsProgram(QString path) { QFile mcsFile(path); diff --git a/src/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.cpp b/src/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.cpp index d82bb9f..877242b 100644 --- a/src/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.cpp +++ b/src/model/hardware/core/lowLevelApi/register/boardsCtrlMngt/BoardsCtrlMngt.cpp @@ -901,6 +901,30 @@ void BoardsCtrlMngt::setFanPwm(const eFanPwm &fan, const quint8 &dcPercent) cons this->_fansPdw->update(); } +void BoardsCtrlMngt::setPllRefClk(const eRegSync& regType, const regulatorSync& regSyncParams) const +{ + bool enable = regSyncParams.enable; + + switch(regType) + { + case HVReg: + this->_mHvRgltor->syncHVsHalfPeriod->setValue(regSyncParams.halfPeriod); + this->_mHvRgltor->syncHVsEnable->setValue(enable); + this->_mHvRgltor->syncHVsValid->setValue(1); + this->_mHvRgltor->syncHVsValid->setValue(0); + this->_mHvRgltor->update(); + break; + + case PM5Reg: + this->_mPm5Rgltor->syncPM5HalfPeriod->setValue(regSyncParams.halfPeriod); + this->_mPm5Rgltor->syncPM5Enable->setValue(enable); + this->_mPm5Rgltor->syncPM5Valid->setValue(1); + this->_mPm5Rgltor->syncPM5Valid->setValue(0); + this->_mPm5Rgltor->update(); + break; + } +} + QByteArray BoardsCtrlMngt::trxEepromRead(quint32 address, quint32 length) { if(address + length > TRX_ROM_MAX_LEN)