Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/carloscraveiro/dsb-sc_modulation

Demonstrates concepts of Amplitude Modulation (AM) using Matlab/GNU Octave to modulate using DSB-SC a sinc(x), demodulate synchronously and perform a Low Pass filtering at frequency domain.
https://github.com/carloscraveiro/dsb-sc_modulation

amplitude-modulation digital-signal-processing dsb-sc matlab octave

Last synced: 2 days ago
JSON representation

Demonstrates concepts of Amplitude Modulation (AM) using Matlab/GNU Octave to modulate using DSB-SC a sinc(x), demodulate synchronously and perform a Low Pass filtering at frequency domain.

Awesome Lists containing this project

README

        

# Project - Communication Principles
This project was developed as an assignment for the SEL0616 - Communication Principles discipline, offered in the first semester of 2024 by professor Mateus Isaac de Oliveira Souza at the Electrical and Computing Engineering Department - SEL, São Carlos School of Engineering - EESC, University of São Paulo - USP, Brazil.

## Introduction:
This project aims to practically expose, using code examples, the knowledge learned during the course regarding amplitude modulation and demodulation (AM), specifically **Double-SideBand Suppressed-Carrier modulation, or DSB-SC**, and **Synchronous Demodulation**.

Two main references were used as a basis for solving the proposed problems. For the conceptual part of Amplitude Modulation (AM), the course's main textbook **Modern Digital and Analog Communication Systems** (Lathi's book) was used, and for the part concerning Digital Signal Processing and the use of the `fft`, `fftshift`, and `ifft` functions, we used Professor Emiliano Rezende Martins' book **Essentials of Signals and Systems**, focusing on Chapter 8 - The Discrete Fourier Transform (DFT).

## Project Organization:
```bash
DSB-SC_Modulation
├── docs # Project Documentation Files (all in Brazilian Portuguese)
│   ├── final_assignment.pdf # The submitted assignment
│   └── project_specification_pt_br.pdf # The original specification
├── flake.lock
├── flake.nix
├── LICENSE
├── nix
│   └── shell.nix # Project's dependencies
├── plots # The plots generated by the source code
│   ├── a_plot.png
│   ├── ...
│   └── more_plot.png
├── README.md # This README (u are here!)
└── src # The source code of the project
├── amp_normalize.m
├── delimit_window.m
├── half_power_bandwidth.m
└── main.m # The actual script
```

## How to run:

First ensure that you have all the dependencies needed to run the project. We used octaveFull package at NixOS Linux distribution within the ghostscript package to allow saving the plots as pngs directly.

We don't have any idea of how to download this dependencies in other distros, but if you want to use Nix (the package manager) to manage the dependencies just execute the lines below.
```bash
$ git clone https://github.com/CarlosCraveiro/DSB-SC_Modulation.git

$ cd DSB-SC_Modulation/

$ nix --experimental-features 'nix-command flakes' # Ensure that you have flakes support

$ nix develop -c $SHELL # Download the development environment (the needed dependencies)

$ cd src/

$ octave
```

And at octave shell just set the frequency of the carrier wave (by default is 2.0MHz) by setting an environment variable and execute the main script.

```bash
octave> fc=500000 # Sets the frequency of the carrier to 0.5MHz

octave> main
```

Some of the plots that you should see are:

![original_message](https://github.com/CarlosCraveiro/DSB-SC_Modulation/blob/main/plots/03_fc_2000_kHz_message_time_plot.png)

![modulated_message_time_plot](https://github.com/CarlosCraveiro/DSB-SC_Modulation/blob/main/plots/05_fc_2000_kHz_modulated_message_time_plot.png)

![modulated_message_frequency_plot](https://github.com/CarlosCraveiro/DSB-SC_Modulation/blob/main/plots/06_fc_2000_kHz_modulated_message_freq_plot.png)

![Demodulated_message_spectrum_with_filter](https://github.com/CarlosCraveiro/DSB-SC_Modulation/blob/main/plots/08_fc_2000_kHz_demodulated_message_and_filter_freq_plot.png)

![recovered_message](https://github.com/CarlosCraveiro/DSB-SC_Modulation/blob/main/plots/09_fc_2000_kHz_demodulated_message_post_LPF_time_plot.png)
## Authors:
| Student | USP Registration Number |
|---------------------------------------| ----------------------- |
| Carlos Henrique Craveiro Aquino Veras | 12547187 |
| Ivan Roberto Wagner Pancheniak Filho | 12624224 |
| Beatriz Aimee Teixeira Furtado Braga | 12547934 |