#!/usr/bin/env python import sys import matplotlib.pyplot as plt import numpy as np from scipy.signal import butter, lfilter, freqz import matplotlib.pyplot as plt samp_rate = 10000 input_rate = 1000 assert(samp_rate % input_rate == 0) rf_to_baseband_sample_ratio = samp_rate // input_rate; L = 200 def butter_lowpass(cutoff, fs, order=5): nyq = 0.5 * fs normal_cutoff = cutoff / nyq b, a = butter(order, normal_cutoff, btype='low', analog=False) return b, a def butter_lowpass_filter(data, cutoff, fs, order=6): b, a = butter_lowpass(cutoff, fs, order=order) return lfilter(b, a, data) debug_pd = np.loadtxt("debug-pd.csv", delimiter=",") sample, slope, pd, pdslope = np.split(debug_pd, 4, 1) debug_dds = np.loadtxt("debug-dds.csv", delimiter=",") dds_ix, dds_phase, dds_phase_delta, dds_phase_idx_i, dds_phase_idx_q = np.split(debug_dds, 5, 1) out = np.fromfile("debug-out.i8", dtype="i1") out_r, out_g = np.split(np.reshape(out, newshape=(out.shape[0]//2, 2)), 2, 1) L_out = L * rf_to_baseband_sample_ratio plt.figure() plt.subplot(3, 1, 1) plt.title("sample") plt.plot(sample[0:L]) plt.subplot(3, 1, 2) plt.title("pd") plt.plot(pd[0:L]) plt.subplot(3, 1, 3) plt.title("pdslope") plt.plot(pdslope[0:L]) plt.figure() plt.subplot(4, 1, 1) plt.title("dds ix") plt.plot(dds_ix[0:L_out]) plt.subplot(4, 1, 2) plt.title("dds phase") plt.plot(dds_phase[0:L_out]) plt.subplot(4, 1, 3) plt.title("dds phase_delta") plt.plot(dds_phase_delta[0:L_out]) plt.subplot(4, 1, 4) plt.title("output") plt.plot(out_r[0:L_out]) plt.plot(out_g[0:L_out]) plt.figure() plt.subplot(2, 1, 1) plt.title("out sum") out_sum = out_r[0:L_out].astype(float) + out_g[0:L_out].astype(float) plt.plot(out_sum) plt.subplot(2, 1, 2) plt.title("out sum filt") plt.plot(butter_lowpass_filter(out_sum, cutoff=10, fs=2000)) plt.show()