IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Modulation BPSK [Débutant]


Sujet :

Signal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut Modulation BPSK
    Bonjour, je voudrais réaliser une modulation BPSK d'un signal en bande de base avec un certain pulse shaping.
    J'ai donc commencé par réfléchir sur papier en introduisant les paramètres qui m’intéressent car je veux par la suite pouvoir jouer dessus pour visualiser leur incidence sur ma sortie qui serait par exemple la constellation et les trajectoires de phases. Voici ce que je voudrais réaliser :

    Nom : mod.png
Affichages : 2474
Taille : 1,42 Mo

    J'ai donc par la suite écrit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    function [out] = IQmod
     
    fs= 150000; % Freq d’échantillonnage.
    fc= 100; % Freq de coupure du filtre de shaping
    T=1/fs;
    N=1024 % Nb de coef du filtre de shaping.
    gI=1; % Gain dans la branche de I. (j’introduis ces gains pour pouvoir visualiser l'incidence d'une variation de gain sur la phase etc..)
    gQ=1; % Gain dans la branche de Q.
     
    x = randi([0 1], 100, 1);
    y = comm.BPSKModulator;
     
    %% Modulation
     
    I=real(x);
    Q=imag(x);
    t=0:1/fs;
     
    for i=1: length(x)
        C1(i) = I*sin(2*pi*fc*t)*gI;
        C2(i) = Q*cos(2*pi*fc*t)*gQ+pi/2;
    end
     
    S= C1+C2;
     
    modData = step(y, S);
    scatterplot(modData)
    Mais cela ne fais pas ce que je veux plus haut et j'ai l'impression de me mélanger les pinceaux dans mon code car je crois que je me foire lors de mon étape de modulation IQ... Quelqu'un aurait une idée ? Je suis prenneur de tous codes, conseils et éxpliquations
    Merci d'avance !

  2. #2
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    *deleted*

  3. #3
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bonjour, j'ai l’impression que je m’emmêle les pinceaux. Je ne sais pas si je visualise bien toutes les étapes dans ma tête.

    A savoir pour moi mon code doit se dérouler en plusieurs étapes comme ceci:

    1) générer mon signal aléatoire (A.cos(wt))

    2) Effectuer le codage NRZ

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    alpha = zeros(1,length(X));  
    for k=1:length(X)
        if X(k) == 0
            alpha(k) = 1;
        elseif  X(k) == 1
            alpha(k) = -1;
        end
    end
    3) Effectuer le pulse shaping (ça je ne sais pas comment le faire) sur le signal mapé.

    4) modulé le signal mapé via I et Q ex: (par contre je ne comprends pas la ligne avec la période... Ts=1/fs qui est la freq d’échantillonnage )

    t = 0 : Ts : (length(y_a) - 1) * Ts;
    C1 = I* sin(2*pi * fc * t);
    C2 = Q*cos(2*pi * fc * t)+pi/2;

    5) ploter C1 et C2 via un scaterplot en ('Quadrature', 'inPhase')

    Est ce que j'ai au moins le raisonnement de bon ? Car la, on me dit que c'est simple mais pourtant j'arrive pas a décoler ... Du coups je commence à désespérer...

  4. #4
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bon je vois mieux ce qu'il faut faire en fait ...

    1- Générer la suite binaire aléatoire
    2- effectuer un codage différentiel
    3- codage NRZ
    4- Shaping (filtre passe bas)
    5- modulation I/Q

    Sauf que arrivé après le codage NRZ je suis bloqué niveau code... J'arrive pas a visualiser comment realier le filtre de shaping en code ... Any help ??

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour,

    Tu as plusieurs possibilités pour effectuer un filtrage passe bas. Pour filter les fréquences, il te faudra calculer la fft de ton signal. Ensuite, tu peux construire ton filtre "sur mesure" avec la signal processing toolbox, ou bien filtrer de façon plus simpliste ou encore, tu peux effectuer des filtrages de types gaussiens directement sur ta courbe temporelle via un filtrage de type gaussien.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bonjour, merci pour la réponse ! J'ai bien avancé et je pense donc avoir finit mon code.. Cependant il subsiste des erreurs, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    k=100;
    % Generate random source data {0, 1}
    d_data = (rand(0, k) > .5);
     
    % Generation de ma séquenc
     
    d_seq = zeros(k);
     
    % Codage différentiel
    for k=0:  length(d_data)
          d_seq(k) = XOR(d_data(k), d_seq(k-1));
    end
     
    % Codage NRZ
    d_signal = zeros(k);
    for k=0 :  length(d_data)
        if d_seq(k) == 0
            d_signal(k) = -1;
        elseif  d_seq(k) == 1
            d_signal(k) = 1;
        end
    end        
     
    %Shaping via filtre fir1
    h = fir1(2047 ,50 ,'low');
    d_base=filter(h, d_signal);
     
    % Modulation
    I = cos(d_base);
    Q = sin(d_base);
     
    s = I + jQ;
    Et j'obtient l'erreur suivante lorsque je compile:
    error: modSvn: subscript indices must be either positive integers less than 2^31 or logicals
    error: called from:
    error: /home/amasseron/octave/saves/modSvn.m at line 11, column 16


    Pourtant je suis bien le principe du codage différentiel qui revient a effectuer un XNOR (mais comme je suis inversé car je ne m'interresse qu'au changement de phase, j'utilise un XOR mais le principe revient au meme ... ) comme cela :
    Nom : xnor.jpg
Affichages : 2062
Taille : 508,2 Ko

    Avec bk qui est ma suite binaire et dk qui est ma séquence.. Sachant que nous prenons arbitrairement d(0)=0 (c'est pour cela notamenemt que d_seq est un vecteur de zeros).

    Quelqu'un aurait une idée ??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Modulation BPSK
    Par Lord Bouillon dans le forum Octave
    Réponses: 0
    Dernier message: 08/05/2015, 19h35
  2. la modulation-demodlation bpsk , traitement de signal
    Par soufianesoufiane dans le forum Simulink
    Réponses: 0
    Dernier message: 05/03/2015, 03h32
  3. [Débutant] gain de codage modulation BPSK
    Par hamzawhy dans le forum Signal
    Réponses: 0
    Dernier message: 01/01/2015, 06h50
  4. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  5. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo