From ff21d501684c275c5a8f2ae29796de7b2c2c4d92 Mon Sep 17 00:00:00 2001 From: galmes Date: Wed, 28 Apr 2004 22:32:11 +0000 Subject: pwm : La version de la pwm calibrée à 20kHz avec clk = 40M --- 2004/n/fpga/src/packages/nono_const.vhd | 3 +++ 2004/n/fpga/src/packages/pwm_const.vhd | 31 ++++++++++++------------------- 2 files changed, 15 insertions(+), 19 deletions(-) (limited to '2004/n') 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; -- cgit v1.2.3