Широтно-импульсная модуляция (ШИМ, также PWM – Pulse-WidthModulation) является эффективным способом цифрового управления силовыми системами. При этом регулирование мощности осуществляется путем управления отношением времени, в течение которого сигнал включен, ко времени, в течение которого он выключен. Такой способ управления обладает как минимум двумя достоинствами – он удобен для реализации в цифровой системе, и является энергоэффективным, поскольку в ключевом режиме работы управляющий элемент потребляет минимальную мощность (в закрытом состоянии ток через него стремится к нулю, а в открытом стремится к нулю падение напряжения, поскольку сопротивление переключающих элементов стремятся уменьшить).

Модуль ШИМ разрабатывается следующим образом. Входной сигнал d задает число тактов, в течение которых следует удерживать высокий логический уровень на выходе модуля. Внутренний сигнал cnt циклически перебирает состояния от 0 до максимального значения, которое может быть подано в качестве входного. Допустим, что внутренний счетчик является 8-разрядным (т.е. полный цикл счета содержит 256 тактов). Тогда при подаче на вход числа 10 на выходе такого модуля будет логическая единица в течение 10 тактов, а в течение остальных 246 – логический ноль. Увеличивая значение числа, поданного на вход d, можно увеличивать отношение времени включения выходного сигнала к общему времени цикла счета.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

 

entitypwm is

    Port ( clk : in  STD_LOGIC;

d : in STD_LOGIC_VECTOR(7 downto 0);

pwm_out : out  STD_LOGIC);

endpwm;

 

architecture Behavioral of timer is

 

signalcnt : std_logic_vector(7 downto 0) := x”00”;

 

begin

 

process(clk)

begin

ifrising_edge(clk) then

cnt<= cnt + 1;

end if;

end process;

 

pwm_out<= '1' when d >cnt else '0';

 

endBehavioral;

  =  Перейти к содержанию  =