diff options
author | Felix Erckenbrecht <eligs@eligs.de> | 2020-07-26 14:08:47 +0200 |
---|---|---|
committer | Felix Erckenbrecht <eligs@eligs.de> | 2020-07-26 14:08:47 +0200 |
commit | 9ad84bf8a87f531a2dd9b61b450ba69e060e28be (patch) | |
tree | f8464eb86a7f8855db4a8a8cf7ace21971b2d8ae /src | |
parent | b28432638b2b80e5540f9d114fc791a1751215b5 (diff) | |
download | osmo-fl2k-9ad84bf8a87f531a2dd9b61b450ba69e060e28be.tar.gz osmo-fl2k-9ad84bf8a87f531a2dd9b61b450ba69e060e28be.tar.bz2 osmo-fl2k-9ad84bf8a87f531a2dd9b61b450ba69e060e28be.zip |
Implement proper amplitude scaling by 1/sqrt(2) to achieve correct amplitude
Diffstat (limited to 'src')
-rw-r--r-- | src/fl2k_iq.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/fl2k_iq.c b/src/fl2k_iq.c index 9821d4f..0ea1c77 100644 --- a/src/fl2k_iq.c +++ b/src/fl2k_iq.c @@ -200,11 +200,11 @@ static inline int8_t dds_real(dds_t *dds) dds->phase &= 0xffffffff; //amp = 255; - amp_i = creal(dds->amplitude) * 32768.0; // 0..15 - amp_q = cimag(dds->amplitude) * 32768.0; - amp_i = amp_i * trig_table.sine[tmp]; // 0..31 - amp_q = amp_q * trig_table.cosine[tmp]; // 0..31 - amp8 = (int8_t) ((amp_i + amp_q) >> 25); // 0..32 >> 25 => 0..8 + amp_i = creal(dds->amplitude) * 23170.0; // 0..15, * 1/SQRT(2) + amp_q = cimag(dds->amplitude) * 23170.0; + amp_i = amp_i * trig_table.sine[tmp]; // 0..31, * 1/SQRT(2) + amp_q = amp_q * trig_table.cosine[tmp]; // 0..31, * 1/SQRT(2) + amp8 = (int8_t) ((amp_i + amp_q) >> 24); // 0..31 >> 24 => 0..8 dds->amplitude += dds->ampslope; return amp8; } |