Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- \documentclass{article}
- \usepackage[utf8]{inputenc}
- \usepackage[frenchb]{babel}
- \usepackage{geometry}
- \geometry{
- a4paper,
- total={210mm,297mm},
- margin = 1.2in
- }
- \title{Compte rendu intermédiaire Intégration des système - Groupe 17}
- \author{Matheus Schuh - Romain Jayles}
- \date{Mars 2015}
- \usepackage{natbib}
- \usepackage{graphicx}
- \usepackage{float}
- \usepackage{minted}
- \begin{document}
- \begin{titlepage}
- \newcommand{\HRule}{\rule{\linewidth}{0.5mm}} % Defines a new command for the horizontal lines, change thickness here
- \center % Center everything on the page
- \vspace*{\fill}
- %----------------------------------------------------------------------------------------
- % HEADING SECTIONS
- %----------------------------------------------------------------------------------------
- \textsc{\LARGE ENSIMAG}\\[1.5cm] % Name of your university/college
- \textsc{\Large Intégration des Systèmes}\\[0.5cm] % Major heading such as course name
- \textsc{\large Filière Systèmes et Logiciels Embarqués}\\[0.5cm] % Minor heading such as course title
- %----------------------------------------------------------------------------------------
- % TITLE SECTION
- %----------------------------------------------------------------------------------------
- \HRule \\[0.4cm]
- { \huge \bfseries Compte rendu - TP Filtre}\\[0.4cm] % Title of your document
- \HRule \\[1.5cm]
- %----------------------------------------------------------------------------------------
- % AUTHOR SECTION
- %----------------------------------------------------------------------------------------
- \begin{minipage}{0.4\textwidth}
- \begin{flushleft} \large
- \emph{Élèves:}\\
- \textsc{Schuh} Matheus \\ % Your name
- \textsc{Jayles} Romain \\ % Your name
- \textsc {Groupe 17}
- \end{flushleft}
- \end{minipage}
- ~
- \begin{minipage}{0.4\textwidth}
- \begin{flushright} \large
- \emph{Enseignants:} \\
- \textsc{Portolan} Michele \\ % Supervisor's Name
- \textsc{Belhadj Amor} Zeineb \\ % Supervisor's Name
- \textsc{Di Pendina} Gregory % Supervisor's Name
- \end{flushright}
- \end{minipage}\\[4cm]
- \vspace*{\fill}
- % If you don't want a supervisor, uncomment the two lines below and remove the section above
- %\Large \emph{Author:}\\
- %John \textsc{Smith}\\[3cm] % Your name
- %----------------------------------------------------------------------------------------
- % DATE SECTION
- %----------------------------------------------------------------------------------------
- {\large Mars 2015} % Date, change the \today to a set date if you want to be precise
- % Fill the rest of the page with whitespace
- \end{titlepage}
- %\maketitle
- \section{Introduction}
- Le but de ce TP est de réaliser la partie contrôle (FSM) d'un filtre à réponse impulsionnelle finie ainsi que le programme assembleur du microntrôleur qui aura pour tâche de programmer les coefficients du filtre. Pour ce faire, une très bonne compréhension de l'ensemble des éléments du filtre était nécessaire.
- \section{Théorie}
- \subsection{Filtre}
- Après avoir étudié les différents composants du filtre et après avoir produit un chronogramme (cf. fig. 2) pour faciliter la compréhension de celui-ci, nous avons réalisé la machine de Mealy suivante : \newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.25]{machine_etat.png}
- \caption{Machine à États du filtre}
- \label{fig:Machine a Etats du filtre}
- \end{figure}
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.35]{chrono.png}
- \caption{Chronogramme de la FSM}
- \label{fig:Chronogramme de la FSM}
- \end{figure}
- Cette machine a directement été traduite en VHDL, en prenant bien soin de connecter l'ensemble des signaux de sortie. On a par exemple constaté que deux signaux étaient toujours connectés au compteur, quel que soit l'état et la transition en cours :
- \begin{minted}{vhdl}
- Ram_address <= Tap_Number;
- Delay_line_address <= Tap_Number;
- \end{minted}
- Pour que le code VHDL soit propre et bien synthétisable, certaines valeurs par défaut ont été définies pour quelques signaux : si ils ne se voient pas attribués une valeur dans une transition de la machine à états, la valeur prise est celle par défaut :
- \begin{minted}{vhdl}
- Buff_OE <= '1';
- DAC_wr <= '0';
- Accu_ctrl <= '0';
- Delay_line_sample_shift <= '0';
- ADC_convst <= '1';
- \end{minted}
- \subsection {$\mu C$}
- Pour la deuxième partie de ce TP, nous avions pour objectif de programmer (assez librement) la partie contrôle du microcontrôleur. Ce microcontrôleur a pour but de copier les 32 coefficients du filtre depuis sa RAM vers la RAM du filtre. Une fois ceci réalisé, il doit donner la main au filtre pour que celui-ci puisse opérer et aller chercher les coefficients enregistrés dans sa RAM.
- Le microcontrôleur va, en premier lieu, lire l'entrée de configuration pour savoir quels coefficients aller chercher dans sa RAM (ceux correspondants au filtre passe-bas, filtre passe-haut, ...).
- Afin d'avoir une grande flexibilité dans le choix de la configuration (et donc du filtre), le choix du filtre se fait en plaçant sur l'entrée de configuration la première adresse du tableau des coefficients du filtre (par exemple $128$ pour la filtre passe bas). Ainsi nous gagnions en rapidité (pas de if then else pour choisir la configuration) et en flexibilité puisqu'il suffit de rajouter des coefficients dans la RAM et de donner la première adresse de ces coefficients sur l'entrée de configuration pour choisir ce type de filtre.
- Le code assembleur sera donc :
- \begin{minted}[linenos,
- numbersep=5pt,
- frame=lines,
- framesep=2mm]{asm}
- IN R1
- LI R5 0
- LI R0 31
- BRIGT 8
- MOVA R3 R5
- MOVA R2 R5
- LW R2 R1 R0
- SHL8 R3 R0
- OR R3 R2 R3
- OUT R3
- DEC R0 R0
- BRIUMP -9
- LI R0 3
- SHL14 R3 R0
- OUT R3
- BRIUMP -1
- \end{minted}
- On constate que ce code possède deux boucles :
- \begin{itemize}
- \item [{$\bullet$}]La première va parcourir les adresses de la RAM (du processeur) de 31 à 0, puis les écrire dans la RAM du filtre.
- \item [{$\bullet$}]La deuxième va mettre les bits $14$ et $15$ de $ExtOut$ à $1$ pour laisser la main au filtre. Cette boucle est faite indéfiniment.
- \end{itemize}
- \section{Expérimentation et vérification}
- \subsection{Vérification du filtre}
- Pour commencer la vérification du filtrage simplement, on peut utiliser une entrée impulsionnelle et regarder les valeurs de $Accu\_out$ ($Accu\_out$ doit prendre successivement les valeurs des coefficients du filtre puisque le $1$ de l'entrée se propage grâce au $delay\_line$).\newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.43]{impul_recd.png}
- \caption{Réponse impulsionnelle}
- \label{fig:Reponse impulsionnelle}
- \end{figure}
- On constate, si on regarde les valeurs des bits $0$ à $7$ de $AccuOut$, que la théorie est vérifiée.\newline
- Pour vérifier le filtrage avec des conditions plus réalistes, on peut mettre en entrée $Filter\_in$ un sinus avec une fréquence qui augmente de $0.01\%$ à chaque période d'horloge. Avec la configuration de base (filtre passe bas), on doit observer au bout d'un certain moment (le temps que la fréquence du sinus soit assez élevée) la sortie qui s'atténue fortement.\newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.44]{passe-bas_filtre.png}
- \caption{Filtre passe-bas}
- \label{fig:Filtre passe-bas verification}
- \end{figure}
- Une autre solution, pour vérifier, serait de mettre en entrée un signal carré avec une fréquence approprié : $100\ kHz$ dans notre cas, et la même amplitude que le sinus. Avec le filtre passe-bas, nous devrions observer un sinus synchronisé (au déphasage près) avec le signal carré.\newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.45]{SquareWaveToSinus_recd.png}
- \caption{Signal carré}
- \label{fig:Signal carre}
- \end{figure}
- On constate que les sorties désirées sont conformes à nos attentes.
- \subsection{Vérification du microcontrôleur}
- Pour vérifier le bon fonctionnement de la configuration du filtre, on peut laisser en entrée le même sinus que précédemment, et choisir les différentes configurations possible du filtre. On doit obtenir des sorties différentes en fonction du choix du filtre (passe-haut, passe-bas, ...)\newline
- L'adresse du tableau des coefficients du filtre passe-bas est :$128$
- L'entrée de configuration sera donc $128$.
- On observe : \newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.4]{passe-bas_recd.png}
- \caption{Filtre passe-bas}
- \label{fig:Filtre passe-bas}
- \end{figure}
- On voit bien qu'une fois que le sinus atteint une certaine fréquence, le signal est filtré.\newline
- L'adresse du tableau des coefficients du filtre passe-haut est $160$.
- L'entrée de configuration sera donc $160$.
- On observe :\newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.48]{passe-haut_recd.png}
- \caption{Filtre passe-haut}
- \label{fig:Filtre passe-haut}
- \end{figure}
- On peut donc dire que le filtrage des basses fréquences est effectif.\newline
- L'adresse du tableau des coefficients du filtre passe-bande est $192$.
- L'entrée de configuration sera donc $192$.
- On observe :\newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.48]{passebande_recd.png}
- \caption{Filtre passe-bande}
- \label{fig:Filtre passe-bande}
- \end{figure}
- On voit bien que le sinus n'est pas atténué que dans une certaine bande de fréquence.\newline
- L'adresse du tableau des coefficients du filtre arbitraire est $224$.
- L'entrée de configuration sera donc $224$.
- On observe :\newline
- \begin{figure}[H]
- \centering
- \includegraphics[scale=0.48]{ham_recd.png}
- \caption{Filtre arbitraire}
- \label{fig:Filtre arbitraire}
- \end{figure}
- Ce filtre fait bien l'effet de deux passe bande consécutifs. Le signal est dégradé vers la fin car la fréquence du signal est trop élevée pour la période d'échantillonage.
- \section{Conclusion}
- On peut dire que le filtrage se passe correctement. En observant les détails du processus (avec la réponse impulsionnelle), on remarque que l'on a les valeurs attendues. Avec des signaux plus évolués comme le sinus ou le signal carré et avec les différents filtres, nous observons les comportements attendus.
- Le microcontrôleur, quand à lui, rempli bien son rôle en fonction de l'entrée de configuration et a été conçu de manière à rajouter facilement d'autres configurations de filtrage sans avoir à changer le code assembleur.
- \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement