From 78b271247c1fd72247374a4bca7b253ff97d4a42 Mon Sep 17 00:00:00 2001 From: ti_mo Date: Wed, 3 Jun 2026 19:46:31 +0200 Subject: [PATCH] i think that this is nearly the beginning of task 1 --- lab_4/calc_doppler_freq.m | 3 + lab_4/create_baseline_configuration.m | 75 ++++++++++++++++++++ lab_4/lab_4.m | 43 +++++++++++ lab_4/link_level_measurements.md | 4 ++ lab_4/normalized_carrier_frequency_offset.m | 3 + lab_4/simulateTransmission.m | 72 +++++++++++++++++++ tasks/04-wifi-ntn.pdf | Bin 283773 -> 498140 bytes 7 files changed, 200 insertions(+) create mode 100644 lab_4/calc_doppler_freq.m create mode 100644 lab_4/create_baseline_configuration.m create mode 100644 lab_4/link_level_measurements.md create mode 100644 lab_4/normalized_carrier_frequency_offset.m create mode 100644 lab_4/simulateTransmission.m diff --git a/lab_4/calc_doppler_freq.m b/lab_4/calc_doppler_freq.m new file mode 100644 index 0000000..c8736f1 --- /dev/null +++ b/lab_4/calc_doppler_freq.m @@ -0,0 +1,3 @@ +function result = calc_doppler_freq(rrv, carrier_freq) + result = rrv * carrier_freq / physconst('LightSpeed'); +end \ No newline at end of file diff --git a/lab_4/create_baseline_configuration.m b/lab_4/create_baseline_configuration.m new file mode 100644 index 0000000..dd21a9f --- /dev/null +++ b/lab_4/create_baseline_configuration.m @@ -0,0 +1,75 @@ +function [cfgEHT, simParameters, channel, chInfo, maxChDelay, satelliteDopplerShift, chanBW] = create_baseline_configuration(profile, ... + bandwidth_mhz, ... + include_free_space_pathloss, ... + delay_model, ... + carrier_frequency, ... + elevation_angle, ... + mobile_speed, ... + mobile_altitude, ... + satellite_altitude, ... + random_stream, ... + seed, ... + tx_antenna_count, ... + rx_antenna_count, ... + apep, ... + mcs) + + switch bandwidth_mhz + case 20 + chanBW = 'CBW20'; + case 40 + chanBW = 'CBW40'; + case 80 + chanBW = 'CBW80'; + case 160 + chanBW = 'CBW160'; + case 320 + chanBW = 'CBW320'; + otherwise + error("Not supported bandwidth!"); + end + + cfgEHT = wlanEHTMUConfig(chanBW); + cfgEHT.User{1}.APEPLength = apep; + cfgEHT.NumTransmitAntennas = tx_antenna_count; + cfgEHT.User{1}.NumSpaceTimeStreams = 1; + cfgEHT.User{1}.MCS = mcs; + fs = wlanSampleRate(chanBW); + + simParameters.IncludeFreeSpacePathLoss = include_free_space_pathloss; + simParameters.DelayModel = delay_model; + simParameters.CarrierFrequency = carrier_frequency; + simParameters.ElevationAngle = elevation_angle; + simParameters.MobileSpeed = mobile_speed; + simParameters.MobileAltitude = mobile_altitude; + simParameters.SatelliteAltitude = satellite_altitude; + simParameters.SampleRate = fs; + simParameters.RandomStream = random_stream; + simParameters.Seed = seed; + simParameters.NumTransmitAntennas = tx_antenna_count; + simParameters.NumReceiveAntennas = rx_antenna_count; + + simParameters.NTNChannelType = "TDL"; + simParameters.DelayProfile = "NTN-TDL-" + profile; + simParameters.DelaySpread = 30e-9; + + c = physconst("lightspeed"); + satelliteDopplerShift = dopplerShiftCircularOrbit( ... + simParameters.ElevationAngle,simParameters.SatelliteAltitude, ... + simParameters.MobileAltitude,simParameters.CarrierFrequency); + + channel = nrTDLChannel; + channel.DelayProfile = simParameters.DelayProfile; + channel.DelaySpread = simParameters.DelaySpread; + channel.SatelliteDopplerShift = satelliteDopplerShift; + channel.MaximumDopplerShift = simParameters.MobileSpeed*simParameters.CarrierFrequency/c; + channel.NumTransmitAntennas = simParameters.NumTransmitAntennas; + channel.NumReceiveAntennas = simParameters.NumReceiveAntennas; + + channel.SampleRate = simParameters.SampleRate; + channel.RandomStream = simParameters.RandomStream; + channel.Seed = simParameters.Seed; + + chInfo = info(channel); + maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) + chInfo.ChannelFilterDelay; +end \ No newline at end of file diff --git a/lab_4/lab_4.m b/lab_4/lab_4.m index e69de29..19dfff1 100644 --- a/lab_4/lab_4.m +++ b/lab_4/lab_4.m @@ -0,0 +1,43 @@ +carrier_frequency = 2.4e9; +wifi_be_subcarrier_spacing = 78.125e3; +leo_altitude = 600e3; +bandwidth = 20; +mcs = 2; +apep = 1000; +tx_antenna_count = 1; +rx_antenna_count = 1; + +elevation_angle = 50; + +random_stream = "mt19937ar with seed"; +seed = 666; + +ntn_tdl_delay_profiles = ["A" "B" "C" "D"]; + +[cfgEHT, simParameters, channel, chInfo, maxChDelay, satelliteDopplerShift, chanBW] = ... + create_baseline_configuration(ntn_tdl_delay_profiles(3), bandwidth, false, "None", ... + carrier_frequency, elevation_angle, 0, ... + 0, leo_altitude, random_stream, ... + seed, tx_antenna_count, ... + rx_antenna_count, apep, mcs); + +normalized_cfo = satelliteDopplerShift / wifi_be_subcarrier_spacing; + +disp("Channel Info: ") +disp(chInfo) +disp("Satellite Doppler Shift: " + satelliteDopplerShift) +disp("Normalized CFO: " + normalized_cfo) + + +snrs = (0:1:40); +packets_per_snr = 250; +maxNumErrors = 10; + +errorCounts = zeros(size(snrs)); +for snrIndex = 1:length(snrs) + errorCounts(snrIndex) = simulateTransmission(cfgEHT, channel, snrs(snrIndex), packets_per_snr, maxNumErrors, simParameters, chanBW, snrIndex); +end + +errorRate = errorCounts / packets_per_snr; + +disp("ErrorRatePerSNR: " + errorRate); diff --git a/lab_4/link_level_measurements.md b/lab_4/link_level_measurements.md new file mode 100644 index 0000000..6578e57 --- /dev/null +++ b/lab_4/link_level_measurements.md @@ -0,0 +1,4 @@ +> This PDF will be a bit more 'well defined' + +## Task1 +For the baseline configuration with f_c = 2.4GHz, LEO altitude 600km, elevation angle 50° (like example), and static receiver, the computed satellite Doppler shift is approximately 35.56kHz. With the IEEE 802.11be subcarrier spacing of 78.125kHz, this corresponds to a normalized CFO of \epsilon \approx 0.455. Therefore, the Doppler shift is below one subcarrier spacing but still represents a significant fraction of the OFDM subcarrier spacing. diff --git a/lab_4/normalized_carrier_frequency_offset.m b/lab_4/normalized_carrier_frequency_offset.m new file mode 100644 index 0000000..db4e0d9 --- /dev/null +++ b/lab_4/normalized_carrier_frequency_offset.m @@ -0,0 +1,3 @@ +function result = normalized_carrier_frequency_offset(freq_doppler, delta_freq_subcarrier) + result = freq_doppler / delta_freq_subcarrier; +end \ No newline at end of file diff --git a/lab_4/simulateTransmission.m b/lab_4/simulateTransmission.m new file mode 100644 index 0000000..783763e --- /dev/null +++ b/lab_4/simulateTransmission.m @@ -0,0 +1,72 @@ +function numPacketErrors = simulateTransmission(cfgEHT, channel, snr, packets, maxNumErrors, simParameters, chanBW, substreamIndex) + numPacketErrors = 0; + + ofdmInfo = wlanEHTOFDMInfo('EHT-Data', cfgEHT); + ind = wlanFieldIndices(cfgEHT); + + if nargin < 8 + substreamIndex = 1; + end + + stream = RandStream('combRecursive', Seed=simParameters.Seed); + stream.Substream = substreamIndex; + RandStream.setGlobalStream(stream); + + snrVal = convertSNR(snr, "snrsc", "snr", FFTLength=ofdmInfo.FFTLength, NumActiveSubcarriers=ofdmInfo.NumTones); + + for packetIdx = 1:packets + if numPacketErrors >= maxNumErrors + break; + end + + txPSDU = randi([0 1], psduLength(cfgEHT) * 8, 1); + tx = wlanWaveformGenerator(txPSDU, cfgEHT); + + txPad = [tx; zeros(50, cfgEHT.NumTransmitAntennas)]; + + reset(channel); + rx = awgn(channel(txPad), snrVal); + + coarsePacketOffset = wlanPacketDetect(rx, chanBW); + if isempty(coarsePacketOffset) + numPacketErrors = numPacketErrors + 1; + continue; + end + + lstf = rx(coarsePacketOffset + (ind.LSTF(1) : ind.LSTF(2)), :); + coarseFrequencyOffset = wlanCoarseCFOEstimate(lstf, chanBW); + rx = frequencyOffset(rx, simParameters.SampleRate, -coarseFrequencyOffset); + + nonhtfields = rx(coarsePacketOffset + (ind.LSTF(1) : ind.LSTF(2)), :); + finePacketOffset = wlanSymbolTimingEstimate(nonhtfields, chanBW); + + packetOffset = coarsePacketOffset + finePacketOffset; + + if packetOffset > 50 + numPacketErrors = numPacketErrors + 1; + continue; + end + + rxLLTF = rx(packetOffset + (ind.LLTF(1) : ind.LLTF(2)), :); + fineFrequencyOffset = wlanFineCFOEstimate(rxLLTF, chanBW); + rx = frequencyOffset(rx, simParameters.SampleRate, -fineFrequencyOffset); + + rxHELTF = rx(packetOffset + (ind.EHTLTF(1) : ind.EHTLTF(2)), :); + heltfDemod = wlanEHTDemodulate(rxHELTF, "EHT-LTF", cfgEHT); + [chanEstimate, pilotEstimate] = wlanEHTLTFChannelEstimate(heltfDemod, cfgEHT); + + rxData = rx(packetOffset + (ind.EHTData(1) : ind.EHTData(2)), :); + demodSym = wlanEHTDemodulate(rxData, "EHT-Data", cfgEHT); + + nVarEst = wlanEHTDataNoiseEstimate(demodSym(ofdmInfo.PilotIndices, :, :),pilotEstimate, cfgEHT); + + demodDataSym = demodSym(ofdmInfo.DataIndices, :, :); + chanEstimateData = chanEstimate(ofdmInfo.DataIndices, :, :); + + [eqSym, csi] = wlanEHTEqualize(demodDataSym, chanEstimateData, nVarEst, cfgEHT, 'EHT-Data'); + + rxPSDU = wlanEHTDataBitRecover(eqSym, nVarEst, csi, cfgEHT); + + numPacketErrors = numPacketErrors + any(biterr(txPSDU, rxPSDU)); + end +end diff --git a/tasks/04-wifi-ntn.pdf b/tasks/04-wifi-ntn.pdf index e5a04d8399041389d789075b46d25cbf3761b311..52777b39b92e77b538f59894b2e2d4113fe07972 100644 GIT binary patch delta 213036 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
fkfBejJm33Tm5sd~ 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