一种基于CPLD的PWM控制电路设计
器模块的VHDL程序设计如下:
entitycounteris
port(clk:instdlogic;
Q:outstdlogicvector(7downto0);
cao:outstd_logic);
endcounter;
architecturea_counterofcounteris
signalQs:std_logic_vector(7downto0);
signalreset:std_logic;
signalcaolock:std_logic;
begin
process(clk,reset)
begin
if(reset=‘1')then
Qs<=“00000000”;
elsifclk'eventandclk=‘1'then
Qs<=Qs+‘1';
endif;
endprocess;
reset<=‘1'whenQs=255else
‘0';
caolock<=‘1'whenQs=0else
‘0';
Q<=Qs;
cao<=resetorcaolock;
enda_counter;
图2PWM可逆控制电路原理图
在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路。其模块的VHDL程序如下:
entitydelayis
port(clk:instd_logic;
input:instd_logic_vector(1downto0);
output:outstd_logic_vector(1downto0)
enddelay;
architecturea_delayofdelayis
signalQ1,Q2,Q3,Q4:std_logic;
begin
process(clk)
begin
ifclk'eventandclk=‘1'then
Q3<=Q2;
Q2<=Q1;
Q1<=input(1);
endif;
endprocess;
Q4<=notQ3;
output(1)<=input(1)andQ3;
output(0)<=input(0)andQ4;
enda_delay;
图3为原理图中的若干信号的波形仿真图。
3结束语
采用可编程逻辑器件 《一种基于CPLD的PWM控制电路设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/164212.html
entitycounteris
port(clk:instdlogic;
Q:outstdlogicvector(7downto0);
cao:outstd_logic);
endcounter;
architecturea_counterofcounteris
signalQs:std_logic_vector(7downto0);
signalreset:std_logic;
signalcaolock:std_logic;
begin
process(clk,reset)
begin
if(reset=‘1')then
Qs<=“00000000”;
elsifclk'eventandclk=‘1'then
Qs<=Qs+‘1';
endif;
endprocess;
reset<=‘1'whenQs=255else
‘0';
caolock<=‘1'whenQs=0else
‘0';
Q<=Qs;
cao<=resetorcaolock;
enda_counter;
图2PWM可逆控制电路原理图
在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路。其模块的VHDL程序如下:
entitydelayis
port(clk:instd_logic;
input:instd_logic_vector(1downto0);
output:outstd_logic_vector(1downto0)
enddelay;
architecturea_delayofdelayis
signalQ1,Q2,Q3,Q4:std_logic;
begin
process(clk)
begin
ifclk'eventandclk=‘1'then
Q3<=Q2;
Q2<=Q1;
Q1<=input(1);
endif;
endprocess;
Q4<=notQ3;
output(1)<=input(1)andQ3;
output(0)<=input(0)andQ4;
enda_delay;
图3为原理图中的若干信号的波形仿真图。
3结束语
采用可编程逻辑器件 《一种基于CPLD的PWM控制电路设计(第2页)》