GNU Radio World

QT GUI Eye, Histogram and Time Raster Sinks

Three of gr-qtgui's sinks looking at one BPSK signal. The Histogram Sink bins the noisy symbols, two humps at +/-1 whose overlap is the error rate; the Eye Sink folds the pulse-shaped version of the same stream at the symbol rate, so the opening of the eye is that margin seen in time; and the Time Raster Sink draws the bits themselves, one row of 32 at a time.

Press Load to open this flowgraph in an editor embedded above, then ▶ to run it. Nothing is downloaded until you do.

Open in the full editor ▶ Download the .grc

Blocks used

BlockModuleUsed
VariableGNU Radio2
AddGNU Radio1
Add ConstGNU Radio1
Char To FloatGNU Radio1
Interpolating FIR FilterGNU Radio1
Noise SourceGNU Radio1
QT GUI Eye SinkGNU Radio1
QT GUI Histogram SinkGNU Radio1
QT GUI Time Raster SinkGNU Radio1
Random SourceGNU Radio1
ThrottleGNU Radio1

Flowgraph source

qtgui/eye_histogram_raster.grc
options:
  parameters:
    author: ''
    category: '[GRC Hier Blocks]'
    comment: ''
    description: Three of gr-qtgui's sinks looking at one BPSK signal. The Histogram
      Sink bins the noisy symbols, two humps at +/-1 whose overlap is the error
      rate; the Eye Sink folds the pulse-shaped version of the same stream at the
      symbol rate, so the opening of the eye is that margin seen in time; and the
      Time Raster Sink draws the bits themselves, one row of 32 at a time.
    generate_options: qt_gui
    id: eye_histogram_raster
    output_language: python
    run: 'True'
    sizing_mode: fixed
    title: QT GUI Eye, Histogram and Time Raster Sinks
  states:
    coordinate: [10, 10]
    rotation: 0
    state: enabled
blocks:
- name: samp_rate
  id: variable
  parameters:
    value: '32000'
  states:
    coordinate: [590, 10]
    rotation: 0
    state: enabled
- name: sps
  id: variable
  parameters:
    value: '4'
  states:
    coordinate: [760, 10]
    rotation: 0
    state: enabled
- name: analog_random_source_x_0
  id: analog_random_source_x
  parameters:
    type: byte
    min: '0'
    max: '2'
    num_samps: '10000'
    repeat: 'True'
  states:
    coordinate: [10, 250]
    rotation: 0
    state: enabled
- name: blocks_throttle2_0
  id: blocks_throttle2
  parameters:
    type: byte
    samples_per_second: samp_rate/sps
    vlen: '1'
    ignoretag: 'True'
    limit: time
    maximum: '0.1'
  states:
    coordinate: [300, 250]
    rotation: 0
    state: enabled
- name: blocks_char_to_float_0
  id: blocks_char_to_float
  parameters:
    vlen: '1'
    scale: '0.5'
  states:
    coordinate: [630, 270]
    rotation: 0
    state: enabled
- name: blocks_add_const_vxx_0
  id: blocks_add_const_vxx
  parameters:
    type: float
    const: '-1'
    vlen: '1'
  states:
    coordinate: [1000, 270]
    rotation: 0
    state: enabled
- name: interp_fir_filter_xxx_0
  id: interp_fir_filter_xxx
  parameters:
    type: fff
    interp: sps
    taps: firdes.root_raised_cosine(sps, samp_rate, samp_rate/sps, 0.35, 11*sps)
    samp_delay: '0'
  states:
    coordinate: [80, 590]
    rotation: 0
    state: enabled
- name: analog_noise_source_x_0
  id: analog_noise_source_x
  parameters:
    type: float
    noise_type: analog.GR_GAUSSIAN
    amplitude: '0.15'
    seed: '0'
  states:
    coordinate: [1000, 370]
    rotation: 0
    state: enabled
- name: blocks_add_xx_0
  id: blocks_add_xx
  parameters:
    type: float
    num_inputs: '2'
    vlen: '1'
  states:
    coordinate: [1270, 270]
    rotation: 0
    state: enabled
- name: qtgui_eye_sink_x_0
  id: qtgui_eye_sink_x
  parameters:
    type: float
    name: '"Eye diagram"'
    size: '1024'
    samp_per_symbol: sps
    srate: samp_rate
    nconnections: '1'
    ylabel: Amplitude
    ymin: '-1.6'
    ymax: '1.6'
    grid: 'True'
    autoscale: 'False'
    entags: 'False'
    update_time: '0.10'
  states:
    coordinate: [440, 550]
    rotation: 0
    state: enabled
- name: qtgui_histogram_sink_x_0
  id: qtgui_histogram_sink_x
  parameters:
    type: float
    name: '"Sample distribution"'
    size: '2048'
    bins: '81'
    xmin: '-2'
    xmax: '2'
    nconnections: '1'
    autoscale: 'True'
    accum: 'False'
    grid: 'True'
    update_time: '0.10'
  states:
    coordinate: [80, 690]
    rotation: 0
    state: enabled
- name: qtgui_time_raster_sink_x_0
  id: qtgui_time_raster_sink_x
  parameters:
    type: byte
    name: '"Symbols"'
    samp_rate: samp_rate/sps
    nrows: '32'
    ncols: '32'
    nconnections: '1'
    zmin: '0'
    zmax: '1'
    mult: '[]'
    offset: '[]'
    x_label: '"Bit"'
    y_label: '"Row"'
    grid: 'False'
    update_time: '0.10'
  states:
    coordinate: [630, 370]
    rotation: 0
    state: enabled
connections:
- [analog_random_source_x_0, '0', blocks_throttle2_0, '0']
- [blocks_throttle2_0, '0', blocks_char_to_float_0, '0']
- [blocks_throttle2_0, '0', qtgui_time_raster_sink_x_0, '0']
- [blocks_char_to_float_0, '0', blocks_add_const_vxx_0, '0']
- [blocks_add_const_vxx_0, '0', blocks_add_xx_0, '0']
- [analog_noise_source_x_0, '0', blocks_add_xx_0, '1']
- [blocks_add_xx_0, '0', qtgui_histogram_sink_x_0, '0']
- [blocks_add_xx_0, '0', interp_fir_filter_xxx_0, '0']
- [interp_fir_filter_xxx_0, '0', qtgui_eye_sink_x_0, '0']
metadata:
  file_format: 1