summaryrefslogtreecommitdiff
path: root/2004/n/fpga/src/pwm/comptvalue3.vhd
diff options
context:
space:
mode:
Diffstat (limited to '2004/n/fpga/src/pwm/comptvalue3.vhd')
-rw-r--r--2004/n/fpga/src/pwm/comptvalue3.vhd85
1 files changed, 0 insertions, 85 deletions
diff --git a/2004/n/fpga/src/pwm/comptvalue3.vhd b/2004/n/fpga/src/pwm/comptvalue3.vhd
deleted file mode 100644
index 0e32003..0000000
--- a/2004/n/fpga/src/pwm/comptvalue3.vhd
+++ /dev/null
@@ -1,85 +0,0 @@
--------------------------------------------------------------------------------
---comptvalue3.vhd
---Eurobot 2004 : APB Team
---Auteur : Fidèle GAFAN
---Module générateur des PWM
---
---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=20161cycles.
---*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.
---*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)]
--------------------------------------------------------------------------------
---LIBRARY
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_unsigned.all;
-use ieee.std_logic_arith.all;
---ENTITY
-entity comptvalue3 is
- port (
- RST : in std_logic;
- CLK : in std_logic;
- CLK1USCOMPT : in std_logic;
- loadcompt : in std_logic;
- datacompt : in integer range 0 to 255;
- tccompt : buffer integer range 0 to 20161; --nb de cycles de clk1us
- --pour avoir 19,999712ms
- valuecompt : out integer range 0 to 1000000 --duree pdt laql la sortie
- --reste haute. Decrementee
- );
-end entity;
-
-architecture comptvalue3behav of comptvalue3 is
-
- signal q : integer range 0 to 1000000; --recevra duree courante de valuecompt pdt laql la sortie
- --reste haute. Decrementee
-
-begin
- process(RST,CLK)
-constant tcmax :integer range 0 to 20161:=20161;
- begin
- if (RST = '1') then --initialisation horloge 19,999712ms et
- --premier chargement sans load;role du
- --state1.Prochain etat : calcul ie state3
- tccompt<=tcmax;
- if (datacompt=0) then
- q<=505; --pour data=0 la periode doit durer 0,5ms
- elsif (datacompt=255) then
- q<=1515;--pour data=255 la periode doit durer 1,5ms
- elsif((datacompt/=0)and (datacompt/=255)) then
- q<=(505+(datacompt*3));
- end if;
- elsif (CLK'event and CLK = '1') then
- if (CLK1USCOMPT='1') then
- if (loadcompt = '1') then --state2 chargement pendant 1 clk1us
- tccompt<=tcmax; --pdt 1 clk1us, tccompt reste max
- if (datacompt=0) then
- q<=505;--pour data=0 la periode doit durer 0,5ms
- elsif (datacompt=255) then
- q<=1515;--pour data=255 la periode doit durer 1,5ms
- elsif ((datacompt/=0)and (datacompt/=255)) then
- q<=(505+(datacompt*3));
- end if;
- elsif (loadcompt='0') then --state3 calculs a chaque front de clk1us
- if (q/=0) then
- q<=(q-1);
- tccompt<=((tccompt)-1);
- elsif (q=0) then
- q<=0;
- tccompt<=((tccompt)-1);
- end if;
- end if;--if du loadcompt
- end if;--if du clk1us
- end if;--elsif du clk et rst
- end process;
- valuecompt <= q;
-end comptvalue3behav;
-
-