Bonjour,
Dans le cadre d'un projet d'électronique numérique, je cherche à implémenter une partie d'un algorithme sur une carte Nexys-3, je voudrais garder les calculs des variables sur machine et effectuer un filtrage sur carte.

Pour cela je dois réaliser un filtre d'ordre 4 sous simulink composé de deux filtres d'ordre 2 en série.

Je dois donc prendre un signal aléatoire du workspace de MATLAB, le faire passer dans mon filtre simulink et en récupérer la sortie.
Voici le filtre en question, où a1..bn sont les coefficients de mes deux filtres:
Nom : Schema_Simulink.png
Affichages : 1508
Taille : 106,1 Ko

Mon schéma dispose de deux blocs: -From Workspace -To Workspace afin de récupérer mon signal x_simulink en entrée et de sauvegarder les données dans une variable x_f.

Afin que le filtrage s'effectue j'utilise ces deux commandes :
open('tfremovePLI.slx');
sim('tfremovePLI.slx','SrcWorkspace','current');

Nom : DebugMode.png
Affichages : 986
Taille : 196,2 Ko

Et il se trouve que je ne récupère finalement rien en sortie du filtre, x_f reste le même qu'après sa déclaration : x_f=zeros(1,N);
Nom : x_f_apres_simu.png
Affichages : 899
Taille : 169,3 Ko

Je calcule les coefficients de mon filtre à partir des deux fonctions suivantes:
h = fdesign.bandpass('N,F3dB1,F3dB2', ordr, Fc1, Fc2, fs);
Hd = design(h, 'butter');

A priori le problème ne vient pas de la conception selon moi mais plutôt du transfert entre les différents workspace: x_f ne s'enregistre pas dans le workspace du programme.
Mes paramètres de simulation sont ceux-ci, avec fs la fréquence d’échantillonnage.
Nom : Parametres de simu.png
Affichages : 875
Taille : 73,2 Ko

Je travaille avec MATLAB 2013B
Est-ce que quelqu'un aurait une idée de comment résoudre ce problème ?
Merci d'avance,
Cordialement,
Tnaidu