The costas loop seems to at least work

This commit is contained in:
ha7ilm 2017-04-01 16:08:49 +02:00
parent ca40a41d5a
commit c7137dc68e
2 changed files with 23 additions and 23 deletions

View file

@ -517,7 +517,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(824, 427)</value>
<value>(976, 379)</value>
</param>
<param>
<key>_rotation</key>
@ -536,7 +536,7 @@
</param>
<param>
<key>commandline</key>
<value>csdr bpsk_costas_loop_cc 8</value>
<value>csdr bpsk_costas_loop_cc 16</value>
</param>
<param>
<key>comment</key>
@ -552,7 +552,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(120, 523)</value>
<value>(128, 411)</value>
</param>
<param>
<key>_rotation</key>
@ -595,11 +595,11 @@
</param>
<param>
<key>_enabled</key>
<value>1</value>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(112, 403)</value>
<value>(432, 411)</value>
</param>
<param>
<key>_rotation</key>
@ -745,11 +745,11 @@
</param>
<param>
<key>_enabled</key>
<value>1</value>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(544, 371)</value>
<value>(824, 507)</value>
</param>
<param>
<key>_rotation</key>
@ -836,7 +836,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(536, 523)</value>
<value>(432, 507)</value>
</param>
<param>
<key>_rotation</key>
@ -1016,12 +1016,6 @@
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>digital_psk_mod_0</source_block_id>
<sink_block_id>blocks_throttle_0</sink_block_id>
@ -1036,7 +1030,7 @@
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>ha5kfu_execproc_xx_0_0</sink_block_id>
<sink_block_id>ha5kfu_execproc_xx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
@ -1046,18 +1040,24 @@
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>ha5kfu_execproc_xx_0</source_block_id>
<sink_block_id>ha5kfu_execproc_xx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>ha5kfu_execproc_xx_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>ha5kfu_execproc_xx_0_0</source_block_id>
<sink_block_id>ha5kfu_execproc_xx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>ha5kfu_execproc_xx_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>

View file

@ -1874,7 +1874,7 @@ void timing_recovery_cc(complexf* input, complexf* output, int input_size, timin
}
else break;
error = ( iof(input, el_point_right_index) - iof(input, el_point_left_index)) * iof(input, el_point_mid_index);
error = ( iof(input, el_point_right_index) - iof(input, el_point_left_index) ) * iof(input, el_point_mid_index);
if(state->use_q)
{
error += ( qof(input, el_point_right_index) - qof(input, el_point_left_index)) * qof(input, el_point_mid_index);
@ -1949,7 +1949,7 @@ bpsk_costas_loop_state_t init_bpsk_costas_loop_cc(float samples_per_bits)
rc_filter_cutoff, rc_filter_rc, virtual_sampling_dt);
state.rc_filter_alpha = virtual_sampling_dt/(rc_filter_rc+virtual_sampling_dt); //https://en.wikipedia.org/wiki/Low-pass_filter
float rc_filter_omega_cutoff = 2*M_PI*rc_filter_cutoff;
state.vco_phase_addition_multiplier = 8*rc_filter_omega_cutoff; //as of Equation 25 in Feigin, assuming input signal amplitude of 1 (to 1V) and (state.vco_phase_addition_multiplier*<vco_input>), a value in radians, will be added to the vco_phase directly.
state.vco_phase_addition_multiplier = 8*rc_filter_omega_cutoff / (virtual_sampling_rate); //as of Equation 25 in Feigin, assuming input signal amplitude of 1 (to 1V) and (state.vco_phase_addition_multiplier*<vco_input>), a value in radians, will be added to the vco_phase directly.
fprintf(stderr, "rc_filter_alpha = %g, rc_filter_omega_cutoff = %g, vco_phase_addition_multiplier = %g\n",
state.rc_filter_alpha, rc_filter_omega_cutoff, state.vco_phase_addition_multiplier);
return state;