Guest User

Untitled

a guest
Mar 19th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. use ieee.std_logic_unsigned.all;
  4.  
  5. entity PWM_VHDL is
  6. port
  7. (
  8. clk: in std_logic; -- ingreso de reloj (50MHz en la DE0-Nano)
  9. PWM_OUT: out std_logic -- salida de PWM
  10. );
  11. end PWM_VHDL;
  12. --PWM para un servomotor (50Hz 40%)
  13. architecture arch_PWM_VHDL of PWM_VHDL is
  14. signal counter_PWM: std_logic_vector(19 downto 0):=(others => '0');-- contador principal para señal PWM
  15. signal DUTY_CYCLE: std_logic_vector(19 downto 0):= x"61A80"; -- contador de ciclo de trabajo 40%
  16. begin
  17. process(clk) -- proceso para generar la señal de PWM
  18. begin
  19. if(clk'event and clk='1') then
  20. counter_PWM <= counter_PWM + x"1"; --en cada pulso positivo de reloj aumenta el contador en 1
  21. if(counter_PWM>=x"F4240") then --compara si el contador llegó al valor prefijado para la frecuencia del PWM
  22. counter_PWM <= x"00000"; -- reinicia el contador
  23. end if;
  24. end if;
  25. end process;
  26. PWM_OUT <= '1' when counter_PWM < DUTY_CYCLE else '0'; -- 1 mientras el contador sea menor al ciclo de trabajo, si es mayor entonces=0
  27. end arch_PWM_VHDL;
Add Comment
Please, Sign In to add comment