options: parameters: author: N1AI catch_exceptions: 'True' category: '[GRC Hier Blocks]' cmake_opt: '' comment: '' copyright: '' description: '' gen_cmake: 'On' gen_linking: dynamic generate_options: qt_gui hier_block_src_path: '.:' id: sbitx_lowpass 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: sBitx Lowpass window_size: (1000,1000) states: bus_sink: false bus_source: false bus_structure: null coordinate: [8, 8] rotation: 0 state: enabled blocks: - name: B id: variable parameters: comment: '' value: Fs/2 states: bus_sink: false bus_source: false bus_structure: null coordinate: [352, 8.0] rotation: 0 state: enabled - name: Fc id: variable parameters: comment: '' value: 24*1000 states: bus_sink: false bus_source: false bus_structure: null coordinate: [512, 8.0] rotation: 0 state: enabled - name: Fs id: variable parameters: comment: '' value: 96*1000 states: bus_sink: false bus_source: false bus_structure: null coordinate: [264, 8.0] rotation: 0 state: enabled - name: LO id: variable parameters: comment: '' value: -B / 2 states: bus_sink: false bus_source: false bus_structure: null coordinate: [432, 8.0] rotation: 0 state: enabled - name: dF id: variable_qtgui_range parameters: comment: '' gui_hint: '' label: '' min_len: '200' orient: QtCore.Qt.Horizontal rangeType: int start: '500' step: '500' stop: '8000' value: '1000' widget: counter_slider states: bus_sink: false bus_source: false bus_structure: null coordinate: [592, 8.0] rotation: 0 state: true - name: samp_rate id: variable parameters: comment: '' value: 96*1000 states: bus_sink: false bus_source: false bus_structure: null coordinate: [168, 8.0] rotation: 0 state: enabled - name: analog_const_source_x_0 id: analog_const_source_x parameters: affinity: '' alias: '' comment: '' const: '0' maxoutbuf: '0' minoutbuf: '0' type: float states: bus_sink: false bus_source: false bus_structure: null coordinate: [32, 376.0] rotation: 0 state: true - name: analog_sig_source_x_0_1_2 id: analog_sig_source_x parameters: affinity: '' alias: '' amp: '1' comment: LO = -B / 2 freq: LO maxoutbuf: '0' minoutbuf: '0' offset: '0' phase: '0' samp_rate: samp_rate showports: 'False' type: complex waveform: analog.GR_COS_WAVE states: bus_sink: false bus_source: false bus_structure: null coordinate: [232, 408.0] rotation: 0 state: enabled - name: audio_source_0 id: audio_source parameters: affinity: '' alias: '' comment: '' device_name: hw:0,0 maxoutbuf: '0' minoutbuf: '0' num_outputs: '1' ok_to_block: 'True' samp_rate: samp_rate states: bus_sink: false bus_source: false bus_structure: null coordinate: [32, 260.0] rotation: 0 state: true - name: blocks_float_to_complex_0 id: blocks_float_to_complex parameters: affinity: '' alias: '' comment: '' maxoutbuf: '0' minoutbuf: '0' vlen: '1' states: bus_sink: false bus_source: false bus_structure: null coordinate: [264, 320.0] rotation: 0 state: true - name: blocks_multiply_xx_0_0_0 id: blocks_multiply_xx parameters: affinity: '' alias: '' comment: Mixer maxoutbuf: '0' minoutbuf: '0' num_inputs: '2' type: complex vlen: '1' states: bus_sink: false bus_source: false bus_structure: null coordinate: [480, 336.0] rotation: 0 state: enabled - name: low_pass_filter_0_0 id: low_pass_filter parameters: affinity: '' alias: '' beta: '6.76' comment: 'Cutoff is B / 2 Decimation is 2' cutoff_freq: B / 2 decim: '2' gain: '1' interp: '1' maxoutbuf: '0' minoutbuf: '0' samp_rate: samp_rate type: fir_filter_ccf width: B / 8 win: window.WIN_HAMMING states: bus_sink: false bus_source: false bus_structure: null coordinate: [624, 292.0] rotation: 0 state: enabled - name: note_0 id: note parameters: alias: '' comment: "- Ref: https://dsp.stackexchange.com/questions/43278/how-do-i-convert-a-real-baseband-signal-to-a-complex-baseband-signal\n\ - Second Approach: Uses a lowpass filter\n- To convert a real signal r[n] sampled\ \ at rate 2B to its complex \n baseband representation (sampled at rate B),\ \ you want to map the\n frequency content in the range [0,B) in the real signal\ \ to the range\n [\u2212B/2,B/2) in the resulting complex signal.\n - Multiply\ \ r[n] by e**\u2212j(\u03C0/2)n to effect a frequency shift of \u2212B/2,\n\ \ shifting the desired frequency content to the range [\u2212B2,B2). The\n\ \ result is a complex signal that is centered in the appropriate place\n \ \ (the center of the band is at zero frequency).\n - Apply a lowpass filter\ \ to pass only the content in the range \n [\u2212B2,B2) (to the extent required\ \ while meeting your application's \n antialiasing requirements).\n - Decimate\ \ the signal by 2 by discarding every other sample. The \n result is a complex\ \ signal sampled at rate B." note: Convert real to complex states: bus_sink: false bus_source: false bus_structure: null coordinate: [840, 16.0] rotation: 0 state: true - name: qtgui_sink_x_0 id: qtgui_sink_x parameters: affinity: '' alias: '' bw: B comment: '' fc: '0' fftsize: '8192' gui_hint: (0,1,1,1) maxoutbuf: '0' minoutbuf: '0' name: '"Output (Complex)"' plotconst: 'False' plotfreq: 'False' plottime: 'False' plotwaterfall: 'True' rate: '10' showports: 'False' showrf: 'True' type: complex wintype: window.WIN_BLACKMAN_hARRIS states: bus_sink: false bus_source: false bus_structure: null coordinate: [824, 308.0] rotation: 0 state: enabled - name: qtgui_sink_x_0_0 id: qtgui_sink_x parameters: affinity: '' alias: '' bw: samp_rate comment: '' fc: '0' fftsize: '8192' gui_hint: (0,0,1,1) maxoutbuf: '0' minoutbuf: '0' name: '"Input (Real)"' plotconst: 'False' plotfreq: 'False' plottime: 'False' plotwaterfall: 'True' rate: '10' showports: 'False' showrf: 'True' type: float wintype: window.WIN_BLACKMAN_hARRIS states: bus_sink: false bus_source: false bus_structure: null coordinate: [264, 196.0] rotation: 0 state: enabled connections: - [analog_const_source_x_0, '0', blocks_float_to_complex_0, '1'] - [analog_sig_source_x_0_1_2, '0', blocks_multiply_xx_0_0_0, '1'] - [audio_source_0, '0', blocks_float_to_complex_0, '0'] - [audio_source_0, '0', qtgui_sink_x_0_0, '0'] - [blocks_float_to_complex_0, '0', blocks_multiply_xx_0_0_0, '0'] - [blocks_multiply_xx_0_0_0, '0', low_pass_filter_0_0, '0'] - [low_pass_filter_0_0, '0', qtgui_sink_x_0, '0'] metadata: file_format: 1 grc_version: 3.10.8.0