mirror of
https://github.com/radio95-rnt/fm95.git
synced 2026-02-26 19:23:51 +01:00
change pll settings
This commit is contained in:
@@ -25,7 +25,7 @@ make
|
||||
Done!
|
||||
|
||||
# CPU Usage?
|
||||
Should run completly fine on a pi 5, right now with the preemp, on a pi 3b, its 20%
|
||||
Should run completly fine on a pi 5, right now with the preemp, on a pi 3b, its 32%
|
||||
|
||||
# Recommendations
|
||||
use a lpf, for example swh-plugins's lowpass_iir, for example:
|
||||
|
||||
@@ -14,12 +14,12 @@ float hard_clip(float sample, float threshold) {
|
||||
return fmaxf(-threshold, fminf(threshold, sample));
|
||||
}
|
||||
|
||||
void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, int quadrature_mode, int sample_rate) {
|
||||
void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, float damping, int quadrature_mode, int sample_rate) {
|
||||
pll->phase = 0.0f;
|
||||
pll->freq = freq;
|
||||
pll->loop_filter_state = 0.0f;
|
||||
pll->kp = M_2PI * loop_filter_bandwidth;
|
||||
pll->ki = 0.25f * pll->kp * pll->kp;
|
||||
pll->ki = (4.0f*damping*damping) * pll->kp * pll->kp;
|
||||
pll->last_output = 0.0f;
|
||||
pll->sample_rate = sample_rate;
|
||||
pll->quadrature_mode = quadrature_mode;
|
||||
@@ -29,7 +29,7 @@ float apply_pll(PLL *pll, float ref_sample) {
|
||||
float phase_error;
|
||||
|
||||
float vco_output = sinf(pll->phase);
|
||||
if (pll->quadrature_mode) vco_output = sinf(pll->phase + (M_PI / 2.0f)); // 90 degrees
|
||||
if (pll->quadrature_mode) vco_output = sinf(pll->phase + (M_PI / 2.0f));
|
||||
|
||||
phase_error = ref_sample * pll->last_output;
|
||||
|
||||
|
||||
@@ -26,5 +26,5 @@ typedef struct {
|
||||
int sample_rate;
|
||||
int quadrature_mode;
|
||||
} PLL;
|
||||
void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, int quadrature_mode, int sample_rate);
|
||||
void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, float damping, int quadrature_mode, int sample_rate);
|
||||
float apply_pll(PLL *pll, float ref_sample);
|
||||
@@ -416,7 +416,7 @@ int main(int argc, char **argv) {
|
||||
init_preemphasis(&preemp_r, preemphasis_tau, sample_rate);
|
||||
|
||||
PLL rds2_pll;
|
||||
init_pll(&rds2_pll, 66500, 1, 10000, sample_rate);
|
||||
init_pll(&rds2_pll, 66500, 4000, 2, 1, sample_rate);
|
||||
// #endregion
|
||||
|
||||
signal(SIGINT, stop);
|
||||
|
||||
Reference in New Issue
Block a user