项目作者: wurmmi

项目描述 :
Master thesis project - Comparing a FM Radio implementation in VHDL versus high-level synthesis (HLS).
高级语言: VHDL
项目地址: git://github.com/wurmmi/fm-radio.git
创建时间: 2020-09-30T14:01:56Z
项目社区:https://github.com/wurmmi/fm-radio

开源协议:

下载


FM Radio

A master thesis project.

The aim of this thesis is develop a system architecture and concept, that allows the implementation of an FM radio receiver in multiple different ways, while providing an elegant way to compare the different solutions.

An FM radio receiver is developed in GNU Radio, Matlab, and as an FPGA design, using Vivado C++ High-Level Synthesis, as well as manually written VHDL.

This thesis and the accompanying project is being elaborated by Michael Wurm, in the Master’s degree programme “Embedded Systems Design” at the University of Applied Sciences Upper Austria, Campus Hagenberg.

FH Hagenberg Logo


Matlab System Design

The MathWorks Matlab software is used to build a platform that can be used for the system design.
Matlab is a powerful software to perform this kind of system design approach.
It provides a range of tools for signal processing, such as filter designers or FFT functions, as well as convenient ways to visualize data.

The developed model includes an FM transmitter and receiver.
However, the main focus is on the receiver side.
The chosen approach of having a transmitter model provides a reproducable starting point for the receiver design, because the received and decoded signal is previously known.

How to run

Open the fm_transceiver.m script in Matlab and run it.
It will call the transmitter, receiver, as well as multiple analysis functions to understand and develop the FM system model.


Hardware

An FM receiver is implemented in three levels of abstraction.

  1. GNURadio \
    Highest level of abstraction. \
    The receiver is implemented by creating a block-design in a graphical user interface. \
    This version requires none, or very little knowledge about the implementation of the specific blocks.

  2. HLS \
    Medium level of abstraction. \
    C++ is used as the high-level language to describe the receiver. \
    Vivado HLS transforms this into Verilog or VHDL. \
    This requires fundamental knowledge of the receiver structure. Also, some knowledge of FPGA design should be existent, to be able to design a receiver that is reasonable to implement in an actual FPGA device.

  3. VHDL \
    Lowest level of abstraction. \
    The receiver is implemented in VHDL.
    This requires deep knowledge about the inner workings of an FPGA, as well as DSP.

The following sections provide detailed information about the specific implementations and their development environment.

TODO: move this into the respective directory’s READMEs.

GNURadio

The GNURadio Companion software is used to implement a transmitter and a receiver. \
To actually run the block-design on hardware, two devices are used. \
An RTL-SDR dongle is used for the receiver, and an Ettus USRP B200mini is used for the transmitter.

Transmitter

TODO: explain the input sources (file and local PC audio)

  1. Open the fm_transmitter.grc project in the GNURadio Companion GUI.
  2. Make sure the USRP B200mini is connected to your PC.
  3. Execute the flowgraph.
  4. Use a regular FM receiver device to receive the signal and listen to ‘your’ radio station!

Receiver

  1. Open the fm_receiver.grc project in the GNURadio Companion GUI.
  2. Make sure the RTL-SDR is connected to your PC.
  3. Execute the flowgraph.
  4. Your PC audio should now play the radio station at the selected frequency.

VHDL

Testbench

explain cocotb, ghdl, gtkwave
source setup_env.sh for python env, then make any target

HLS

Testbench

vivado hls tb, any make target


Software requirements

TODO: add version numbers and install commands

Hardware requirements

  • RTL-SDR \
    There are many different producers and vendors of devices, that support RTL-SDR. This project uses a version with an R820T2 tuner, and an RTL2832U chipset. Find a list of supported devices following this link.

  • Ettus USRP B200mini \
    A powerful SDR that is supported by GNURadio.\
    For more details, please follow this link.


Contact

Michael Wurm <wurm.michael95@gmail.com>

LinkedIn Contact me on LinkedIn

topic-draft_1648031456336.pdf
paper_1648031456563.pdf
bd_cocotb_interface_simulator_1648031457092.pdf
bd_dsp_detailed_1648031457165.pdf
bd_dsp_overview_1648031457214.pdf
bd_fm_demod_stereo_audio_1648031457251.pdf
bd_freq_discriminator_1648031457279.pdf
bd_gnuradio_setup_receiver_1648031457349.pdf
bd_gnuradio_setup_transmitter_1648031457483.pdf
bd_impl_vivado_1648031457574.pdf
bd_matlab_transmitter_1648031457655.pdf
bd_system_overview_detailed_1648031457711.pdf
bd_system_overview_highlevel_1648031457944.pdf
bd_system_overview_highlevel_iq_lr_1648031457989.pdf
bd_testbench_architecture_vhdl_1648031458037.pdf
direct-conversion-receiver-block-diagram_1648031458099.pdf
down-conversion-AM-spectrum-and-bd_1648031458171.pdf
down-conversion-steps-AM-spectrum_1648031458231.pdf
fm-channel-baseband-freqs_1648031458321.pdf
fpga_design_levels_1648031458369.pdf
register_engine_1648031458404.pdf
sampling-aliasing_1648031458501.pdf
similar_process_1648031458580.pdf
simulink_system_generator_1648031458652.pdf
superheterodyne-receiver-block-diagram_1648031458731.pdf
testbench_hls_overview_reuse_1648031458763.pdf
timeline_performance_first_prototype_1648031458840.pdf
v_modell_1648031458901.pdf
logo_1648031458959.pdf
audio_output_compare_all_ips_1648031459017.pdf
audio_output_compare_ips_vs_matlab_1648031459180.pdf
audio_output_compare_tb_vs_hw_1648031459278.pdf
hardware_utilization_1648031459344.pdf
impl_time_analysis_1648031459410.pdf
lines_of_code_pie_chart_all_1648031459457.pdf
lines_of_code_pie_chart_matlab_1648031459517.pdf
lines_of_code_pie_chart_py_1648031459558.pdf
lines_of_code_pie_chart_py_all_1648031459596.pdf
lines_of_code_pie_chart_py_hls_1648031459662.pdf
lines_of_code_pie_chart_py_vhdl_1648031459715.pdf
matlab_analysis_freq_domain_1648031459753.pdf
matlab_analysis_time_domain_1648031459858.pdf
main_1648031460066.pdf
ADAU1761_datasheet_1648031460917.pdf
pg057-fifo-generator_1648031461095.pdf
pg080-axi-fifo-mm-s_1648031461472.pdf
pg085-axi4stream-infrastructure_1648031461623.pdf
ug1037-vivado-axi-reference-guide_1648031461804.pdf
ug1118-vivado-creating-packaging-custom-ip_1648031462126.pdf
ug1208-xsct-reference-guide_1648031462531.pdf
ug835-vivado-tcl-commands_1648031462822.pdf
ug871-vivado-high-level-synthesis-tutorial_1648031463828.pdf
ug901-vivado-synthesis_1648031464881.pdf
ug902-vivado-high-level-synthesis_1648031465401.pdf
ug998-vivado-intro-fpga-design-hls_1648031466220.pdf
xsdk_oslib_rm_1648031466330.pdf
presentation_1648031456670.pptx