summaryrefslogtreecommitdiff
path: root/2004/n/fpga
diff options
context:
space:
mode:
authorgalmes2004-04-20 22:21:47 +0000
committergalmes2004-04-20 22:21:47 +0000
commit3fc6bd6301cb0a78ab8d0546c38135a86c70cb5b (patch)
tree7d03a3185597a158cebd9fcf8c6ac729292efbd9 /2004/n/fpga
parent98f187e8b1807115354c94e58e89ae643ea4de2e (diff)
rapport.tex : ajout de plein de sources de pwm.
pwm : sources = mise en forme du commentaire. doc = rectification de grosses anneries.
Diffstat (limited to '2004/n/fpga')
-rw-r--r--2004/n/fpga/doc/dcd/pwm/pwm.tex19
-rw-r--r--2004/n/fpga/doc/dcd/rapport.tex15
-rw-r--r--2004/n/fpga/doc/robot_DV/rapport.tex1
-rw-r--r--2004/n/fpga/src/pwm/clk1us.vhd16
-rw-r--r--2004/n/fpga/src/pwm/convert_pwm.vhd29
-rw-r--r--2004/n/fpga/src/pwm/pwm_generator.vhd29
6 files changed, 49 insertions, 60 deletions
diff --git a/2004/n/fpga/doc/dcd/pwm/pwm.tex b/2004/n/fpga/doc/dcd/pwm/pwm.tex
index 9e60f6a..7c6d4ea 100644
--- a/2004/n/fpga/doc/dcd/pwm/pwm.tex
+++ b/2004/n/fpga/doc/dcd/pwm/pwm.tex
@@ -5,20 +5,13 @@ commande des servomoteurs du robot-EFREI participant à la coupe de France de
robotique E=M6.
\paragraph{Commande des Servo-moteurs}%gras sans saut de ligne
-Un servomoteur est un dispositif utilisé pour commander en position l'axe
-de rotation de sortie d'un moteur.
-Il est utilisé par exemple, pour gérer le sens de rotation du rouleau
-bi-rotatif d'entrée du robot. La position des roues est également donnée par
-un servomoteur.
-
-Un servomoteur est un dispositif utilisé pour commander en position l'axe de
-rotation de sortie d'un moteur. Il est utilisé par exemple, pour gérer le sens
-de rotation du rouleau bi-rotatif d'entrée du robot. La position des roues est
-également donnée par un servomoteur.
+
+Un servomoteur est un système utilisé pour commander en position la rotation
+d'un axe. Il est par exemple utilisé pour
-Il est commandé par une série de signaux modulés en amplitude - Pulse Width
-Modulation : PWM - dont les rapports cycliques représentent chacun un angle
-auquel l'axe de rotation du moteur doit se maintenir.
+Il est commandé par une série de signaux modulés en largueur d'impulsion -
+Pulse Width Modulation : PWM - dont les rapports cycliques représentent chacun
+un angle auquel l'axe de rotation doit se maintenir.
%image exemple de signal pwm
\begin{figure}[htbp]
diff --git a/2004/n/fpga/doc/dcd/rapport.tex b/2004/n/fpga/doc/dcd/rapport.tex
index 3656888..dc1c2fb 100644
--- a/2004/n/fpga/doc/dcd/rapport.tex
+++ b/2004/n/fpga/doc/dcd/rapport.tex
@@ -269,5 +269,20 @@ versions suivantes de ce dossier pour montrer le résultat final.
\lstinputlisting{../../src/gpio/gpio.vhd}
\pagebreak
+\subsection{clk1us.vhd}
+\label{sec:clk1us}
+\lstinputlisting{../../src/pwm/clk1us.vhd}
+\pagebreak
+
+\subsection{convert\_pwm.vhd}
+\label{sec:convert_pwm}
+\lstinputlisting{../../src/pwm/convert_pwm.vhd}
+\pagebreak
+
+\subsection{pwm\_generator.vhd}
+\label{sec:pwm_generator}
+\lstinputlisting{../../src/pwm/pwm_generator.vhd}
+\pagebreak
+
\end{document}
diff --git a/2004/n/fpga/doc/robot_DV/rapport.tex b/2004/n/fpga/doc/robot_DV/rapport.tex
index 2f5e798..5344d0d 100644
--- a/2004/n/fpga/doc/robot_DV/rapport.tex
+++ b/2004/n/fpga/doc/robot_DV/rapport.tex
@@ -55,6 +55,7 @@ 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é
diff --git a/2004/n/fpga/src/pwm/clk1us.vhd b/2004/n/fpga/src/pwm/clk1us.vhd
index 3614b5a..2fc2705 100644
--- a/2004/n/fpga/src/pwm/clk1us.vhd
+++ b/2004/n/fpga/src/pwm/clk1us.vhd
@@ -1,14 +1,10 @@
--------------------------------------------------------------------------------
---clk1us.vhd
---Eurobot 2004 : APB Team
---Auteur : Fidèle GAFAN
---Module générateur d'horloge 1us-périodique(0,992us en réalité)
+-- clk1us.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+-- Module générateur d'horloge 1us-périodique.
--
---REMARQUE(S):changer compt si CLK#32MHz
---Les calculs ont été faits avec CLK=32MHz
---donc 31*(1/CLK)=1us
---d'où compt=31
--------------------------------------------------------------------------------
+-- REMARQUE(S): pour les constantes, se reporter à pwm_const.vhd
+
library ieee;
use ieee.std_logic_1164.all;
diff --git a/2004/n/fpga/src/pwm/convert_pwm.vhd b/2004/n/fpga/src/pwm/convert_pwm.vhd
index a3ab92e..c043111 100644
--- a/2004/n/fpga/src/pwm/convert_pwm.vhd
+++ b/2004/n/fpga/src/pwm/convert_pwm.vhd
@@ -1,21 +1,14 @@
--------------------------------------------------------------------------------
---convert_pwm.vhd
---Eurobot 2004 : APB Team
---Auteur : Fidèle GAFAN
---Module générateur des PWM
+-- convert_pwm.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+
+-- Principe :
--
---REMARQUE(S):changer tccompt,q et data_out
--- si CLK#32MHz et/ou qu'on modifie les valeurs de référence de T1
--- et T2
--- Tcmax=20ms/1us=20161cycles.
---*Si DATACOMPT=0,on veut que T2 vale 0,5ms donc on initialise Q à la valeur
---Q=0,5ms/1us=PWM_VALUE_MIN.
---*Si DATACOMPT=255,on veut que T2 vale 1,5ms donc on initialise Q à la valeur
---Q=1,5ms/1us=PWM_VALUE_MAX.
---*Pour toute autre valeur de DATACOMPT comprise entre les deux précédentes et
---différentes de ces dernières,on initialise Q avec
---Q=(0,5ms/1us)+(DATACOMPT*min[((1,5ms-0,5ms)/1us)/(255-0)]
--------------------------------------------------------------------------------
+-- Converti la valeur comprise dans l'intervalle [0 - 255]
+-- et transmise par le -- PC en une valeur comprise dans
+-- l'interval suivant :
+-- [PWM_VALUE_MIN - (PWM_VALUE_MIN + data_in * -- PWM_INC_INT]
+
--LIBRARY
library ieee;
use ieee.std_logic_1164.all;
@@ -29,7 +22,7 @@ use work.pwm_const.all;
entity convert_pwm is
port (
data_in : in T_OCTET;
- data_out : out T_DOUBLE_OCTET --duree pdt laql la sortie
+ data_out : out T_DOUBLE_OCTET
);
end entity;
diff --git a/2004/n/fpga/src/pwm/pwm_generator.vhd b/2004/n/fpga/src/pwm/pwm_generator.vhd
index e650de4..960a734 100644
--- a/2004/n/fpga/src/pwm/pwm_generator.vhd
+++ b/2004/n/fpga/src/pwm/pwm_generator.vhd
@@ -1,31 +1,22 @@
--------------------------------------------------------------------------------
---pwm_generator.vhd
---Eurobot 2004 : APB Team
---Auteur : Fidèle GAFAN
---Registre à décalage affichantles signaux PWM
+-- pwm_generator.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+-- Génèrateur de signal PWM à partir du nombre de cycles
+-- à l'état haut et du nombre de cycles de l'enveloppe .
--
-- Les commentaires ci-dessous ne sont plus trop valables.
-- Maintenant, clock = 40MHz
-
---REMARQUE(S):changer tccompt,q et valuecompt
--- si CLK#32MHz et/ou qu'on modifie les valeurs de référence de T1
--- et T2
-- Tcmax = 20ms / 1us
-- = 20161 cycles.
--- Si DATACOMPT = 0, on veut que T2 vale 0,5ms donc on initialise Q à la
--- valeur Q=0,5ms/1us=505.
-
--- Si DATACOMPT=255,on veut que T2 vale 1,5ms donc on initialise Q à la
--- valeur Q=1,5ms/1us=1515.
+-- Si DATACOMPT = 0, on veut que T2 vale 0,5ms donc on
+-- initialise Q à la -- valeur Q=0,5ms/1us=505.
--- Pour toute autre valeur de DATACOMPT comprise entre les deux
--- précédentes et différentes de ces dernières,on initialise Q avec
--- Q=(0,5ms/1us)+(DATACOMPT*min[((1,5ms-0,5ms)/1us)/(255-1)]
+-- Si DATACOMPT=255,on veut que T2 vale 1,5ms donc on
+-- initialise Q à la -- valeur Q=1,5ms/1us=1515.
-------------------------------------------------rtl de la sortie pwm en fonction de tc
library ieee;
use ieee.std_logic_1164.all;
@@ -33,7 +24,7 @@ use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use work.nono_const.all;
-use work.pwm_const.all;
+use work.pwm_const.all;
--ENTITE
entity pwm_generator is