wiki:Tutorials/k0SDR/Tutorial14

Zynq-based WISER platform - Spectrum Sensing

Table of Contents

  1. SDR Tutorials
    1. Working with USRP2 - Universal Software Radio Peripheral
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Usage
      5. Capture waveform and record to file & add time-domain plot of waveform
      6. Troubleshooting
    1. Simple radio example with GNURADIO benchmark scripts
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Running GNU Radio benchmark scripts
      5. Outputs from transmitter and receiver
      6. Troubleshooting
    1. Simple radio example with GNURADIO benchmark scripts (OEDL)
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Running OEDL script and viewing results
      5. OEDL script
    1. OFDM radio example with GNURADIO benchmark scripts
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Running OEDL script
    1. Spectrum sensing with USRP2 and wiserd
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Generate signal source file using octave
      5. Set up transmitting node
      6. Set up receiving node(s)
    1. Spectrum sensing with USRP2 and wiserd (OEDL and OML)
      1. Description
      2. Hardware / Software Resources utilized
      3. Transmit predefined tone
      4. Record spectrum data to an OML file
      5. Performing the experiment using OEDL
    1. Transmitting wideband signals using USRP X310 and wiserd
      1. Description
      2. Transmitting a signal using wiserd
      3. Creating the signal
    1. Running DSC match script from the grid console
    1. Working with GNURadio and Nutaq ZeptoSDR
      1. Description
      2. Set up
      3. Run the GRC scripts
    1. Realtek 2832 EZCap - A Frugal SDR
      1. Prereqs
      2. A cheap spectrum analyzer
    1. MacSwitch (Obsolete)
      1. Prerequisites
      2. Start Mac Switch
    1. Zynq-based WISER platform - Start-up test
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Loading the Zedboard
      5. Running a start up test
    1. Zynq-based WISER platform - Spectrum Sensing
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Start spectrum sensing
    1. Zynq-based WISER platform - Spectrum sensing with multiple nodes (OEDL)
      1. Description
      2. Hardware / Software Resources utilized
      3. Spectrum sensing with an OEDL script
    1. Zynq-based WISER platform - Building the Firmware
      1. Description
      2. Getting the FPGA source code
      3. Building the FPGA design
      4. Building ARM core software
    1. Nutaq - PicoSDR start-up and configuration
      1. Description
      2. Set up
      3. Launch demo scripts
    1. Multi channel sample collection with x310
      1. Description
      2. Set up
      3. Collect samples
    1. Getting started with RFNoC X310
      1. Description
      2. Set up
      3. Find USRP X310s
      4. Program the FPGA
    1. Multi Channel Sample Processing & Visualization
      1. Hardware / software resources utilized
      2. Receive multi channel signal for processing and plotting
      3. Transmit a signal using a single usrp
    2. Plot the IQ Constellation of received signal
      1. Multi-channel Uhd STreamer (MUST)
      2. Description
      3. How it works (without going into the source-code :-D
      4. Source code & compilation
      5. Hardware interface application
      6. XML file
      7. Command server
      8. Usage Example
      9. Signal handler applications
      10. Tutorials
    1. Using two RFNoC streams simultaneously on a single USRP device
      1. Description
      2. Set Up
      3. Running the Simulation
    1. Using 2 transmit or 2 receive antennas simultaneously
      1. Description
      2. Set Up
      3. Running the Experiment
    1. Generate random transmissions emulating Primary Transmitters
      1. Description
      2. Set Up
      3. Running the Experiment

Description

This tutorial demos capturing spectrum data using the Zynq-based WISER platform on ORBIT.

Hardware / Software Resources utilized

  1. An SB6 node with WISER platform connected to it.
  2. wiser_sb6_zedboard.ndz: disk image.
  3. wiserd application - Check here for more info.

Set up

  • After the set-up is complete, ssh into node1-1 and build the wiserd application
    root@node1-1:~# cd wiserd
    root@node1-1:~/wiserd# make clean
    root@node1-1:~/wiserd# make
    g++   -Wall -g -O -std=gnu++0x  -c -o channel_status.o channel_status.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o consumer_moving_average.o consumer_moving_average.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o fft_movavg_dc.o fft_movavg_dc.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o fft_movavg_oml.o fft_movavg_oml.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o fft_movavg_udp.o fft_movavg_udp.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o fft_pow_udp.o fft_pow_udp.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o fft_sigpower_oml.o fft_sigpower_oml.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o main.o main.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o radio.o radio.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o recv_consumer_factory.o recv_consumer_factory.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o recv.o recv.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o signal_from_file.o signal_from_file.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o time_samples_to_file.o time_samples_to_file.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o tran_consumer_factory.o tran_consumer_factory.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o tran.o tran.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o usrp.o usrp.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o waveform.o waveform.cpp
    g++   -Wall -g -O -std=gnu++0x  -c -o zynq.o zynq.cpp
    g++ -L/usr/local/lib channel_status.o consumer_moving_average.o fft_movavg_dc.o fft_movavg_oml.o fft_movavg_udp.o fft_pow_udp.o fft_sigpower_oml.o main.o radio.o recv_consumer_factory.o recv.o signal_from_file.o time_samples_to_file.o tran_consumer_factory.o tran.o usrp.o waveform.o zynq.o -o wiserd -lboost_system -lboost_random -lboost_thread -lboost_program_options -lboost_iostreams -lpthread -llog4cxx -luhd -loml2 -locomm -lfftw3f -lreadline
    

Start spectrum sensing

  • Run the wiserd application with the following arguments.
    root@node1-1:~/wiserd# ./wiserd --radio zynq --zynq_rx_freq 820e6 --zynq_rx_gain 10 --zynq_fft_bins 256 --zynq_fft_scaling 170 --zynq_avg_window 256
    linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.002-86-g566dbc2b
    
    Zynq constructed
    zynq_fft_bins 8
    zynq_fft_scaling 170
    zynq_rx_freq 820000000
    zynq_rx_gain 10
    Ready!
    Zynq thread started
    >
    
  • The Zynq parameters passed to the FPGA to configures the RF hardware and FFT engine
    a) '—zynq_rx_freq 820e6' ⇒ sets Rx center frequency. Range of values: [400M 4000M]
    b) '—zynq_rx_gain 10' ⇒ sets Rx amplifier gain. Range of values: [5.0 20.0]
    c) '—zynq_fft_bins 256' ⇒ sets FFT size. Range of values must be power of 2: [8 256]
    d) '—zynq_fft_scaling 170' ⇒ sets FFT stage scaling.
    e) '—zynq_avg_window 256' ⇒ sets time averaging across bins. Range of values: [1 256]

Note: the sampling rate not configurable and fixed at 30Msps.

  • From wiserd enable FFT engine and start streaming frequency bins from the FPGA to host
    > --fft_engine 1
    
  • The FFT bin data is collected in binary file name zynq_rx_fft.bin
  • From wiserd disable FFT engine and stop streaming data to host
    > --fft_engine 0
    
  • To view a water fall image collected rx spectrum data, run the fPlot script in octave. A sample image is shown below with a tone at 10MHz generated from a USRP.
Last modified 21 months ago Last modified on 09/10/15 13:13:07

Attachments (2)

Download all attachments as: .zip