From 2dc2e90eff0f5c46c701ed6ae749520adf94798c Mon Sep 17 00:00:00 2001 From: andreas128 Date: Fri, 2 Dec 2016 16:38:45 +0100 Subject: Add generator ipynb for two tone --- generate_compensated_2_tone_file.ipynb | 291 +++++++ live_analyse.grc | 1466 +++++++++++++++++++++++++++----- 2 files changed, 1521 insertions(+), 236 deletions(-) create mode 100644 generate_compensated_2_tone_file.ipynb diff --git a/generate_compensated_2_tone_file.ipynb b/generate_compensated_2_tone_file.ipynb new file mode 100644 index 0000000..7037d3b --- /dev/null +++ b/generate_compensated_2_tone_file.ipynb @@ -0,0 +1,291 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.fromfile(\"./out_sin\", np.complex64)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = a[0:100]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mag = np.abs(a)\n", + "plt.plot(mag)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(a.imag[0:100])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(a.real[0:100])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def complex_exp(freq, samp_rate, periods, phase_deg=0):\n", + " t_max = 1.0 * samp_rate / freq * periods\n", + " t = np.arange(t_max)\n", + " fac = t / samp_rate * freq\n", + " phase = 1j * phase_deg/360*2*np.pi\n", + " ret = np.exp(phase + 1j * 2 * np.pi * fac - 1j * np.pi / 2, dtype=np.complex64)\n", + " return ret\n", + "ret = complex_exp(10,40,2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "samp_rate = 4000000 #samples / second\n", + "frequency_0 = samp_rate/9. #cycles / second\n", + "frequency_1 = samp_rate/10. #cycles / second\n", + "tone_0 = complex_exp(frequency_0, samp_rate, 10, 180)\n", + "tone_1 = complex_exp(frequency_1, samp_rate, 9)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def complex_exp(freq, samp_rate, periods):\n", + " t_max = 1.0 * samp_rate / freq * periods\n", + " t = np.arange(t_max)\n", + " fac = t / samp_rate * freq\n", + " ret = np.exp(1j * 2 * np.pi * fac - 1j * np.pi / 2)\n", + " return ret\n", + "ret = complex_exp(10,40,2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "two_tone = 1/2.0 * (tone_0 + tone_1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "two_tone[-1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "two_tone.tofile(\"./np_twotone\")\n", + "two_tone.dtype" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a_load = np.fromfile(\"./np_twotone\", dtype=np.complex64)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(a_load.real[0:100])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lut_dict = pickle.load(open(\"./lut_tab.pkl\", \"rb\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def dpd(x):\n", + " mag = np.abs(x)\n", + " fac = np.interp(mag/2.0, lut_dict[\"ampl\"], lut_dict[\"fac\"])\n", + " ret = x*fac\n", + " return ret.astype(np.complex64)\n", + "\n", + "#def dpd(x):\n", + "# return x*0.5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tone_0_dpd = np.apply_along_axis(dpd, 0, tone_0)\n", + "tone_1_dpd = np.apply_along_axis(dpd, 0, tone_1)\n", + "two_tone_dpd = 1/2. * (tone_0_dpd + tone_1_dpd)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(two_tone_dpd.real[0:200])\n", + "plt.plot(two_tone.real[0:200])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "two_tone_dpd.tofile(\"./np_twotone\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "two_tone.tofile(\"./np_twotone\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a_load = np.fromfile(\"./np_twotone_dpd\", dtype=np.complex64)\n", + "plt.plot(a_load.real[0:200])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/live_analyse.grc b/live_analyse.grc index 4bb0d2c..550df5c 100644 --- a/live_analyse.grc +++ b/live_analyse.grc @@ -162,6 +162,195 @@ 222e6 + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (408, 545) + + + gui_hint + + + + _rotation + 0 + + + id + pow1 + + + label + pow1 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.05 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (288, 545) + + + gui_hint + + + + _rotation + 0 + + + id + pow2 + + + label + pow2 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.05 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (168, 545) + + + gui_hint + + + + _rotation + 0 + + + id + pow3 + + + label + pow3 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.05 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + variable @@ -460,11 +649,7 @@ - analog_sig_source_x - - amp - source_ampl * 0.5 - + analog_const_source_x alias @@ -473,6 +658,10 @@ comment + + const + 0 + affinity @@ -481,13 +670,9 @@ _enabled True - - freq - 1000000 - _coordinate - (424, 208) + (488, 108) _rotation @@ -495,7 +680,7 @@ id - analog_sig_source_x_0 + analog_const_source_x_0 maxoutbuf @@ -505,29 +690,13 @@ minoutbuf 0 - - offset - 0 - type - complex - - - samp_rate - samp_rate - - - waveform - analog.GR_COS_WAVE + float - analog_sig_source_x - - amp - source_ampl * 0.5 - + blocks_add_xx alias @@ -544,13 +713,9 @@ _enabled True - - freq - 900000 - _coordinate - (424, 96) + (680, 249) _rotation @@ -558,31 +723,27 @@ id - analog_sig_source_x_0_0 + blocks_add_xx_0 - maxoutbuf - 0 + type + complex - minoutbuf + maxoutbuf 0 - offset + minoutbuf 0 - type - complex - - - samp_rate - samp_rate + num_inputs + 2 - waveform - analog.GR_COS_WAVE + vlen + 1 @@ -605,7 +766,7 @@ _coordinate - (632, 209) + (680, 329) _rotation @@ -613,7 +774,7 @@ id - blocks_add_xx_0 + blocks_add_xx_1 type @@ -656,7 +817,7 @@ _coordinate - (912, 337) + (960, 553) _rotation @@ -680,7 +841,7 @@ - blocks_complex_to_mag_squared + blocks_complex_to_mag alias @@ -699,7 +860,7 @@ _coordinate - (736, 225) + (488, 65) _rotation @@ -707,7 +868,7 @@ id - blocks_complex_to_mag_squared_0 + blocks_complex_to_mag_0 maxoutbuf @@ -738,11 +899,11 @@ _enabled - 1 + True _coordinate - (736, 417) + (784, 433) _rotation @@ -750,7 +911,7 @@ id - blocks_complex_to_mag_squared_0_0 + blocks_complex_to_mag_squared_0 maxoutbuf @@ -766,7 +927,7 @@ - blocks_message_burst_source + blocks_complex_to_mag_squared alias @@ -781,11 +942,11 @@ _enabled - True + 1 _coordinate - (784, 897) + (784, 633) _rotation @@ -793,7 +954,7 @@ id - blocks_message_burst_source_0 + blocks_complex_to_mag_squared_0_0 maxoutbuf @@ -803,17 +964,13 @@ minoutbuf 0 - - type - byte - vlen 1 - blocks_moving_average_xx + blocks_file_source alias @@ -830,9 +987,13 @@ _enabled True + + file + /home/andreas/dab/ODR-StaticPrecorrection/np_twotone + _coordinate - (1112, 318) + (208, 53) _rotation @@ -840,15 +1001,7 @@ id - blocks_moving_average_xx_0 - - - length - decim - - - max_iter - 4000 + blocks_file_source_0 maxoutbuf @@ -859,12 +1012,161 @@ 0 - scale - 1 + type + complex - type - float + repeat + True + + + vlen + 1 + + + + blocks_float_to_complex + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (784, 73) + + + _rotation + 0 + + + id + blocks_float_to_complex_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_message_burst_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (784, 897) + + + _rotation + 0 + + + id + blocks_message_burst_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + byte + + + vlen + 1 + + + + blocks_moving_average_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1160, 534) + + + _rotation + 0 + + + id + blocks_moving_average_xx_0 + + + length + decim + + + max_iter + 4000 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + scale + 1 + + + type + float @@ -887,7 +1189,7 @@ _coordinate - (912, 206) + (960, 414) _rotation @@ -942,7 +1244,7 @@ _coordinate - (1112, 398) + (1160, 614) _rotation @@ -997,7 +1299,7 @@ _coordinate - (736, 321) + (784, 537) _rotation @@ -1021,19 +1323,19 @@ - blocks_null_sink + blocks_multiply_const_vxx alias - - bus_conns - [[0,],] - comment + + const + pow3 + affinity @@ -1044,7 +1346,7 @@ _coordinate - (1320, 225) + (512, 252) _rotation @@ -1052,15 +1354,19 @@ id - blocks_null_sink_0 + blocks_multiply_const_vxx_0 type - float + complex - num_inputs - 1 + maxoutbuf + 0 + + + minoutbuf + 0 vlen @@ -1068,19 +1374,19 @@ - blocks_null_sink + blocks_multiply_const_vxx alias - - bus_conns - [[0,],] - comment + + const + pow1 + affinity @@ -1091,7 +1397,7 @@ _coordinate - (1496, 337) + (528, 356) _rotation @@ -1099,15 +1405,19 @@ id - blocks_null_sink_0_0 + blocks_multiply_const_vxx_1 type - float + complex - num_inputs - 1 + maxoutbuf + 0 + + + minoutbuf + 0 vlen @@ -1115,19 +1425,19 @@ - blocks_null_sink + blocks_multiply_const_vxx alias - - bus_conns - [[0,],] - comment + + const + pow2 + affinity @@ -1138,7 +1448,7 @@ _coordinate - (1496, 417) + (528, 308) _rotation @@ -1146,15 +1456,19 @@ id - blocks_null_sink_0_1 + blocks_multiply_const_vxx_2 type - float + complex - num_inputs - 1 + maxoutbuf + 0 + + + minoutbuf + 0 vlen @@ -1162,15 +1476,11 @@ - blocks_null_sink + blocks_multiply_xx alias - - bus_conns - [[0,],] - comment @@ -1185,7 +1495,7 @@ _coordinate - (1208, 897) + (1008, 81) _rotation @@ -1193,15 +1503,23 @@ id - blocks_null_sink_0_2 + blocks_multiply_xx_0 type - byte + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 num_inputs - 1 + 2 vlen @@ -1209,7 +1527,7 @@ - fir_filter_xxx + blocks_multiply_xx alias @@ -1222,17 +1540,13 @@ affinity - - decim - decim - _enabled True _coordinate - (1272, 325) + (1160, 73) _rotation @@ -1240,7 +1554,11 @@ id - fir_filter_xxx_0 + blocks_multiply_xx_0_0 + + + type + complex maxoutbuf @@ -1251,51 +1569,592 @@ 0 - samp_delay - 0 + num_inputs + 2 - taps - [1] + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1368, 433) + + + _rotation + 0 + + + id + blocks_null_sink_0 + + + type + float + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1544, 553) + + + _rotation + 0 + + + id + blocks_null_sink_0_0 + + + type + float + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1544, 633) + + + _rotation + 0 + + + id + blocks_null_sink_0_1 + + + type + float + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1208, 897) + + + _rotation + 0 + + + id + blocks_null_sink_0_2 + + + type + byte + + + num_inputs + 1 + + + vlen + 1 + + + + fir_filter_xxx + + alias + + + + comment + + + + affinity + + + + decim + decim + + + _enabled + True + + + _coordinate + (1320, 541) + + + _rotation + 0 + + + id + fir_filter_xxx_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + samp_delay + 0 + + + taps + [1] + + + type + fff + + + + fir_filter_xxx + + alias + + + + comment + + + + affinity + + + + decim + decim + + + _enabled + True + + + _coordinate + (1120, 421) + + + _rotation + 0 + + + id + fir_filter_xxx_0_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + samp_delay + 0 + + + taps + [1] + + + type + fff + + + + fir_filter_xxx + + alias + + + + comment + + + + affinity + + + + decim + decim + + + _enabled + True + + + _coordinate + (1320, 621) + + + _rotation + 0 + + + id + fir_filter_xxx_0_1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + samp_delay + 0 + + + taps + [1] + + + type + fff + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate/decimate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + True + + + fftsize + 16383 + + + _coordinate + (976, 774) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + - type - fff + width7 + 1 - - - fir_filter_xxx - alias - + alpha8 + 1.0 - comment - + color8 + "dark red" - affinity + label8 - decim - decim + width8 + 1 - _enabled - True + alpha9 + 1.0 - _coordinate - (1072, 213) + color9 + "dark green" - _rotation - 0 + label9 + - id - fir_filter_xxx_0_0 + width9 + 1 maxoutbuf @@ -1306,95 +2165,68 @@ 0 - samp_delay - 0 - - - taps - [1] - - - type - fff - - - - fir_filter_xxx - - alias - + name + "" - comment - + nconnections + 1 - affinity - + showports + True - decim - decim + freqhalf + True - _enabled - True + tr_chan + 0 - _coordinate - (1272, 405) + tr_level + 0.0 - _rotation - 0 + tr_mode + qtgui.TRIG_MODE_FREE - id - fir_filter_xxx_0_1 + tr_tag + "" - maxoutbuf - 0 + type + complex - minoutbuf - 0 + update_time + 0.10 - samp_delay - 0 + wintype + firdes.WIN_BLACKMAN_hARRIS - taps - [1] + ymax + 10 - type - fff + ymin + -140 - qtgui_freq_sink_x + qtgui_time_sink_x autoscale False - - average - 1.0 - - - bw - samp_rate/decimate - alias - - fc - 0 - comment @@ -1408,16 +2240,16 @@ - _enabled + entags True - fftsize - 16383 + _enabled + True _coordinate - (928, 558) + (1072, 310) gui_hint @@ -1433,7 +2265,7 @@ id - qtgui_freq_sink_x_0_0 + qtgui_time_sink_x_0 legend @@ -1451,6 +2283,14 @@ label1 + + marker1 + -1 + + + style1 + 1 + width1 1 @@ -1461,12 +2301,20 @@ color10 - "dark blue" + "blue" label10 + + marker10 + -1 + + + style10 + 1 + width10 1 @@ -1483,6 +2331,14 @@ label2 + + marker2 + -1 + + + style2 + 1 + width2 1 @@ -1499,6 +2355,14 @@ label3 + + marker3 + -1 + + + style3 + 1 + width3 1 @@ -1515,6 +2379,14 @@ label4 + + marker4 + -1 + + + style4 + 1 + width4 1 @@ -1531,6 +2403,14 @@ label5 + + marker5 + -1 + + + style5 + 1 + width5 1 @@ -1547,6 +2427,14 @@ label6 + + marker6 + -1 + + + style6 + 1 + width6 1 @@ -1563,6 +2451,14 @@ label7 + + marker7 + -1 + + + style7 + 1 + width7 1 @@ -1579,6 +2475,14 @@ label8 + + marker8 + -1 + + + style8 + 1 + width8 1 @@ -1596,16 +2500,16 @@ - width9 - 1 + marker9 + -1 - maxoutbuf - 0 + style9 + 1 - minoutbuf - 0 + width9 + 1 name @@ -1616,17 +2520,21 @@ 1 - showports - True + size + 1024 - freqhalf - True + srate + samp_rate tr_chan 0 + + tr_delay + 0 + tr_level 0.0 @@ -1635,6 +2543,10 @@ tr_mode qtgui.TRIG_MODE_FREE + + tr_slope + qtgui.TRIG_SLOPE_POS + tr_tag "" @@ -1648,16 +2560,20 @@ 0.10 - wintype - firdes.WIN_BLACKMAN_hARRIS + ylabel + Amplitude + + + yunit + "" ymax - 10 + 1 ymin - -140 + -1 @@ -1688,7 +2604,7 @@ _coordinate - (704, 551) + (752, 767) _rotation @@ -2434,7 +3350,7 @@ _coordinate - (744, 111) + (792, 319) _rotation @@ -3509,7 +4425,7 @@ _coordinate - (424, 334) + (504, 694) _rotation @@ -3661,31 +4577,37 @@ - analog_sig_source_x_0 - blocks_add_xx_0 + analog_const_source_x_0 + blocks_float_to_complex_0 0 1 - analog_sig_source_x_0_0 - blocks_add_xx_0 + blocks_add_xx_0 + blocks_add_xx_1 0 0 - blocks_add_xx_0 + blocks_add_xx_1 blocks_complex_to_mag_squared_0 0 0 - blocks_add_xx_0 + blocks_add_xx_1 blocks_multiply_conjugate_cc_0 0 0 - blocks_add_xx_0 + blocks_add_xx_1 + qtgui_time_sink_x_0 + 0 + 0 + + + blocks_add_xx_1 uhd_usrp_sink_0 0 0 @@ -3696,6 +4618,12 @@ 0 0 + + blocks_complex_to_mag_0 + blocks_float_to_complex_0 + 0 + 0 + blocks_complex_to_mag_squared_0 blocks_moving_average_xx_0_0 @@ -3708,6 +4636,36 @@ 0 0 + + blocks_file_source_0 + blocks_complex_to_mag_0 + 0 + 0 + + + blocks_file_source_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + blocks_file_source_0 + blocks_multiply_xx_0 + 0 + 0 + + + blocks_float_to_complex_0 + blocks_multiply_xx_0 + 0 + 1 + + + blocks_float_to_complex_0 + blocks_multiply_xx_0_0 + 0 + 0 + blocks_message_burst_source_0 blocks_null_sink_0_2 @@ -3738,6 +4696,42 @@ 0 0 + + blocks_multiply_const_vxx_0 + blocks_add_xx_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + blocks_add_xx_1 + 0 + 1 + + + blocks_multiply_const_vxx_2 + blocks_add_xx_0 + 0 + 1 + + + blocks_multiply_xx_0 + blocks_multiply_const_vxx_2 + 0 + 0 + + + blocks_multiply_xx_0 + blocks_multiply_xx_0_0 + 0 + 1 + + + blocks_multiply_xx_0_0 + blocks_multiply_const_vxx_0 + 0 + 0 + fir_filter_xxx_0 blocks_null_sink_0_0 -- cgit v1.2.3