diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f71d98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +**/*.asv +**/*.fc32 +**/octave-workspace +collects/ +**/images/*.png diff --git a/gnuradio/correlation_test.grc b/gnuradio/correlation_test.grc new file mode 100644 index 0000000..095962f --- /dev/null +++ b/gnuradio/correlation_test.grc @@ -0,0 +1,1026 @@ +options: + parameters: + author: main + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: correlator_test + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: Not titled yet + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: channel + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Drone ID Channel + label0: Ch 1 + label1: Ch 2 + label2: Ch 3 + label3: Ch 4 + label4: Ch 5 + labels: '[]' + num_opts: '5' + option1: 2.4145e9 + option2: 2.4295e9 + option3: 2.4445e9 + option4: 2.4595e9 + options: '[0, 1, 2]' + orient: Qt.QVBoxLayout + type: real + value: 2.3995e9 + widget: combo_box + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [79, 651] + rotation: 0 + state: disabled +- name: correlation_mag_scaler + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Correlation Scaler + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '0.01' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1778, 31] + rotation: 0 + state: enabled +- name: decimation + id: variable + parameters: + comment: '' + value: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [962, 46] + rotation: 0 + state: true +- name: delay + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Delay + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: '100000' + value: int(fft_size * 4) + long_cp_len + (short_cp_len * 3) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1591, 41] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: samp_rate / decimation / 15e3 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1076, 44] + rotation: 0 + state: true +- name: filter_taps + id: variable_low_pass_filter_taps + parameters: + beta: '6.76' + comment: '' + cutoff_freq: 5e6 + gain: '1.0' + samp_rate: samp_rate + width: 750e3 + win: firdes.WIN_HAMMING + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 15] + rotation: 0 + state: true +- name: freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Freq + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: 60e6 + step: .5e6 + stop: 6e9 + value: '2429500000' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [456, 10] + rotation: 0 + state: enabled +- name: gain + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Gain + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '0.05' + stop: '1' + value: '.35' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [321, 10] + rotation: 0 + state: true +- name: long_cp_len + id: variable + parameters: + comment: '' + value: round(0.0000052 * samp_rate / decimation) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1199, 48] + rotation: 0 + state: true +- name: offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Offset + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: -samp_rate/2 + step: .5e6 + stop: samp_rate/2 + value: 7.5e6 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [795, 15] + rotation: 0 + state: enabled +- name: samp_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Sample Rate + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: 10e6 + step: 1e6 + stop: 56e6 + value: 15.36e6*2 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [187, 11] + rotation: 0 + state: true +- name: short_cp_len + id: variable + parameters: + comment: '' + value: round(0.00000469 * samp_rate / decimation) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1324, 51] + rotation: 0 + state: true +- name: time_domain_mag_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Time Domain Mag^2 Offset + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-100' + step: '0.1' + stop: '100' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [2128, 31] + rotation: 0 + state: enabled +- name: time_domain_mag_scaler + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Time Domain Mag^2 Scaler + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '0.01' + stop: '100' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1946, 30] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: offset + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [386, 282] + rotation: 0 + state: disabled +- name: blocks_add_const_vxx_0 + id: blocks_add_const_vxx + parameters: + affinity: '' + alias: '' + comment: '' + const: time_domain_mag_offset + maxoutbuf: '0' + minoutbuf: '0' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1707, 479] + rotation: 0 + state: true +- name: blocks_complex_to_mag_squared_0 + id: blocks_complex_to_mag_squared + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1263, 382] + rotation: 0 + state: true +- name: blocks_complex_to_mag_squared_0_1 + id: blocks_complex_to_mag_squared + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1267, 482] + rotation: 0 + state: true +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: delay + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [986, 479] + rotation: 0 + state: true +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /opt/dji/collects/2437MHz_30.72MSPS.fc32 + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [108, 176] + rotation: 0 + state: disabled +- name: blocks_multiply_const_vxx_0 + id: blocks_multiply_const_vxx + parameters: + affinity: '' + alias: '' + comment: '' + const: correlation_mag_scaler + maxoutbuf: '0' + minoutbuf: '0' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1463, 378] + rotation: 0 + state: true +- name: blocks_multiply_const_vxx_0_0 + id: blocks_multiply_const_vxx + parameters: + affinity: '' + alias: '' + comment: '' + const: time_domain_mag_scaler + maxoutbuf: '0' + minoutbuf: '0' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1501, 479] + rotation: 0 + state: true +- name: blocks_multiply_xx_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [650, 200] + rotation: 0 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [410, 195] + rotation: 0 + state: disabled +- name: fft_filter_xxx_0 + id: fft_filter_xxx + parameters: + affinity: '' + alias: '' + comment: '' + decim: decimation + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '1' + samp_delay: '0' + taps: filter_taps + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [759, 331] + rotation: 0 + state: enabled +- name: fft_filter_xxx_1 + id: fft_filter_xxx + parameters: + affinity: '' + alias: corr_filt + comment: '' + decim: '1' + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '1' + samp_delay: '0' + taps: '[(0.01763858+-0.01759975j),(-0.00388397+0.00275807j),(-0.01390060+0.01484881j),(0.01325312+-0.01048136j),(0.00881741+-0.01230320j),(-0.01657599+0.01394610j),(0.00161920+0.00512291j),(0.01819849+-0.01780315j),(-0.00950583+0.00041899j),(-0.01221672+0.01630932j),(0.01823595+-0.00857353j),(0.00533939+-0.01474219j),(-0.02011417+0.01306319j),(0.00639906+0.00831797j),(0.02000275+-0.01817355j),(-0.01474438+-0.00291138j),(-0.01210344+0.01823531j),(0.02334750+-0.00556697j),(0.00363457+-0.01806044j),(-0.02446152+0.01110847j),(0.00940491+0.01289557j),(0.02340473+-0.01767729j),(-0.01850256+-0.00814895j),(-0.01440082+0.01972270j),(0.02760724+-0.00017418j),(0.00503745+-0.02159205j),(-0.02893355+0.00642888j),(0.00885422+0.01855276j),(0.02818713+-0.01433409j),(-0.01864631+-0.01548892j),(-0.01951055+0.01854131j),(0.02866813+0.00843348j),(0.01069245+-0.02297966j),(-0.03114444+-0.00256164j),(0.00276783+0.02297415j),(0.03212885+-0.00570236j),(-0.01230563+-0.02287292j),(-0.02560602+0.01133507j),(0.02275246+0.01870841j),(0.01942053+-0.01794711j),(-0.02643795+-0.01511006j),(-0.00859650+0.02102139j),(0.02977802+0.00855868j),(0.00147073+-0.02443041j),(-0.02658694+-0.00363057j),(0.00740788+0.02425279j),(0.02469227+-0.00308371j),(-0.01058027+-0.02457072j),(-0.01857745+0.00735873j),(0.01486942+0.02190278j),(0.01626261+-0.01270162j),(-0.01395859+-0.02031444j),(-0.01162699+0.01534499j),(0.01565579+0.01652380j),(0.01186154+-0.01889297j),(-0.01392288+-0.01435918j),(-0.00971853+0.01995592j),(0.01646395+0.01057821j),(0.01160634+-0.02209695j),(-0.01652383+-0.00867963j),(-0.00971391+0.02215184j),(0.02103875+0.00544428j),(0.01053460+-0.02349902j),(-0.02236658+-0.00407928j),(-0.00661891+0.02309553j),(0.02698776+0.00146709j),(0.00525385+-0.02407342j),(-0.02705686+-0.00060978j),(0.00032044+0.02349869j),(0.02941959+-0.00142764j),(-0.00215588+-0.02427621j),(-0.02676047+0.00179504j),(0.00683333+0.02362328j),(0.02671798+-0.00321841j),(-0.00648172+-0.02425929j),(-0.02253918+0.00300450j),(0.00823215+0.02358706j),(0.02228678+-0.00369147j),(-0.00482181+-0.02415246j),(-0.01913822+0.00277589j),(0.00410942+0.02353859j),(0.02085658+-0.00263555j),(0.00075302+-0.02409316j),(-0.01995562+0.00097740j),(-0.00168818+0.02354974j),(0.02357755+-0.00002383j),(0.00578003+-0.02402643j),(-0.02361741+-0.00231087j),(-0.00535112+0.02338798j),(0.02696291+0.00397094j),(0.00811686+-0.02351577j),(-0.02547945+-0.00684159j),(-0.00688369+0.02241780j),(0.02642383+0.00903485j),(0.00973954+-0.02176375j),(-0.02213446+-0.01222224j),(-0.00947159+0.01974421j),(0.02047262+0.01466057j),(0.01392311+-0.01786227j),(-0.01418783+-0.01777473j),(-0.01532227+0.01454308j),(0.01140998+0.01993551j),(0.02093667+-0.01117578j),(-0.00482455+-0.02229874j),(-0.02241830+0.00647639j),(0.00235197+0.02334998j),(0.02674007+-0.00177560j),(0.00370173+-0.02400651j),(-0.02549785+-0.00386427j),(-0.00570067+0.02293933j),(0.02597781+0.00912466j),(0.01151729+-0.02093759j),(-0.02028489+-0.01456751j),(-0.01340883+0.01700720j),(0.01639734+0.01889219j),(0.01895844+-0.01198404j),(-0.00706996+-0.02234203j),(-0.01995268+0.00539147j),(0.00085395+0.02376333j),(0.02355149+0.00172946j),(0.00915068+-0.02329168j),(-0.02127081+-0.00923974j),(-0.01423996+0.02021346j),(0.02036066+0.01590018j),(0.02139663+-0.01490856j),(-0.01281531+-0.02110870j),(-0.02215768+0.00746762j),(0.00676604+0.02375680j),(0.02391116+0.00118478j),(0.00467929+-0.02328666j),(-0.01872316+-0.01001141j),(-0.01225830+0.01936907j),(0.01465063+0.01765912j),(0.02201916+-0.01218921j),(-0.00455091+-0.02259578j),(-0.02442482+0.00280149j),(-0.00265858+0.02384916j),(0.02601652+0.00754102j),(0.01330255+-0.02049234j),(-0.01858727+-0.01654419j),(-0.01791104+0.01314484j),(0.01066931+0.02263594j),(0.02274282+-0.00251843j),(0.00362849+-0.02365189j),(-0.01901272+-0.00867479j),(-0.01372881+0.01952101j),(0.01445752+0.01844779j),(0.02432328+-0.01009927j),(-0.00247187+-0.02341052j),(-0.02508303+-0.00177899j),(-0.00684102+0.02267245j),(0.02257626+0.01392442j),(0.01816000+-0.01503782j),(-0.00984830+-0.02183143j),(-0.02076847+0.00327629j),(-0.00250744+0.02381882j),(0.02053474+0.01034473j),(0.01787515+-0.01764356j),(-0.00990281+-0.02027066j),(-0.02400552+0.00603408j),(-0.00092193+0.02408622j),(0.02543539+0.00861474j),(0.01525644+-0.01861755j),(-0.01416012+-0.01968669j),(-0.02063245+0.00674855j),(0.00087798+0.02414493j),(0.02135157+0.00877755j),(0.01633513+-0.01819014j),(-0.00963691+-0.02018542j),(-0.02354786+0.00530972j),(-0.00327377+0.02399031j),(0.02411823+0.01099273j),(0.01857358+-0.01626456j),(-0.01059841+-0.02167872j),(-0.02223257+0.00175569j),(-0.00448061+0.02320601j),(0.01843306+0.01480060j),(0.02059717+-0.01235152j),(-0.00170716+-0.02320245j),(-0.02295945+-0.00399729j),(-0.01333077+0.02065185j),(0.01645931+0.01951942j),(0.02505838+-0.00582326j),(0.00214315+-0.02345175j),(-0.01999106+-0.01141066j),(-0.01612916+0.01515928j),(0.00645063+0.02338843j),(0.02340384+0.00335090j),(0.01455622+-0.02031075j),(-0.01291026+-0.01889784j),(-0.02419076+0.00573076j),(-0.00297354+0.02389695j),(0.02208851+0.01395236j),(0.02000855+-0.01210758j),(-0.00280117+-0.02338124j),(-0.02024105+-0.00674766j),(-0.01533629+0.01816326j),(0.00866513+0.02241716j),(0.02585863+0.00127843j),(0.01291895+-0.02084043j),(-0.01513621+-0.01869518j),(-0.02274968+0.00513630j),(-0.00348731+0.02360889j),(0.01829592+0.01603804j),(0.02167107+-0.00890890j),(0.00376932+-0.02344191j),(-0.01929970+-0.01165016j),(-0.02093116+0.01336495j),(0.00355852+0.02429016j),(0.02449575+0.00939079j),(0.01789285+-0.01510384j),(-0.00521708+-0.02288262j),(-0.02067840+-0.00580343j),(-0.01567718+0.01786577j),(0.00678157+0.02322719j),(0.02526638+0.00484779j),(0.01703504+-0.01802432j),(-0.00944185+-0.02175193j),(-0.02315968+-0.00263679j),(-0.01201339+0.01964799j),(0.00974227+0.02249249j),(0.02337539+0.00322025j),(0.01631611+-0.01869630j),(-0.00804951+-0.02146841j),(-0.02446534+-0.00250510j),(-0.01364863+0.01942189j),(0.01082476+0.02288534j),(0.02338089+0.00467850j),(0.01575323+-0.01745047j),(-0.00486588+-0.02228901j),(-0.02234394+-0.00540305j),(-0.01799248+0.01708638j),(0.00630297+0.02404197j),(0.02421169+0.00909650j),(0.01869056+-0.01371096j),(-0.00120294+-0.02329403j),(-0.01868606+-0.01101386j),(-0.02085532+0.01176855j),(-0.00277376+0.02442844j),(0.02043702+0.01572335j),(0.02426044+-0.00642247j),(0.00627326+-0.02229726j),(-0.01414759+-0.01799391j),(-0.02178119+0.00253727j),(-0.01211465+0.02135323j),(0.01004899+0.02230633j),(0.02564758+0.00475285j),(0.01782657+-0.01625512j),(-0.00461814+-0.02296748j),(-0.02016322+-0.00988523j),(-0.01935510+0.01191721j),(-0.00379767+0.02436674j),(0.01743215+0.01737833j),(0.02572626+-0.00317823j),(0.01138314+-0.02058087j),(-0.01091075+-0.02088622j),(-0.02180484+-0.00400836j),(-0.01659586+0.01652604j),(0.00098250+0.02457448j),(0.02062412+0.01401417j),(0.02470496+-0.00681130j),(0.00803330+-0.02182141j),(-0.01287401+-0.01961780j),(-0.02189717+-0.00203868j),(-0.01614244+0.01754722j),(0.00170233+0.02453998j),(0.02112234+0.01391701j),(0.02457703+-0.00635587j),(0.00866988+-0.02141619j),(-0.01106682+-0.02041379j),(-0.02146480+-0.00424042j),(-0.01851272+0.01541975j),(-0.00164649+0.02466325j),(0.01894224+0.01713733j),(0.02514208+-0.00175954j),(0.01307692+-0.01886615j),(-0.00517634+-0.02247708j),(-0.01936213+-0.01029778j),(-0.02241350+0.00928574j),(-0.00890280+0.02312654j),(0.01256998+0.02212150j),(0.02398657+0.00708364j),(0.01952637+-0.01201364j),(0.00524744+-0.02275797j),(-0.01271070+-0.01836548j),(-0.02419436+-0.00180839j),(-0.01820126+0.01634620j),(0.00055342+0.02472033j),(0.01685399+0.01822036j),(0.02330613+0.00103395j),(0.01810987+-0.01621768j),(0.00084468+-0.02311348j),(-0.01802187+-0.01564036j),(-0.02354118+0.00160323j),(-0.01460085+0.01832832j),(0.00074512+0.02475890j),(0.01693226+0.01731257j),(0.02546714+0.00044119j),(0.01773777+-0.01615047j),(-0.00043574+-0.02309909j),(-0.01559617+-0.01662575j),(-0.02235234+-0.00049757j),(-0.01867132+0.01630125j),(-0.00287727+0.02463726j),(0.01586464+0.02012312j),(0.02394619+0.00532412j),(0.01962936+-0.01177913j),(0.00759392+-0.02217363j),(-0.00942869+-0.02055810j),(-0.02291287+-0.00792285j),(-0.02224326+0.00915674j),(-0.00968967+0.02198525j),(0.00545216+0.02418903j),(0.01891447+0.01483349j),(0.02519027+-0.00132473j),(0.01746154+-0.01634824j),(0.00064014+-0.02301200j),(-0.01380391+-0.01823975j),(-0.02187679+-0.00445444j),(-0.02171414+0.01176517j),(-0.00973646+0.02289019j),(0.00817926+0.02389323j),(0.02015668+0.01445096j),(0.02308617+-0.00103487j),(0.01827180+-0.01557942j),(0.00441737+-0.02280573j),(-0.01288797+-0.01967344j),(-0.02229476+-0.00767090j),(-0.02140005+0.00794310j),(-0.01377200+0.02050982j),(0.00042672+0.02483528j),(0.01657016+0.01926092j),(0.02416496+0.00620496j),(0.02099713+-0.00892942j),(0.01196101+-0.02003610j),(-0.00187408+-0.02278609j),(-0.01707514+-0.01623877j),(-0.02401979+-0.00306393j),(-0.02011840+0.01158394j),(-0.01076914+0.02211560j),(0.00239261+0.02465612j),(0.01711242+0.01840249j),(0.02455795+0.00577834j),(0.02129721+-0.00853951j),(0.01254094+-0.01937935j),(0.00024369+-0.02296327j),(-0.01443504+-0.01816794j),(-0.02341480+-0.00678260j),(-0.02211734+0.00719352j),(-0.01498718+0.01897999j),(-0.00404817+0.02467978j),(0.01060410+0.02252930j),(0.02173449+0.01335831j),(0.02352400+0.00023656j),(0.01919379+-0.01257813j),(0.01054860+-0.02106155j),(-0.00346251+-0.02266944j),(-0.01673086+-0.01702626j),(-0.02236934+-0.00596229j),(-0.02210619+0.00710477j),(-0.01724887+0.01827684j),(-0.00542239+0.02434544j),(0.00886740+0.02365639j),(0.01815935+0.01652154j),(0.02272124+0.00507236j),(0.02323474+-0.00743489j),(0.01585477+-0.01757680j),(0.00290380+-0.02266571j),(-0.00838596+-0.02143520j),(-0.01725668+-0.01433876j),(-0.02397609+-0.00333608j),(-0.02334963+0.00869879j),(-0.01507077+0.01871835j),(-0.00520559+0.02426454j),(0.00526349+0.02407601j),(0.01686169+0.01832575j),(0.02368686+0.00848698j),(0.02285306+-0.00305227j),(0.01857744+-0.01357728j),(0.01120531+-0.02071451j),(-0.00103141+-0.02294526j),(-0.01274272+-0.01987383j),(-0.01929372+-0.01227800j),(-0.02310373+-0.00189834j),(-0.02352449+0.00900949j),(-0.01678265+0.01817462j),(-0.00635545+0.02375155j),(0.00284804+0.02468764j),(0.01242594+0.02091316j),(0.02138224+0.01327730j),(0.02412815+0.00332766j),(0.02149192+-0.00699342j),(0.01731976+-0.01574398j),(0.00946710+-0.02136599j),(-0.00220353+-0.02292562j),(-0.01170079+-0.02023332j),(-0.01784611+-0.01386406j),(-0.02327040+-0.00501172j),(-0.02471278+0.00477633j),(-0.01970955+0.01386125j),(-0.01285911+0.02077040j),(-0.00568049+0.02445257j),(0.00450889+0.02442333j),(0.01437037+0.02077892j),(0.01950391+0.01415874j),(0.02252471+0.00563749j),(0.02420351+-0.00348431j),(0.02045640+-0.01189218j),(0.01289326+-0.01841831j),(0.00603886+-0.02220266j),(-0.00195073+-0.02281651j),(-0.01187089+-0.02027311j),(-0.01860115+-0.01498356j),(-0.02151643+-0.00770434j),(-0.02405629+0.00058277j),(-0.02378548+0.00883518j),(-0.01827840+0.01606664j),(-0.01184778+0.02144390j),(-0.00591867+0.02439938j),(0.00270819+0.02468346j),(0.01156613+0.02234318j),(0.01659914+0.01770591j),(0.02048249+0.01134561j),(0.02426971+0.00398235j),(0.02372380+-0.00361383j),(0.01969741+-0.01067837j),(0.01619623+-0.01653253j),(0.01099186+-0.02066803j),(0.00249666+-0.02276534j),(-0.00471727+-0.02269407j),(-0.00991670+-0.02053572j),(-0.01648641+-0.01656101j),(-0.02193473+-0.01116509j),(-0.02310976+-0.00483625j),(-0.02344047+0.00187335j),(-0.02386140+0.00842109j),(-0.02047137+0.01432334j),(-0.01482280+0.01916178j),(-0.01065511+0.02261725j),(-0.00530402+0.02450742j),(0.00249282+0.02476861j),(0.00831091+0.02343803j),(0.01222397+0.02066798j),(0.01766374+0.01670301j),(0.02191821+0.01183085j),(0.02242897+0.00637507j),(0.02290666+0.00068771j),(0.02374963+-0.00489894j),(0.02108920+-0.01009364j),(0.01685052+-0.01463347j),(0.01425188+-0.01830644j),(0.01014470+-0.02097801j),(0.00359763+-0.02256942j),(-0.00111850+-0.02304756j),(-0.00475025+-0.02244752j),(-0.01056683+-0.02085841j),(-0.01552328+-0.01839054j),(-0.01753544+-0.01518538j),(-0.02039941+-0.01141883j),(-0.02387978+-0.00726502j),(-0.02413950+-0.00288884j),(-0.02340602+0.00153564j),(-0.02432402+0.00584651j),(-0.02333232+0.00991650j),(-0.01986311+0.01363157j),(-0.01798616+0.01688845j),(-0.01631785+0.01962228j),(-0.01180451+0.02179605j),(-0.00775218+0.02337789j),(-0.00570679+0.02436075j),(-0.00179884+0.02476964j),(0.00318093+0.02463208j),(0.00556684+0.02397991j),(0.00792766+0.02287066j),(0.01237445+0.02136691j),(0.01506705+0.01951924j),(0.01586260+0.01738945j),(0.01860229+0.01504935j),(0.02131307+0.01255311j),(0.02120088+0.00994925j),(0.02174744+0.00729828j),(0.02389086+0.00464873j),(0.02368491+0.00203057j),(0.02237166+-0.00051844j),(0.02328711+-0.00296093j),(0.02345981+-0.00528187j),(0.02123050+-0.00746818j),(0.02053854+-0.00949707j),(0.02099309+-0.01136173j),(0.01894061+-0.01306795j),(0.01681194+-0.01460908j),(0.01701462+-0.01598154j),(0.01588229+-0.01720018j),(0.01304182+-0.01827322j),(0.01241037+-0.01919918j),(0.01229429+-0.01999246j),(0.00973112+-0.02067153j),(0.00804623+-0.02123886j),(0.00843785+-0.02170265j),(0.00696066+-0.02208452j),(0.00456523+-0.02239297j),(0.00470046+-0.02262955j),(0.00456995+-0.02281159j),(0.00224442+-0.02295344j),(0.00156845+-0.02305363j),(0.00240400+-0.02312028j),(0.00098607+-0.02317014j),(-0.00051374+-0.02320353j),(0.00050009+-0.02321878j),(0.00045776+-0.02322941j),(-0.00131008+-0.02324041j),(-0.00087251+-0.02324385j),(0.00032002+-0.02324492j),(-0.00088102+-0.02325229j),(-0.00132710+-0.02325730j),(0.00043224+-0.02325473j),(0.00046606+-0.02325254j),(-0.00055627+-0.02324573j),(0.00093504+-0.02322077j),(0.00234447+-0.02317935j),(0.00150042+-0.02312113j),(0.00216789+-0.02302937j),(0.00448493+-0.02289594j),(0.00460695+-0.02272233j),(0.00446323+-0.02249417j),(0.00685018+-0.02219413j),(0.00831890+-0.02182068j),(0.00791880+-0.02136529j),(0.00959522+-0.02080637j),(0.01214993+-0.02013569j),(0.01225755+-0.01935081j),(0.01288054+-0.01843323j),(0.01571257+-0.01736857j),(0.01683646+-0.01615831j),(0.01662535+-0.01479422j),(0.01874559+-0.01326144j),(0.02078965+-0.01156357j),(0.02032669+-0.00970726j),(0.02101025+-0.00768671j),(0.02323116+-0.00550873j),(0.02305008+-0.00319611j),(0.02212625+-0.00076193j),(0.02343113+0.00177878j),(0.02362872+0.00438864j),(0.02147695+0.00702990j),(0.02092206+0.00967260j),(0.02102591+0.01226820j),(0.01830682+0.01475618j),(0.01555882+0.01708805j),(0.01475498+0.01920960j),(0.01205410+0.02104906j),(0.00759903+0.02254460j),(0.00522996+0.02364565j),(0.00283580+0.02428964j),(-0.00215220+0.02441904j),(-0.00606837+0.02400199j),(-0.00812197+0.02301099j),(-0.01218249+0.02142103j),(-0.01670401+0.01923914j),(-0.01838048+0.01649720j),(-0.02026558+0.01323224j),(-0.02374292+0.00950911j),(-0.02474275+0.00543106j),(-0.02383284+0.00111215j),(-0.02457441+-0.00332035j),(-0.02432276+-0.00770454j),(-0.02085044+-0.01186634j),(-0.01799451+-0.01564086j),(-0.01599037+-0.01885398j),(-0.01104192+-0.02132979j),(-0.00523332+-0.02292682j),(-0.00160954+-0.02353476j),(0.00309865+-0.02306451j),(0.00963778+-0.02148096j),(0.01373706+-0.01881724j),(0.01632781+-0.01515210j),(0.02055862+-0.01062007j),(0.02321120+-0.00543317j),(0.02236040+0.00014572j),(0.02187490+0.00582533j),(0.02135635+0.01127338j),(0.01709411+0.01613784j),(0.01164660+0.02009512j),(0.00772582+0.02285751j),(0.00190003+0.02418045j),(-0.00590449+0.02391164j),(-0.01126323+0.02201387j),(-0.01543856+0.01855082j),(-0.02109475+0.01370484j),(-0.02449236+0.00779506j),(-0.02407900+0.00123981j),(-0.02375583+-0.00547727j),(-0.02258831+-0.01181357j),(-0.01714748+-0.01721692j),(-0.01058524+-0.02119903j),(-0.00539325+-0.02336477j),(0.00181327+-0.02344339j),(0.01030108+-0.02135341j),(0.01549809+-0.01722522j),(0.01899193+-0.01137834j),(0.02301101+-0.00432105j),(0.02354963+0.00326790j),(0.01975516+0.01062396j),(0.01586459+0.01697709j),(0.01082437+0.02160722j),(0.00195926+0.02394037j),(-0.00667475+0.02364921j),(-0.01261097+0.02068667j),(-0.01904868+0.01530237j),(-0.02456282+0.00806391j),(-0.02484066+-0.00019547j),(-0.02230780+-0.00848953j),(-0.01939949+-0.01577567j),(-0.01267617+-0.02107210j),(-0.00276292+-0.02362235j),(0.00521979+-0.02301533j),(0.01206734+-0.01923778j),(0.01962366+-0.01271841j),(0.02336398+-0.00431727j),(0.02167843+0.00479782j),(0.01865091+0.01331240j),(0.01351068+0.01992594j),(0.00364254+0.02356375j),(-0.00655347+0.02358642j),(-0.01373868+0.01989770j),(-0.02059567+0.01298204j),(-0.02560544+0.00389065j),(-0.02416955+-0.00590384j),(-0.01875171+-0.01476260j),(-0.01261282+-0.02113823j),(-0.00312195+-0.02383687j),(0.00854232+-0.02228354j),(0.01638866+-0.01666781j),(0.02055453+-0.00792348j),(0.02318451+0.00239139j),(0.02043239+0.01233487j),(0.01146992+0.01996460j),(0.00188587+0.02373299j),(-0.00732373+0.02279084j),(-0.01775700+0.01720788j),(-0.02450487+0.00803676j),(-0.02409011+-0.00287702j),(-0.02028606+-0.01326259j),(-0.01374098+-0.02086429j),(-0.00203556+-0.02394156j),(0.01019532+-0.02171662j),(0.01756163+-0.01458515j),(0.02183148+-0.00406587j),(0.02265956+0.00746769j),(0.01582869+0.01730082j),(0.00422483+0.02304547j),(-0.00624986+0.02322842j),(-0.01612061+0.01767670j),(-0.02440502+0.00765165j),(-0.02503698+-0.00438867j),(-0.01832302+-0.01539677j),(-0.00945772+-0.02249858j),(0.00182667+-0.02373443j),(0.01477230+-0.01865082j),(0.02214697+-0.00851416j),(0.02162822+0.00398788j),(0.01706112+0.01543188j),(0.00776400+0.02256160j),(-0.00653093+0.02324556j),(-0.01836250+0.01717191j),(-0.02322486+0.00599483j),(-0.02349301+-0.00707719j),(-0.01785950+-0.01814609j),(-0.00459606+-0.02379415j),(0.00941016+-0.02219110j),(0.01805052+-0.01371247j),(0.02237594+-0.00090253j),(0.02058168+0.01221451j),(0.00944658+0.02138083j),(-0.00521035+0.02352668j),(-0.01615397+0.01782232j),(-0.02328871+0.00603130j),(-0.02459070+-0.00794931j),(-0.01561542+-0.01933910j),(-0.00094113+-0.02413884j),(0.01135172+-0.02055928j),(0.02010364+-0.00972375j),(0.02336008+0.00458982j),(0.01591029+0.01720974j),(0.00118626+0.02345919j),(-0.01197966+0.02091453j),(-0.02133304+0.01037878j),(-0.02523851+-0.00427314j),(-0.01829790+-0.01745198j),(-0.00310083+-0.02400326j),(0.01073033+-0.02125717j),(0.01976254+-0.01015436j),(0.02292653+0.00497621j),(0.01532793+0.01802839j),(-0.00081927+0.02359902j),(-0.01502170+0.01926989j),(-0.02265340+0.00669953j),(-0.02355173+-0.00891805j),(-0.01414851+-0.02092413j),(0.00315332+-0.02405991j),(0.01700428+-0.01683705j),(0.02181522+-0.00229589j),(0.01888235+0.01318659j),(0.00690161+0.02262555j),(-0.01101739+0.02161926j),(-0.02299831+0.01049104j),(-0.02316414+-0.00573173j),(-0.01509439+-0.01952015j),(-0.00065343+-0.02429546j),(0.01616494+-0.01763472j),(0.02389068+-0.00261417j),(0.01761194+0.01354112j),(0.00414674+0.02289380j),(-0.01099794+0.02068721j),(-0.02355431+0.00785592j),(-0.02422667+-0.00922639j),(-0.01074518+-0.02186431j),(0.00627478+-0.02348246j),(0.01830763+-0.01309054j),(0.02262192+0.00401019j),(0.01453787+0.01880671j),(-0.00420648+0.02331843j),(-0.02000293+0.01498004j),(-0.02368630+-0.00182110j),(-0.01693241+-0.01795157j),(-0.00177424+-0.02442712j),(0.01639709+-0.01748068j),(0.02412431+-0.00089115j),(0.01558734+0.01597816j),(-0.00060185+0.02342245j),(-0.01594981+0.01698990j),(-0.02489208+0.00026289j),(-0.01937465+-0.01698258j),(-0.00050994+-0.02445753j),(0.01675346+-0.01756350j),(0.02194798+-0.00031359j),(0.01549416+0.01687115j),(-0.00080805+0.02336950j),(-0.01956431+0.01499380j),(-0.02555894+-0.00316231j),(-0.01407676+-0.01972087j),(0.00387995+-0.02411477j),(0.01815750+-0.01337181j),(0.02261638+0.00572415j),(0.01119851+0.02076075j),(-0.01027548+0.02176458j),(-0.02378735+0.00792261j),(-0.02073710+-0.01166201j),(-0.00655238+-0.02384237j),(0.01169986+-0.02023245j),(0.02376405+-0.00312680j),(0.01756330+0.01576917j),(-0.00302628+0.02329423j),(-0.01989332+0.01404993j),(-0.02284616+-0.00561099j),(-0.01244888+-0.02178506j),(0.00728716+-0.02278810j),(0.02319372+-0.00772838j),(0.01973848+0.01254395j),(0.00031797+0.02316643j),(-0.01752725+0.01617323j),(-0.02328236+-0.00341306j),(-0.01425954+-0.02099251j),(0.00664748+-0.02319640j),(0.02331891+-0.00818653j),(0.01923788+0.01263876j),(-0.00040386+0.02319894j),(-0.01798231+0.01515042j),(-0.02319131+-0.00538400j),(-0.01229720+-0.02226184j),(0.00999677+-0.02195641j),(0.02434003+-0.00455364j),(0.01604609+0.01600310j),(-0.00518349+0.02299175j),(-0.02074064+0.01054250j),(-0.02154841+-0.01125960j),(-0.00600294+-0.02434147j),(0.01644221+-0.01762867j),(0.02426372+0.00337979j),(0.00866567+0.02093382j),(-0.01349737+0.01998132j),(-0.02316326+0.00116600j),(-0.01552895+-0.01936448j),(0.00489266+-0.02366708j),(0.02288064+-0.00779149j),(0.01905808+0.01435519j),(-0.00415179+0.02306118j),(-0.02223238+0.01040225j),(-0.02006210+-0.01237916j),(-0.00257792+-0.02465827j),(0.01731670+-0.01507409j),(0.02283900+0.00773453j),(0.00493151+0.02268122j),(-0.01936267+0.01572689j),(-0.02371281+-0.00676123j),(-0.00623337+-0.02364582j),(0.01438717+-0.01880586j),(0.02201631+0.00332458j),(0.00946171+0.02153294j),(-0.01501010+0.01807106j),(-0.02582517+-0.00385431j),(-0.00940766+-0.02281595j),(0.01495970+-0.02004212j),(0.02202077+0.00187621j),(0.00838948+0.02115027j),(-0.01336429+0.01830765j),(-0.02450863+-0.00397521j),(-0.01078882+-0.02308837j),(0.01569011+-0.01935874j),(0.02392356+0.00351545j),(0.00544088+0.02189697j),(-0.01701567+0.01653773j),(-0.02201465+-0.00712924j),(-0.00655104+-0.02420616j),(0.01656124+-0.01642505j),(0.02316654+0.00807195j),(0.00223175+0.02297375j),(-0.02225544+0.01205102j),(-0.02062143+-0.01296157j),(0.00245018+-0.02475074j),(0.02035457+-0.01021511j),(0.01698212+0.01473450j),(-0.00479837+0.02230807j),(-0.02405795+0.00383826j),(-0.01644163+-0.01999041j),(0.01161641+-0.02213279j),(0.02455904+-0.00001102j),(0.00736853+0.02113068j),(-0.01662985+0.01687980j),(-0.02153153+-0.00802806j),(-0.00408852+-0.02465853j),(0.01872438+-0.01338172j),(0.02080758+0.01268143j),(-0.00425119+0.02262927j),(-0.02546509+0.00446639j),(-0.01418121+-0.02015886j),(0.01328869+-0.02156838j),(0.02213978+0.00209671j),(0.00519009+0.02213774j),(-0.01738613+0.01391213j),(-0.02124442+-0.01265423j),(0.00089345+-0.02469168j),(0.02381239+-0.00705952j),(0.01521708+0.01828689j),(-0.01456920+0.01942309j),(-0.02419403+-0.00522223j),(-0.00293785+-0.02442353j),(0.01937043+-0.01356869j),(0.01721030+0.01358739j),(-0.00569934+0.02199681j),(-0.02344721+0.00055053j),(-0.01180893+-0.02287978j),(0.01736723+-0.01746149j),(0.02291610+0.00979998j),(-0.00447164+0.02280180j),(-0.02474143+0.00412548j),(-0.01082613+-0.02136534j),(0.01515031+-0.01936571j),(0.02017119+0.00760639j),(-0.00029791+0.02297822j),(-0.02180382+0.00558633j),(-0.01532691+-0.02084437j),(0.01409426+-0.01977065j),(0.02427788+0.00746627j),(-0.00207474+0.02294241j),(-0.02515358+0.00489499j),(-0.01104608+-0.02140500j),(0.01673671+-0.01877310j),(0.01940118+0.00922002j),(-0.00363608+0.02269900j),(-0.02189215+0.00216139j),(-0.01096697+-0.02294136j),(0.01704638+-0.01614275j),(0.02146772+0.01282455j),(-0.00794443+0.02157766j),(-0.02618127+-0.00286864j),(-0.00356489+-0.02449500j),(0.02323552+-0.01117854j),(0.01337505+0.01737378j),(-0.01480595+0.01845229j),(-0.02008447+-0.00973817j),(0.00256215+-0.02470990j),(0.02168193+-0.00357103j),(0.00961393+0.02158880j),(-0.01896089+0.01210319j),(-0.01963154+-0.01758030j),(0.01226390+-0.02152289j),(0.02498351+0.00651609j),(-0.00368589+0.02282988j),(-0.02544639+0.00178790j),(-0.00556671+-0.02360365j),(0.02100917+-0.01319132j),(0.01364648+0.01666282j),(-0.01325657+0.01837860j),(-0.01971550+-0.01099600j),(0.00369291+-0.02426533j),(0.02293077+0.00021205j),(0.00579169+0.02279006j),(-0.02312596+0.00650691j),(-0.01377748+-0.02206335j),(0.02044061+-0.01585712j),(0.01941082+0.01495775j),(-0.01518360+0.01927720j),(-0.02220819+-0.01016980j),(0.00821958+-0.02421550j),(0.02262671+0.00081191j),(-0.00006447+0.02285208j),(-0.02086471+0.00448657j),(-0.00797556+-0.02324057j),(0.01805930+-0.01287617j),(0.01550469+0.01800651j),(-0.01429496+0.01612799j),(-0.02116446+-0.01544021j),(0.01064431+-0.02180374j),(0.02511146+0.00826508j),(-0.00656036+0.02208635j),(-0.02635085+-0.00471061j),(0.00285545+-0.02484618j),(0.02590055+-0.00260856j),(0.00151923+0.02252375j),(-0.02324422+0.00565692j),(-0.00564362+-0.02311142j),(0.02012448+-0.01198163j),(0.01060470+0.01913652j),(-0.01612061+0.01375097j),(-0.01497921+-0.01855992j),(0.01313874+-0.01864052j),(0.01969528+0.01388930j),(-0.01024188+0.01897994j),(-0.02289766+-0.01297947j),(0.00898346+-0.02251392j),(0.02567490+0.00829177j),(-0.00762545+0.02168184j),(-0.02621401+-0.00757041j),(0.00738953+-0.02423742j),(0.02624283+0.00325649j),(-0.00606391+0.02268076j),(-0.02432289+-0.00301084j),(0.00508189+-0.02471912j),(0.02288677+-0.00070921j),(-0.00237157+0.02287168j),(-0.02063159+0.00030671j),(0.00008449+-0.02475648j),(0.02019551+-0.00329145j),(0.00345584+0.02289011j),(-0.01978428+0.00213488j),(-0.00546033+-0.02478600j),(0.02165582+-0.00431751j),(0.00760878+0.02296855j),(-0.02315494+0.00239354j),(-0.00708985+-0.02486267j),(0.02611751+-0.00381419j),(0.00624053+0.02303512j),(-0.02734557+0.00121452j),(-0.00273325+-0.02484907j),(0.02884997+-0.00199281j),(-0.00024142+0.02294122j),(-0.02761093+-0.00115952j),(0.00470759+-0.02461541j),(0.02644933+0.00093286j),(-0.00714949+0.02256909j),(-0.02288929+-0.00459791j),(0.01001978+-0.02400982j),(0.02053184+0.00494132j),(-0.01021289+0.02165675j),(-0.01701486+-0.00916683j),(0.01112326+-0.02257625j),(0.01598886+0.01010683j),(-0.01018562+0.01949248j),(-0.01438195+-0.01481467j),(0.01141051+-0.01934048j),(0.01521281+0.01608428j),(-0.01206190+0.01491348j),(-0.01438542+-0.02073793j),(0.01584389+-0.01311707j),(0.01445882+0.02149538j),(-0.01897992+0.00695941j),(-0.01097459+-0.02496196j),(0.02430611+-0.00346686j),(0.00702990+0.02387776j),(-0.02695673+-0.00399747j),(0.00110914+-0.02478917j),(0.02942465+0.00820808j),(-0.00894163+0.02067896j),(-0.02677483+-0.01544431j),(0.01909190+-0.01827317j),(0.02243210+0.01839055j),(-0.02591810+0.01102543j),(-0.01260941+-0.02317432j),(0.03183338+-0.00599552j),(0.00248067+0.02268924j),(-0.03142327+-0.00283829j),(0.01042196+-0.02324803j),(0.02840599+0.00817339j),(-0.01976433+0.01828951j),(-0.01889172+-0.01573242j),(0.02795010+-0.01456927j),(0.00862557+0.01832590j),(-0.02915380+0.00621035j),(0.00482560+-0.02180224j),(0.02740380+-0.00037603j),(-0.01459584+0.01952921j),(-0.01868915+-0.00833408j),(0.02322657+-0.01785406j),(0.00923519+0.01272718j),(-0.02462280+0.01094846j),(0.00348175+-0.01821206j),(0.02320314+-0.00571021j),(-0.01223934+0.01810048j),(-0.01487181+-0.00303782j),(0.01988380+-0.01829157j),(0.00628858+0.00820836j),(-0.02021617+0.01296199j),(0.00524589+-0.01483497j),(0.01815093+-0.00865789j),(-0.01229325+0.01623340j),(-0.00957386+0.00035149j),(0.01813896+-0.01786222j),(0.00156817+0.00507228j),(-0.01661852+0.01390390j),(0.00878338+-0.01233696j),(0.01322760+-0.01050668j),(-0.01391762+0.01483193j),(-0.00389248+0.00274962j)]' + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [974, 333] + rotation: 0 + state: enabled +- name: fosphor_glfw_sink_c_0 + id: fosphor_glfw_sink_c + parameters: + affinity: '' + alias: '' + comment: '' + freq_center: '0' + freq_span: samp_rate + wintype: firdes.WIN_BLACKMAN_hARRIS + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [976, 248] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'False' + grid: 'False' + gui_hint: '' + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '2' + size: '10240' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '.7' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '0.005' + ymin: '-0.005' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1893, 378] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: RX2 + ant1: RX2 + ant10: RX2 + ant11: RX2 + ant12: RX2 + ant13: RX2 + ant14: RX2 + ant15: RX2 + ant16: RX2 + ant17: RX2 + ant18: RX2 + ant19: RX2 + ant2: RX2 + ant20: RX2 + ant21: RX2 + ant22: RX2 + ant23: RX2 + ant24: RX2 + ant25: RX2 + ant26: RX2 + ant27: RX2 + ant28: RX2 + ant29: RX2 + ant3: RX2 + ant30: RX2 + ant31: RX2 + ant4: RX2 + ant5: RX2 + ant6: RX2 + ant7: RX2 + ant8: RX2 + ant9: RX2 + bw0: 11e6 + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: uhd.tune_request_t(freq, 6e6) + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: 0e0 + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: gain + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'True' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [375, 418] + rotation: 0 + state: enabled + +connections: +- [analog_sig_source_x_0, '0', blocks_multiply_xx_0, '1'] +- [blocks_add_const_vxx_0, '0', qtgui_time_sink_x_1, '1'] +- [blocks_complex_to_mag_squared_0, '0', blocks_multiply_const_vxx_0, '0'] +- [blocks_complex_to_mag_squared_0_1, '0', blocks_multiply_const_vxx_0_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_squared_0_1, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_multiply_const_vxx_0, '0', qtgui_time_sink_x_1, '0'] +- [blocks_multiply_const_vxx_0_0, '0', blocks_add_const_vxx_0, '0'] +- [blocks_multiply_xx_0, '0', fft_filter_xxx_0, '0'] +- [blocks_throttle_0, '0', blocks_multiply_xx_0, '0'] +- [fft_filter_xxx_0, '0', blocks_delay_0, '0'] +- [fft_filter_xxx_0, '0', fft_filter_xxx_1, '0'] +- [fft_filter_xxx_0, '0', fosphor_glfw_sink_c_0, '0'] +- [fft_filter_xxx_1, '0', blocks_complex_to_mag_squared_0, '0'] +- [uhd_usrp_source_0, '0', fft_filter_xxx_0, '0'] + +metadata: + file_format: 1 diff --git a/matlab/automatic_detector.m b/matlab/automatic_detector.m deleted file mode 100644 index cbf47c0..0000000 --- a/matlab/automatic_detector.m +++ /dev/null @@ -1,267 +0,0 @@ -clear all - -%% Signal parameters -file_path = '/opt/dji/collects/2437MHz_30.72MSPS.fc32'; -sample_rate = 30.72e6; % Collected 2x oversampled -critial_sample_rate = 15.36e6; % The actual sample rate for this signal -carrier_spacing = 15e3; % Per the LTE spec -signal_bandwidth = 10e6; % Per the LTE spec -rough_frequency_offset = 7.5e6; % The collected signal is 7.5 MHz off center - - -%% Read in the IQ samples for a single burst -% The burst is found using baudline and its cursor/delta time measurements -file_start_time = 0.802225; -file_start_sample_idx = uint64(file_start_time * sample_rate); - -burst_duration_time = 0.000721; -burst_duration_samples = uint64(burst_duration_time * sample_rate); - -samples = read_complex_floats(file_path, file_start_sample_idx, burst_duration_samples); - -figure(1); -plot(10 * log10(abs(fftshift(fft(samples))))); -title('Original Samples') - -%% Roughly center the signal of interest -% The signal might have been collected at an offset, so remove that offset -rotation_vector = exp(1j * 2* pi / sample_rate * (0:length(samples)-1) * rough_frequency_offset); -samples = samples .* rotation_vector; - -figure(1000); -plot(10 * log10(abs(fftshift(fft(samples))))); -title('Original Samples - Freq Shifted') - -orig_fft_size = sample_rate / carrier_spacing; -orig_long_cp_len = round(1/192000 * sample_rate); -orig_short_cp_len = round(0.0000046875 * sample_rate); - -%% Low pass filter the original samples -filter_taps = fir1(200, signal_bandwidth/sample_rate); -samples = filter(filter_taps, 1, samples); - -%% Search for the ZC sequence in symbol 4 - -% Create the ZC seqeunce -zc = create_zc(orig_fft_size, 4); -zc = reshape(zc, 1, []); % Reshape to match the samples vector - -% Run a normalized cross correlation searching for the ZC sequence -% TODO(8Apr2022): Search through a smaller space (no need to look through everything) -scores = zeros(1, length(samples)-length(zc)); -for idx=1:length(scores) - scores(idx) = normalized_xcorr(zc, samples(idx:idx + length(zc) - 1)); -end - -% Find the highest score value and index -[score, index] = max(abs(scores).^2); -if (score < 0.7) - warning("Correlation score for the first ZC sequence was bad. Might have errors later"); -end - -% The ZC sequence is the fourth symbol which means there are three FFT windows, one -% long cyclic prefix and two short cyclic prefixes before the ZC. But, to keep the -% correlation window as small as possible, the cyclic prefix of the ZC is ignored, -% so that adds an additional short cyclic prefix of offset -zc_seq_offset = (orig_fft_size * 3) + orig_long_cp_len + (orig_short_cp_len * 3); - -% Calculate where the burst starts based on the correlation index -start_offset = round(index - zc_seq_offset); - -angle(scores(index)) -% samples = samples .* exp(1j * -angle(scores(index)) * (0:(length(samples)-1))); -samples = samples .* exp(1j * -angle(scores(index))); - -% Trim all samples before the starting offset, and decimate at the same time. -% The decimation operation here is to get the signal back down to critical rate. -% Can get away with dropping every other sample because the signal is already filtered -samples = samples(start_offset:2:end); - -%% Calculate critical rate parameters -fft_size = critial_sample_rate / carrier_spacing; -long_cp_len = round(0.0000052 * critial_sample_rate); -short_cp_len = round(0.00000469 * critial_sample_rate); - -%% Plot symbol overlays -% The logic below is for debugging only. It draws OFDM symbol boundaries -% over a time domain view of the burst. It alternates between red and -% green transparent rectangles over the time domain as a sanity check that -% the time alignment is correct (starting at the right sample) -plot_symbol_boundaries(samples, critial_sample_rate, 4); - -%% Coarse frequency adjustment - -% My CFO detection isn't working, so rotate the constellation by hand (just eyeballing the constellation plots) -% offset_adj = -0.00005; -% samples = samples .* exp(1j * 2 * pi * offset_adj * (0:length(samples)-1)); - - -%% Phase adjustment - -% The phase angle adjustment made in the ZC sequence detection step got the QPSK to be lined up with points in -% [1,0], [0,1], [-1,0], and [0,-1] but we want it at [1,1], [-1,1], [-1,-1], and [1,-1] to make the demodulation -% decision simpler. That means that the constellation needs to be rotated by pi/2 (45 degrees). -% TODO(10Apr2022): Because of timing offsets there is a lot of "smearing" as the constellation rotates. Instead of -% fixing that right now, the constellation is rotated a little more to keep the points in distinct -% quadrants. -phase_offset = pi/2 - 0.5; -samples = samples * exp(1j * phase_offset); - -%% Symbol extraction - -symbols_time_domain = zeros(9, fft_size); -symbols_freq_domain = zeros(9, fft_size); - -sample_offset = 1; -for symbol_idx=1:9 - % OFDM symbols 1 and 9 have a long cyclic prefix - if (symbol_idx == 1 || symbol_idx == 9) - cyclic_prefix_len = long_cp_len; - else - cyclic_prefix_len = short_cp_len; - end - - % Skip the cyclic prefix - sample_offset = sample_offset + cyclic_prefix_len; - - % Extract out just the OFDM symbol ignoring the cyclic prefix - symbol = samples(sample_offset:sample_offset + fft_size - 1); - - % Save off the original time domain and the FFT'd samples - symbols_time_domain(symbol_idx,:) = symbol; - symbols_freq_domain(symbol_idx,:) = fftshift(fft(symbol)); - - % Skip the OFDM symbol just extracted - sample_offset = sample_offset + fft_size; -end - -% Plot the constellation diagrams for all extracted OFDM symbols -figure(5) -for idx=1:9 - subplot(3, 3, idx); - plot(symbols_freq_domain(idx,:), 'o'); -end -title('Constellations (Pre Freq Correction)') - -%% Demodulation - -% The spec says that the 15.36 MHz signal has 601 occupied carriers, but -% one of those is DC which doesn't appear to be used -% NOTE: I have seen someone saying that there is a specific phase present -% in some of the DC. Not sure if this is correct, so for now assuming that -% the DC carrier is not used -occupied_carriers = 600; - -% Create a list of data carrier indices -data_carriers_left = (fft_size/2)-(occupied_carriers/2)+1:fft_size/2; -data_carriers_right = (fft_size/2)+2:fft_size/2+(occupied_carriers/2)+1; - -% Below is logic to write the received ZC sequence out to a file. It is meant to be used with the -% brute_force_zc.m script -% -% % figure(1000); plot(abs(symbols_time_domain(4,:)).^2); -% file_handle = fopen('/opt/dji/collects/zc_symbol_4_15360KSPS_time_domain.fc32', 'w'); -% zc_samples = symbols_freq_domain(4, [data_carriers_left, data_carriers_right]); -% reals = reshape([real(zc_samples); imag(zc_samples)], [], 1); -% fwrite(file_handle, reals, 'single'); -% fclose(file_handle); -% -% % figure(1000); plot(abs(symbols_time_domain(6,:)).^2); -% file_handle = fopen('/opt/dji/collects/zc_symbol_6_15360KSPS_time_domain.fc32', 'w'); -% zc_samples = symbols_freq_domain(6, [data_carriers_left, data_carriers_right]); -% reals = reshape([real(zc_samples); imag(zc_samples)], [], 1); -% fwrite(file_handle, reals, 'single'); -% fclose(file_handle); - -% Place to store the data carrier samples -data_carriers = zeros(7, occupied_carriers); - -% Plot and extract the data carriers from the 7 data carrying OFDM symbols -figure(6); -output_idx = 1; - -% Symbols 4 and 6 are ZC sequences and do not contain data -for idx=[1,2,3,5,7,8,9] - subplot(3, 3, idx); - - % Get all of the freq domain samples for the current symbol, extract - % out just the data carriers, and plot - carriers = symbols_freq_domain(idx,:); - data_carriers(output_idx,:) = carriers([data_carriers_left, data_carriers_right]); - plot(squeeze(data_carriers(output_idx,:)), 'o'); - output_idx = output_idx + 1; -end - -% Plot the data carriers as one constellation (first one with lines, second -% with dots) -figure(7); -subplot(1, 2, 1); -plot(squeeze(data_carriers)); -subplot(1, 2, 2); -plot(squeeze(data_carriers), 'o'); - -%% Below is a brute force attempt at trying to get the first data symbol to drop out as all 0's or 1's - -% Initializing to 0x12345678 -scrambler_x2_init = [0 0 1, 0 0 1 0, 0 0 1 1, 0 1 0 0, 0 1 0 1, 0 1 1 0, 0 1 1 1, 1 0 0 0]; - -% Generate enough random for one OFDM symbol (need two bits per data carrier since there are 2 bits per sample) -scrambler_bit_count = length(data_carriers) * 2; - -% Try out 4 possibilities for the scrambler. It's unclear if the order of the initialization vector -% is correct, nor if the output of the scrambler needs to be reversed before getting applied. So, try -% all 4 combos -scrambler_perms = [... - generate_scrambler_seq(scrambler_bit_count, scrambler_x2_init); - generate_scrambler_seq(scrambler_bit_count, fliplr(scrambler_x2_init)); - fliplr(generate_scrambler_seq(scrambler_bit_count, scrambler_x2_init)); - fliplr(generate_scrambler_seq(scrambler_bit_count, fliplr(scrambler_x2_init))); -]; - -% Number of bits to XOR and show in the terminal -xor_window = 128; - -% TODO(10April2022): REMOVE THIS!!! IT'S ONLY HERE TO TROUBLESHOOT THE DESCRAMBLER!!! -data_carriers = data_carriers(1,:); -figure(88); -% Loop over the data carriers 4 times, each time rotating the constellation by 90 degrees -% This is a brute force approach to finding the correct phase offset since it's unknown due -% to not having a known training sequence -for idx=0:3 - % Rotate all samples by 90 degrees - offset = pi / 2; - data_carriers = data_carriers .* exp(1j * offset); - - subplot(2, 2, idx+1); - plot(data_carriers, 'o'); - - % Demapping the constellation points by hand. The mapping was taken from - % https://github.com/ttsou/openphy/blob/master/src/lte/qam.c#L35 - - % Using concatenation like a chump - demodulated_bits = []; - for sample_idx = 1:length(data_carriers) - sample = data_carriers(sample_idx); - if (real(sample) > 0 && imag(sample) > 0) - bits = [0, 0]; - elseif (real(sample) > 0 && imag(sample) < 0) - bits = [0, 1]; - elseif (real(sample) < 0 && imag(sample) > 0) - bits = [1, 0]; - elseif (real(sample) < 0 && imag(sample) < 0) - bits = [1, 1]; - else - error("Invalid coordinate!"); - end - - demodulated_bits = [demodulated_bits, bits]; - end - - % Try all 4 scrambler possibilities - xor_out = [ - char('0'+bitxor(demodulated_bits(1,1:xor_window), scrambler_perms(1,1:xor_window))); - char('0'+bitxor(demodulated_bits(1,1:xor_window), scrambler_perms(2,1:xor_window))); - char('0'+bitxor(demodulated_bits(1,1:xor_window), scrambler_perms(3,1:xor_window))); - char('0'+bitxor(demodulated_bits(1,1:xor_window), scrambler_perms(4,1:xor_window))); - ] -end diff --git a/matlab/brute_force_zc.m b/matlab/brute_force_zc.m deleted file mode 100644 index 3ac3723..0000000 --- a/matlab/brute_force_zc.m +++ /dev/null @@ -1,55 +0,0 @@ -clear all; -symbol_number = 6; -file_path = ['/opt/dji/collects/zc_symbol_', mat2str(symbol_number), '_15360KSPS_time_domain.fc32']; - -file_handle = fopen(file_path, 'r'); -reals = fread(file_handle, inf, 'single'); -fclose(file_handle); - -received_samples = reals(1:2:end) + 1j * reals(2:2:end); - -figure(1); plot(10 * log10(abs(received_samples).^2)); - -root_sequnce_attempts = 1000; -scores = zeros(root_sequnce_attempts, 1); - -for root=1:length(scores) - try - % Not all ZC roots are valid and the function will throw an error if the root is invalid - zc = zadoffChuSeq(root, 601); - - % Remove the center sample as this is what's done on the transmitter. - zc = [zc(1:300); zc(302:end)]; - catch - continue - end - - % Correlate the - scores(root) = abs(xcorr(received_samples, zc(1:end), 0, 'normalized')).^2; -end - -figure(2); -plot(scores); -title('ZC Normalized XCorr Results') - -[value, index] = max(scores); -if (value < 0.7) - warning('Unable to find matching sequence'); -end - -zc = zadoffChuSeq(index, 601); -figure(3); -subplot(2, 1, 1); -spectrogram(zc); -title('Calculated ZC') -subplot(2, 1, 2); -spectrogram(received_samples); -title('Received ZC') - -figure(4) -subplot(2, 1, 1); -plot(abs(fftshift(fft(zc))).^2); -title('Calculated ZC') -subplot(2, 1, 2); -plot(abs(fftshift(fft(received_samples))).^2); -title('Received ZC') \ No newline at end of file diff --git a/matlab/create_gnuradio_zc.m b/matlab/create_gnuradio_zc.m new file mode 100644 index 0000000..6477c66 --- /dev/null +++ b/matlab/create_gnuradio_zc.m @@ -0,0 +1,13 @@ +function [] = create_gnuradio_zc(fft_size, symbol_number) + zc = conj(create_zc(fft_size, symbol_number)); + + fprintf('['); + for idx=1:length(zc) + fprintf('(%0.4f+%0.4fj)', real(zc(idx)), imag(zc(idx))); + if (idx ~= length(zc)) + fprintf(',') + end + end + fprintf(']\n'); +end + diff --git a/matlab/estimate_cp_freq_offset.m b/matlab/estimate_cp_freq_offset.m deleted file mode 100644 index 8b1f72e..0000000 --- a/matlab/estimate_cp_freq_offset.m +++ /dev/null @@ -1,28 +0,0 @@ -function [freq_offset_est] = estimate_cp_freq_offset(samples, fft_size, short_cp_len, long_cp_len) - figure(44); - scores = zeros(9, 1); - skip = 8; - sample_offset = 1; - figure(10); - for idx=1:9 - if (idx == 1 || idx == 9) - cp_len = long_cp_len; - else - cp_len = short_cp_len; - end - - cyclic_prefix = samples(sample_offset+skip:sample_offset + cp_len - 1 - skip); - end_of_symbol = samples(sample_offset+fft_size+skip:sample_offset+fft_size+cp_len - 1 - skip); - - subplot(3, 3, idx); - plot(abs(cyclic_prefix).^2); - hold on; - plot(abs(end_of_symbol).^2); - hold off; - scores(idx) = angle(sum(cyclic_prefix .* conj(end_of_symbol))) / length(cyclic_prefix); - - sample_offset = sample_offset + fft_size + cp_len; - end - - freq_offset_est = sum(scores) / length(scores) / fft_size; -end \ No newline at end of file diff --git a/matlab/find_bursts.m b/matlab/find_bursts.m deleted file mode 100644 index e26c218..0000000 --- a/matlab/find_bursts.m +++ /dev/null @@ -1,93 +0,0 @@ -%% Signal parameters -file_path = '/opt/dji/collects/2437MHz_30.72MSPS.fc32'; -file_sample_rate = 30.72e6; % Collected 2x oversampled -rough_frequency_offset = 7.5e6; % The collected signal is 7.5 MHz off center -correlation_threshold = 0.7; % Minimum correlation score to accept (0.0 - 1.0) - -%% LTE parameters -carrier_spacing = 15e3; -signal_bandwidth = 10e6; - -% How many complex samples to read in at a time -chunk_size = 1e6; - -% Pre-calculate the frequency offset rotation -freq_offset_constant = 1j * pi * 2 * (rough_frequency_offset / file_sample_rate); - -% The output of the ZC sequence generator needs to be conjugated to be used in a filter. Also create a variable that -% can hold the filter state between chunks to prevent discontinuities -correlator_taps = conj(create_zc(file_sample_rate / carrier_spacing, 4)); -correlator_state = []; - -% Open the IQ recording -file_handle = fopen(file_path, 'r'); - -% Figure out how many samples there are in the file -fseek(file_handle, 0, 'eof'); -total_samples = ftell(file_handle) / 4 / 2; % 4 bytes per float, 2 floats per complex sample -fseek(file_handle, 0, 'bof'); -fprintf('There are %d samples in "%s"\n', total_samples, file_path); - -% Really large array to store the cross correlation results from *all* samples -zc_scores = zeros(total_samples - length(correlator_taps), 0); - -sample_offset = 0; -while (~ feof(file_handle)) - %% Read in the next buffer - % The `fread` command will return interleaved real, imag values, so pack those into complex samples - floats = fread(file_handle, chunk_size * 2, 'float'); - samples = floats(1:2:end) + 1j * floats(2:2:end); - - %% Frequency shift the input - % This is somewhat optional, but the correlation scores will go down fast if the offset is > 1 MHz - rotation_vector = exp(freq_offset_constant * (sample_offset:(sample_offset+length(samples)-1))); - samples = samples .* reshape(rotation_vector, [], 1); - - %% Correlate for the ZC sequence - % Use a FIR filter to search for the ZC sequence. The resulting values will be normalized to between 0 and 1.0 if - % the abs^2 is taken - % TODO(9April2022): Would be nice to use the fftfilt function, but I don't know if it has issues with keeping state - % as it doesn't have a state input like the filter command. In testing the FFT filter is twice - % as fast - [correlation_values, correlator_state] = filter(correlator_taps, 1, samples, correlator_state); - zc_scores(sample_offset+1:sample_offset+length(correlation_values)) = correlation_values; - - sample_offset = sample_offset + length(samples); -end - -% Get the floating normalized correlation results -abs_scores = abs(zc_scores).^2; - -figure(1); -plot(abs_scores); -title('Correlation Scores (normalized)') - -% Find all places where the correlation result meets the specified threshold -% This is going to find duplicates because there are very likely going to be two points right next to each other that -% meet the required threshold. This will be dealt with later -passing_scores = find(abs_scores > correlation_threshold); - -% Look through each element of the `passing_scores` vector (which is just indicies where the correlation threshold was -% met) and pick just the highest value `search_window` elements around (`search_window/2` to the left and right) of each -% value. The goal here is to only end up with the best score for the starting point of each burst instead of having -% multiple starting points for each burst. -true_peaks = zeros(length(passing_scores), 1); -search_window = 100; -for idx = 1:length(passing_scores) - % Calculate how far to the left and right to look for the highest peak - left_idx = passing_scores(idx) - (search_window / 2); - right_idx = left_idx + search_window - 1; - - % Get the correlation scores for the samples around the current point - window = abs_scores(left_idx:right_idx); - - % Find the peak in the window and use that value as the actual peak - [value, index] = max(window); - true_peaks(idx) = left_idx + index; -end - -% There are going to be duplicates in the vector, so just take the unique elements. What's left should just be the -% actual starting indices for each ZC sequence -true_peaks = unique(true_peaks); - - diff --git a/matlab/plot_symbol_boundaries.m b/matlab/updated_scripts/plot_symbol_boundaries.m similarity index 100% rename from matlab/plot_symbol_boundaries.m rename to matlab/updated_scripts/plot_symbol_boundaries.m