; else q1<=q1+1; end if; end if; end if; end process; q<=q1; end behav1; 基于 VHDL 控制的直流电机 PWM 控制器的设计 9 图 4.计数模块仿真图 3.3 加速器程序 ta 设置 PWM 信号的占空比。当 U/D=1 ,输入 CLK2 使设定值计数器的输出值增加, PWM 占空比增加,电机转速加快。当 U/D=0 ,输入 CLK2 ,使设定值计数器的输出值减小, PWM 占空比减小,电机转速变慢。程序及仿真图 2如下: library ieee; use ieee.std_logic_unsigned.all; use ieee.std_logic_1164.all; ta is port( clk ,u_d,en:in std_logic; m:out std_logic;cq:out std_logic_vector(4 downto 0)); ta; architecture behav ta is signal cq1:std_logic_vector(4 downto 0); begin process(clk) begin 基于 VHDL 控制的直流电机 PWM 控制器的设计 10 if clk'event and clk='1' then if en='1'then if u_d='1'then if cq1=31 then cq1<="11111"; else cq1<=cq1+1; end if; elsif cq1=0 then cq1<="00000"; else cq1<=cq1-1; end if; elsif en='0' then m<='1'; end if; end if; end process; cq<=cq1; end behav; 图2.加速器模块仿真图