------------------------------------------------------------------------------- --affichepwm3.vhd --Eurobot 2004 : APB Team --Auteur : Fidèle GAFAN --Registre à décalage affichantles signaux 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)] ---------------------------------------------------------------------------------rtl de la sortie pwm en fonction de tc library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; --ENTITE entity affichepwm3 is port ( RST : in std_logic; CLK : in std_logic; CLK1USAFF : in std_logic; valueaff : in integer range 0 to 1000000; outpwm : out std_logic ); end entity; --ARCHITECTURE architecture affichepwm3behav of affichepwm3 is begin process(RST,CLK) begin if RST ='1' then if (valueaff = 0)then outpwm<='0'; elsif (valueaff /= 0) then outpwm<='1'; end if; elsif (clk'event and clk='1') then if (CLK1USAFF='1') then if (valueaff = 0)then outpwm<='0'; elsif (valueaff /= 0) then outpwm<='1'; end if; end if; end if; end process; end affichepwm3behav;