Commit 4b318545 authored by Garnier Jean-Romain's avatar Garnier Jean-Romain
Browse files

Finish translating readme.md

parent 85d62328
# Principe du projet
L'objectif de ce projet était d'étudier le NOMA et ses performances.<br/>
Nous avons abouti à une modélisation probabiliste du taux d'erreur binaire pour un nombre quelconque d'utilisateurs, puis avons comparé ce résultat à un modèle statistique (Méthode de Monte-Carlo) ainsi qu'à des résultats expérimentaux.
# On the Performance of QPSK Modulationover Dowlink NOMA: From error probability derivation to SDR-based validation
# Organisation du dossier
Les différentes parties du projet ont été regroupées en dossiers, dont voici l'utilité :
This repository is associated to the paper available at [URL].
* [gnuradio](#folder_gnuradio) : Ensemble des flowgraphs utilisés dans GNURadio pour obtenir les résultats expérimentaux
* [gr-NOMA](#folder_gr-NOMA) : Dossier contenant le code pour les blocs, codés en C++, que nous avons réalisés dans le cadre du projet
* [Latex](#folder_Latex) : Dossier avec les sources LaTeX de notre rapport
* [Matlab](#folder_Matlab) : Code Matlab permettant de générer les paramètres d'un canal
* [Python](#folder_Python) : Ensemble des scripts Python réalisés pour le projet
## Description
In this project, we study the performance of QPSK modulation in the context of multi-user downlink NOMA with a successive interference canceller (SIC) at the receiver side.
We derive the analytical formula on its closed-form in the associated paper, and use the code in this repository to verify it, both through simulation and experimental validation.
Numerical simulations are used to not only to corroborate the tightness of our theoretical expressions, but also to analyze the problem of power allocation in the two and three users cases.
Finally, the code for an experimental validation testbed using NOMA with software defined radio is provided.
Des détails sont fournis dans les parties spécifiques à chaque dossier.
## Table of content
* [GNURadio](#folder_gnuradio) : GNURadio flowgraphs used in our experimental setup
* [gr-NOMA](#folder_gr-NOMA) : Custom-made blocks, using C++, used in the flowgraphs
* [LaTeX](#folder_Latex) : LaTeX sources for our report
* [Matlab](#folder_Matlab) : Matlab code used to generate the channel parameters used in simulations
* [Python](#folder_Python) : Python scripts used for the simulations and optimization
## <a name="folder_gnuradio"></a> GNURadio
Pour faire fonctionner ces flowgraphs, il faut installer les blocs dans gr-NOMA.
These flowgraphs rely on the blocs defined in [gr-NOMA](#folder_gr-NOMA), they must be installed first.
##### flowgraph\_NOMA\_2\_users.grc
Flowgraph générant des symboles aléatoires pour 2 utilisateurs en NOMA, les transmettant en passant par 2 antennes, les décodant et calculant le BER de chaque utilisateur.
A flowgraph generating random symbols for 2 users, combining them using NOMA, and transmitting them through 2 antennas.
They are then decoded, and the BER is computer for each user.
La puissance allouée à chaque utilisateur est réglable.
In this setup, the power allocated to each user can be chosen in live transmissions.
##### flowgraph\_NOMA\_3\_users.grc
Flowgraph générant des symboles aléatoires pour 3 utilisateurs en NOMA, les transmettant en passant par 2 antennes, les décodant et calculant le BER de chaque utilisateur.
A flowgraph generating random symbols for 3 users, combining them using NOMA, and transmitting them through 2 antennas.
They are then decoded, and the BER is computer for each user.
La puissance allouée à chaque utilisateur est réglable.
In this setup, the power allocated to each user can be chosen in live transmissions.
##### noise\_generator.grc
Flowgraph générant des symboles complexes aléatoires (selon une loi gaussienne) et les envoyant à une fréquence données, pour simuler un canal gaussien.
This flowgraph generates random complex symbols, following a Gaussian repartition. These symbols are then sent at a given frequency, to generate random noise in our channel.
La puissance allouée d'émission du bruit est réglable.
The noise's power can be modified during the transmission.
##### sync\_test\_flowgraph.grc
Flowgraph permettant de tester la correction apportée par les blocs `sync_frames_sender ` et `sync_frames_receiver `.
This simple flowgraph is used to test the phrase-shift correction for the blocs `sync_frames_sender ` and `sync_frames_receiver `.
## <a name="folder_gr-NOMA"></a> gr-NOMA
On suppose gnuradio installé sur la machine pour la suite de cette partie.
It is assumed that [GNURadio](https://www.gnuradio.org) is installed for the following steps.
This repository should also be cloned or downloaded.
### Installation
Il faut tout d'abord se trouver dans le bon dossier :
First, move to the right folder:
```
cd [...]/gr-NOMA
```
On créé un dossier `build` (s'il n'existe pas déjà) :
Then, create a `build` build folder (if it doesn't already exist) :
```
mkdir build
cd build
```
On compile les blocs :
Then, compile the blocks:
```
cmake .. && make
```
On installe les blocs :
And install them:
```
sudo make install
```
Sur linux uniquement, il faut entrer cette commande à chaque fois qu'on installe les blocs :
For linux, each time new blocks are installed, you must run this command:
```
sudo ldconfig
```
### Description des blocs
### Blocs description
Note : Le code des blocs est situé dans `gr-NOMA/lib`.
**Note:** The blocs' code is located in the `gr-NOMA/lib` subfolder.
##### BERCounter
......@@ -168,6 +174,8 @@ The power of the noise, `N`, must be simply converted in `sigma` (used in our al
We assume that Python 3 and numpy are installed on the machine.
### Script descriptions
##### Comparison\_Experiment\_Theory.py
Contains measured BER (Bit Error Rate) for 3 users, and compares them with theoretical results.
......@@ -188,14 +196,14 @@ Contains functions to calculate the theoretical error rate using the formula dev
Usage examples are given in `Comparaison_Modele_Theorie.py` and at the end of the file.
##### Research\_Optimum.py
##### Find\_Optimum.py
Contains the algorithm for searching for the optimum power distribution. A custom implementation is compared to an existing solution. It is based on scipy and on the file `Theorie_N_receptors.py`.
Its behavior is detailed in our report, and explanations on the matrices used in the optimization are given at the beginning of the file.
# Appendixes
## Appendixes
## OFDMA
### OFDMA
We tried to reproduce the flowgraph of the following publication, but without success : <a name="https://www.researchgate.net/publication/322924686_OFDMA_Simulations_on_GNU_Radio">https://www.researchgate.net/publication/322924686_OFDMA_Simulations_on_GNU_Radio</a>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment