From 3fc6bd6301cb0a78ab8d0546c38135a86c70cb5b Mon Sep 17 00:00:00 2001 From: galmes Date: Tue, 20 Apr 2004 22:21:47 +0000 Subject: rapport.tex : ajout de plein de sources de pwm. pwm : sources = mise en forme du commentaire. doc = rectification de grosses anneries. --- 2004/n/fpga/doc/dcd/pwm/pwm.tex | 19 ++++++------------- 2004/n/fpga/doc/dcd/rapport.tex | 15 +++++++++++++++ 2004/n/fpga/doc/robot_DV/rapport.tex | 1 + 2004/n/fpga/src/pwm/clk1us.vhd | 16 ++++++---------- 2004/n/fpga/src/pwm/convert_pwm.vhd | 29 +++++++++++------------------ 2004/n/fpga/src/pwm/pwm_generator.vhd | 29 ++++++++++------------------- 6 files changed, 49 insertions(+), 60 deletions(-) (limited to '2004/n') 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 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 \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' 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 -- cgit v1.2.3