\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}
