summaryrefslogtreecommitdiff
path: root/2004/n/fpga
diff options
context:
space:
mode:
authorgalmes2004-04-28 22:32:11 +0000
committergalmes2004-04-28 22:32:11 +0000
commitff21d501684c275c5a8f2ae29796de7b2c2c4d92 (patch)
tree1d4afeb8ab2f1ad5592bbfc5e2097a5889ea5284 /2004/n/fpga
parentd957c76ea69df920b4a7a62d37ddeb937b608ae9 (diff)
pwm : La version de la pwm calibrée à 20kHz avec clk = 40M
Diffstat (limited to '2004/n/fpga')
-rw-r--r--2004/n/fpga/src/packages/nono_const.vhd3
-rw-r--r--2004/n/fpga/src/packages/pwm_const.vhd31
2 files changed, 15 insertions, 19 deletions
diff --git a/2004/n/fpga/src/packages/nono_const.vhd b/2004/n/fpga/src/packages/nono_const.vhd
index 495705f..b9c57b2 100644
--- a/2004/n/fpga/src/packages/nono_const.vhd
+++ b/2004/n/fpga/src/packages/nono_const.vhd
@@ -48,6 +48,9 @@ package nono_const is
-- constant FREQ_CLK : T_OCTET := x"28"; -- 40M
constant FREQ_CLK : T_OCTET := x"64"; -- 100M
+ -- Nb de période d'horloge à 40MHz (T = 25ns) pour
+ -- avoir 200ns : 8 : x"08".
+ constant CYCLE_CLK200NS : T_OCTET := x"08"; -- 100M
-- Les différentes banques d'adresses (4 x 256)
-- Rq pour Pierre : ça va influer sur le bloc de gestion du bus
diff --git a/2004/n/fpga/src/packages/pwm_const.vhd b/2004/n/fpga/src/packages/pwm_const.vhd
index 1927cb7..f63bf5f 100644
--- a/2004/n/fpga/src/packages/pwm_const.vhd
+++ b/2004/n/fpga/src/packages/pwm_const.vhd
@@ -3,10 +3,9 @@
-- Auteur : Fidèle GAFAN
-- 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
+-- Pour ce module, suivant la fréquence de l'horloge de la carte, on génère une
+-- pwm dont la période varie.
+-- Pour 40MHz (période de 25ns) et PWM de ~20kHz
library ieee;
use ieee.std_logic_1164.all;
@@ -18,25 +17,19 @@ use work.nono_const.all;
-- Constantes relatives au module PWM.
package pwm_const is
- -- 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
+ -- Valeur pour avoir un rapport cyclique nul !
+ constant PWM_VALUE_MIN : T_DOUBLE_OCTET := x"0000";
- -- Nb de périodes de l'horloge à 1us pour avoir 2ms : 2000 : x"07D0".
+ -- Valeur pour avoir un rapport cyclique maximal !
-- 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
+ constant PWM_VALUE_MAX : T_DOUBLE_OCTET := x"00FF"; -- 40M et 100M
- -- Nb de périodes de l'horloge à 1us pour avoir 20ms : 20000 : 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
+ -- Nombre de cycle pour avoir une période.
+ constant PWM_NB_CYCLE_PERIODE : T_DOUBLE_OCTET := x"00FF";
- -- Nb de périodes de 1us à ajouter pour un incrément de 1 dans le
+ -- Nb de périodes de 200ns à 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 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
+ -- (PWM_VALUE_MAX - PWM_VALUE_MIN)) / (255 - 0) = 1
+ constant PWM_INC_INT : T_OCTET := x"01";
end pwm_const;