summaryrefslogtreecommitdiff
path: root/2004/n/fpga/src/pwm/pwm_generator.vhd
diff options
context:
space:
mode:
Diffstat (limited to '2004/n/fpga/src/pwm/pwm_generator.vhd')
-rw-r--r--2004/n/fpga/src/pwm/pwm_generator.vhd31
1 files changed, 20 insertions, 11 deletions
diff --git a/2004/n/fpga/src/pwm/pwm_generator.vhd b/2004/n/fpga/src/pwm/pwm_generator.vhd
index 960a734..af73f00 100644
--- a/2004/n/fpga/src/pwm/pwm_generator.vhd
+++ b/2004/n/fpga/src/pwm/pwm_generator.vhd
@@ -1,22 +1,31 @@
--- 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 .
+-------------------------------------------------------------------------------
+--pwm_generator.vhd
+--Eurobot 2004 : APB Team
+--Auteur : Fidèle GAFAN
+--Registre à décalage affichantles signaux PWM
--
-- 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 = 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=255,on veut que T2 vale 1,5ms donc on
--- initialise Q à la -- valeur Q=1,5ms/1us=1515.
+-- 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)]
+------------------------------------------------rtl de la sortie pwm en fonction de tc
library ieee;
use ieee.std_logic_1164.all;
@@ -24,7 +33,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
@@ -50,7 +59,7 @@ begin
pwm_out <= '0';
elsif (clk'event and clk = '1') then
compt <= compt + x"0001";
- if (compt <= reg) then
+ if (compt < reg) then
pwm_out <= '1';
else
pwm_out <= '0';