summaryrefslogtreecommitdiff
path: root/2004/n/fpga
diff options
context:
space:
mode:
authorgalmes2004-04-28 18:07:05 +0000
committergalmes2004-04-28 18:07:05 +0000
commitbfa75e6dcbe6ce7c5b99e877bf7c02d76e81066c (patch)
treeb4458532b20e48122aa2e9f28da7bcb79071fb93 /2004/n/fpga
parent0c53c7063dc2764c7d4d1e6ff73f82aaaad9311a (diff)
servo : ajout des constantes liées servo-moteur.
pwm : nouvelle architecture. nono_const : ajout du paramètre d'horloge de la carte!
Diffstat (limited to '2004/n/fpga')
-rw-r--r--2004/n/fpga/src/packages/nono_const.vhd13
-rw-r--r--2004/n/fpga/src/packages/pwm_const.vhd32
-rw-r--r--2004/n/fpga/src/packages/servo_const.vhd35
3 files changed, 57 insertions, 23 deletions
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 priode 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);
-
-- Dfinition 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);
+ -- Frquence de fonctionnement de la PWM : 40MHz.
+ -- Nb de priode 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 diffrentes 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 srie
-- Bloc camra
-- Bloc PWM
- -- Bloc I2C
+ -- Bloc IC
-- 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
- -- Frquence de fonctionnement de la PWM : 40MHz.
- -- Nb de priode d'horloge 40MHz pour avoir 1us : 40 : x"28".
- constant PWM_NB_CYCLE_1US : T_OCTET := x"28";
+ -- Nb de priode 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 priode de l'horloge 1us pour avoir 0,5ms : 500 : x"28".
- constant PWM_VALUE_MIN : T_DOUBLE_OCTET := x"01F4";
-
- -- Nb de priodes de l'horloge 1us pour avoir 1,5ms : 1500 : x"28".
- constant PWM_VALUE_MAX : T_DOUBLE_OCTET := x"05DC";
+ -- Nb de priodes de l'horloge 1us pour avoir 2ms : 2000 : x"07D0".
+ -- rq : cette constante n'est pas utilise !
+ 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 priodes 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 priodes de 1us ajouter pour un incrment de 1 dans le
-- registre (incrment pour un interval). Le calcul est :
- -- (PWM_VALUE_MAX - PWM_VALUE_MIN)) / (255 - 0)
- constant PWM_INC_INT : T_OCTET := x"04";
-
-
- -- Nb de priode 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 dclaration 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 priode de l'horloge 1us pour avoir 1ms : 1000 : x"03E8".
+ constant SERVO_VALUE_MIN : T_DOUBLE_OCTET := x"03E8";
+
+ -- Nb de priodes de l'horloge 1us pour avoir 2ms : 2000 : x"07D0".
+ constant SERVO_VALUE_MAX : T_DOUBLE_OCTET := x"07D0";
+
+ -- Nb de priodes de l'horloge 1us pour avoir 20ms : 20000 : x"4E20".
+ constant SERVO_NB_CYCLE_20MS : T_DOUBLE_OCTET := x"4E20";
+
+ -- Nb de priodes de 1us ajouter pour un incrment de 1 dans le
+ -- registre (incrment 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;