From 3867d69a416b174790a6347be13682ece81b9d2a Mon Sep 17 00:00:00 2001 From: galmes Date: Thu, 25 Mar 2004 22:50:04 +0000 Subject: Suppression du dossier de conception --- 2004/n/fpga/doc/dossierconception/Makefile | 18 -- 2004/n/fpga/doc/dossierconception/image.png | Bin 18419 -> 0 bytes 2004/n/fpga/doc/dossierconception/io.c | 171 ----------- 2004/n/fpga/doc/dossierconception/io.h | 15 - 2004/n/fpga/doc/dossierconception/ov6620.fig | 200 ------------ 2004/n/fpga/doc/dossierconception/ovcam.c | 47 --- 2004/n/fpga/doc/dossierconception/ovcam.tex | 120 -------- 2004/n/fpga/doc/dossierconception/ovcam1.fig | 67 ---- 2004/n/fpga/doc/dossierconception/ovcam2.fig | 140 --------- 2004/n/fpga/doc/dossierconception/portserie.tex | 392 ------------------------ 2004/n/fpga/doc/dossierconception/rapport.tex | 68 ---- 2004/n/fpga/doc/dossierconception/rdcam.c | 124 -------- 2004/n/fpga/doc/dossierconception/rdcam.h | 18 -- 13 files changed, 1380 deletions(-) delete mode 100644 2004/n/fpga/doc/dossierconception/Makefile delete mode 100644 2004/n/fpga/doc/dossierconception/image.png delete mode 100644 2004/n/fpga/doc/dossierconception/io.c delete mode 100644 2004/n/fpga/doc/dossierconception/io.h delete mode 100644 2004/n/fpga/doc/dossierconception/ov6620.fig delete mode 100644 2004/n/fpga/doc/dossierconception/ovcam.c delete mode 100644 2004/n/fpga/doc/dossierconception/ovcam.tex delete mode 100644 2004/n/fpga/doc/dossierconception/ovcam1.fig delete mode 100644 2004/n/fpga/doc/dossierconception/ovcam2.fig delete mode 100644 2004/n/fpga/doc/dossierconception/portserie.tex delete mode 100644 2004/n/fpga/doc/dossierconception/rapport.tex delete mode 100644 2004/n/fpga/doc/dossierconception/rdcam.c delete mode 100644 2004/n/fpga/doc/dossierconception/rdcam.h (limited to '2004/n/fpga') diff --git a/2004/n/fpga/doc/dossierconception/Makefile b/2004/n/fpga/doc/dossierconception/Makefile deleted file mode 100644 index 221bd36..0000000 --- a/2004/n/fpga/doc/dossierconception/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -SUBDIR= - -all: ovcam2.pdf ov6620.pdf - for i in $(SUBDIR); do (cd $$i; $(MAKE) all); done - $(MAKE) rapport.pdf - -%.pdf: %.tex - pdflatex $< - pdflatex $< - pdflatex $< - -%.pdf: %.fig - fig2dev -L pdf -p dummy $< $@ - -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/dossierconception/image.png b/2004/n/fpga/doc/dossierconception/image.png deleted file mode 100644 index 130b1f4..0000000 Binary files a/2004/n/fpga/doc/dossierconception/image.png and /dev/null differ diff --git a/2004/n/fpga/doc/dossierconception/io.c b/2004/n/fpga/doc/dossierconception/io.c deleted file mode 100644 index 0fd6d21..0000000 --- a/2004/n/fpga/doc/dossierconception/io.c +++ /dev/null @@ -1,171 +0,0 @@ -/* io.c contient la procedure pour configurer la camera - * (I2C) - */ - -#include "io.h" -#include - -#include -#include - -#define I2CCLK BITN(3) -#define I2CDATA BITN(4) - -void -i2c_init (void) -{ - // 1 ---> ouput - // 0 ---> input - // configuration des lignes en sortie - _io_ports[M6811_DDRA] = I2CCLK | I2CDATA; - // mise à 1 des lignes dans (libération du bus - _io_ports[M6811_PORTA] |= I2CCLK |I2CDATA; -} - -/* - * Start procedure - * Data ---------------\________________ - * Clk --------------------\___________ - * - */ - -void -i2c_start(void) -{ - _io_ports[M6811_PORTA] &= ~I2CDATA; - wait_2v5us(); - _io_ports[M6811_PORTA] &= ~I2CCLK; - wait_2v5us(); -} -/* - * End procedure - * Data ___________________/----- - * Clk _________/--------------- - * - */ - -void -i2c_end(void) -{ - _io_ports[M6811_PORTA] |= I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA] |= I2CDATA; - wait_2v5us(); -} - - void -wait_2v5us(void) -{ - unsigned char i; - for (i=0;i<200;i++) - { - __asm__("nop"); - } -} - -void -i2c_send_charnl (unsigned char data) -{ - unsigned char cmpt; - for (cmpt=0;cmpt<8;cmpt++) - { - if (data & 0x80) // si le bit de poids fort est 1, il faut mettre 1 sur la ligne - { - _io_ports[M6811_PORTA] |= I2CDATA; - } - else - { - _io_ports[M6811_PORTA] &= ~I2CDATA; - } - wait_2v5us(); - wait_2v5us(); - // on s'occupe de produire un front d'horloge - _io_ports[M6811_PORTA] |= I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA] &= ~I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA] &= ~I2CDATA; - /* Nous avons traité le bit de poid le plus fort - * continuons */ - data = data << 1; - } - wait_2v5us(); - _io_ports[M6811_PORTA] |= I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA] &= ~I2CCLK; - wait_2v5us(); -} - -unsigned char -i2c_read_char (void) -{ - char cmpt; - unsigned char data = 0; - // configuration de la ligne data en entré - _io_ports[M6811_DDRA] &= ~I2CDATA; - for (cmpt=0; cmpt<8;cmpt++) - { - _io_ports[M6811_PORTA] |=I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA]; - if (_io_ports[M6811_PORTA] & I2CDATA) //si ligne data est à 1 - data++; - wait_2v5us(); - _io_ports[M6811_PORTA] &=~I2CCLK; - wait_2v5us(); - data = data<<1; - } - // traitement de l'ack dans le cas d'une derniere lecture - _io_ports[M6811_DDRA] |= I2CDATA; - _io_ports[M6811_PORTA] |= I2CDATA; - wait_2v5us(); - _io_ports[M6811_PORTA] |= I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA] &= ~I2CCLK; - wait_2v5us(); - _io_ports[M6811_PORTA] &= ~I2CDATA; - return data; -} - -void -i2c_send (unsigned char reg,unsigned char data) -{ - // on déclanche un procedure de start - i2c_start(); - // C0 est l'adresse d'ecriture de l'ov6620 - i2c_send_charnl(0xc0); - // On specifie le registre - i2c_send_charnl(reg); - // on donnee la valeur - i2c_send_charnl(data); - // procedure de stop - i2c_end(); -} - -unsigned char -i2c_recv(unsigned char reg) -{ - unsigned char data; - - /* pour lire un registre particulié, il faut commencer par - * ecrire le registre que l'on veut lire - */ - - i2c_start(); - i2c_send_charnl(0xc0); - i2c_send_charnl(reg); - i2c_end(); - - - i2c_start(); - i2c_send_charnl(0xC1); - data = i2c_read_char(); - i2c_end(); - return data; - -} - -void -i2c_dump(unsigned char * tab) -{ -} diff --git a/2004/n/fpga/doc/dossierconception/io.h b/2004/n/fpga/doc/dossierconception/io.h deleted file mode 100644 index 8ea9221..0000000 --- a/2004/n/fpga/doc/dossierconception/io.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef IO_H -#define IO_H - -#define BITN(x) (1<<(x)) - -void i2c_init (void); -void i2c_send_charnl (unsigned char mot); -unsigned char i2c_read_char (void); -void i2c_start (void); -void i2c_end (void); -void wait_2v5us (void); -void i2c_send (unsigned char reg, unsigned char data); -unsigned char i2c_recv ( unsigned char reg); -void i2c_dump (unsigned char * tab); -#endif diff --git a/2004/n/fpga/doc/dossierconception/ov6620.fig b/2004/n/fpga/doc/dossierconception/ov6620.fig deleted file mode 100644 index bd11f82..0000000 --- a/2004/n/fpga/doc/dossierconception/ov6620.fig +++ /dev/null @@ -1,200 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -0 32 #c6b694 -0 33 #eff7ff -0 34 #decba5 -0 35 #424142 -0 36 #848284 -0 37 #bdbebd -0 38 #dedfde -0 39 #8c8e8c -0 40 #adaaad -0 41 #525552 -0 42 #424142 -0 43 #848284 -0 44 #bdbebd -0 45 #848284 -0 46 #bdbebd -0 47 #dedfde -0 48 #8c8e8c -0 49 #8c8e8c -0 50 #424142 -0 51 #848284 -0 52 #bdbebd -0 53 #dedfde -0 54 #424142 -0 55 #848284 -0 56 #bdbebd -0 57 #dedfde -0 58 #848284 -0 59 #bdbebd -0 60 #dedfde -0 61 #c6b694 -0 62 #eff7ff -0 63 #decba5 -0 64 #c6b694 -0 65 #eff7ff -0 66 #decba5 -0 67 #adaaad -0 68 #525552 -0 69 #8c8e8c -0 70 #d6d7d6 -0 71 #8c8e8c -0 72 #424142 -0 73 #848284 -0 74 #bdbebd -0 75 #dedfde -0 76 #adaead -0 77 #424142 -0 78 #848284 -0 79 #bdbebd -0 80 #dedfde -0 81 #848284 -0 82 #bdbebd -0 83 #dedfde -0 84 #424142 -0 85 #848284 -0 86 #bdbebd -0 87 #adaead -0 88 #8c8e8c -0 89 #8c8e8c -0 90 #8c8e8c -0 91 #424142 -0 92 #bdbebd -0 93 #dedfde -0 94 #424142 -0 95 #848284 -0 96 #bdbebd -0 97 #8c8e8c -0 98 #424142 -0 99 #848284 -0 100 #bdbebd -0 101 #dedfde -0 102 #424142 -0 103 #848284 -0 104 #bdbebd -0 105 #dedfde -0 106 #bdbebd -0 107 #525152 -0 108 #e7e3e7 -0 109 #00004a -0 110 #525152 -0 111 #bdbebd -0 112 #7b797b -0 113 #313431 -0 114 #525152 -0 115 #bdbebd -0 116 #7b797b -0 117 #313431 -0 118 #525152 -0 119 #424142 -0 120 #c6b694 -0 121 #bdbebd -0 122 #7b797b -0 123 #313431 -0 124 #525152 -0 125 #313431 -0 126 #525152 -0 127 #8c8e8c -0 128 #424542 -0 129 #8c8e8c -0 130 #bdbebd -0 131 #7b797b -0 132 #313431 -0 133 #525152 -0 134 #bdbebd -0 135 #7b797b -0 136 #313431 -0 137 #525152 -0 138 #7b797b -0 139 #313431 -0 140 #525152 -0 141 #424142 -0 142 #848284 -0 143 #bdbebd -0 144 #dedfde -0 145 #c6c3c6 -0 146 #6b6d6b -0 147 #c6c3c6 -0 148 #6b6d6b -0 149 #424542 -0 150 #8c8e8c -0 151 #6b6d6b -0 152 #8c8e8c -0 153 #737173 -0 154 #adaead -0 155 #313431 -0 156 #949294 -0 157 #737173 -0 158 #525552 -0 159 #b5b2b5 -0 160 #c6c3c6 -0 161 #424542 -0 162 #6b6d6b -0 163 #424542 -0 164 #6b6d6b -0 165 #c6c3c6 -0 166 #6b6d6b -0 167 #424542 -0 168 #8c8e8c -0 169 #c6c3c6 -0 170 #6b6d6b -0 171 #c6c3c6 -0 172 #424542 -0 173 #8c8e8c -# Camcorder -# drawn by W. Chimiak -6 1275 2400 2250 3675 -6 1504 2963 1952 3400 -1 2 0 1 -1 7 2 0 0 0.000 1 0.0000 1728 3182 224 219 1504 2963 1952 3400 --6 -1 4 0 1 -1 7 0 0 20 0.000 1 0.0000 1839 3262 238 238 1814 3026 1864 3499 -1 4 0 1 -1 150 1 0 20 0.000 1 0.0000 1837 3262 338 338 1499 2924 2175 3600 -2 3 0 1 -1 149 4 0 20 0.000 0 0 -1 0 0 5 - 2015 3475 2015 2794 1462 2794 1459 3475 2015 3475 -2 3 0 1 0 148 4 0 20 0.000 0 0 -1 0 0 5 - 2015 2798 1455 2798 1275 2438 1775 2438 2015 2798 -2 3 0 1 0 7 4 0 20 0.000 1 0 -1 0 0 5 - 1463 2794 1283 2442 1283 3072 1465 3470 1463 2794 -2 2 0 1 -1 7 3 0 5 0.000 0 0 -1 0 0 5 - 1515 2918 1965 2918 1965 3371 1515 3371 1515 2918 --6 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 600 1800 3000 1800 3000 4350 600 4350 600 1800 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 1800 825 1800 1800 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 1575 5775 1575 4350 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 3000 2625 4200 2625 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 3000 3075 4200 3075 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 3000 3525 4125 3525 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 3000 3900 4200 3900 -4 0 0 50 -1 0 12 0.0000 4 135 1950 750 2025 Carte d'\351valuation ov6620\001 -4 0 0 50 -1 0 12 0.0000 4 135 225 1950 825 5V\001 -4 0 0 50 -1 0 12 0.0000 4 180 1260 1725 5175 configuration via\001 -4 0 0 50 -1 0 12 0.0000 4 135 270 1725 5400 I2C\001 -4 0 0 50 -1 0 12 0.0000 4 180 900 3225 3450 Vsync_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 750 3225 3000 Href_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 735 3225 2550 Pclk_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 1140 3225 3825 data_cam [7-0]\001 -4 0 0 50 -1 0 12 0.0000 4 180 5490 4575 2550 L'horloge, \340 chaque front montant les donn\351es sur data_cam sont valides\001 -4 0 0 50 -1 0 12 0.0000 4 180 4950 4575 3000 L'orsque c'est 1 \340 chaque Pclk_cam correspond un pixel d'un ligne\001 -4 0 0 50 -1 0 12 0.0000 4 180 2835 4575 3375 Passe \340 1 lorsque l'on change d'image\001 -4 0 0 50 -1 0 12 0.0000 4 135 2295 4575 3825 donn\351e de la camera sur 8 bits\001 diff --git a/2004/n/fpga/doc/dossierconception/ovcam.c b/2004/n/fpga/doc/dossierconception/ovcam.c deleted file mode 100644 index f5ddfd8..0000000 --- a/2004/n/fpga/doc/dossierconception/ovcam.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Programme ovcam.c pour 68hc11f1 - * compile avec gcc pour 68HC11 et la librairy GEL - */ - -#include -#include -#include -#include "io.h" -#include "rdcam.h" - -int main (void); - -void -_start (void) -{ - set_bus_expanded (); - _io_ports[M6811_CSCTL] &= 1<<3; - main(); -} - -unsigned char tab[25344]; - -int -main (void) -{ - int i, j, k; - - serial_init (); - i2c_init(); - cam_init(); - /*configuration*/ - i2c_send(0x12,0x80); - i2c_send(0x11,0x3f); - //i2c_send(0x12,0x26); - cam_skip_frames (2); - /*attrappe l'image et l'envoie*/ - for (i = 0; i < 4; i++) - { - for(j=0;j<25344;j++) - tab[j] = 0; - cam_get(tab, i); - for(j=0;j<25344;j++) - serial_send (tab[j]); - } - while(1); - return 0; -} diff --git a/2004/n/fpga/doc/dossierconception/ovcam.tex b/2004/n/fpga/doc/dossierconception/ovcam.tex deleted file mode 100644 index b686b02..0000000 --- a/2004/n/fpga/doc/dossierconception/ovcam.tex +++ /dev/null @@ -1,120 +0,0 @@ - -\section{Gestion de la caméra} -u - -\subsection{Comment fonctionne la caméra ?} - -La camera produit un flot de donnée incessant. elle fournit aussi des -signaux de synchronisation. Ceux-ci nous permettent de savoir quand est-ce -qu'une nouvelle image commence, quand est-ce que l'on change de ligne. De -cette manière nous pouvons reconstitué une information cohérente avec -notre vision. - -\begin{figure}[htbp] -\caption{La camera} -\includegraphics[width=\textwidth]{ov6620.pdf} -\label{schema1} -\end{figure} - -Pour vérifier que nous avions bien compris le fonctionnement de la camera, -nous avons écrit un programme pour micro-contrôleur qui saisie une image. - -Pour réaliser cette application teste, nous avons utilisé une carte à base -de 68HC11F1 à 8MHz doté de 64Ko de mémoire. Voici le résultat: figure -\ref{image_test} page \pageref{image_test}. - -\begin{figure}[htbp] -\caption{L'image test} -\includegraphics[]{image.png} -\label{image_test} -\end{figure} - -Pour obtenir cette image nous avons écrit un programme en C avec gcc pour -68HC11. Ce programme prend 72 lignes d'une première image puis les envoie -à l'ordinateur à 9600 baud (c'est très lent) puis attend une nouvelle -image, saute les 72 premières lignes et enregistre les 72 lignes -suivantes puis les envoie. Ainsi de suite 4 fois par image car Le -microcontroleur n'a pas assez de mémoire pour enregistrer l'image entière. -Il faut donc la "tronçonner". En effet l'image fait normalement 352 -par 288 pixel et chaque pixel est codé sur 8 bits. - -La caméra dispose d'un réglage de gain automatique c'est pour cela que les 4 -parties ont des contrastes différents. - -Bien que l'on ait ralenti au maximum la fréquence de Pclk, nous -n'arrivons à obtenir que 72 point par lignes au lieu de 288. -Comme l'image reste "compréhensible" nous pouvons croire que le -microcontroleur n'est pas assez rapide pour lire plus de points. Et du -coups il fait un "sample régulié" de la ligne, ce qui nous donne cette -impression d'image comprimé en largeur. - -Tout ceci nous laisse croire que nous maitrisons la capture d'une image. - -\subsection{Comment implémenter la récupération d'image dans un fpga ?} - -Le principe utilisé est simple, il s'agit de remplir une mémoire avec les -données provenant de la caméra. Un compteur peut incrémenté l'adresse et -ainsi parcourir la mémoire. Nous allons utilisé les macros que fournit -Xilinx pour réaliser des DPRAMs : qui sont des mémoires ram à double -ports, permettant une lecture et une écriture sur deux ports differents. - -Nous utiliserons 2 DPRAM afin que l'ordinateur puisse lire un bank mémoire -alors que l'automate de récupartion de donnée caméra en remplit un autre. - -\begin{figure}[htbp] -\caption{Synopitque d'implémentation} -\includegraphics[width=\textwidth]{ovcam2.pdf} -\label{ovcam} -\end{figure} - -Ce système est ordonné par un séquenceur. Cette machine d'état aura la -charge de choisir le bank à remplir, la gestion de la ligne d'interruption -( moyen d'avertir d'ordinateur pour qu'il vienne lire) et le registre de -contrôle avec ses quelques bits: -\begin{itemize} -\item Un bit disant quel bank doit être lu. -\item Un bit disant si l'interruption est levé, c'est dire si le bit -précédant est valide. -\item Un bit disant s'il y a eu un écrasement d'un bank, dans le cas ou -l'ordinateur ne serait pas venu suffsament tôt. -\item un bit de reset pour remettre à zero la machine d'état les diffrents -compteurs et convertisseur. -\item Un bit servant à dire que l'odinateur va bientot lire un bank et -donc, que le sequenceur doit baissé sa ligne d'interruption. Cette -dernière fonction pourrait être remplacer par un système qui détecte la -lecture du bank. -\end{itemize} - - -D'autres indicateurs pourraient être donné, par exemple : un flag pourrait se -levé pour marqué que le bank de remplissage est déjà à moitier rempli. - -\subsection{Le driver} - -Avec le fonctionnement décrit si dessus, Le driver devra réaliser la -sous-routine suivante: -\begin{itemize} -\item Détecter une interruption camera -\item Lire le registre de la camera pour savoir si il y a bien eu une -interruption, et connaitre le bank à lire. -\item Ecrire dans le registre le bit correspondant à "lecture imminante" -\item Lire le bank, le placé en mémoire, incrémenté une variable. Lorsque -cette variable sera égal à 50, l'ordinateur aura récupéré une image -complete. -\end{itemize} - -Bien sûr, si la cadence des images est trop rapproché dans le temps, Une -fois que l'on a récupérer une image complete, on peut ne pas écrire le bit -"lecture imminante", ce qui aura pour conséquence de ne pas baissé la -ligne d'interruption et de ne plus être déranger. -Pour reprendre la capture, il suffit de faire un reset avec le bit prévu -dans le registre de controle. -\pagebreak - -\section{Réalisation de la carte } - -La principale difficulté provient du logiciel. Toutes fois cela avance, -à en voir les documents produits. Ceux-ci encore tres incomplet. Toutes -fois ils permettent de déceller les premières grosses erreurs. - - diff --git a/2004/n/fpga/doc/dossierconception/ovcam1.fig b/2004/n/fpga/doc/dossierconception/ovcam1.fig deleted file mode 100644 index 8fb8bb4..0000000 --- a/2004/n/fpga/doc/dossierconception/ovcam1.fig +++ /dev/null @@ -1,67 +0,0 @@ -#FIG 3.2 -Portrait -Flush left -Metric -A4 -100.00 -Single --2 -1200 2 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 1425 1200 3325 1200 3325 2138 1425 2138 1425 1200 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 1438 2375 3313 2375 3313 3313 1438 3313 1438 2375 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 6637 4013 8287 4013 8287 6151 6637 6151 6637 4013 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 6625 1400 8275 1400 8275 3538 6625 3538 6625 1400 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 1438 4025 4025 4025 4025 6375 1438 6375 1438 4025 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 3338 1888 6613 1888 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 5450 1913 5450 4725 6638 4725 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 250 1888 1438 1888 1425 1888 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 3313 2825 6638 2825 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 1 - 5200 2838 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 5200 2813 5200 5175 6638 5175 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 238 1425 1425 1425 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 250 4263 1438 4263 1425 4275 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 238 4725 1425 4725 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 225 5200 1438 5200 1413 5200 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 1886 4013 1886 3322 1894 3322 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 2833 3330 2833 4013 2833 4028 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 5 - 1545 4005 1545 3648 1094 3648 1094 2010 1413 2010 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 248 2833 1428 2833 1335 2724 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 2833 1343 2934 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 1420 1343 1327 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 1428 1358 1521 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1413 1878 1343 1762 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1413 1894 1343 1948 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1428 4253 1312 4145 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1428 4261 1319 4346 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 4727 1343 4626 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1413 4735 1327 4789 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1428 5192 1327 5076 diff --git a/2004/n/fpga/doc/dossierconception/ovcam2.fig b/2004/n/fpga/doc/dossierconception/ovcam2.fig deleted file mode 100644 index beb374d..0000000 --- a/2004/n/fpga/doc/dossierconception/ovcam2.fig +++ /dev/null @@ -1,140 +0,0 @@ -#FIG 3.2 -Portrait -Flush left -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #636163 -0 33 #cecbce -0 34 #cecbce -0 35 #6b6d6b -# Right brace -6 8370 2206 8910 9405 -3 4 0 1 0 7 50 0 -1 0.000 0 0 0 7 - 8370 9405 8640 9405 8640 5806 8910 5806 8640 5806 8640 2206 - 8370 2206 - 0.000 1.000 1.000 0.000 1.000 1.000 0.000 --6 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 1425 1200 3325 1200 3325 2138 1425 2138 1425 1200 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 1438 2375 3313 2375 3313 3313 1438 3313 1438 2375 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 6637 4013 8287 4013 8287 6151 6637 6151 6637 4013 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 6625 1400 8275 1400 8275 3538 6625 3538 6625 1400 -2 2 0 1 0 7 50 0 -1 4.000 0 0 7 0 0 5 - 1438 4025 4025 4025 4025 6375 1438 6375 1438 4025 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 3338 1888 6613 1888 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 5450 1913 5450 4725 6638 4725 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 3313 2825 6638 2825 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 1 - 5200 2838 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 5200 2813 5200 5175 6638 5175 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 238 1425 1425 1425 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 250 4263 1438 4263 1425 4275 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 238 4725 1425 4725 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 225 5200 1438 5200 1413 5200 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 1886 4013 1886 3322 1894 3322 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 2833 3330 2833 4013 2833 4028 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 5 - 1545 4005 1545 3648 1094 3648 1094 2010 1413 2010 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 248 2833 1428 2833 1335 2724 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 2833 1343 2934 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 1420 1343 1327 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 1428 1358 1521 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1413 1878 1343 1762 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1413 1894 1343 1948 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1428 4253 1312 4145 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1428 4261 1319 4346 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1420 4727 1343 4626 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1413 4735 1327 4789 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 2 - 1428 5192 1327 5076 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 4050 4365 6615 3105 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 4050 5580 6615 5580 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 315 5805 1395 5805 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 - 0 0 1.00 60.00 120.00 - 2430 6390 2430 9900 4320 9900 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 3015 6615 7830 6615 7830 8865 3015 8865 3015 6615 -2 1 0 1 0 7 50 0 -1 4.000 0 0 0 0 0 3 - 250 1845 1438 1845 1425 1845 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 1620 765 1620 1215 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 765 2475 1440 2475 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 630 6165 1440 6165 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 - 1440 5220 1260 5355 1260 5400 -4 0 0 50 -1 0 12 0.0000 4 135 1110 1575 1440 Convertisseur \001 -4 0 0 50 -1 0 12 0.0000 4 135 1125 1575 1665 8bits to 16 bits\001 -4 0 0 50 -1 0 12 0.0000 4 180 735 450 1305 Pclk_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 1110 1800 2745 compteur 1024\001 -4 0 0 50 -1 0 12 0.0000 4 180 780 3915 1800 data[15-0]\001 -4 0 0 50 -1 0 12 0.0000 4 180 690 4230 2745 addr[9-0]\001 -4 0 0 50 -1 0 12 0.0000 4 135 480 6885 1935 Bank0\001 -4 0 0 50 -1 0 12 0.0000 4 135 660 6885 2385 DPRAM\001 -4 0 0 50 -1 0 12 0.0000 4 135 630 6885 2610 1024x16\001 -4 0 0 50 -1 0 12 0.0000 4 135 870 1890 4320 sequenceur\001 -4 0 0 50 -1 0 12 0.0000 4 135 480 6975 4320 Bank1\001 -4 0 0 50 -1 0 12 0.0000 4 135 660 6975 4770 DPRAM\001 -4 0 0 50 -1 0 12 0.0000 4 135 630 6975 4995 1024x16\001 -4 0 0 50 -1 0 12 0.0000 4 180 750 4410 5490 En_bank1\001 -4 0 0 50 -1 0 12 0.0000 4 180 600 1890 3510 enb_cpt\001 -4 0 0 50 -1 0 12 0.0000 4 135 390 2880 3780 carry\001 -4 0 0 50 -1 0 12 0.0000 4 180 735 405 4185 Pclk_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 750 405 4590 Href_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 900 405 5130 Vsync_cam\001 -4 0 0 50 -1 0 12 0.0000 4 180 1530 3105 6840 Registre de controle\001 -4 0 0 50 -1 0 12 0.0000 4 180 2175 3105 7290 BK : bit indique le bank \340 lire\001 -4 0 0 50 -1 0 12 0.0000 4 180 3525 3105 7515 INT : indique qu'il y a un bank \340 lire. bit est \340 1 \001 -4 0 0 50 -1 0 12 0.0000 4 180 3225 3105 7740 lorsque la ligne d'interruption est \340 1.\001 -4 0 0 50 -1 0 12 0.0000 4 180 3555 3105 7965 ERR : indique qu'il y a eu ecrasement d'un bank\001 -4 0 0 50 -1 0 12 0.0000 4 180 3090 3105 8190 RST : permet de faire un reset du system\001 -4 0 0 50 -1 0 12 0.0000 4 180 4620 3105 8415 RDB : doit etre mis \340 1 avant de lire un bank. Le sequenceur \001 -4 0 0 50 -1 0 12 0.0000 4 180 4470 3105 8640 utilisera ce signal pour baisser la ligne d'interruption.\001 -4 0 0 50 -1 0 12 0.0000 4 180 885 2610 9810 Interruption\001 -4 0 0 50 -1 0 12 0.0000 4 135 360 8865 4680 BUS\001 -4 0 0 50 -1 0 12 0.0000 4 135 300 8865 5130 ISA\001 -4 0 0 50 -1 0 12 0.0000 4 180 2010 4545 9900 Gestionnaire d'interruption\001 -4 0 0 50 -1 0 12 0.0000 4 180 1095 180 1800 data_cam[7-0]\001 -4 0 0 50 -1 0 12 0.4363 4 180 720 4320 4140 en_bank0\001 -4 0 0 50 -1 0 12 0.0000 4 180 660 450 5760 Chip_clk\001 -4 0 0 50 -1 0 12 0.0000 4 180 735 315 2790 Pclk_cam\001 -4 0 0 50 0 0 12 0.0000 4 135 270 1665 900 Rst\001 -4 0 0 50 0 0 12 0.0000 4 135 270 720 2430 Rst\001 diff --git a/2004/n/fpga/doc/dossierconception/portserie.tex b/2004/n/fpga/doc/dossierconception/portserie.tex deleted file mode 100644 index 944ed60..0000000 --- a/2004/n/fpga/doc/dossierconception/portserie.tex +++ /dev/null @@ -1,392 +0,0 @@ -\section{Le TXserie} -\subsection{Cahier des charges} -Le cahier des charges du transmetteur série est le suivant : - -\begin{itemize} -\item Transmission série 8 bits, 1 start, 2 stop -\item Vitesse : paramétrable 9600 et 115200 bauds -\item Fifo de stockage avant transmision -\item Interruption activable signalant que la pile est pleine -\end{itemize} - - -\subsection{Schéma-bloc} - -\begin{figure}[htbp] -\caption{Schéma-bloc du TXserie} -\includegraphics[width=\textwidth]{images/txserie.pdf} -\label{schematxserie} -\end{figure} - -Le schéma modulaire est visible sur la figure \ref{schematxserie} page \pageref{schematxserie}. - -\subsection{Descritpion des modules} -\label{descriptmodules} - -\subsubsection{La fifo} - -C'est une fifo générée avec coregen. Elle contient des mots de 8 bits en -mémoire distribuée (car les BRAMs du FPGA seront utilisés à d'autres fins). - -Elle possède une entrée avec son horloge ckin, une sortie avec son horloge -ckout, et un pannel de flags en sortie. - -L'entrée ckin est la combinaison du csData et de la clock du bus. Ainsi, dès -qu'on écrit à son adresse mémoire, la fifo charge la donnée présente sur le -bus. - - -\subsubsection{Le TXcever} - -C'est un transmetteur série qui reçoit en entrée les données provenant de la -fifo. Dès qu'il est vide, il agit sur le signal ckout de la fifo, ce qui -dépile un élément, et le charge dans le transmetteur, qui peut alors le -transmettre. - -\subsubsection{Le générateur de clock} - -C'est un prédiviseur de la fréquence d'horloge du fpga. Il a pour but de -fournir l'horloge de référence pour le transmetteur (égale à 16 fois le -baudrate). - -Il est paramétrable, pour pouvoir choisir la fréquence utilisée parmis les 4 -baudrates disponibles. - -Pour avoir la bonne fréquence en sortie, on doit avoir en entrée une fréquence -multiple de 16 fois 115200 (le baudrate maxi). Les quartz qui sont utilisables -sont : 14.7456MHz, 29.4912MHz (14.7456*2), et 44.2368MHz (14.7456*3), - -\subsubsection{Registre config} - -C'est un registre de 8 bits branché sur le bus, en lecture/écriture, dans -lequel le PC vient déposer les bits de configuration du port série. -La sortie du registre controle le générateur de clock (pour fixer le -baudrate), et le gestionaire d'IRQ. - -\subsubsection{Registre flag} - -C'est un registre de 8 bits branché sur le bus en lecture seule dans lequel le -PC vient lire l'état des flags de la fifo. Son entrée est branchée sur les -sorties flag de la fifo. - -\subsubsection{IRQ} - -Le gestionaire d'IRQ est tout simplement un activateur d'interruptions. Il -déclenche des IRQ sur front montant, et ceci à condition que le signal IntEn -soit activé. - - -\subsection{Fonctionalités et utilisation} -Ce port série utilise 3 registres : TxData, Flag, et Config - -\subsubsection{Txdata} -Ce registre 8 bits sert à recevoir les données à envoyer. On les écrit -séquentiellement, et chaque écriture dans ce registre empile la donnée en haut -de la fifo. - -\subsubsection{Flag} -C'est le registre d'état. il donne essentiellement des informations sur l'état -de remplissage de la pile de transmision. - -Structure : -\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} -\hline -bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 -\\ \hline -nom & x & x & x & x & Empty & Full/Int & FLI1 & FLI0 -\\ \hline -\end{tabular} - -\begin{description} -\item [FL1/FL0] : Fifo Level 1/0. Ces bits donnent le niveau de remplissage de -la fifo.\\ - \begin{tabular}{|c|c|c|} - \hline - FL1/FL0 & Tx de remplissage - \\ \hline - 00 & < 25\% - \\ \hline - 01 & 25\% < Tx < 50\% - \\ \hline - 10 & 20\% < Tx < 75\% - \\ \hline - 11 & 75\% < Tx - \\ \hline - \end{tabular} -\item [Full/Int] : indique que la pile est pleine, ce qui déclenche une -interruption -\item [Empty] : indique que la pile ET le transmetteur sont vides, que la -transmission est donc terminée. -\end{description} - -\subsubsection{Config} -Ce registre sert de configuration pour la transmission. - -Structure : -\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} -\hline -bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 -\\ \hline -nom & x & x & x & On/Off & Purge & IntEn & BdR1 & BdR0 -\\ \hline -\end{tabular} - -\begin{description} -\item [BdR1/BdR0] : BaudRate1/0. Ces bits paramètrent la vitesse de -transmission. \\ - \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} - \hline - BdR1/BdR0 & Vitessse - \\ \hline - 00 & 9600 - \\ \hline - 00 & 9600 - \\ \hline - 01 & 19200 - \\ \hline - 10 & 57600 - \\ \hline - 11 & 115200 - \\ \hline - \end{tabular} -\item [Int/En] : active ou non l'interruption de fifo pleine -\item [Purge] : vide la fifo de toutes ses données -\item [On/Off] : active ou non la transmission -\end{description} - -\subsection{Procédure d'utilisation} -Pour utiliser ce port série, on doit pouvoir effectuer les actions suivantes : - -\begin{itemize} -\item Mettre le bit On/Off à 1 pour activer la transmission -\item Paramétrer la vitesse à l'aide des bits BdR1/0 -\item Il est conseillé d'activer l'interruption de fifo pleine en mettant à 1 -le bit IntEn. -\item Ecriture dans txdata pour charger les données dans la fifo. Elles sont -alors automatiquement transférées, au plus tôt. Dès que le registre à décalage -est vide, il dépile le dernier élément de la fifo et le transmet à nouveau. -\item On peut lire en permanence l'état de la fifo grâce aux bits FL1/0. -\item Quand la fifo est pleine, le flag Full/Int passe à 1, et le front -montant de ce bit génère une interruption. -\item Il est possible de vider la fifo en mettant Purge à 1. Il faut le -remettre à 0 pour qu'il puisse être à nouveau actif, car la purge de la fifo -ne s'effectue que sur front montant de ce bit. -\end{itemize} - - -\subsection{Interfaçage vhdl} - -Voici le code vhdl de l'entité txserie : -\begin{verbatim} -entity txserie is -generic(adr : integer); -constant adr_w : integer :=10; -port( - databus: inout std_logic_vector(7 downto 0); - rw: in std_logic; - busck: in std_logic; - rst: in std_logic; - masterck: in std_logic; - txout: out std_logic; - intout: out std_logic; - csData: in std_logic; - csFlag: in std_logic; - csConfig: in std_logic; - ); -end txserie; -\end{verbatim} - -Voici une description de ces signaux : - -\begin{description} -\item [databus] : bus de données -\item [rw] : ligne Read/Write\_ -\item [busck] : horloge bus -\item [rst] : patte de reset -\item [masterck] : horloge générale du fpga -\item [txout] : patte de sortie série -\item [intout] : sortie d'interruption -\item [csData] : chip select du registre de data -\item [csFlag] : chip select du registre de flag -\item [csConfig] : chip select du registre de configuration -\end{description} - - - - - -% Deuxième partie : le RXserie - -\section{Le RXserie} -\subsection{Cahier des charges} -Le cahier des charges du récepteur série est le suivant : - -\begin{itemize} -\item Réception série 8 bits, 1 start, 2 stop -\item Vitesse : paramétrable 9600 et 115200 bauds -\item Fifo de stockage des données reçues -\item Interruption activable signalant que la fifo est pleine -\item Interruption activable signalant qu'on a reçu une donnée -\end{itemize} - - -\subsection{Schéma-bloc} - -Le schéma modulaire est visible sur la figure \ref{schemarxserie} page \pageref{schemarxserie}. - -\begin{figure}[htbp] -\caption{Schéma-bloc du RXserie} -\includegraphics[width=\textwidth]{images/rxserie.pdf} -\label{schemarxserie} -\end{figure} - - -\subsection{Descritpion des modules} -\subsubsection{Le RXcever} - -C'est un récepteur série qui présente ses données à l'entrée de la fifo -Dès qu'il a reçu un octet, il agit sur le signal fifockin de la fifo -ce qui empile l'octet reçu. - -\subsubsection{Autres modules} - -Les autres modules utilisés sont les mêmes que pour le transmetteur. Voir -chapitre \ref{descriptmodules}. - - -\subsection{Fonctionalités et utilisation} -Ce port série utilise 3 adresses mémoire : -\subsubsection{Rxdata} -Ce registre 8 bits permet de récupérer les données reçues. On les lit -séquentiellement, et chaque lecture dans ce registre dépile la donnée en bas -de la fifo. - -\subsubsection{Flag} -C'est le registre d'état. Il donne essentiellement des informations sur l'état -de remplissage de la pile de réception. - -Structure : -\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} -\hline -bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\ -\hline -nom & x & x & x & x & DR & FFull & FL1 & FL0 \\ -\hline -\end{tabular} - -\begin{description} -\item [FL1/FL0] : Fifo Level 1/0. Ces bits donnent le niveau de remplissage de -la fifo. \\ - \begin{tabular}{|c|c|c|} - \hline - FL1/FL0 & Tx de remplissage - \\ \hline - 00 & < 25\% - \\ \hline - 01 & 25\% < Tx < 50\% - \\ \hline - 10 & 20\% < Tx < 75\% - \\ \hline - 11 & 75\% < Tx - \\ \hline - \end{tabular} -\item [FFull] : indique que la pile est pleine. Chaque front montant de ce -bit déclenche l'interruption FifoFullInt -\item [DR] : DataReady. Indique que la fifo n'est plus vide, et donc qu'une -donnée est arrivée dans le récepteur. Chaque front montant de ce bit déclenche -l'interruption DRInt -\end{description} - -\subsubsection{Config} -Ce registre sert de configuration pour la transmission. - -Structure -\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} -\hline -bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 -\\ \hline -nom & x & x & x & On/Off & DRIE & FFIE & BdR1 & BdR0 -\\ \hline -\end{tabular} - -\begin{description} -\item [BdR1/BdR0] : BaudRate1/0. Ces bits paramètrent la vitesse de -transmission. \\ - \begin{tabular}{|c|c|c|} - \hline - BdR1/BdR0 & Vitessse - \\ \hline - 00 & 9600 - \\ \hline - 01 & 19200 - \\ \hline - 10 & 57600 - \\ \hline - 11 & 115200 - \\ \hline - \end{tabular} -\item [FFIF] : FifoFull-Int-Enable. Active ou non l'interruption FifoFull -(actif à 1) -\item [DRIE] : DataReady-Int-Enable. Active ou non l'interruption -DataReady (actif à 1) -\item [On/Off] : active ou non la réception de données -\end{description} - -\subsection{Procédure d'utilisation} -Pour utiliser ce port série, on doit pouvoir effectuer les actions suivantes : -\begin{itemize} -\item Mettre le bit On/Off à 1 pour activer la réception des données. -\item Paramétrer la vitesse à l'aide des bits BdR1/0 -\item Il est conseillé d'activer l'interruption de fifo pleine (FFInt) en -mettant à 1 le bit FFIE. -\item On peut également activer l'interruption de donnée reçue DRInt en -mettant à 1 le bit DRIE. -\item Tester si une donnée est présente dans le buffer en testant le bit DR. -S'il est à 1, lire la donnée dans rxdata. La donnée est alors automatiquement -dépilée de la fifo. -\item On peut lire en permanence l'état de la fifo grâce aux bits FL1/0. -\item Quand la fifo est pleine, le flag FFI passe à 1, et le front -montant de ce bit génère une interruption. Il faut alors lire les 512 octets -de la fifo pour la vider. -\end{itemize} - - - -\subsection{Interfaçage vhdl} - -Voici le code vhdl de l'entité rxserie : -\begin{verbatim} -entity rxserie is -generic(adr : integer); -constant adr_w : integer :=10; -port( - databus: inout std_logic_vector(7 downto 0); - rw: in std_logic; - busck: in std_logic; - rst: in std_logic; - masterck: in std_logic; - rxin: in std_logic; - DRIout: out std_logic; - FFIout: out std_logic; - csData: in std_logic; - csFlag: in std_logic; - csConfig: in std_logic - ); -end rxserie; -\end{verbatim} - -\begin{description} -\item [databus] : bus de données -\item [rw] : ligne Read/Write\_ -\item [busck] : horloge bus -\item [rst] : patte de reset -\item [masterck] : horloge générale du fpga -\item [rxin] : patte de sortie série -\item [DRIout] : sortie d'interruption DRInt -\item [FFIout] : sortie d'interruption FFInt -\item [csData] : chip select du registre de data -\item [csFlag] : chip select du registre de flag -\item [csConfig] : chip select du registre de configuration -\end{description} - - diff --git a/2004/n/fpga/doc/dossierconception/rapport.tex b/2004/n/fpga/doc/dossierconception/rapport.tex deleted file mode 100644 index bef1baa..0000000 --- a/2004/n/fpga/doc/dossierconception/rapport.tex +++ /dev/null @@ -1,68 +0,0 @@ -\documentclass[a4paper,dvips,pdftex]{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} - -\usepackage{listings} -\lstset{language=C, - basicstyle=\footnotesize, %diminue la taille de listings - numbers=left, % nombre à gauche - numberstyle=\tiny, - stepnumber=5, - %numbersep=10pts - xleftmargin=30pt - } - -% 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 - -%}}}1 - -% Entête de page : -\lhead{\small{TB - PP - PAG - FG}} -\rhead{I2 ET\\ Mars 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{Mars 2004} -\maketitle -\pagebreak -\tableofcontents -\pagebreak - -\section{Introduction} - -Notre projet s'articule autour de plusieurs modules. -Dans ce rapport, nous exposerons l'architecture de chacun de ces modules. - -\input{ovcam.tex} -\pagebreak - -\input{portserie.tex} -\pagebreak - - -\end{document} diff --git a/2004/n/fpga/doc/dossierconception/rdcam.c b/2004/n/fpga/doc/dossierconception/rdcam.c deleted file mode 100644 index 8584282..0000000 --- a/2004/n/fpga/doc/dossierconception/rdcam.c +++ /dev/null @@ -1,124 +0,0 @@ -/* rdcam.c contient les fonctions qui enregistre l'image - */ - -#include "rdcam.h" -#include -#include -#include - -#define CAM_PCLK BITN(1) -#define CAM_HREF BITN(2) -#define CAM_VSYNC BITN(3) - -void -cam_init(void) -{ - // configuration des lignes en entrée; - //_io_ports[M6811_DDRA] &= ~0x07 ; - _io_ports[M6811_DDRG] = 0; -} - -unsigned char -test_portcam(unsigned char bit) -{ - if ((_io_ports[M6811_PORTA] & bit) !=0) - return 1; - else - return 0; -} - -/* 352*288 = 101376 octect - * le 68 hc ne dispose que de 64ko de RAM !!! PB --> on segmente en 4 - * parties : - * 288 /4 = 72 - * - * 352 * 72 - */ - -void -cam_get(unsigned char * tab, unsigned char part) -{ - unsigned char ligne; - unsigned char *p; - // attend que CAM_VSYNC passe à 1 - while (!(_io_ports[M6811_PORTA] & 0x04)) - ; - for (ligne=0;ligne < 72 * part;ligne++) - { - // attend que CAM_HREF passe à 1 - while(!(_io_ports[M6811_PORTA] & 0x02)) - ; - // attend que CAM_HREF passe à 0 - while((_io_ports[M6811_PORTA] & 0x02)) - ; - } - for (ligne=0;ligne<72;ligne++) - { - p = tab; - // attend que CAM_HREF passe à 1 - while(!(_io_ports[M6811_PORTA] & 0x02)) - ; - // tant que CAM_HREF est à 1 - while(_io_ports[M6811_PORTA] & 0x02) - { - // si CAM_PCLK passe à 1 - if(_io_ports[M6811_PORTA] & 0x01) - { - *p++ = _io_ports[M6811_PORTG]; - // attend que CAM_PCK passe à 0 - while(_io_ports[M6811_PORTA] & 0x01) - ; - } - } - tab += 352; - } -} - -void -cam_count_href_pclk(int *tab) -{ - int i = 0; - int c; - // attend que CAM_VSYNC passe à 1 - while (!(_io_ports[M6811_PORTA] & 0x04)) - ; - // attend que CAM_HREF passe à 1 - while(!(_io_ports[M6811_PORTA] & 0x02)) - ; - // attend que CAM_HREF passe à 0 - while(_io_ports[M6811_PORTA] & 0x02) - ; - // attend que CAM_HREF passe à 1 - while(!(_io_ports[M6811_PORTA] & 0x02)) - ; - for (i = 0; i < 288; i++) - { - c = 0; - // tant que CAM_HREF est à 1 - while(_io_ports[M6811_PORTA] & 0x02) - { - // attend que PCLK passe à 1 - while(!(_io_ports[M6811_PORTA] & 0x01)) - ; - // attend que PCLK passe à 0 - while(_io_ports[M6811_PORTA] & 0x01) - ; - c++; - } - *tab++ = c; - } -} - -void -cam_skip_frames(int n) -{ - int i; - for (i = 0; i < n; i++) - { - // attend que CAM_VSYNC passe à 1 puis 0 - while (!(_io_ports[M6811_PORTA] & 0x04)) - ; - while ((_io_ports[M6811_PORTA] & 0x04)) - ; - } -} diff --git a/2004/n/fpga/doc/dossierconception/rdcam.h b/2004/n/fpga/doc/dossierconception/rdcam.h deleted file mode 100644 index 1544641..0000000 --- a/2004/n/fpga/doc/dossierconception/rdcam.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef RDCAM_H -#define RDCAM_H - -#define BITN(x) (1<<(x)) - - -void -cam_init(void); -void -cam_get(unsigned char * tab, unsigned char part); -unsigned char -test_portcam(unsigned char bit); -void -cam_count_href_pclk(int *tab); -void -cam_skip_frames(int n); - -#endif -- cgit v1.2.3