Commit Graph

76 Commits

Author SHA1 Message Date
57a5c4ff9b make lockin a unittest, not integration test 2021-01-22 16:04:02 +01:00
d0d2c6352d lockin: refactor to use common lockin processing 2021-01-22 16:00:05 +01:00
0cd2140668 rafactor complex, cossin, atan2 2021-01-21 16:12:59 +01:00
948e58c910 lockin: refactor Lockin 2021-01-21 14:57:44 +01:00
20488ea3bc lockin: refine 2021-01-19 11:01:21 +01:00
Matt Huszagh
9a3c9afa7e fix reciprocal_pll divide error when reference frequency is 0 2021-01-14 14:51:07 -08:00
Matt Huszagh
9f0b3eb77e fix shift_round overflow error 2021-01-14 14:51:07 -08:00
Matt Huszagh
9697560404 reciprocal_pll: remove unneeded type cast 2021-01-13 09:08:16 -08:00
Matt Huszagh
76088efda5 dsp: add reciprocal_pll 2021-01-13 08:37:33 -08:00
Matt Huszagh
80ed715f5a shift sin/cos before demodulation product to avoid i64 2021-01-12 16:07:04 -08:00
Matt Huszagh
41ea2ebed4 use round up half integer rounding 2021-01-12 15:59:03 -08:00
Matt Huszagh
e14aa8b613 move lock-in code to main.rs 2021-01-12 10:45:34 -08:00
Matt Huszagh
891aad3f17 remove debug_assert in divide_round 2021-01-12 07:43:28 -08:00
Matt Huszagh
31d23a3e0c lock-in: use same method for batch_index branching in both instances 2021-01-12 07:36:56 -08:00
Matt Huszagh
bae295140d update lock-in for integer math and PLL 2021-01-12 07:36:56 -08:00
Matt Huszagh
13543ce048 pll update input is named "x" not "input" 2021-01-04 11:14:27 -08:00
cc42c0c477 iir_int: add optimized integer iir implementation 2020-12-22 16:49:12 +01:00
8d9af70c19 trig/atan2: refine
* use dynamic scaling of the inputs to get accurate ratios (effectively
  floating point) to maintain accuracy for small arguments
* this also allows shifting later and keep more bits
* use u32 ratio to keep one more bit
* merge the corner case unittests into the big test value list
* print rms, absolute and axis-relative angle
* simplify the correction expression to get rid of one multiplication
* use 5 bit for the correction constant and 15 bits for r
* least squares optimal correction constant, this lowers the max error
  below 5e-5
2020-12-20 21:07:23 +01:00
12d5945d81 dsp/testing: simplify 2020-12-20 20:23:32 +01:00
Matt Huszagh
7e794373f4 atan2: fix output range description 2020-12-17 14:21:39 -08:00
Matt Huszagh
17cf71f22b atan2: replace min, max with x, y 2020-12-17 11:39:32 -08:00
Matt Huszagh
9c5e68ceea atan2: test min and max angle inputs 2020-12-17 11:34:39 -08:00
Matt Huszagh
6ffc42021e move atan2 test before cossin test to mimic function order 2020-12-17 10:09:12 -08:00
Matt Huszagh
09a744f59c dsp: move iir generic math functions to top-level module scope 2020-12-17 10:04:48 -08:00
Matt Huszagh
56641d5838 atan2: specify why we cannot use more than 15 bits for the atan argument 2020-12-17 10:02:35 -08:00
Matt Huszagh
1f28949bc5 atan2: store sign bits and greater of |x| and |y| 2020-12-17 09:47:39 -08:00
Matt Huszagh
cb38c3e3bd atan2: clarify sharing bits between atan argument and constant factors 2020-12-17 09:31:38 -08:00
Matt Huszagh
5717991ada atan2: result range is from i32::MIN+1 to i32::MAX 2020-12-17 09:31:18 -08:00
Matt Huszagh
d7111a3aa8 dsp/trig: let compiler infer type parameter in atan2 abs call 2020-12-17 08:04:53 -08:00
Matt Huszagh
d9d500743f simplify atan initial angle expression 2020-12-17 08:02:54 -08:00
Matt Huszagh
85ae70fe62 rename trig tests to delineate between cossin and atan2 2020-12-16 16:28:49 -08:00
Matt Huszagh
7c4f608206 move cossin and atan2 into the same trig file 2020-12-16 16:26:44 -08:00
Matt Huszagh
e257545321 fix formatting 2020-12-16 16:14:11 -08:00
Matt Huszagh
5d055b01a0 dsp: add atan2 2020-12-16 16:02:42 -08:00
Matt Huszagh
6d651da758 dsp: add f64 isclose testing function 2020-12-16 16:02:17 -08:00
Matt Huszagh
17f9f0750e dsp: move abs to lib.rs 2020-12-16 16:01:50 -08:00
Matt Huszagh
e89db65722 rename trig.rs -> cossin.rs 2020-12-16 15:57:47 -08:00
469c89ea70 pll: refine gains 2020-12-14 09:58:27 +01:00
75c4120258 cossin: buffer test data output 2020-12-13 13:24:28 +01:00
7fa4b76e4d cossin_table: fix build script usage 2020-12-10 17:17:09 +01:00
77cb0bbad0 cossin: refactor and tweak
* shrink the LUT by another bit
* correctly use the octant bit to offset the dphi to LUT entry midpoint
* add more diagnistics to the unittest and rewrite it in relative units
* MSB-align phase and output to match the PLL data, dynamic range and
  remove the need for roudning bias.
* clean up the build.rs table generator a bit
2020-12-10 16:56:13 +01:00
Matt Huszagh
a82b0f3e90 trig: fix formatting 2020-12-09 15:53:56 -08:00
Matt Huszagh
4add34cf9a add cossin LUT 2020-12-09 15:40:18 -08:00
2ae0bdfd8d unwrap: comments, names 2020-12-06 17:07:38 +01:00
4cfe6ba416 pll: add note on dithering 2020-12-05 13:18:02 +01:00
974fa6e220 unwrap: clean up docs and names 2020-12-05 12:55:22 +01:00
526fea8e23 unwrap: more tests 2020-12-05 12:32:27 +01:00
941a94bbf6 dsp/pll: style 2020-12-05 11:44:09 +01:00
47806a155d
Merge branch 'master' into feature/unwrap 2020-12-05 09:58:15 +01:00
2179560a3c unwrap: add phase unwrapping tools 2020-12-05 09:56:41 +01:00