From 089a11514051cae1f190a424fc40bcbf4b2ab08c Mon Sep 17 00:00:00 2001 From: galmes Date: Sun, 8 Feb 2004 14:09:44 +0000 Subject: Ajout du dossier de présentation. --- 2004/n/fpga/doc/robot_DV/Makefile | 15 ++ 2004/n/fpga/doc/robot_DV/images/Makefile | 7 + 2004/n/fpga/doc/robot_DV/images/schema1.fig | 86 +++++++++ 2004/n/fpga/doc/robot_DV/rapport.tex | 278 ++++++++++++++++++++++++++++ 4 files changed, 386 insertions(+) create mode 100644 2004/n/fpga/doc/robot_DV/Makefile create mode 100644 2004/n/fpga/doc/robot_DV/images/Makefile create mode 100644 2004/n/fpga/doc/robot_DV/images/schema1.fig create mode 100644 2004/n/fpga/doc/robot_DV/rapport.tex diff --git a/2004/n/fpga/doc/robot_DV/Makefile b/2004/n/fpga/doc/robot_DV/Makefile new file mode 100644 index 0000000..39f2670 --- /dev/null +++ b/2004/n/fpga/doc/robot_DV/Makefile @@ -0,0 +1,15 @@ +SUBDIR= images + +all: + for i in $(SUBDIR); do (cd $$i; $(MAKE) all); done + $(MAKE) rapport.pdf + +%.pdf: %.tex + pdflatex $< + pdflatex $< + pdflatex $< + +clean: + for i in $(SUBDIR); do (cd $$i; $(MAKE) clean); done + rm -f *.dvi *.aux *.log *.toc *.eps *.pdf *.ps + diff --git a/2004/n/fpga/doc/robot_DV/images/Makefile b/2004/n/fpga/doc/robot_DV/images/Makefile new file mode 100644 index 0000000..6002908 --- /dev/null +++ b/2004/n/fpga/doc/robot_DV/images/Makefile @@ -0,0 +1,7 @@ +all: schema1.pdf + +%.pdf: %.fig + fig2dev -L pdf -p dummy $< $@ + +clean: + rm -f *.pdf *.eps diff --git a/2004/n/fpga/doc/robot_DV/images/schema1.fig b/2004/n/fpga/doc/robot_DV/images/schema1.fig new file mode 100644 index 0000000..2d63711 --- /dev/null +++ b/2004/n/fpga/doc/robot_DV/images/schema1.fig @@ -0,0 +1,86 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1200 2175 3375 2175 3375 6675 1200 6675 1200 2175 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6300 2175 8775 2175 8775 6675 6300 6675 6300 2175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 12 + 5700 5700 3975 5700 4200 6000 3375 5550 4200 5100 3975 5400 + 5700 5400 5400 5100 6300 5550 5400 6000 5700 5700 5700 5700 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 2.00 120.00 240.00 + 2 0 2.00 120.00 240.00 + 3375 3900 6300 3900 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 2.00 120.00 240.00 + 2 0 2.00 120.00 240.00 + 3375 3000 6300 3000 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 1.00 60.00 120.00 + 2 0 1.00 60.00 120.00 + 8775 2700 10200 2700 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 1.00 60.00 120.00 + 2 0 1.00 60.00 120.00 + 8775 3300 10200 3300 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 2 0 1.00 60.00 120.00 + 8775 3900 10200 3900 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 2 0 1.00 60.00 120.00 + 8775 4500 9450 4500 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 9450 4575 10500 4575 10500 4275 9450 4275 9450 4575 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 2 0 1.00 60.00 120.00 + 10500 4500 10950 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 1.00 60.00 120.00 + 2 0 1.00 60.00 120.00 + 8775 5400 10200 5400 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6300 7575 8775 7575 8775 8700 6300 8700 6300 7575 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 1.00 60.00 120.00 + 2 0 1.00 60.00 120.00 + 7200 6675 7200 7575 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 + 2 0 1.00 60.00 120.00 + 2 0 1.00 60.00 120.00 + 8100 6675 8100 7575 +2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 6150 6675 3525 6675 3525 2175 6150 2175 6150 6675 +2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 + 1350 5700 3225 5700 3225 6600 1350 6600 1350 5700 +2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 + 1350 4725 3225 4725 3225 5625 1350 5625 1350 4725 +2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 + 1350 3750 3225 3750 3225 4650 1350 4650 1350 3750 +4 0 0 50 -1 0 14 0.0000 4 150 570 6525 3150 FPGA\001 +4 0 0 50 -1 0 14 0.0000 4 195 1905 3900 3675 Requete d'interruption\001 +4 0 0 50 -1 0 14 0.0000 4 195 1275 4125 2775 Requete DMA\001 +4 0 0 50 -1 0 14 0.0000 4 165 1365 9075 2550 Ports s\351rie TTL\001 +4 0 0 50 -1 0 14 0.0000 4 150 735 9075 3075 Port I2C\001 +4 0 0 50 -1 0 14 0.0000 4 150 1380 9075 3675 Servos-moteurs\001 +4 0 0 50 -1 0 14 0.0000 4 150 510 8925 4350 PWM\001 +4 0 0 50 -1 0 14 0.0000 4 150 870 9525 4500 Puissance\001 +4 0 0 50 -1 0 14 0.0000 4 150 735 11025 4500 Moteurs\001 +4 0 0 50 -1 0 14 0.0000 4 150 510 9150 5250 GPIO\001 +4 0 0 50 -1 0 14 0.0000 4 150 1455 6600 7950 Camera OV6620\001 +4 0 0 50 -1 0 14 0.0000 4 150 1335 8175 7200 Bus de controle\001 +4 0 0 50 -1 0 14 0.0000 4 165 1350 5775 7200 Bus de donn\351es\001 +4 0 0 50 -1 0 14 0.0000 4 165 2070 3825 5025 Donn\351es & commandes\001 +4 0 0 50 -1 0 14 0.0000 4 150 735 3675 6525 Bus ISA\001 +4 0 0 50 -1 0 14 0.0000 4 165 795 1500 4200 M\351moire\001 +4 0 0 50 -1 0 14 0.0000 4 150 1125 1500 5175 Controleur d'\001 +4 0 0 50 -1 0 14 0.0000 4 195 990 1500 5430 interruption\001 +4 0 0 50 -1 0 14 0.0000 4 150 1485 1500 6225 Controleur DMA\001 +4 0 0 50 -1 0 14 0.0000 4 150 930 1425 2625 Ordinateur\001 +4 0 0 50 -1 0 14 0.0000 4 150 585 1425 2850 PC104\001 diff --git a/2004/n/fpga/doc/robot_DV/rapport.tex b/2004/n/fpga/doc/robot_DV/rapport.tex new file mode 100644 index 0000000..c88d6b5 --- /dev/null +++ b/2004/n/fpga/doc/robot_DV/rapport.tex @@ -0,0 +1,278 @@ +\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 + +\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, 3 fils de contrôle et 3 fils de synchronisation. 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} -- cgit v1.2.3