\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 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 % 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}}} \section{Introduction} Nous souhaitons réaliser une carte ISA pour ordinateur PC104 dans le cadre du projet de VHDL. Nous voulons mener à terme ce projet pour pouvoir ensuite l'utiliser sur les robots présentés à la coupe de robotique. Ceci remplacerai le projet de I2 de VHDL. Le projet donnera lieu à une note qui comptera pour le projet de VHDL. Pour la première fois l'année derniere, notre groupe, constitué en partie d'élève de promo 2005 a présenté un robot à la coupe. Nous en avons tiré quelques enseignements de cet épreuve. Les systèmes développés avaient des défauts que nous voudrions voir disparaitre : manque de fiabilité, encombrement. D'un autre coté, cette année, le règlement de la coupe autorise la présence de deux robots sur le terrain. Nous allons donc ré-utiliser l'odinateur de l'année dernier (Une carte prototype fournit par la société Ipricot) et un ordinateur de type PC104. Malheureusement ce type de carte standard ne dispose pas des bus que nous voulons exploiter: i2c, GPIO, ligne servo-moteur et bus caméra. L'an dernier, nous avons réalisé des cartes individuelles pour chacune de ces fonctions. La carte que nous souhaitons réaliser aura pour mission de regrouper tous ces modules individuels en un seul package adaptable directement sur le port ISA. \pagebreak \section{Description du projet} Nous allons pour faire face à notre problème, réaliser une carte ISA. La carte PC104 dispose d'un tel bus. Ce bus à tendance à disparaitre progressivement de nos ordinateurs de bureau au profit de bus plus rapide. (PCI, AGP, XPCI ...), mais il reste suffisament performant pour l'application que nous voulons faire: \begin{center} \begin{itemize} \item 1 bus i2c \item 2 ports séries \item 8 lignes servo \item 2 lignes de PWM \item 2 blocs d'IO \item 3 blocs d'IO pour le bus parallèle \item gestion d'accès à la camera ov6620 \end{itemize} \end{center} La figure \ref{schema1} de la page \pageref{schema1} l'illustre bien. \begin{figure}[htbp] \caption{Illustration} %\begin{center} %\scalebox{0.5}{ \includegraphics[width=\textwidth]{images/schema1.pdf} %} %\end{center} \label{schema1} \end{figure} Chacun des périphériques sera directement adressable. Le design comportera un systeme de d'interruption, afin de pouvoir déclencher une interruption sur l'ordinateur et effectuer un traitement particulier. Le dispositif de gestion de la caméra utilisera les possibilités DMA du bus ISA et ainsi nous n'aurons pas besoin de stocker les images provenant de la caméra dans le fpga. Cela évitera d'avoir d'un circuit contenant une très grosse quantité de mémoire ou bien une RAM externe. Pour réaliser les fonctionnalités nous envisagons de nous inspirer des sources mises à diposition par le projet OpenCores (www.opencores.org). \pagebreak \section{Cahier des charges} Voici les caractéristiques du module que nous voulons réaliser: \begin{description} \item [Caractéristiques physiques compatibles PC104]. Format : si possible 90x96 mm, sinon le plus petit possible. Connecteur de bus PC104.\\ \item [Fonctionnement sur bus ISA.] Tous les modules internes seront reliés à ce bus et possèderont chacun leur adresse, de sorte qu'ils seront accessibles directement par la carte-mère.\\ \item [Gestion d'interruptions] pour permettre à chaque module de signaler au driver tout changement sur les entrées du circuit.\\ \item [Paramétrage possible de l'IRQ et du canal DMA] utilisés sur le bus isa.\\ \item [1 bus i2c standart.] Ce bus est très utilisé dans l'industrie, et de nombreux microcontrôleurs le supportent en hard. \\ \item [2 ports série.] Ces ports seront utilisés pour relier les modules externes réalisés pour le robot (système de positionnement, carte d'actionneurs spéciaux, etc...). Ils seront en niveau TTL, car ils sont destinés à être reliés à d'autres circuits logiques. On évitera ainsi l'utilisation de paires de MAX232 pour le passage en niveaux -12V/+12V.\\ \item [8 lignes de contrôle de servo-moteur.] Ces lignes permettent de contrôler des servos de modélisme. Ils délivrent un signal modulé en largeur d'impulsion qui correspond à la position que doit prendre le servo.\\ \item [2 lignes de PWM.] Ces lignes permettront de piloter des moteurs à vitesse variable, via une interface de puissance.\\ \item [1 bus parallèle.] Ces entrées-sorties seront utilisées si besoin est, pour réaliser un bus parallèle, le même qui fut utilisé l'an dernier sur le robot, et qui est toujours en service sur la carte MIPS. Ce bus permettra la compatibilité avec les modules destinés à tourner avec la carte MIPS. Le bus sera contôlé logiciellement par le driver.\\ \item [16 GPIO.] Ces lignes seront dédiées aux entrées (de capteurs, d'interrupteurs, etc...), et au sorties (actionneurs, voyants, etc...)\\ \item [1 bus caméra ov6620.] C'est un bus parallèle de 8 ou 16 bits de données, dont 3 fils de synchronisation et 3 fils de contrôle. Il permet de configurer la caméra et d'en rappatrier les données. Ce bus devra intégrer la \emph{gestion du DMA} pour rapatrier les images de la caméra. Ainsi, cela facilite les transferts vers la mémoire.\\ \end{description} \pagebreak \section{Réalisation pratique} Pour être le plus efficace possible nous allons procéder par étapes. \subsection{Codage RTL et simulation} La première étape constitue en l'écriture du code et sa simulation. Une fois celle-ci finie, nous connaitrons précisément les ressources nécessaires. Nous choisirons alors le FPGA en fonction de nos besoins, des facilités d'approvisionnement et des contraintes de réalisation. \subsection{Réalisation de la carte} Nous réaliserons une carte au format PC104 permettant le branchement du FPGA au bus ISA et aux modules de test. Nous élaborerons donc un PCB puis nous le ferons réaliser par une entreprise extérieure spécialisée dans la réalisation de prototype. \subsection{Ecriture des drivers Linux} Une fois la carte réalisée nous pourrons vérifier son bon fonctionnement et écrire les drivers du système d'exploitation afin de pouvoir l'utiliser dans des application tournant sur le système. \section{Evaluation} Pour nous évaluer sur ce projet ambitieux, nous proposons de nous évaluer sur les 3 points cités plus haut : le "Codage RTL et la simulation" comptant pour la moitier de la note, la "Réalisation de la carte" et le test final ou l'écriture des drivers comptant chacun pour un quart de la note. Des revues entre les différentes phases avec un professeur seraient intéressantes, afin de valider les choix et minimiser les risques. \section{Répartition initiale des modules} \begin{center} \begin{tabular}{|*{2}{c}|} \hline Noms & Blocs à realiser \\ \hline Thomas BURG & Camera \\ & bus I2C \\ Fidèle GAFAN & Servo Moteur\\ Pierre-Andre GALMES & blocs d'entrées / sorties\\ Pierre PROT & liaison serie UART\\ \hline \end{tabular} \end{center} \pagebreak \section{Ressources techniques} Voici un rapide récaptitulatif des ressources trouvées jusqu'à présent: \subsection{Bus isa} \begin{itemize} \item http://directory.google.com/Top/Computers/Hardware/Buses/ISA/ \item http://www.mindshare.com/pdf/eisabook.pdf \item ISA \& EISA Theory and Operation By Edward Solari (ISBN: 0929392159) \end{itemize} Bien que ce bus soit sur les PC grand publique depuis au moins 15 ans, force est de constater qu'on ne trouve pas facilement de sites traitant du bus ISA. \subsection{OpenCores} Le projet OpenCore est un peu ce qu'est le projet GNU à l'informatique, C'est du code mis à disposition par des groupes vendant des models IP. C'est un moyens de se faire de la publicité. Un certain nombre de fonctions que nous souhaitons implémenter sont déjà écrites. Parfois elles le sont en Verilog. Ce qui nous demandera un travail d'adapation. www.opencores.org/project/ \subsection{camera ov6620} C'est une caméra que nous commencons à connaitre, nous l'avons déjà utilisée l'an passé. Cette caméra est bon marché : \$60 la carte d'évaluation montée avec son optique. C'est une caméra numérique couleur sortant sur bus parallèle de 8 ou 16 bits. On peut effectuer divers réglages via un bus très similaire à de l'i2c. \begin{itemize} \item http://www.ovt.com/cc6620.html \item http://www-2.cs.cmu.edu/~cmucam/ \end{itemize} \pagebreak \section {Conclusion} Ce projet a deux objectifs : faire le projet de VHDL prévu par le cursus et nous permettre de consacrer du temps sur le robot. Le projet nous permettra de mettre en pratique la conception de circuit, plus particulièrement le developpement de produit à base de FPGA. Nous en profiterons aussi pour acquérir une expérience dans le prototypage de carte en passant par un sous-traitant, puisque la technique mise en oeuvre n'est plus accessible avec les moyens disponibles à l'école. Ce projet nous permettra de revenir sur des points vu dans le \emph{cours d'architecture des ordinateurs}, avec la réalisation pratique d'un périphérique. Cette carte, si elle est bien réalisée, pourra être réutilisée par les personnes voulant réaliser le challenge de la coupe de Robotique les années suivantes. De par sa compacité et son niveau d'intégration, elle remplacera de nombreuse cartes, d'où un gain de place, et de temps de mise en oeuvre. \pagebreak \end{document}