From 4d23acd2fdf9a53737477b1de0d9f968d9782192 Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Mon, 20 Jan 2020 22:58:10 +0000 Subject: [PATCH] Add sgpio_debug tools --- firmware/hackrf-common.cmake | 7 +- tools/sgpio_debug/create_tx_counter.py | 2 + tools/sgpio_debug/sgpio_debug_rx.grc | 351 +++++++++++++++++++++++++ tools/sgpio_debug/sgpio_debug_tx.sh | 3 + 4 files changed, 362 insertions(+), 1 deletion(-) create mode 100644 tools/sgpio_debug/create_tx_counter.py create mode 100644 tools/sgpio_debug/sgpio_debug_rx.grc create mode 100755 tools/sgpio_debug/sgpio_debug_tx.sh diff --git a/firmware/hackrf-common.cmake b/firmware/hackrf-common.cmake index f898ad44..e978ca8f 100644 --- a/firmware/hackrf-common.cmake +++ b/firmware/hackrf-common.cmake @@ -28,7 +28,12 @@ enable_language(C CXX ASM) SET(PATH_HACKRF_FIRMWARE ${CMAKE_CURRENT_LIST_DIR}) -SET(PATH_HACKRF_CPLD_XSVF ${PATH_HACKRF_FIRMWARE}/cpld/sgpio_if/default.xsvf) +if(NOT DEFINED SGPIO_DEBUG) + SET(PATH_HACKRF_CPLD_XSVF ${PATH_HACKRF_FIRMWARE}/cpld/sgpio_if/default.xsvf) +else() + SET(PATH_HACKRF_CPLD_XSVF ${PATH_HACKRF_FIRMWARE}/cpld/sgpio_debug/default.xsvf) +endif() +SET(VAR_USED ${SGPIO_DEBUG}) SET(PATH_HACKRF ${PATH_HACKRF_FIRMWARE}/..) SET(PATH_HACKRF_FIRMWARE_COMMON ${PATH_HACKRF_FIRMWARE}/common) SET(LIBOPENCM3 ${PATH_HACKRF_FIRMWARE}/libopencm3) diff --git a/tools/sgpio_debug/create_tx_counter.py b/tools/sgpio_debug/create_tx_counter.py new file mode 100644 index 00000000..a288036b --- /dev/null +++ b/tools/sgpio_debug/create_tx_counter.py @@ -0,0 +1,2 @@ +with open('tx_counter.bin', 'wb') as f: + f.write(bytes(range(256))*1000) diff --git a/tools/sgpio_debug/sgpio_debug_rx.grc b/tools/sgpio_debug/sgpio_debug_rx.grc new file mode 100644 index 00000000..20d8b113 --- /dev/null +++ b/tools/sgpio_debug/sgpio_debug_rx.grc @@ -0,0 +1,351 @@ +options: + parameters: + author: mike + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: sgpio_debug_rx + 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: delay + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '256' + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [272, 12.0] + rotation: 0 + state: true +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(20e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [184, 12] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '2' + comment: '' + freq: samp_rate/256 + maxoutbuf: '0' + minoutbuf: '0' + offset: '-1' + phase: '0' + samp_rate: samp_rate + type: float + waveform: analog.GR_SAW_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [32, 260.0] + rotation: 0 + state: true +- name: blocks_complex_to_float_0 + id: blocks_complex_to_float + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [256, 144.0] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: delay + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [456, 300.0] + rotation: 0 + state: true +- name: blocks_interleave_0 + id: blocks_interleave + parameters: + affinity: '' + alias: '' + blocksize: '1' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_streams: '2' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [448, 144.0] + rotation: 0 + state: true +- name: blocks_sub_xx_0 + id: blocks_sub_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 208.0] + rotation: 0 + state: enabled +- name: note_0 + id: note + parameters: + alias: '' + comment: 'Adjust delay until the plot is ~0. + + + There should be no intermittent spikes.' + note: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [392, 12.0] + rotation: 0 + state: true +- name: qtgui_time_sink_x_0 + 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: 'True' + 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: '1' + size: '1024' + 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: '2.56e-6' + tr_level: '0.1' + tr_mode: qtgui.TRIG_MODE_AUTO + 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: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [768, 204.0] + rotation: 0 + state: true +- name: soapy_source_0 + id: soapy_source + parameters: + affinity: '' + alias: '' + amp_gain0: '0' + ant0: RX + ant1: RX2 + args: '' + balance0: '0' + balance1: '0' + bw0: '0' + bw1: '0' + center_freq0: 100.0e6 + center_freq1: '0' + clock_rate: '0' + clock_source: '' + comment: '' + correction0: '0' + correction1: '0' + dc_offset0: '0' + dc_offset1: '0' + dc_offset_auto_mode0: 'False' + dc_offset_auto_mode1: 'False' + dev: driver=rtlsdr + devname: hackrf + gain_auto_mode0: 'False' + gain_auto_mode1: 'False' + ifgr_gain: '59' + lna_gain0: '10' + lna_gain1: '10' + manual_gain0: 'True' + manual_gain1: 'True' + maxoutbuf: '0' + minoutbuf: '0' + mix_gain0: '10' + mix_gain1: '10' + nchan: '1' + nco_freq0: '0' + nco_freq1: '0' + overall_gain0: '10' + overall_gain1: '10' + pga_gain0: '24' + pga_gain1: '24' + rfgr_gain: '9' + samp_rate: samp_rate + sdrplay_agc_setpoint: '-30' + sdrplay_biastee: 'True' + sdrplay_dabnotch: 'False' + sdrplay_if_mode: Zero-IF + sdrplay_rfnotch: 'False' + tia_gain0: '0' + tia_gain1: '0' + tuner_gain0: '10' + tuner_gain1: '10' + type: fc32 + vga_gain0: '10' + vga_gain1: '10' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [24, 108.0] + rotation: 0 + state: true + +connections: +- [analog_sig_source_x_0, '0', blocks_delay_0, '0'] +- [blocks_complex_to_float_0, '0', blocks_interleave_0, '0'] +- [blocks_complex_to_float_0, '1', blocks_interleave_0, '1'] +- [blocks_delay_0, '0', blocks_sub_xx_0, '1'] +- [blocks_interleave_0, '0', blocks_sub_xx_0, '0'] +- [blocks_sub_xx_0, '0', qtgui_time_sink_x_0, '0'] +- [soapy_source_0, '0', blocks_complex_to_float_0, '0'] + +metadata: + file_format: 1 diff --git a/tools/sgpio_debug/sgpio_debug_tx.sh b/tools/sgpio_debug/sgpio_debug_tx.sh new file mode 100755 index 00000000..e204ccf1 --- /dev/null +++ b/tools/sgpio_debug/sgpio_debug_tx.sh @@ -0,0 +1,3 @@ +#!/bin/sh +python3 create_tx_counter.py +hackrf_transfer -R -t tx_counter.bin