From bfa75e6dcbe6ce7c5b99e877bf7c02d76e81066c Mon Sep 17 00:00:00 2001 From: galmes Date: Wed, 28 Apr 2004 18:07:05 +0000 Subject: servo : ajout des constantes liées servo-moteur. pwm : nouvelle architecture. nono_const : ajout du paramètre d'horloge de la carte! --- 2004/n/fpga/src/packages/nono_const.vhd | 13 +++++++----- 2004/n/fpga/src/packages/pwm_const.vhd | 32 +++++++++++++---------------- 2004/n/fpga/src/packages/servo_const.vhd | 35 ++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 2004/n/fpga/src/packages/servo_const.vhd (limited to '2004/n/fpga') diff --git a/2004/n/fpga/src/packages/nono_const.vhd b/2004/n/fpga/src/packages/nono_const.vhd index 59518cf..fae3762 100644 --- a/2004/n/fpga/src/packages/nono_const.vhd +++ b/2004/n/fpga/src/packages/nono_const.vhd @@ -17,9 +17,6 @@ use ieee.std_logic_unsigned.all; -- Constantes relatives package nono_const is - -- Temps d'une période d'horloge sur la carte - --constant CK_PERIOD : time := 10 ns; - -- Taille de l'octet. constant NB_BIT_OCTET : integer := 8; @@ -41,12 +38,18 @@ package nono_const is subtype T_DOUBLE_OCTET is std_logic_vector ((NB_BIT_DOUBLE_OCTET - 1) downto 0); - -- Définition de nouveaux types : T_ADDRESS et T_DATA subtype T_ADDRESS is std_logic_vector ((NB_BIT_ADDRESS - 1) downto 0); subtype T_DATA is std_logic_vector ((NB_BIT_DATA - 1) downto 0); + -- Fréquence de fonctionnement de la PWM : 40MHz. + -- Nb de période d'horloge à 40MHz pour avoir 1us : 40 : x"28". + -- constant FREQ_CLK : T_OCTET := x"28"; -- 40M + -- constant FREQ_CLK : T_OCTET := x"02"; -- ise + constant FREQ_CLK : T_OCTET := x"64"; -- 100M + + -- Les différentes banques d'adresses (4 x 256) -- Rq pour Pierre : ça va influer sur le bloc de gestion du bus constant START_ADDR_B0 : T_ADDRESS := "0000000000"; @@ -71,6 +74,6 @@ package nono_const is -- Bloc port série -- Bloc caméra -- Bloc PWM - -- Bloc I2C + -- Bloc I²C -- Bloc servo-moteurs end nono_const; diff --git a/2004/n/fpga/src/packages/pwm_const.vhd b/2004/n/fpga/src/packages/pwm_const.vhd index 2899f05..1927cb7 100644 --- a/2004/n/fpga/src/packages/pwm_const.vhd +++ b/2004/n/fpga/src/packages/pwm_const.vhd @@ -18,29 +18,25 @@ use work.nono_const.all; -- Constantes relatives au module PWM. package pwm_const is - -- Fréquence de fonctionnement de la PWM : 40MHz. - -- Nb de période d'horloge à 40MHz pour avoir 1us : 40 : x"28". - constant PWM_NB_CYCLE_1US : T_OCTET := x"28"; + -- Nb de période de l'horloge à 1us pour avoir 1ms : 1000 : x"03E8". + constant PWM_VALUE_MIN : T_DOUBLE_OCTET := x"03E8"; -- 40M + 100M + led + --constant PWM_VALUE_MIN : T_DOUBLE_OCTET := x"0000"; -- ise - -- Nb de période de l'horloge à 1us pour avoir 0,5ms : 500 : x"28". - constant PWM_VALUE_MIN : T_DOUBLE_OCTET := x"01F4"; - - -- Nb de périodes de l'horloge à 1us pour avoir 1,5ms : 1500 : x"28". - constant PWM_VALUE_MAX : T_DOUBLE_OCTET := x"05DC"; + -- Nb de périodes de l'horloge à 1us pour avoir 2ms : 2000 : x"07D0". + -- rq : cette constante n'est pas utilisée ! + constant PWM_VALUE_MAX : T_DOUBLE_OCTET := x"07D0"; -- 40M et 100M + --constant PWM_VALUE_MAX : T_DOUBLE_OCTET := x"0005"; -- ise + -- led : mettre 18000 -- Nb de périodes de l'horloge à 1us pour avoir 20ms : 20000 : x"4E20". - constant PWM_NB_CYCLE_20MS : T_DOUBLE_OCTET := x"4E20"; - --constant PWM_NB_CYCLE_20MS : T_DOUBLE_OCTET := x"4E20"; + --constant PWM_NB_CYCLE_20MS : T_DOUBLE_OCTET := x"0005"; -- ise + constant PWM_NB_CYCLE_20MS : T_DOUBLE_OCTET := x"4E20"; --40M et 100M + led -- Nb de périodes de 1us à ajouter pour un incrément de 1 dans le -- registre (incrément pour un interval). Le calcul est : - -- (PWM_VALUE_MAX - PWM_VALUE_MIN)) / (255 - 0) - constant PWM_INC_INT : T_OCTET := x"04"; - - - -- Nb de période d'horloge pour avoir 20 ms. - --constant PWM_TCMAX : T_DOUBLE_OCTET := 20161; + -- (PWM_VALUE_MAX - PWM_VALUE_MIN)) / (255 - 0) = 4 + --constant PWM_INC_INT : T_OCTET := x"04"; -- 40M et 100M + --constant PWM_INC_INT : T_OCTET := x"01"; --ise + constant PWM_INC_INT : T_OCTET := x"46"; -- led = 70 end pwm_const; - - diff --git a/2004/n/fpga/src/packages/servo_const.vhd b/2004/n/fpga/src/packages/servo_const.vhd new file mode 100644 index 0000000..b6b5714 --- /dev/null +++ b/2004/n/fpga/src/packages/servo_const.vhd @@ -0,0 +1,35 @@ +-- servo_const.vhd +-- Eurobot 2004 : APB Team +-- Auteur : Pierre-André Galmes +-- Fichier de déclaration de constantes de pwm. + +-- RQ : pour une indentation bien sous vim : +-- 1 - ":set shiftwidth=4" +-- 2 - se placer sous "package nono_const is" +-- 3 - tapez : = puis shift+G + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_arith.all; +use ieee.std_logic_unsigned.all; + +use work.nono_const.all; + +-- Constantes relatives au module PWM. +package servo_const is + + -- Nb de période de l'horloge à 1us pour avoir 1ms : 1000 : x"03E8". + constant SERVO_VALUE_MIN : T_DOUBLE_OCTET := x"03E8"; + + -- Nb de périodes de l'horloge à 1us pour avoir 2ms : 2000 : x"07D0". + constant SERVO_VALUE_MAX : T_DOUBLE_OCTET := x"07D0"; + + -- Nb de périodes de l'horloge à 1us pour avoir 20ms : 20000 : x"4E20". + constant SERVO_NB_CYCLE_20MS : T_DOUBLE_OCTET := x"4E20"; + + -- Nb de périodes de 1us à ajouter pour un incrément de 1 dans le + -- registre (incrément pour un interval). Le calcul est : + -- (PWM_VALUE_MAX - PWM_VALUE_MIN)) / (255 - 0) = 4 + constant SERVO_INC_INT : T_OCTET := x"04"; + +end servo_const; -- cgit v1.2.3