Skip to content

Releases: mhostetter/sdr

sdr v0.0.9

12 Nov 21:13

Choose a tag to compare

Released November 12, 2023

Changes

  • Added polyphase rational resampling in sdr.Resampler.
  • Added discrete-time FIR differentiating filters in sdr.Differentiator.
  • Added discrete-time IIR integrating filters in sdr.Integrator.
  • Added sdr.percent(), sdr.ppm(), and sdr.ppb().
  • Moved sdr.DDS functionality into sdr.NCO. Removed sdr.DDS.
  • Added ability to seed the channel models.
  • Added option to compute measurements along a specified axis.
  • Added option to return measurements in decibels.
  • Replaced pylint with ruff.
  • Replaced black with ruff.
  • Improved type annotations.

Contributors

sdr v0.0.8

04 Sep 18:12

Choose a tag to compare

Released September 4, 2023

Changes

  • Added minimum-shift keying (MSK) in sdr.MSK.
  • Added pulse shape customization to linear modulations.
  • Added theoretic detection performance of a matched filter in sdr.ReplicaCorrelator and an energy detector
    in sdr.EnergyDetector.
  • Added Albersheim's minimum required SNR approximation in sdr.albersheim().
  • Added plotting of receiver operating characteristic (ROC) curves in sdr.plot.roc().
  • Added plotting of probability of detection curves in sdr.plot.p_d().
  • Added plotting of phase trees of continuous-phase modulation (CPM) in sdr.plot.phase_tree().
  • Added sensible time and frequency units to plots.

Contributors

sdr v0.0.7

28 Aug 00:39

Choose a tag to compare

Released August 27, 2023

Changes

  • Added generic linear modulation schemes in sdr.LinearModulation.
  • Added $\pi/M$ PSK modulation in sdr.PiMPSK.
  • Added offset QPSK modulation in sdr.OQPSK.
  • Added rectangular pulse shapes in sdr.rectangular().
  • Added half-sine pulse shapes in sdr.half_sine().
  • Added pulse shaping in linear modulations. Now map_symbols() and decide_symbols() operate on 1 sample per symbol
    and modulate() and demodulate() operate on multiple samples per symbol.

Contributors

sdr v0.0.6

21 Aug 00:40

Choose a tag to compare

Released August 20, 2023

Changes

  • Added raster plots in sdr.plot.raster().
  • Added eye diagrams in sdr.plot.eye().
  • Added upsampling (without anti-aliasing filtering) in sdr.upsample().
  • Added downsampling (without anti-aliasing filtering) in sdr.downsample().
  • Added wavelength calculation in sdr.wavelength().
  • Supported real sinusoid mixing.
  • Supported returning measurements in dB.

Contributors

sdr v0.0.5

13 Aug 23:22

Choose a tag to compare

Released August 13, 2023

Changes

  • Added polyphase FIR decimator in sdr.Decimator().
  • Added multirate FIR filter design in sdr.multirate_taps().
  • Added polyphase decomposition in sdr.polyphase_matrix().
  • Added linear to decibel conversion in sdr.db().
  • Added decibel to linear conversion in sdr.linear().
  • Added linear and zero-order hold polyphase FIR interpolators.
  • Added a state property to FIR filters.
  • Added a flush() method to FIR filters.
  • Added support for passing filter objects into filter plotting functions.
  • Added ability to center or offset a time-domain plot.
  • Improved the string representation of classes.
  • Renamed sdr.plot.frequency_response() to sdr.plot.magnitude_response().
  • Removed superfluous methods like FIR.filter() and replaced with FIR.__call__().

Contributors

sdr v0.0.4

06 Aug 21:10

Choose a tag to compare

Released August 6, 2023

Changes

  • Added error vector magnitude measurement in sdr.evm().
  • Added complex mixing (frequency translation) in sdr.mix().
  • Added real passband to complex baseband conversion in sdr.to_complex_bb().
  • Added complex baseband to real passband conversion in sdr.to_real_pb().
  • Added binary and bipolar Barker sequences in sdr.barker().
  • Added complex-valued Zadoff-Chu sequences in sdr.zadoff_chu().
  • Added theoretical BER/SER for DE-PSK.
  • Fixed theoretical BER/SER for PSK.

Contributors

sdr v0.0.3

30 Jul 23:55

Choose a tag to compare

Released July 30, 2023

Changes

  • Added PSK modulation in sdr.PSK.
  • Added symbol mapping: sdr.binary_code(), sdr.gray_code().
  • Added differential codes: sdr.diff_encode(), sdr.diff_decode().
  • Added a FIR interpolating filter in sdr.FIRInterpolator.
  • Added error rate measurement in sdr.ErrorRate.
  • Added signal measurement functions: sdr.energy(), sdr.peak_power(), sdr.average_power(), sdr.papr(), sdr.peak_voltage(), sdr.rms_voltage(), sdr.crest_factor().
  • Added channel models: sdr.bec(), sdr.bsc(), sdr.dmc().
  • Added signal impairments: sdr.awgn(), sdr.frequency_offset(), sdr.sample_rate_offset(), sdr.iq_imbalance().
  • Added probability functions: sdr.Q(), sdr.Qinv().
  • Added link budget functions: sdr.fpsl(), sdr.parabolic_antenna().
  • Added channel capacity functions: sdr.awgn_capacity(), sdr.bec_capacity(), sdr.bsc_capacity().
  • Added SNR conversion functions: sdr.ebn0_to_esn0(), sdr.ebn0_to_snr(), sdr.esn0_to_ebn0(), sdr.esn0_to_snr(), sdr.snr_to_ebn0(), sdr.snr_to_esn0().
  • Added plotting functions for modulation: sdr.plot.ber(), sdr.plot.ser(), sdr.plot.constellation(), sdr.plot.symbol_map().
  • Added more filter plotting functions: sdr.plot.phase_response(), sdr.plot.phase_delay().

Contributors

sdr v0.0.2

16 Jul 18:31

Choose a tag to compare

Released July 16, 2023

Changes

  • Added finite impulse response (FIR) filters in sdr.FIR.
  • Added pulse shapes: sdr.raised_cosine(), sdr.root_raised_cosine(), sdr.gaussian().
  • Added plotting helper functions in sdr.plot:
    • sdr.plot.time_domain()
    • sdr.plot.periodogram(), sdr.plot.spectrogram()
    • sdr.plot.filter(), sdr.plot.frequency_response, sdr.plot.group_delay(),
      sdr.plot.impulse_response(), sdr.plot.step_response(), sdr.plot.zeros_poles()
  • Added measurement functions: sdr.papr(), sdr.crest_factor().
  • Added bit packing and unpacking functions: sdr.pack(), sdr.unpack().
  • Added hexdump helper function in sdr.hexdump().
  • Improved type annotations.

Contributors

sdr v0.0.1

09 Jul 21:20

Choose a tag to compare

Released July 9, 2023

Changes

  • Added Farrow arbitrary resampling in sdr.FarrowResampler. (#1)
  • Added infinite impulse response (IIR) filters in sdr.IIR. (#3)
  • Added numerically-controlled oscillators (NCO) in sdr.NCO. (#4)
  • Added direct digital synthesizers (DDS) in sdr.DDS. (#4)
  • Added 2nd order, proportional-plus-integrator loop filters in sdr.LoopFilter. (#4)
  • Added closed-loop PLL analysis in sdr.ClosedLoopPLL. (#5)

Contributors