+// the amplitude of the subcarrier is sqrt(ci^2 + cq^2).
+// approximate by amplitude = max(|ci|,|cq|) + 1/2*min(|ci|,|cq|)
+reg [13:0] corr_amplitude, abs_ci, abs_cq, max_ci_cq, min_ci_cq;
+
+
+always @(corr_i_accum or corr_q_accum)
+begin
+ if (corr_i_accum[13] == 1'b0)
+ abs_ci <= corr_i_accum;
+ else
+ abs_ci <= -corr_i_accum;
+
+ if (corr_q_accum[13] == 1'b0)
+ abs_cq <= corr_q_accum;
+ else
+ abs_cq <= -corr_q_accum;
+
+ if (abs_ci > abs_cq)
+ begin
+ max_ci_cq <= abs_ci;
+ min_ci_cq <= abs_cq;
+ end
+ else
+ begin
+ max_ci_cq <= abs_cq;
+ min_ci_cq <= abs_ci;
+ end
+
+ corr_amplitude <= max_ci_cq + min_ci_cq/2;
+
+end
+
+
+// The subcarrier reference signals
+reg subcarrier_I;
+reg subcarrier_Q;
+
+always @(corr_i_cnt or xcorr_is_848 or xcorr_quarter_freq)
+begin
+ if (xcorr_is_848 & ~xcorr_quarter_freq) // 848 kHz
+ begin
+ subcarrier_I = ~corr_i_cnt[3];
+ subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]);
+ end
+ else if (xcorr_is_848 & xcorr_quarter_freq) // 212 kHz
+ begin
+ subcarrier_I = ~corr_i_cnt[5];
+ subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]);
+ end
+ else
+ begin // 424 kHz
+ subcarrier_I = ~corr_i_cnt[4];
+ subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]);
+ end
+end
+
+