forked from jgaeddert/liquid-dsp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
HISTORY
217 lines (206 loc) · 9.43 KB
/
HISTORY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
## Latest improvements ##
## Improvements for v1.3.2 ##
* autotest
- runs with random seeds (based on time) for diveristy
- output .json file for post-analysis
* build
- cleaned up compiler warnings across most platforms
- incorporated continuous integration script
- compact header APIs across all interfaces in liquid.h
- consistent build across Linux and macOS
* agc
- added more convenience methods, improved autotest stability
* fft
- spwaterfall less verbose with more convenience methods
* filter
- new rresamp family of objects to implement rational rate
resampling; very useful for fixed buffer sizes
- resamp now uses fixed-point phase for faster computation
- fixed issues with msresamp2 ordering to have expected roll-off
performance
- added notch filter design option for firfilt (with autotest)
* framing
- completely reworked msource family of objects to use firpfbch2
family of objects for computationally efficient
- added preliminary fskframe generator and synchronizer objects
* math
- improved functions for speed, is_prime()
- improved stability and consistency of root-finding algorithms
* multichannel
- added new firpfbchr family of objects for arbitrarily setting
number of channels and down-sampling rates
* modem
- refactored objects for amplitude modulation/demodulation to use
Hilbert transform, added autotest scripts
* nco
- improving consistency across platforms
## Improvements for v1.3.1 ##
* improved selection of SSE/MMX extension flags for gcc
* agc
- adding squelch functionality back into gain control object
* filter
- adding callback function for Parks-McClellan algorithm to allow generic
filter prototyping
- fixed double-free bug in iirfilt
* fft
- adding new spwaterfall family of objects for generating waterfall plot
and automatically down-size as input sample size grows
* sequence
- fixed issue with order of operations causing inconsitent behavior across
different platforms
## Major improvements for v1.3.0 ##
* New MIT/X11 license (https://opensource.org/licenses/MIT)
* agc (automatic gain control)
- major code scrub, improved reliability, simplified interface
- block-level operation
* buffer
- new cbuffer objects for dynamic-sized circular buffering
* channel
- new module to define certain channel emulation objects
- new functionality includes carrier frequency/phase offsets,
(time-varying) multi-path, shadowing, and additive noise
* dotprod
- adding method to compute x^T * x of a vector (sum of squares)
* equalization
- improved interface for LMS and RLS equalizers
- simplified methods to support blind operation
* fec (forward error correctino)
- interleaver and packetizer moved from the framing to the fec module
- packetizer now includes data whitening
* fft (fast Fourier transform)
- general speed improvements for one-dimensional FFTs
- completely reimplemented spgram (spectral periodogram) objects to
include both complex and real-values amples with simpler interface
- reimplemented asgram (ASCII spectral periodogram) objects
* filter
- additional prototype create methods, block execution
- added new fftfilt family of objects to realize linear filter
with fast Fourier transforms
- interp family renamed to firinterp, new iirinterp family
- decim family renamed to firdecim, new iirdecim family
- add linear interpolation for arbitrary resamp output
- new multi-stage half-band resampler family
- symsync: improved stability, added rate adjustment to help pull in
sample rate offsets
- added autotests for validating performance of both the
resamp and msresamp objects
* framing
- added `framedatastats` object for counting statistics across different
framing objects (e.g. number of total bytes received)
- adding generic callback function definition for all framing
structures
- qpacketmodem: new object to easily combine modulating and encoding;
buffer of data in, modulated and encoded samples out
- qpilotgen/qpilotsync: new objects to add and synchronize pilot symbols
to modulated symbols to recover carrier frequency/phase, and gain
- framing objects: frame64, flexframe now use qpacketmodem, qpilotgen, and
qpilotsync objects for unified interface and vastly improved performance
- flexframe: vastly simplified interface
- qdetector: new family for pre-demodulator synchronizion and detection
- moved interleaver and packetizer objects to `fec` module
- symstream: new family for generating random stream of modulated samples
- msource: new family for generating multiple signals for a single source,
including tones, noise, modulated symbols
- symtrack: new family for tracking a stream of symbols and recovering
signal level, timing, carrier frequency/phase without pilots
* math
- new windowing methods (e.g. 7-term Blackman-harris window)
* matrix
- adding smatrix family of objects (sparse matrices)
- improving linear solver methods (roughly doubled speed)
* modem
- re-organizing internal linear modem code (no interface change)
- freqmod/freqdem: new interface, block-level execution for analog FM
- cpfskmod/cpfskdem: new family for generic non-linear continuous-phase
frequency-shift modulation (e.g. minimum-shift keying)
- fskmod/fskdem: new family for non-coherent frequency-shift keying
modulation, often with many samples per symbol (e.g. 256-FSK)
* multicarrier
- adding OFDM framing option for window tapering
- simplfying OFDM framing for generating preamble symbols (all
generated OFDM symbols are the same length)
- adding run-time option for debugging ofdmframesync
- adding method for initializing subcarriers with frequency range
* nco (numerically-controlled oscillator)
- general performance improvements, adding block-level execution
* optim
- gradsearch (gradient search) uses internal linesearch for
significant speed increase and better reliability
- gradsearch interface greatly simplified
* utility
- build no longer auto-generates tables at compile time (helps with cross
compilation)
* vector
- new module to simplify basic vector operations
* miscellany
- documentation moved from core repository to website
- global header file (`liquid.h`) include more structured source
- consistent naming of reset() methods for most objects
## Major improvements for v1.2.0 ##
* dotprod
- leveraging SIMD extensions for vector operations (SSE2, SSE3)
* fft
- completely re-structured internal transform strategy including
Cooley-Tukey mixed-radix algorithm, Rader algorithm for FFTs of
prime length, and specific codelets for small-size transforms.
* math
- new modular arithmetic methods (prime factor, totient, etc.)
* modem
- new API creates linear modem objects with one argument, e.g.
LIQUID_MODEM_QAM16
- new type definitions for analog modems
## Major improvements for v1.1.0 ##
* build
- simplifying build environment by explicitly defining object
dependencies (no longer auto-generated; much faster now)
* documentation
- new tutorials (ofdmflexframe)
- sections on new objects/methods (msresamp, gmsk filter design,
soft-decision demodulation)
- adding useful figures (polyfit-lagrange, symsync)
- adding BER performance plots for new FEC schemes
- adding BER performance plots for sqam32 and sqam128
* agc
- fixing scaling issues
- improving computation speed
- simplifying interface with a single, unified design model
* equalization
- adding support for decision-directed equalizers
* fec
- adding soft decoding (when available) for forward error-correction
schemes; generally improves performance by about 2 dB Eb/N0
- adding half-rate Golay(24,12) code
- adding SEC-DED codes: (22,16), (39,32), (72,64)
* filter
- firdes: adding Nyquist prototyping design method
- firdes: adding new GMSK receive filter design method
- interp: porting to efficient polyphase filterbank implementation,
adding prototype create() method
- adding multi-stage resampler for efficient decimation and
interpolation
* framing
- adding ofdmflexframe family of objects capable of defining which
subcarriers are nulls/pilots/data, and easily loading data into
frames. Very similar to 'flexframe' in usage.
- supporting soft packet decoding (interleaving, etc.)
- adding gmskframe generator and synchronizer object; simple,
reliable
* matrix
- adding Cholesky factorization A = R^T * R (for positive definite
matrices)
- adding conjugate gradient solver (for positive definite matrices)
* modem
- adding simple on/off keying (OOK) type
- adding 256-APSK type (6,18,32,36,46,54,64)
- adding 'square' (cross) 32-, 128-QAM types
- adding 'optimal' 64-, 128-, and 256-QAM constellations
- improved speed of most schemes' modulate/demodulate
implementations
- adding soft-decision (log-likelihood ratio) demodulation
- adding GMSK modulation/demodulation with improved filter design
* multicarrier
- ofdmframe: improving synchronization and reliability in
interference environments, enabling squelch, improving
equalization
* optim
- simplified interface to gradient search