Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use ieee.std_logic_unsigned.all;
- entity PWM_VHDL is
- port
- (
- clk: in std_logic; -- ingreso de reloj (50MHz en la DE0-Nano)
- PWM_OUT: out std_logic -- salida de PWM
- );
- end PWM_VHDL;
- --PWM para un servomotor (50Hz 40%)
- architecture arch_PWM_VHDL of PWM_VHDL is
- signal counter_PWM: std_logic_vector(19 downto 0):=(others => '0');-- contador principal para señal PWM
- signal DUTY_CYCLE: std_logic_vector(19 downto 0):= x"61A80"; -- contador de ciclo de trabajo 40%
- begin
- process(clk) -- proceso para generar la señal de PWM
- begin
- if(clk'event and clk='1') then
- counter_PWM <= counter_PWM + x"1"; --en cada pulso positivo de reloj aumenta el contador en 1
- if(counter_PWM>=x"F4240") then --compara si el contador llegó al valor prefijado para la frecuencia del PWM
- counter_PWM <= x"00000"; -- reinicia el contador
- end if;
- end if;
- end process;
- 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
- end arch_PWM_VHDL;
Add Comment
Please, Sign In to add comment