\documentclass[a4paper,dvips,pdftex,titlepage]{article} % Inclusion de packages : %{{{1 \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage[french]{babel} \usepackage{fancyhdr} \usepackage[dvips]{graphicx,color} %\usepackage[pdftex]{graphicx,color} %\usepackage{verbatim} \usepackage{times} % Pour inclure les listings VHDL \usepackage{listings} \lstset{language=VHDL,extendedchars=true,inputencoding=latin1,breaklines} \lstset{language=vhdl, basicstyle=\footnotesize, %diminue la taille de listings numbers=left, % nombre à gauche numberstyle=\tiny, stepnumber=5, xleftmargin=30pt % extendedchars=true, % inputencoding=latin1, % breaklines } % Pour les maths : %\usepackage{amssymb} %\usepackage{amsfonts} %\usepackage{amsmath,amsthm} %}}}1 % Mise en page du document : %{{{1 \pagestyle{fancy} \parskip=10pt \baselineskip=11pt \parindent=0pt % alinéa \addtolength{\textwidth}{0.6cm} % Entête de page : \lhead{\small{Thomas Burg - Pierre-Andre Galmes \\ Fidèle Gafan - Pierre Prot}} \rhead{I2 ET\\ Février 2004} % Structure du document : \begin{document} \title{Pré-projet de VHDL : \\ Réalisation d'un périphérique ISA pour PC104} \author{Thomas Burg - Pierre-Andre Galmes - Fidèle Gafan - Pierre Prot\\ EFREI - Ingénieur 2$^{\textrm{ième}}$ année} \date{Février 2004} \maketitle \tableofcontents \pagebreak %1}}} % Todo : % Remerciements ? \section{Introduction} Suite au cahier des charges, écrit précédement, voici un rapport détaillant l'implémentation de la solution pour laquelle nous avons opté : la réalisation d'une carte FPGA. En effet, les avantages de ce type de carte sont nombreux. Tout d'abord, une fois le routage et la fabrication effectuée, cette carte peut-être reprogrammée à "volonté". En effet, cela est très utile autant lors de la phase de mise au point des différents modules que plus tard, si le besoin d'apporter des modification se fait sentir. On pourrait par exemple remplacer un module inutilisé (bus $I^2C$, gpio...) pour implémenter un autre module plus utile à ce moment. Pour cela, il suffirait de ré-affecter les pattes (fichier de contrainte) associées au module inutilisé et de modifier légèrement le code VHDL. Ensuite, cette carte a été faite dans une optique de réutilisation. En effet, pour gagner du temps de développement, il devient important que nos prédécesseurs puissent reprendre ce que nous avons développé. Ainsi, nous avons par exemple décider de choisir d'utiliser une carte PC104 pour la réalisation de ce robot. Ce type de carte a en effet l'avantage d'être standardisée. Il est donc facile de trouver des fournisseurs, critère très important pour la pérennité du système conçu ! Le présent dossier a pour but de présenter la carte FPGA. Nous présenterons une première vision globale de cette carte dans laquelle nous donnerons ses principales caractéristiques, à savoir, à quoi servira cette carte, de quels modules elle sera composée et les informations relatives au routage de cette carte. Nous expliquerons aussi le fonctionnement des différents modules et en particulier comment piloter ceux-ci à partir de la carte PC104. Pour chaque module, nous avons détaillé son fonctionnement interne ou architecture physique et listé le code VHDL créé. \pagebreak % Ici, explication sur la carte dans son ensemble ? \section{Architecture globale} Cette première vision a pour but de donner un aperçu des fonctionnalités que nous souhaitons implémenter. On se reportera au schéma de l'architecture globale, figure \ref{archiglobale} page \pageref{archiglobale} pour plus de facilitées à comprendre cette carte. \begin{figure}[htbp] \caption{Architecture globale de la carte FPGA} \begin{center} \includegraphics[width=1.4\textwidth,angle=90]{./images/carte_globale.pdf} \end{center} \label{archiglobale} \end{figure} La carte FPGA est composée de différents blocs : bus $I^2C$, ports série, bloc de gestion caméra, génération de signaux modulés en largeur d'impulsion ou Pulse Width Modulation (pwm) pour la commande de servomoteurs et blocs d'entrées / sorties ou General Purpose Input / Output (gpio). Comme cela a été spécifié dans le cahier des charges, pour la réalisation de notre robot, nous utiliserons une carte PC104. Cette carte est un ordinateur avec les entrées standard (port série, PS2...). Cette carte n'ayant pas tous le nécessaire pour le contrôle d'un robot, il nous faut développer une carte annexe permettant d'avoir ce qu'il nous manque. Pour les branchements, la carte FPGA est destinée à être connectée à la PC104 via un bus ISA. Tous les blocs précédement enoncés sont connectés sur le bus ISA et sont accessibles directement par le PC104. Le fpga gère les interruptions générées par ses blocs et les transmet au PC104 à l'aide des IRQ. \pagebreak % Les différents modules de la carte \section{La gestion des interruptions} \input{./interrupt/interrupt.tex} \pagebreak \section{Le bloc d'entrées / sorties} \input{./gpio/gpio.tex} \pagebreak \section{Le bloc port série} \input{./portserie/portserie.tex} \pagebreak \section{Le bloc PWM} \input{./pwm/pwm.tex} \pagebreak \section{Le bloc de gestion de la caméra} \input{./ovcam/ovcam.tex} \pagebreak \section{La carte} \input{./carte/carte.tex} \pagebreak \section {Conclusion} % Là ou on en est Même si nous ne sommes pas encore à la fin On a des modules qui fonctionnent On aura pu tester différents modules sur carte de test. Découverte de Protel, Réalisation de la carte auprès d'un fabriquant, Recherche du fabriquant le plus adapté Réussi à négocier un sponsoring avec lui ! Négociation d'un contrat \pagebreak % TODO : Annexes \appendix \section{Listing des modules vhdl} \subsection{nono\_const.vhd} \label{sec:nono_const} \lstinputlisting{../../src/packages/nono_const.vhd} \pagebreak \subsection{isa\_const.vhd} \label{sec:isa_const} \lstinputlisting{../../src/packages/isa_const.vhd} \pagebreak \subsection{pwm\_const.vhd} \label{sec:pwm_const} \lstinputlisting{../../src/packages/pwm_const.vhd} \pagebreak \subsection{or3.vhd} \label{sec:or3} \lstinputlisting{../../src/or/or3.vhd} \pagebreak \subsection{or8.vhd} \label{sec:or8} \lstinputlisting{../../src/or/or8.vhd} \pagebreak \subsection{reg\_rw.vhd} \label{sec:reg_rw} \lstinputlisting{../../src/registre/reg_rw.vhd} \pagebreak \subsection{tristate.vhd} \label{sec:tristate} \lstinputlisting{../../src/three-state/tristate.vhd} \pagebreak \subsection{gpio\_direction.vhd} \label{sec:gpio_direction} \lstinputlisting{../../src/gpio/gpio_direction.vhd} \pagebreak \subsection{gpio\_it\_detect\_up.vhd} \label{sec:gpio_it_detect_up} \lstinputlisting{../../src/gpio/gpio_it_detect_up.vhd} \pagebreak \subsection{gpio\_it\_detect\_down.vhd} \label{sec:gpio_it_detect_down} \lstinputlisting{../../src/gpio/gpio_it_detect_down.vhd} \pagebreak \subsection{interrupt.vhd} \label{sec:interrupt} \lstinputlisting{../../src/interrupt/interrupt.vhd} \pagebreak \subsection{gpio.vhd} \label{sec:gpio} \lstinputlisting{../../src/gpio/gpio.vhd} \pagebreak \end{document}