From 73e26a25c4c8fc550fc99461ed0cdfaefae1bb78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Mon, 8 Aug 2022 18:08:40 +0200 Subject: [PATCH] WIP: synchronization --- Documentation/DeveloperInfo/FPGA_protocol.pdf | Bin 177006 -> 177444 bytes Documentation/DeveloperInfo/FPGA_protocol.tex | 10 +- FPGA/VNA/SPIConfig.vhd | 2 + FPGA/VNA/Sweep.vhd | 39 +++-- FPGA/VNA/VNA.gise | 15 +- FPGA/VNA/top.bin | Bin 341712 -> 341712 bytes FPGA/VNA/top.vhd | 32 +++- .../Calibration/amplitudecaldialog.cpp | 6 +- .../Calibration/amplitudecaldialog.h | 4 +- .../CustomWidgets/tilewidget.cpp | 9 ++ .../PC_Application/CustomWidgets/tilewidget.h | 2 + Software/PC_Application/Device/device.cpp | 11 +- Software/PC_Application/Device/device.h | 8 +- .../PC_Application/Device/virtualdevice.cpp | 151 +++++++++++++----- .../PC_Application/Device/virtualdevice.h | 9 +- .../PC_Application/Generator/generator.cpp | 5 + Software/PC_Application/Generator/generator.h | 2 + .../SpectrumAnalyzer/spectrumanalyzer.cpp | 46 ++++-- .../SpectrumAnalyzer/spectrumanalyzer.h | 3 + Software/PC_Application/Traces/tracemodel.cpp | 20 ++- Software/PC_Application/Traces/tracemodel.h | 2 + .../PC_Application/Traces/tracesmithchart.h | 2 +- .../PC_Application/Util/qpointervariant.h | 1 + Software/PC_Application/VNA/vna.cpp | 133 +++++++++++---- Software/PC_Application/VNA/vna.h | 4 + Software/PC_Application/appwindow.cpp | 7 + Software/PC_Application/main.ui | 15 ++ Software/PC_Application/mode.h | 2 + Software/PC_Application/preferences.cpp | 10 +- Software/PC_Application/preferences.h | 8 +- Software/PC_Application/preferencesdialog.ui | 6 +- Software/VNA_embedded/Application/App.cpp | 4 - .../Application/Communication/Protocol.hpp | 4 +- .../Application/Drivers/FPGA/FPGA.cpp | 3 +- .../Application/Drivers/FPGA/FPGA.hpp | 4 +- .../VNA_embedded/Application/Hardware.cpp | 2 + Software/VNA_embedded/Application/Led.cpp | 12 +- Software/VNA_embedded/Application/Led.hpp | 3 + .../Application/SpectrumAnalyzer.cpp | 2 +- Software/VNA_embedded/Application/VNA.cpp | 2 +- Software/VNA_embedded/VNA_embedded.ioc | 2 +- 41 files changed, 439 insertions(+), 163 deletions(-) diff --git a/Documentation/DeveloperInfo/FPGA_protocol.pdf b/Documentation/DeveloperInfo/FPGA_protocol.pdf index d2a9522ba9c28d6c768e8f1e708f890be2a5894a..ada75697f875ed4612ebc1634b5a199c33b3b0f1 100644 GIT binary patch delta 26944 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 T5flcNo1Gh$oLpQ{0`~s^H-fLX delta 26443 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 NH8L^^B_%~qMhX^$&(r__ diff --git a/Documentation/DeveloperInfo/FPGA_protocol.tex b/Documentation/DeveloperInfo/FPGA_protocol.tex index 3db4964..4d8e55d 100644 --- a/Documentation/DeveloperInfo/FPGA_protocol.tex +++ b/Documentation/DeveloperInfo/FPGA_protocol.tex @@ -348,9 +348,9 @@ The register contains the number of points per sweep negative one, e.g. set to 1 \rwbits{9}{2}{Window[1:0]} \rwbits{11}{1}{SCEN} \rwbits{12}{1}{LCEN} -\robits{13}{2}{reserved} +\robits{13}{1}{reserved} %\rwbits{13}{1}{EXP2} -%\rwbits{14}{1}{EXP1} +\rwbits{14}{1}{SYM} \rwbits{15}{1}{PSEN} \end{tikzpicture} \end{center} @@ -378,7 +378,7 @@ Setting & Window type\\ \item \textbf{SCEN:}{Source chip enable} \item \textbf{LCEN:}{LO chip enable} %\item \textbf{EXP1:}{Excite Port1 during sweep} -%\item \textbf{EXP2:}{Excite Port2 during sweep} +\item \textbf{SYM:}{Sync master, see also section~\ref{synchronization}. If multiple devices are combined, exactly one must have this bit set.} \item \textbf{PSEN:}{Port switch enable} \end{itemize} @@ -731,7 +731,7 @@ The FPGA supports synchronization of the sweep across multiple devices. This fea The synchronization works by delaying sampling until the stimulus signal is present, even when generated by another device. For each sampling stage, performs the following steps: \begin{itemize} -\item When the device generates the stimulus signal in the current phase: +\item When the device is the synchronization master (SYM bit set): \begin{itemize} \item Set up source and 1.LO PLLs \item If applicable: wait for the "resume sweep" command @@ -741,7 +741,7 @@ The synchronization works by delaying sampling until the stimulus signal is pres \item Set the trigger output to low \item Wait for low level on trigger input \end{itemize} -\item When the device does not generate the stimulus signal in the current phase: +\item When the device is the synchronization slave (SYM bit not set): \begin{itemize} \item Set 1.LO PLL \item If applicable: wait for the "resume sweep" command diff --git a/FPGA/VNA/SPIConfig.vhd b/FPGA/VNA/SPIConfig.vhd index 351a917..02077ce 100644 --- a/FPGA/VNA/SPIConfig.vhd +++ b/FPGA/VNA/SPIConfig.vhd @@ -52,6 +52,7 @@ entity SPICommands is NSAMPLES : out STD_LOGIC_VECTOR (12 downto 0); STAGES : out STD_LOGIC_VECTOR (2 downto 0); SYNC_ENABLED : out STD_LOGIC; + SYNC_MASTER : out STD_LOGIC; PORT1_STAGE : out STD_LOGIC_VECTOR (2 downto 0); PORT2_STAGE : out STD_LOGIC_VECTOR (2 downto 0); PORT1_EN : out STD_LOGIC; @@ -250,6 +251,7 @@ begin WINDOW_SETTING <= spi_buf_out(6 downto 5); SOURCE_CE_EN <= spi_buf_out(4); LO_CE_EN <= spi_buf_out(3); + SYNC_MASTER <= spi_buf_out(1); when 4 => ADC_PRESCALER <= spi_buf_out(7 downto 0); when 5 => ADC_PHASEINC <= spi_buf_out(11 downto 0); when 6 => STAGES <= spi_buf_out(15 downto 13); diff --git a/FPGA/VNA/Sweep.vhd b/FPGA/VNA/Sweep.vhd index db63133..5e08670 100644 --- a/FPGA/VNA/Sweep.vhd +++ b/FPGA/VNA/Sweep.vhd @@ -62,9 +62,12 @@ entity Sweep is SWEEP_RESUME : in STD_LOGIC; SYNC_ENABLED : in STD_LOGIC; + SYNC_MASTER : in STD_LOGIC; TRIGGER_IN : in STD_LOGIC; TRIGGER_OUT : out STD_LOGIC; + NEW_DATA : out STD_LOGIC; + ATTENUATOR : out STD_LOGIC_VECTOR(6 downto 0); SOURCE_FILTER : out STD_LOGIC_VECTOR(1 downto 0); @@ -85,7 +88,7 @@ end Sweep; architecture Behavioral of Sweep is signal point_cnt : unsigned(12 downto 0); - type Point_states is (TriggerSetup, SettingUp, Settling, WaitTriggerHigh, Exciting, WaitTriggerLow, SamplingDone, NextPoint, Done); + type Point_states is (WaitInitialLow, TriggerSetup, SettingUp, Settling, WaitTriggerHigh, Exciting, WaitTriggerLow, SamplingDone, NextPoint, Done); signal state : Point_states; signal settling_cnt : unsigned(15 downto 0); signal settling_time : unsigned(15 downto 0); @@ -153,7 +156,7 @@ begin if RESET = '1' then point_cnt <= (others => '0'); stage_cnt <= (others => '0'); - state <= WaitTriggerLow; + state <= WaitInitialLow; START_SAMPLING <= '0'; RELOAD_PLL_REGS <= '0'; SWEEP_HALTED <= '0'; @@ -164,19 +167,10 @@ begin source_active <= '0'; else case state is - when WaitTriggerLow => - if SYNC_ENABLED = '1' and (std_logic_vector(stage_cnt) = PORT1_STAGE or std_logic_vector(stage_cnt) = PORT2_STAGE) then - TRIGGER_OUT <= '0'; - end if; + when WaitInitialLow => + TRIGGER_OUT <= '0'; if TRIGGER_IN = '0' or SYNC_ENABLED = '0' then - TRIGGER_OUT <= '0'; - if stage_cnt = 0 then - -- first stage in point, need to trigger PLL setup - state <= TriggerSetup; - else - -- PLLs already configured correctly - state <= SettingUp; - end if; + state <= TriggerSetup; end if; when TriggerSetup => RELOAD_PLL_REGS <= '1'; @@ -221,7 +215,7 @@ begin else -- need to wait for the trigger state <= WaitTriggerHigh; - if SYNC_ENABLED = '1' and (std_logic_vector(stage_cnt) = PORT1_STAGE or std_logic_vector(stage_cnt) = PORT2_STAGE) then + if SYNC_MASTER = '1' then -- this device generates the stimulus signal, it needs start the trigger itself TRIGGER_OUT <= '1'; end if; @@ -238,14 +232,25 @@ begin -- wait for sampling to finish START_SAMPLING <= '0'; if SAMPLING_BUSY = '0' then + NEW_DATA <= '1'; RESULT_INDEX <= std_logic_vector(stage_cnt) & std_logic_vector(point_cnt); + state <= WaitTriggerLow; + end if; + when WaitTriggerLow => + NEW_DATA <= '0'; + if SYNC_MASTER = '1' then + TRIGGER_OUT <= '0'; + end if; + if TRIGGER_IN = '0' or SYNC_ENABLED = '0' then + TRIGGER_OUT <= '0'; state <= SamplingDone; end if; when SamplingDone => + NEW_DATA <= '0'; if stage_cnt < unsigned(STAGES) then stage_cnt <= stage_cnt + 1; -- can go directly to preperation for next stage - state <= WaitTriggerLow; + state <= Settling; else state <= NextPoint; end if; @@ -254,7 +259,7 @@ begin if point_cnt < unsigned(NPOINTS) then point_cnt <= point_cnt + 1; stage_cnt <= (others => '0'); - state <= WaitTriggerLow; + state <= TriggerSetup; else point_cnt <= (others => '0'); state <= Done; diff --git a/FPGA/VNA/VNA.gise b/FPGA/VNA/VNA.gise index 261e9bf..e406c7a 100644 --- a/FPGA/VNA/VNA.gise +++ b/FPGA/VNA/VNA.gise @@ -224,7 +224,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -275,7 +275,7 @@ - + @@ -284,7 +284,7 @@ - + @@ -298,7 +298,7 @@ - + @@ -312,8 +312,9 @@ - + + @@ -365,7 +366,7 @@ - + diff --git a/FPGA/VNA/top.bin b/FPGA/VNA/top.bin index ff682eb80a65c589f19365a3d9ef06f20191f588..6117ec7b2f70649b7daf8a61ebaa53d493659383 100644 GIT binary patch literal 341712 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 L!QDO3XcYc`oa-2) diff --git a/FPGA/VNA/top.vhd b/FPGA/VNA/top.vhd index bccf536..a719d60 100644 --- a/FPGA/VNA/top.vhd +++ b/FPGA/VNA/top.vhd @@ -139,8 +139,10 @@ architecture Behavioral of top is SWEEP_HALTED : out STD_LOGIC; SWEEP_RESUME : in STD_LOGIC; SYNC_ENABLED : in STD_LOGIC; + SYNC_MASTER : in STD_LOGIC; TRIGGER_IN : in STD_LOGIC; TRIGGER_OUT : out STD_LOGIC; + NEW_DATA : out STD_LOGIC; ATTENUATOR : OUT std_logic_vector(6 downto 0); SOURCE_FILTER : OUT std_logic_vector(1 downto 0); STAGES : in STD_LOGIC_VECTOR (2 downto 0); @@ -253,6 +255,7 @@ architecture Behavioral of top is NSAMPLES : OUT std_logic_vector(12 downto 0); STAGES : out STD_LOGIC_VECTOR (2 downto 0); SYNC_ENABLED : out STD_LOGIC; + SYNC_MASTER : out STD_LOGIC; PORT1_STAGE : out STD_LOGIC_VECTOR (2 downto 0); PORT2_STAGE : out STD_LOGIC_VECTOR (2 downto 0); PORT1_EN : out STD_LOGIC; @@ -376,6 +379,7 @@ architecture Behavioral of top is signal sweep_points : std_logic_vector(12 downto 0); signal sweep_stages : STD_LOGIC_VECTOR (2 downto 0); signal sweep_sync_enabled: STD_LOGIC; + signal sweep_sync_master : STD_LOGIC; signal sweep_port1_stage : STD_LOGIC_VECTOR (2 downto 0); signal sweep_port2_stage : STD_LOGIC_VECTOR (2 downto 0); signal sweep_config_data : std_logic_vector(95 downto 0); @@ -395,6 +399,9 @@ architecture Behavioral of top is signal sweep_excite_port1 : std_logic; signal sweep_excite_port2 : std_logic; + signal sweep_trigger_in : std_logic; + signal sweep_trigger_out : std_logic; + -- Configuration signals signal settling_time : std_logic_vector(15 downto 0); signal def_reg_4 : std_logic_vector(31 downto 0); @@ -531,7 +538,21 @@ begin CLK => clk_pll, SYNC_IN => MCU_NSS, SYNC_OUT => nss_sync - ); + ); + Sync_TRIGGER_IN : Synchronizer + GENERIC MAP(stages => 2) + PORT MAP( + CLK => clk_pll, + SYNC_IN => TRIGGER_IN, + SYNC_OUT => sweep_trigger_in + ); + Sync_TRIGGER_OUT : Synchronizer + GENERIC MAP(stages => 2) + PORT MAP( + CLK => clk_pll, + SYNC_IN => sweep_trigger_out, + SYNC_OUT => TRIGGER_OUT + ); Source: MAX2871 @@ -644,7 +665,7 @@ begin REF => ref_windowed, ADC_START => adc_trigger_sample, NEW_SAMPLE => windowing_ready, - DONE => sampling_done, + DONE => open, PRE_DONE => open, START => sampling_start, SAMPLES => sampling_samples, @@ -689,8 +710,10 @@ begin SWEEP_HALTED => sweep_halted, SWEEP_RESUME => sweep_resume, SYNC_ENABLED => sweep_sync_enabled, - TRIGGER_IN => TRIGGER_IN, - TRIGGER_OUT => TRIGGER_OUT, + SYNC_MASTER => sweep_sync_master, + TRIGGER_IN => sweep_trigger_in, + TRIGGER_OUT => sweep_trigger_out, + NEW_DATA => sampling_done, ATTENUATOR => sweep_attenuator, SOURCE_FILTER => sweep_source_filter, STAGES => sweep_stages, @@ -772,6 +795,7 @@ begin SWEEP_RESUME => sweep_resume, STAGES => sweep_stages, SYNC_ENABLED => sweep_sync_enabled, + SYNC_MASTER => sweep_sync_master, PORT1_STAGE => sweep_port1_stage, PORT2_STAGE => sweep_port2_stage, SPI_OVERWRITE_ENABLED => HW_overwrite_enabled, diff --git a/Software/PC_Application/Calibration/amplitudecaldialog.cpp b/Software/PC_Application/Calibration/amplitudecaldialog.cpp index 80912e6..503822f 100644 --- a/Software/PC_Application/Calibration/amplitudecaldialog.cpp +++ b/Software/PC_Application/Calibration/amplitudecaldialog.cpp @@ -423,8 +423,9 @@ void AmplitudeCalDialog::AutomaticMeasurementDialog() } } -void AmplitudeCalDialog::ReceivedMeasurement(Protocol::SpectrumAnalyzerResult res) +void AmplitudeCalDialog::ReceivedMeasurement(Device *dev, Protocol::SpectrumAnalyzerResult res) { + Q_UNUSED(dev) MeasurementResult m = {.port1 = Util::SparamTodB(res.port1), .port2 = Util::SparamTodB(res.port2)}; sweepMeasurements.push_back(m); if(res.pointNum == automaticSweepPoints - 1) { @@ -529,8 +530,9 @@ void AmplitudeCalDialog::SetupNextAutomaticPoint(bool isSourceCal) sweepMeasurements.reserve(automaticSweepPoints); } -void AmplitudeCalDialog::ReceivedAutomaticMeasurementResult(Protocol::SpectrumAnalyzerResult res) +void AmplitudeCalDialog::ReceivedAutomaticMeasurementResult(Device *dev, Protocol::SpectrumAnalyzerResult res) { + Q_UNUSED(dev) if(res.pointNum != automaticSweepPoints - 1) { // ignore everything except end of sweep return; diff --git a/Software/PC_Application/Calibration/amplitudecaldialog.h b/Software/PC_Application/Calibration/amplitudecaldialog.h index 531983d..fc1d48e 100644 --- a/Software/PC_Application/Calibration/amplitudecaldialog.h +++ b/Software/PC_Application/Calibration/amplitudecaldialog.h @@ -78,7 +78,7 @@ protected slots: bool AddPoint(double frequency); void AddPointDialog(); void AutomaticMeasurementDialog(); - void ReceivedMeasurement(Protocol::SpectrumAnalyzerResult res); + void ReceivedMeasurement(Device *dev, Protocol::SpectrumAnalyzerResult res); signals: void pointsUpdated(); void newPointCreated(CorrectionPoint& p); @@ -108,7 +108,7 @@ protected: CalibrationMode mode; void SetupNextAutomaticPoint(bool isSourceCal); - void ReceivedAutomaticMeasurementResult(Protocol::SpectrumAnalyzerResult res); + void ReceivedAutomaticMeasurementResult(Device *dev, Protocol::SpectrumAnalyzerResult res); struct { QDialog *dialog; std::vector points; diff --git a/Software/PC_Application/CustomWidgets/tilewidget.cpp b/Software/PC_Application/CustomWidgets/tilewidget.cpp index 2c8e1cb..452dad1 100644 --- a/Software/PC_Application/CustomWidgets/tilewidget.cpp +++ b/Software/PC_Application/CustomWidgets/tilewidget.cpp @@ -122,6 +122,15 @@ bool TileWidget::allLimitsPassing() } } +void TileWidget::setSplitPercentage(int percentage) +{ + if(!isSplit) { + return; + } + splitter->setStretchFactor(0, percentage); + splitter->setStretchFactor(1, 100 - percentage); +} + void TileWidget::splitVertically(bool moveContentToSecondChild) { if(isSplit) { diff --git a/Software/PC_Application/CustomWidgets/tilewidget.h b/Software/PC_Application/CustomWidgets/tilewidget.h index 66e385b..fd43721 100644 --- a/Software/PC_Application/CustomWidgets/tilewidget.h +++ b/Software/PC_Application/CustomWidgets/tilewidget.h @@ -32,6 +32,8 @@ public: // check potential trace limits on graphs, only returns true if all traces in all graphs are within limits bool allLimitsPassing(); + void setSplitPercentage(int percentage); + public slots: void splitVertically(bool moveContentToSecondChild = false); void splitHorizontally(bool moveContentToSecondChild = false); diff --git a/Software/PC_Application/Device/device.cpp b/Software/PC_Application/Device/device.cpp index 027dfe0..e355a8b 100644 --- a/Software/PC_Application/Device/device.cpp +++ b/Software/PC_Application/Device/device.cpp @@ -326,7 +326,6 @@ std::set Device::GetDevices() void Device::SetTrigger(bool set) { - qDebug() << "Trigger" << set << "to" << this; if(set) { SendCommandWithoutPayload(Protocol::PacketType::SetTrigger); } else { @@ -479,13 +478,13 @@ void Device::ReceivedData() dataBuffer->removeBytes(handled_len); switch(packet.type) { case Protocol::PacketType::VNADatapoint: - emit DatapointReceived(packet.VNAdatapoint); + emit DatapointReceived(this, packet.VNAdatapoint); break; case Protocol::PacketType::ManualStatusV1: emit ManualStatusReceived(packet.manualStatusV1); break; case Protocol::PacketType::SpectrumAnalyzerResult: - emit SpectrumResultReceived(packet.spectrumResult); + emit SpectrumResultReceived(this, packet.spectrumResult); break; case Protocol::PacketType::SourceCalPoint: case Protocol::PacketType::ReceiverCalPoint: @@ -500,11 +499,11 @@ void Device::ReceivedData() info = packet.info; } infoValid = true; - emit DeviceInfoUpdated(); + emit DeviceInfoUpdated(this); break; case Protocol::PacketType::DeviceStatusV1: status.v1 = packet.statusV1; - emit DeviceStatusUpdated(); + emit DeviceStatusUpdated(this); break; case Protocol::PacketType::Ack: emit AckReceived(); @@ -518,11 +517,9 @@ void Device::ReceivedData() emit FrequencyCorrectionReceived(packet.frequencyCorrection.ppm); break; case Protocol::PacketType::SetTrigger: - qDebug() << "Trigger" << true << "from" << this; emit TriggerReceived(true); break; case Protocol::PacketType::ClearTrigger: - qDebug() << "Trigger" << false << "from" << this; emit TriggerReceived(false); break; default: diff --git a/Software/PC_Application/Device/device.h b/Software/PC_Application/Device/device.h index 45a94e3..5e907be 100644 --- a/Software/PC_Application/Device/device.h +++ b/Software/PC_Application/Device/device.h @@ -78,13 +78,13 @@ public: // Returns serial numbers of all connected devices static std::set GetDevices(); signals: - void DatapointReceived(Protocol::VNADatapoint<32>*); + void DatapointReceived(Device*, Protocol::VNADatapoint<32>*); void ManualStatusReceived(Protocol::ManualStatusV1); - void SpectrumResultReceived(Protocol::SpectrumAnalyzerResult); + void SpectrumResultReceived(Device*, Protocol::SpectrumAnalyzerResult); void AmplitudeCorrectionPointReceived(Protocol::AmplitudeCorrectionPoint); void FrequencyCorrectionReceived(float ppm); - void DeviceInfoUpdated(); - void DeviceStatusUpdated(); + void DeviceInfoUpdated(Device*); + void DeviceStatusUpdated(Device*); void ConnectionLost(); void AckReceived(); void NackReceived(); diff --git a/Software/PC_Application/Device/virtualdevice.cpp b/Software/PC_Application/Device/virtualdevice.cpp index 51c690a..4668172 100644 --- a/Software/PC_Application/Device/virtualdevice.cpp +++ b/Software/PC_Application/Device/virtualdevice.cpp @@ -147,18 +147,10 @@ VirtualDevice::VirtualDevice(QString serial) connect(dev, &Device::LogLineReceived, [=](QString line){ emit LogLineReceived(line.prepend(dev->serial()+": ")); }); - connect(dev, &Device::DeviceInfoUpdated, [=](){ - compoundInfoUpdated(dev); - }); - connect(dev, &Device::DeviceStatusUpdated, [=](){ - compoundStatusUpdated(dev); - }); - connect(dev, &Device::DatapointReceived, [=](Protocol::VNADatapoint<32> *data){ - compoundDatapointReceivecd(data, dev); - }); - connect(dev, &Device::SpectrumResultReceived, [=](Protocol::SpectrumAnalyzerResult res) { - compoundSpectrumResultReceived(res, dev); - }); + connect(dev, &Device::DeviceInfoUpdated, this, &VirtualDevice::compoundInfoUpdated, Qt::QueuedConnection); + connect(dev, &Device::DeviceStatusUpdated, this, &VirtualDevice::compoundStatusUpdated, Qt::QueuedConnection); + connect(dev, &Device::DatapointReceived, this, &VirtualDevice::compoundDatapointReceivecd, Qt::QueuedConnection); + connect(dev, &Device::SpectrumResultReceived, this, &VirtualDevice::compoundSpectrumResultReceived, Qt::QueuedConnection); } if(cdev->sync == CompoundDevice::Synchronization::USB) { // create trigger connections for USB synchronization @@ -283,6 +275,7 @@ bool VirtualDevice::setVNA(const VirtualDevice::VNASettings &s, std::functionConfigure(sd, [=](Device::TransmissionResult r){ if(cb) { cb(r == Device::TransmissionResult::Ack); @@ -306,6 +299,7 @@ bool VirtualDevice::setVNA(const VirtualDevice::VNASettings &s, std::functionConfigure(sd, [=](Device::TransmissionResult r){ if(cb) { results[devices[i]] = r; @@ -342,34 +336,65 @@ bool VirtualDevice::setSA(const VirtualDevice::SASettings &s, std::functionConfigure(sd, [=](Device::TransmissionResult r){ if(cb) { cb(r == Device::TransmissionResult::Ack); } }); } else { - // TODO - return false; + // set the synchronization mode + switch(cdev->sync) { + case CompoundDevice::Synchronization::USB: sd.syncMode = 1; break; + case CompoundDevice::Synchronization::ExtRef: sd.syncMode = 2; break; + case CompoundDevice::Synchronization::Trigger: sd.syncMode = 3; break; + } + // Configure the devices + results.clear(); + bool success = true; + for(unsigned int i=0;iportMapping, i, 0) == s.trackingPort) { + sd.trackingGenerator = 1; + sd.trackingGeneratorPort = 0; + } else if(CompoundDevice::PortMapping::findActiveStage(cdev->portMapping, i, 1) == s.trackingPort) { + sd.trackingGenerator = 1; + sd.trackingGeneratorPort = 1; + } + } else { + // not used + sd.trackingGenerator = 0; + sd.trackingGeneratorPort = 0; + } + sd.syncMaster = i == 0 ? 1 : 0; + success &= devices[i]->Configure(sd, [=](Device::TransmissionResult r){ + if(cb) { + results[devices[i]] = r; + checkIfAllTransmissionsComplete(cb); + } + }); + } + return success; } } @@ -520,8 +545,9 @@ VirtualDevice *VirtualDevice::getConnected() return connected; } -void VirtualDevice::singleDatapointReceived(Protocol::VNADatapoint<32> *res) +void VirtualDevice::singleDatapointReceived(Device *dev, Protocol::VNADatapoint<32> *res) { + Q_UNUSED(dev) VNAMeasurement m; m.pointNum = res->pointNum; m.Z0 = 50.0; @@ -548,7 +574,7 @@ void VirtualDevice::singleDatapointReceived(Protocol::VNADatapoint<32> *res) emit VNAmeasurementReceived(m); } -void VirtualDevice::compoundDatapointReceivecd(Protocol::VNADatapoint<32> *data, Device *dev) +void VirtualDevice::compoundDatapointReceivecd(Device *dev, Protocol::VNADatapoint<32> *data) { if(!compoundVNABuffer.count(data->pointNum)) { compoundVNABuffer[data->pointNum] = std::map*>(); @@ -600,18 +626,25 @@ void VirtualDevice::compoundDatapointReceivecd(Protocol::VNADatapoint<32> *data, emit VNAmeasurementReceived(m); - // Clear this and all incomplete older datapoint buffers - for(auto p : compoundVNABuffer) { - for(auto d : p.second) { - delete d.second; + // Clear this and all (incomplete) older datapoint buffers + int pointNum = data->pointNum; + auto it = compoundVNABuffer.begin(); + while(it != compoundVNABuffer.end()) { + if(it->first <= pointNum) { + for(auto d : it->second) { + delete d.second; + } + it = compoundVNABuffer.erase(it); + } else { + it++; } } - compoundVNABuffer.clear(); } } -void VirtualDevice::singleSpectrumResultReceived(Protocol::SpectrumAnalyzerResult res) +void VirtualDevice::singleSpectrumResultReceived(Device *dev, Protocol::SpectrumAnalyzerResult res) { + Q_UNUSED(dev) SAMeasurement m; m.pointNum = res.pointNum; if(zerospan) { @@ -624,9 +657,47 @@ void VirtualDevice::singleSpectrumResultReceived(Protocol::SpectrumAnalyzerResul emit SAmeasurementReceived(m); } -void VirtualDevice::compoundSpectrumResultReceived(Protocol::SpectrumAnalyzerResult res, Device *dev) +void VirtualDevice::compoundSpectrumResultReceived(Device *dev, Protocol::SpectrumAnalyzerResult res) { + if(!compoundSABuffer.count(res.pointNum)) { + compoundSABuffer[res.pointNum] = std::map(); + } + auto &buf = compoundSABuffer[res.pointNum]; + buf[dev] = res; + if(buf.size() == devices.size()) { + // Got datapoints from all devices, can create merged VNA result + SAMeasurement m; + m.pointNum = res.pointNum; + if(zerospan) { + m.us = res.us; + } else { + m.frequency = res.frequency; + } + // assemble data + for(unsigned int port=0;portportMapping.size();port++) { + auto device = devices[cdev->portMapping[port].device]; + auto devicePort = cdev->portMapping[port].port; + QString name = "PORT"+QString::number(port+1); + if(devicePort == 0) { + m.measurements[name] = buf[device].port1; + } else { + m.measurements[name] = buf[device].port2; + } + } + + emit SAmeasurementReceived(m); + + // Clear this and all (incomplete) older datapoint buffers + auto it = compoundSABuffer.begin(); + while(it != compoundSABuffer.end()) { + if(it->first <= res.pointNum) { + it = compoundSABuffer.erase(it); + } else { + it++; + } + } + } } void VirtualDevice::compoundInfoUpdated(Device *dev) @@ -778,7 +849,7 @@ VirtualDevice::Info::Info(Device *dev) Limits.mindBm = (double) info.limits_cdbm_min / 100; Limits.maxdBm = (double) info.limits_cdbm_max / 100; Limits.minRBW = info.limits_minRBW; - Limits.maxRBW = info.limits_minRBW; + Limits.maxRBW = info.limits_maxRBW; } void VirtualDevice::Info::subset(const VirtualDevice::Info &merge) diff --git a/Software/PC_Application/Device/virtualdevice.h b/Software/PC_Application/Device/virtualdevice.h index ff57d96..a922e95 100644 --- a/Software/PC_Application/Device/virtualdevice.h +++ b/Software/PC_Application/Device/virtualdevice.h @@ -141,7 +141,6 @@ public: struct { // for non-zero span double frequency; - double cdbm; }; struct { // for zero span @@ -184,10 +183,10 @@ signals: void NeedsFirmwareUpdate(int usedProtocol, int requiredProtocol); private slots: - void singleDatapointReceived(Protocol::VNADatapoint<32> *res); - void compoundDatapointReceivecd(Protocol::VNADatapoint<32> *data, Device *dev); - void singleSpectrumResultReceived(Protocol::SpectrumAnalyzerResult res); - void compoundSpectrumResultReceived(Protocol::SpectrumAnalyzerResult res, Device *dev); + void singleDatapointReceived(Device *dev, Protocol::VNADatapoint<32> *res); + void compoundDatapointReceivecd(Device *dev, Protocol::VNADatapoint<32> *data); + void singleSpectrumResultReceived(Device *dev, Protocol::SpectrumAnalyzerResult res); + void compoundSpectrumResultReceived(Device *dev, Protocol::SpectrumAnalyzerResult res); void compoundInfoUpdated(Device *dev); void compoundStatusUpdated(Device *dev); private: diff --git a/Software/PC_Application/Generator/generator.cpp b/Software/PC_Application/Generator/generator.cpp index a2d1127..b7d1c81 100644 --- a/Software/PC_Application/Generator/generator.cpp +++ b/Software/PC_Application/Generator/generator.cpp @@ -53,6 +53,11 @@ void Generator::fromJSON(nlohmann::json j) central->fromJSON(j); } +void Generator::preset() +{ + +} + void Generator::updateDevice() { if(!window->getDevice() || isActive != true) { diff --git a/Software/PC_Application/Generator/generator.h b/Software/PC_Application/Generator/generator.h index 456aeee..4dc0aff 100644 --- a/Software/PC_Application/Generator/generator.h +++ b/Software/PC_Application/Generator/generator.h @@ -21,6 +21,8 @@ public: void setAveragingMode(Averaging::Mode mode) override {Q_UNUSED(mode)} + void preset() override; + private slots: void updateDevice(); diff --git a/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp b/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp index a912b71..43c1f72 100644 --- a/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp +++ b/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp @@ -60,20 +60,7 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window, QString name) traceModel.setSource(TraceModel::DataSource::SA); // Create default traces - auto tPort1 = new Trace("Port1", Qt::yellow); - tPort1->fromLivedata(Trace::LivedataType::Overwrite, "PORT1"); - traceModel.addTrace(tPort1); - auto tPort2 = new Trace("Port2", Qt::blue); - tPort2->fromLivedata(Trace::LivedataType::Overwrite, "PORT2"); - traceModel.addTrace(tPort2); - - auto traceXY = new TraceXYPlot(traceModel); - traceXY->enableTrace(tPort1, true); - traceXY->enableTrace(tPort2, true); - traceXY->setYAxis(0, YAxis::Type::Magnitude, false, false, -120,0,10); - traceXY->setYAxis(1, YAxis::Type::Disabled, false, true, 0,0,1); - - central->setPlot(traceXY); + preset(); // Create menu entries and connections // Sweep toolbar @@ -1153,11 +1140,42 @@ void SpectrumAnalyzer::StoreSweepSettings() s.setValue("SASignalID", static_cast(settings.signalID)); } +void SpectrumAnalyzer::createDefaultTracesAndGraphs(int ports) +{ + central->clear(); + auto traceXY = new TraceXYPlot(traceModel); + traceXY->setYAxis(0, YAxis::Type::Magnitude, false, false, -120,0,10); + traceXY->setYAxis(1, YAxis::Type::Disabled, false, true, 0,0,1); + traceXY->updateSpan(settings.freqStart, settings.freqStop); + + central->setPlot(traceXY); + + QColor defaultColors[] = {Qt::yellow, Qt::blue, Qt::red, Qt::green, Qt::gray, Qt::cyan, Qt::magenta, Qt::white}; + + for(int i=0;ienableTrace(trace, true); + } +} + void SpectrumAnalyzer::setAveragingMode(Averaging::Mode mode) { average.setMode(mode); } +void SpectrumAnalyzer::preset() +{ + for(auto t : traceModel.getTraces()) { + if(Trace::isSAParameter(t->name())) { + traceModel.removeTrace(t); + } + } + // Create default traces + createDefaultTracesAndGraphs(VirtualDevice::getInfo(window->getDevice()).ports); +} + QString SpectrumAnalyzer::WindowToString(VirtualDevice::SASettings::Window w) { switch(w) { diff --git a/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.h b/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.h index a1237d2..4cea860 100644 --- a/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.h +++ b/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.h @@ -31,6 +31,7 @@ public: void updateGraphColors(); void setAveragingMode(Averaging::Mode mode) override; + void preset() override; private: static QString WindowToString(VirtualDevice::SASettings::Window w); @@ -74,6 +75,8 @@ private: void LoadSweepSettings(); void StoreSweepSettings(); + void createDefaultTracesAndGraphs(int ports); + VirtualDevice::SASettings settings; bool changingSettings; unsigned int averages; diff --git a/Software/PC_Application/Traces/tracemodel.cpp b/Software/PC_Application/Traces/tracemodel.cpp index 13f87c7..dcb3ece 100644 --- a/Software/PC_Application/Traces/tracemodel.cpp +++ b/Software/PC_Application/Traces/tracemodel.cpp @@ -48,11 +48,29 @@ void TraceModel::removeTrace(unsigned int index) } } +void TraceModel::removeTrace(Trace *t) +{ + auto index = findIndex(t); + if(index >= 0) { + removeTrace(index); + } +} + Trace *TraceModel::trace(unsigned int index) { return traces.at(index); } +int TraceModel::findIndex(Trace *t) +{ + for(int i=0;ifromLivedata(Trace::LivedataType::Overwrite, "S11"); - traceModel.addTrace(tS11); - auto tS12 = new Trace("S12", Qt::blue); - tS12->fromLivedata(Trace::LivedataType::Overwrite, "S12"); - traceModel.addTrace(tS12); - auto tS21 = new Trace("S21", Qt::green); - tS21->fromLivedata(Trace::LivedataType::Overwrite, "S21"); - traceModel.addTrace(tS21); - auto tS22 = new Trace("S22", Qt::red); - tS22->fromLivedata(Trace::LivedataType::Overwrite, "S22"); - traceModel.addTrace(tS22); - - auto tracesmith1 = new TraceSmithChart(traceModel); - tracesmith1->enableTrace(tS11, true); - - auto tracesmith2 = new TraceSmithChart(traceModel); - tracesmith2->enableTrace(tS22, true); - - auto traceXY1 = new TraceXYPlot(traceModel); - traceXY1->enableTrace(tS12, true); - auto traceXY2 = new TraceXYPlot(traceModel); - traceXY2->enableTrace(tS21, true); + createDefaultTracesAndGraphs(2); connect(&traceModel, &TraceModel::requiredExcitation, this, &VNA::ExcitationRequired); - central->splitVertically(); - central->Child1()->splitHorizontally(); - central->Child2()->splitHorizontally(); - central->Child1()->Child1()->setPlot(tracesmith1); - central->Child1()->Child2()->setPlot(traceXY1); - central->Child2()->Child1()->setPlot(traceXY2); - central->Child2()->Child2()->setPlot(tracesmith2); - // Create menu entries and connections auto calMenu = new QMenu("Calibration", window); window->menuBar()->insertMenu(window->getUi()->menuWindow->menuAction(), calMenu); @@ -924,7 +894,7 @@ void VNA::SettingsChanged(bool resetTraces, std::function cb) // assemble VNA protocol settings VirtualDevice::VNASettings s = {}; s.IFBW = settings.bandwidth; - if(Preferences::getInstance().Acquisition.alwaysExciteBothPorts) { + if(Preferences::getInstance().Acquisition.alwaysExciteAllPorts) { for(int i=0;igetDevice()).ports;i++) { s.excitedPorts.push_back(i); } @@ -1183,7 +1153,7 @@ void VNA::SetAveraging(unsigned int averages) void VNA::ExcitationRequired() { - if(!Preferences::getInstance().Acquisition.alwaysExciteBothPorts) { + if(!Preferences::getInstance().Acquisition.alwaysExciteAllPorts) { for(int i=1;igetDevice()).ports;i++) { auto required = traceModel.PortExcitationRequired(i); auto set = find(settings.excitedPorts.begin(), settings.excitedPorts.end(), i) != settings.excitedPorts.end(); @@ -1624,6 +1594,92 @@ void VNA::UpdateCalWidget() calLabel->setToolTip(getCalToolTip()); } +void VNA::createDefaultTracesAndGraphs(int ports) +{ + auto getDefaultColor = [](int ports, int i, int j)->QColor { + // Default colors for up to four ports, ensures that e.g. S21 always has the same color + const array, 4> defaultColors = {{ + {Qt::yellow}, + {Qt::yellow, Qt::blue, Qt::green, Qt::red}, + {Qt::yellow, Qt::blue, Qt::cyan, Qt::green, Qt::red, Qt::darkGreen, Qt::darkBlue, Qt::darkYellow, Qt::magenta}, + {Qt::yellow, Qt::blue, Qt::cyan, Qt::darkCyan, Qt::green, Qt::red, Qt::darkGreen, Qt::gray, Qt::darkBlue, Qt::darkYellow, Qt::magenta, Qt::darkMagenta, Qt::cyan, Qt::darkGray, Qt::lightGray, Qt::darkRed}, + }}; + + if(ports >= 1 && ports <= 4) { + return defaultColors[ports-1][i*ports+j]; + } else { + // not enough predefined colors available for all ports, just cycle through list + const array list = {{ + Qt::yellow, Qt::blue, Qt::green, Qt::red, Qt::cyan, Qt::magenta, Qt::yellow, Qt::darkRed, Qt::darkGreen, Qt::darkBlue, Qt::gray, Qt::darkCyan, Qt::darkMagenta, Qt::darkYellow, Qt::darkGray, Qt::lightGray + }}; + auto index = (i*ports+j) % list.size(); + return list[index]; + } + }; + + vector> plots; + for(int i=0;i()); + for(int j=0;jupdateSpan(settings.Freq.start, settings.Freq.stop); + plot->enableTrace(trace, true); + plots[i].push_back(plot); + } + } + // Add created graphs to tiles + central->clear(); + TileWidget *tile = central; + for(int i=0;isplitVertically(); + row = tile->Child1(); + tile = tile->Child2(); + } else { + row = tile; + } + for(int j=0;jsplitHorizontally(); + graphTile = row->Child1(); + row = row->Child2(); + } else { + graphTile = row; + } + graphTile->setPlot(plots[i][j]); + } + } + if(ports >= 3) { + // default split at the middle does not result in all plots being the same size, adjust + tile = central; + for(int i=0;isetSplitPercentage(100 / (ports - i)); + rowTile = tile->Child1(); + } else { + rowTile = tile; + } + for(int j=0;jsetSplitPercentage(100 / (ports - j)); + rowTile = rowTile->Child2(); + } + tile = tile->Child2(); + } + } +} + void VNA::EnableDeembedding(bool enable) { deembedding_active = enable; @@ -1637,6 +1693,17 @@ void VNA::setAveragingMode(Averaging::Mode mode) average.setMode(mode); } +void VNA::preset() +{ + for(auto t : traceModel.getTraces()) { + if(Trace::isVNAParameter(t->name())) { + traceModel.removeTrace(t); + } + } + // Create default traces + createDefaultTracesAndGraphs(VirtualDevice::getInfo(window->getDevice()).ports); +} + QString VNA::SweepTypeToString(VNA::SweepType sw) { switch(sw) { diff --git a/Software/PC_Application/VNA/vna.h b/Software/PC_Application/VNA/vna.h index 3067b70..250a1bc 100644 --- a/Software/PC_Application/VNA/vna.h +++ b/Software/PC_Application/VNA/vna.h @@ -33,6 +33,8 @@ public: void updateGraphColors(); void setAveragingMode(Averaging::Mode mode) override; + void preset() override; + enum class SweepType { Frequency = 0, Power = 1, @@ -121,6 +123,8 @@ private: void StopSweep(); void StartCalibrationDialog(Calibration::Type type = Calibration::Type::None); void UpdateCalWidget(); + + void createDefaultTracesAndGraphs(int ports); private slots: void EnableDeembedding(bool enable); void UpdateStatusbar(); diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp index 7530f3f..5f6a7cb 100644 --- a/Software/PC_Application/appwindow.cpp +++ b/Software/PC_Application/appwindow.cpp @@ -236,6 +236,11 @@ void AppWindow::SetupMenu() connect(ui->actionSource_Calibration, &QAction::triggered, this, &AppWindow::SourceCalibrationDialog); connect(ui->actionReceiver_Calibration, &QAction::triggered, this, &AppWindow::ReceiverCalibrationDialog); connect(ui->actionFrequency_Calibration, &QAction::triggered, this, &AppWindow::FrequencyCalibrationDialog); + + connect(ui->actionPreset, &QAction::triggered, [=](){ + modeHandler->getActiveMode()->preset(); + }); + connect(ui->actionPreferences, &QAction::triggered, [=](){ // save previous SCPI settings in case they change auto &p = Preferences::getInstance(); @@ -338,6 +343,7 @@ bool AppWindow::ConnectToDevice(QString serial) ui->actionReceiver_Calibration->setEnabled(true); ui->actionFrequency_Calibration->setEnabled(true); } + ui->actionPreset->setEnabled(true); UpdateAcquisitionFrequencies(); @@ -368,6 +374,7 @@ void AppWindow::DisconnectDevice() ui->actionSource_Calibration->setEnabled(false); ui->actionReceiver_Calibration->setEnabled(false); ui->actionFrequency_Calibration->setEnabled(false); + ui->actionPreset->setEnabled(false); for(auto a : deviceActionGroup->actions()) { a->setChecked(false); } diff --git a/Software/PC_Application/main.ui b/Software/PC_Application/main.ui index 5402d31..cf71388 100644 --- a/Software/PC_Application/main.ui +++ b/Software/PC_Application/main.ui @@ -82,8 +82,15 @@ + + + View + + + + @@ -209,6 +216,14 @@ Frequency Calibration + + + false + + + Preset + + diff --git a/Software/PC_Application/mode.h b/Software/PC_Application/mode.h index 43213c3..2d20f6d 100644 --- a/Software/PC_Application/mode.h +++ b/Software/PC_Application/mode.h @@ -43,6 +43,8 @@ public: virtual void setAveragingMode(Averaging::Mode mode) = 0; + virtual void preset() = 0; + signals: void statusbarMessage(QString msg); protected: diff --git a/Software/PC_Application/preferences.cpp b/Software/PC_Application/preferences.cpp index b33ea87..20c3988 100644 --- a/Software/PC_Application/preferences.cpp +++ b/Software/PC_Application/preferences.cpp @@ -138,6 +138,10 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) : auto index = ui->compoundList->currentRow(); if(index >= 0 && index < p->compoundDevices.size()) { auto d = new CompoundDeviceEditDialog(p->compoundDevices[index]); + connect(d, &QDialog::accepted, [=](){ + ui->compoundList->item(index)->setText(p->compoundDevices[index]->getDesription()); + p->nonTrivialWriting(); + }); d->show(); } }); @@ -276,7 +280,7 @@ void PreferencesDialog::setInitialGUIState() ui->StartupSAAveraging->setValue(p->Startup.SA.averaging); ui->StartupSASignalID->setChecked(p->Startup.SA.signalID); - ui->AcquisitionAlwaysExciteBoth->setChecked(p->Acquisition.alwaysExciteBothPorts); + ui->AcquisitionAlwaysExciteBoth->setChecked(p->Acquisition.alwaysExciteAllPorts); ui->AcquisitionSuppressPeaks->setChecked(p->Acquisition.suppressPeaks); ui->AcquisitionAdjustPowerLevel->setChecked(p->Acquisition.adjustPowerLevel); ui->AcquisitionUseHarmonic->setChecked(p->Acquisition.harmonicMixing); @@ -346,7 +350,7 @@ void PreferencesDialog::updateFromGUI() p->Startup.SA.detector = ui->StartupSADetector->currentIndex(); p->Startup.SA.signalID = ui->StartupSASignalID->isChecked(); - p->Acquisition.alwaysExciteBothPorts = ui->AcquisitionAlwaysExciteBoth->isChecked(); + p->Acquisition.alwaysExciteAllPorts = ui->AcquisitionAlwaysExciteBoth->isChecked(); p->Acquisition.suppressPeaks = ui->AcquisitionSuppressPeaks->isChecked(); p->Acquisition.adjustPowerLevel = ui->AcquisitionAdjustPowerLevel->isChecked(); p->Acquisition.harmonicMixing = ui->AcquisitionUseHarmonic->isChecked(); @@ -379,6 +383,8 @@ void PreferencesDialog::updateFromGUI() p->SCPIServer.enabled = ui->SCPIServerEnabled->isChecked(); p->SCPIServer.port = ui->SCPIServerPort->value(); + + p->nonTrivialWriting(); } void Preferences::load() diff --git a/Software/PC_Application/preferences.h b/Software/PC_Application/preferences.h index b859bd2..1699e9f 100644 --- a/Software/PC_Application/preferences.h +++ b/Software/PC_Application/preferences.h @@ -83,7 +83,7 @@ public: } SA; } Startup; struct { - bool alwaysExciteBothPorts; + bool alwaysExciteAllPorts; bool suppressPeaks; bool adjustPowerLevel; bool harmonicMixing; @@ -145,7 +145,9 @@ public: private: Preferences() : - TCPoverride(false) {} + TCPoverride(false) { + qDebug() << "Pref constructor: " << &compoundDeviceJSON; + } static Preferences instance; const std::vector descr = {{ @@ -174,7 +176,7 @@ private: {&Startup.SA.detector, "Startup.SA.detector", 0}, {&Startup.SA.averaging, "Startup.SA.averaging", 1}, {&Startup.SA.signalID, "Startup.SA.signalID", true}, - {&Acquisition.alwaysExciteBothPorts, "Acquisition.alwaysExciteBothPorts", true}, + {&Acquisition.alwaysExciteAllPorts, "Acquisition.alwaysExciteBothPorts", true}, {&Acquisition.suppressPeaks, "Acquisition.suppressPeaks", true}, {&Acquisition.adjustPowerLevel, "Acquisition.adjustPowerLevel", false}, {&Acquisition.harmonicMixing, "Acquisition.harmonicMixing", false}, diff --git a/Software/PC_Application/preferencesdialog.ui b/Software/PC_Application/preferencesdialog.ui index f8bf760..f7fa1a9 100644 --- a/Software/PC_Application/preferencesdialog.ui +++ b/Software/PC_Application/preferencesdialog.ui @@ -84,7 +84,7 @@ 0 0 687 - 884 + 938 @@ -103,7 +103,7 @@ - 5 + 1 @@ -714,7 +714,7 @@ <html><head/><body><p>If only S11/S21 or S22/S12 are enabled, faster sweeps are possible by only exciting one port. Checking this option forces the device to always excite both ports even when the measurements from one port will not be used.</p></body></html> - Always perform full 2-port measurement + Always create the stimulus signal at all ports diff --git a/Software/VNA_embedded/Application/App.cpp b/Software/VNA_embedded/Application/App.cpp index 6c48ed2..adfd421 100644 --- a/Software/VNA_embedded/Application/App.cpp +++ b/Software/VNA_embedded/Application/App.cpp @@ -305,10 +305,6 @@ inline void App_Process() { } } if(HW::TimedOut()) { - vTaskDelay(1000); - LOG_WARN("Timed out, FPGA status: 0x%04x", FPGA::GetStatus()); - vTaskDelay(1000); - LOG_WARN("Trigger out: %d (last reported: %d), in: %d", (uint8_t) Trigger::GetOutput(), (uint8_t) lastReportedTrigger, (uint8_t) Trigger::GetInput()); HW::SetMode(HW::Mode::Idle); // insert the last received packet (restarts the timed out operation) Communication::BlockNextAck(); diff --git a/Software/VNA_embedded/Application/Communication/Protocol.hpp b/Software/VNA_embedded/Application/Communication/Protocol.hpp index abb9992..803eeb3 100644 --- a/Software/VNA_embedded/Application/Communication/Protocol.hpp +++ b/Software/VNA_embedded/Application/Communication/Protocol.hpp @@ -130,7 +130,8 @@ using SweepSettings = struct _sweepSettings { uint16_t points; uint32_t if_bandwidth; int16_t cdbm_excitation_start; // in 1/100 dbm - uint16_t unused:2; + uint16_t unused:1; + uint16_t syncMaster:1; uint16_t suppressPeaks:1; uint16_t fixedPowerSetting:1; // if set the attenuator and source PLL power will not be changed across the sweep uint16_t logSweep:1; @@ -258,6 +259,7 @@ using SpectrumAnalyzerSettings = struct _spectrumAnalyzerSettings { * 3: Trigger synchronization (not supported yet by hardware) */ uint8_t syncMode :2; + uint8_t syncMaster :1; int64_t trackingGeneratorOffset; int16_t trackingPower; }; diff --git a/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp b/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp index 3f184fe..0f95cd9 100644 --- a/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp +++ b/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp @@ -130,7 +130,7 @@ void FPGA::SetSamplesPerPoint(uint32_t nsamples) { WriteRegister(Reg::SamplesPerPoint, nsamples); } -void FPGA::SetupSweep(uint8_t stages, uint8_t port1_stage, uint8_t port2_stage, bool synchronize) { +void FPGA::SetupSweep(uint8_t stages, uint8_t port1_stage, uint8_t port2_stage, bool synchronize, bool syncMaster) { uint16_t value = 0x0000; value |= (uint16_t) (stages & 0x07) << 13; if(synchronize) { @@ -139,6 +139,7 @@ void FPGA::SetupSweep(uint8_t stages, uint8_t port1_stage, uint8_t port2_stage, value |= (port1_stage & 0x07) << 3; value |= (port2_stage & 0x07) << 0; WriteRegister(Reg::SweepSetup, value); + Enable(Periphery::SyncMaster, syncMaster); } void FPGA::Enable(Periphery p, bool enable) { diff --git a/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp b/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp index 80487dc..f356f83 100644 --- a/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp +++ b/Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp @@ -61,7 +61,7 @@ enum class Periphery { DebugLED = 0x0080, SourceChip = 0x0010, LO1Chip = 0x0008, - + SyncMaster = 0x0002, PortSwitch = 0x0001, }; @@ -114,7 +114,7 @@ bool Init(HaltedCallback cb = nullptr); void WriteRegister(FPGA::Reg reg, uint16_t value); void SetNumberOfPoints(uint16_t npoints); void SetSamplesPerPoint(uint32_t nsamples); -void SetupSweep(uint8_t stages, uint8_t port1_stage, uint8_t port2_stage, bool synchronize = false); +void SetupSweep(uint8_t stages, uint8_t port1_stage, uint8_t port2_stage, bool synchronize = false, bool syncMaster = false); void Enable(Periphery p, bool enable = true); void Disable(Periphery p); bool IsEnabled(Periphery p); diff --git a/Software/VNA_embedded/Application/Hardware.cpp b/Software/VNA_embedded/Application/Hardware.cpp index 3b00427..9f4fa8f 100644 --- a/Software/VNA_embedded/Application/Hardware.cpp +++ b/Software/VNA_embedded/Application/Hardware.cpp @@ -9,6 +9,7 @@ #include "delay.hpp" #include "SpectrumAnalyzer.hpp" #include "Communication.h" +#include "Trigger.hpp" #include #define LOG_LEVEL LOG_LEVEL_INFO @@ -230,6 +231,7 @@ bool HW::GetTemps(uint8_t *source, uint8_t *lo) { void HW::SetIdle() { unlevel = false; + Trigger::SetInput(false); FPGA::AbortSweep(); FPGA::SetMode(FPGA::Mode::FPGA); FPGA::DisableHardwareOverwrite(); diff --git a/Software/VNA_embedded/Application/Led.cpp b/Software/VNA_embedded/Application/Led.cpp index 8228482..82695d6 100644 --- a/Software/VNA_embedded/Application/Led.cpp +++ b/Software/VNA_embedded/Application/Led.cpp @@ -87,8 +87,8 @@ void LED::Init() { #if HW_REVISION == 'B' led_ncnt = 0; mode = Mode::Off; - HAL_TIM_Base_Start(&htim2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); +// HAL_TIM_Base_Start(&htim2); +// HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); LedStatusHandle = xTaskCreateStatic(LedStatus, "LedStatusTask", LED_STATUS_TASK_STACK_SIZE_WORDS, NULL, 6, LedStatusStack, &LedStatusCB); @@ -132,3 +132,11 @@ void LED::Error(uint8_t code) { vTaskResume(LedStatusHandle); #endif } + +void LED::On() { + GPIOA->BSRR = GPIO_PIN_15; +} + +void LED::Toggle() { + GPIOA->ODR ^= GPIO_PIN_15; +} diff --git a/Software/VNA_embedded/Application/Led.hpp b/Software/VNA_embedded/Application/Led.hpp index 0e0b361..774036a 100644 --- a/Software/VNA_embedded/Application/Led.hpp +++ b/Software/VNA_embedded/Application/Led.hpp @@ -9,4 +9,7 @@ void Pulsating(); void Off(); void Error(uint8_t code); +void On(); +void Toggle(); + } diff --git a/Software/VNA_embedded/Application/SpectrumAnalyzer.cpp b/Software/VNA_embedded/Application/SpectrumAnalyzer.cpp index 8bebd54..1bb2033 100644 --- a/Software/VNA_embedded/Application/SpectrumAnalyzer.cpp +++ b/Software/VNA_embedded/Application/SpectrumAnalyzer.cpp @@ -225,7 +225,7 @@ void SA::Setup(Protocol::SpectrumAnalyzerSettings settings) { FPGA::SetWindow((FPGA::Window) s.WindowType); FPGA::Enable(FPGA::Periphery::LO1Chip); FPGA::Enable(FPGA::Periphery::LO1RF); - FPGA::SetupSweep(0, s.trackingGeneratorPort == 1, s.trackingGeneratorPort == 0, s.syncMode != 0); + FPGA::SetupSweep(0, s.trackingGeneratorPort == 1, s.trackingGeneratorPort == 0, s.syncMode != 0, s.syncMaster); FPGA::Enable(FPGA::Periphery::PortSwitch, s.trackingGenerator); FPGA::Enable(FPGA::Periphery::Amplifier, s.trackingGenerator); FPGA::Enable(FPGA::Periphery::Port1Mixer); diff --git a/Software/VNA_embedded/Application/VNA.cpp b/Software/VNA_embedded/Application/VNA.cpp index 8c75c18..9b146ea 100644 --- a/Software/VNA_embedded/Application/VNA.cpp +++ b/Software/VNA_embedded/Application/VNA.cpp @@ -279,7 +279,7 @@ bool VNA::Setup(Protocol::SweepSettings s) { FPGA::Enable(FPGA::Periphery::SourceRF); FPGA::Enable(FPGA::Periphery::LO1Chip); FPGA::Enable(FPGA::Periphery::LO1RF); - FPGA::SetupSweep(s.stages, s.port1Stage, s.port2Stage, s.syncMode != 0); + FPGA::SetupSweep(s.stages, s.port1Stage, s.port2Stage, s.syncMode != 0, s.syncMaster); Trigger::SetMode((Trigger::Mode) s.syncMode); FPGA::Enable(FPGA::Periphery::PortSwitch); pointCnt = 0; diff --git a/Software/VNA_embedded/VNA_embedded.ioc b/Software/VNA_embedded/VNA_embedded.ioc index 1a13187..be31ef2 100644 --- a/Software/VNA_embedded/VNA_embedded.ioc +++ b/Software/VNA_embedded/VNA_embedded.ioc @@ -405,7 +405,7 @@ SPI2.VirtualType=VM_MASTER TIM1.IPParameters=Prescaler TIM1.Prescaler=159 TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 -TIM2.IPParameters=Channel-PWM Generation1 CH1,Prescaler,PeriodNoDither,OCMode_PWM-PWM Generation1 CH1 +TIM2.IPParameters=Prescaler,PeriodNoDither,Channel-PWM Generation1 CH1,OCMode_PWM-PWM Generation1 CH1 TIM2.OCMode_PWM-PWM\ Generation1\ CH1=TIM_OCMODE_PWM2 TIM2.PeriodNoDither=99 TIM2.Prescaler=143