版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统PWM控制电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点?因此PWM控制电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高.随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便.针对以上情况,本文给出一种基于复杂可编程逻辑器件(CPLD)的PWM控制电路设计和它的仿真波形.
# w! D9 L# \% }! F/ Y9 B4 c8 w: p3 Y9 F
1 PWM控制电路基本原理
% r/ m+ E- Z8 z, y$ S0 S4 o, k* j" [4 H
为了实现直流伺服系统的H型单极模式同频PWM可逆控制,一般需要产生四路驱动信号来实现电机的正反转切换控制.当PWM控制电路工作时,其中H桥一侧的两路驱动信号的占空比相同但相位相反,同时随控制信号改变并具有互锁功能;而另一侧上臂为低电平,下臂为高电平.另外,为防止桥路同侧对管的导通,还应当配有延时电路.设计的整体模块见图1所示.其中,d[7:0]矢量用于为微机提供调节占空比的控制信号,cs为微机提供控制电机正反转的控制信号,clk为本地晶振频率,qout[3:0]矢量为四路信号输出.其内部原理图如图2所示.
' T2 D m" l5 J/ g( O c( d 该设计可得到脉冲周期固定(用软件设置分频器I9可改变PWM开关频率,但一旦设置完毕,则其脉冲周期将固定)、占空比决定于控制信号、分辨力为1/256的PWM信号.I8模块为脉宽锁存器,可实现对来自微机的控制信号d[7:0]的锁存,d[7:0]的向量值用于决定PWM信号的占空比.clk本地晶振在经I9分频模块分频后可为PWM控制电路中I12计数器模块和I11延时模块提供内部时钟.I12计数器在每个脉冲的上升沿到来时加1,当计数器的数值为00H或由0FFH溢出时,它将跳到00H时,cao输出高电平至I7触发器模块的置位端,I7模块输出一直保持高电平.当I8锁存器的值与I12计数器中的计数值相同时,信号将通过I13比较器模块比较并输出高电平至I7模块的复位端,以使I7模块输出低电平.当计数器再次溢出时,又重复上述过程.I7为RS触发器,经过它可得到两路相位相反的脉宽调制波,并可实现互锁.I11为延时模块,可防止桥路同侧对管的导通,I10模块为脉冲分配电路,用于输出四路满足设计要求的信号.CS为I10模块的控制信号,用于控制电机的正反转. ; W" ?2 u5 D7 n" y# K
5 w# e. [' Z; ]0 S- J) y 2 电路设计 2 j+ o. ~. q) k; r! H, F+ d' C0 w
' V) N# o7 Q% K
本设计采用的是Lattice半导体公司推出的is-plever开发平台,该开发平台定位于复杂设计的简单工具.它采用简明的设计流程并完整地集成了Leonardo Spectrum的VHDL综合工具和ispVMTM系统,因此,无须第三方设计工具便可完成整个设计流程.在原理设计方面,本设计采用自顶向下、层次化、模块化的设计思想,这种设计思想的优点是符合人们先抽象后具体,先整体后局部的思维习惯.其设计出的模块修改方便,不影响其它模块,且可重复使用,利用率高.本文仅就原理图中的I12计数器模块和I11延迟模块进行讨论.
% I3 n& Z5 F2 k7 T" M! \
9 W! {3 v6 l& {8 [4 Q- b 计数器模块的VHDL程序设计如下:
* p( _$ m2 W+ Q+ }) X2 {* h N: A; }( |# _3 I9 i
entity counter is # H2 {# l. C$ B
& O" N. Z4 v+ x port(clk: in std logic;
6 }; @2 c& c7 n$ l7 g% d m1 e8 w" K7 S" V+ Y( D
Q : out std logic vector(7 downto 0); + ] H& L1 N: u2 P3 K
6 X, n# b/ k; X7 w! y# P cao: out std_logic);
; I. u! Y0 p, S
& \1 I' k2 K* `# R5 K% u end counter; 8 J4 \" e& x+ _/ y
( K0 i+ r8 v7 y; a" ^. F: p architecture a_counter of counter is
1 J0 U$ B9 z) ]9 c4 l
$ P$ g0 D, ]4 s9 S- l5 z signal Qs: std_logic_vector(7 downto 0);
5 G7 X! Q4 _- \8 f$ l* R& b
8 D% f" |& ~1 C2 g8 y7 A signal reset: std_logic; 5 _+ i8 x2 G2 f9 K- I+ G M4 V0 Y7 j
5 r% M& q, r- V5 B
signal caolock: std_logic; 5 a9 ~- t- o9 d' Y* z1 l
1 U# }! }1 U; E) K- \ begin ' X! i5 a G f2 g" C* v7 g
) z0 D( a: s+ o8 s. ^# N2 _
process(clk,reset)
" J: n; c+ U: {5 d' B6 ~% n; c" H$ ], i# G5 d6 K+ G4 P
begin / Q" _4 d& U# Z* h. t, O
5 {7 u( |# P- S, i+ V
if(reset=‘1')then / n. b( M5 N0 S" S
+ s- x: x: L& T& ?, Z
Qs<=“00000000”;
: m ?, ]8 g1 o3 z: h+ \' R0 c$ y( [
elsif clk'event and clk=‘1' then 4 h2 x1 m% T0 t+ ~/ ]8 R
, z) N7 E U' G, ~) {: O/ G$ A Qs<=Qs+‘1'; , Q8 \) X6 S! O0 n9 G4 P
1 m$ i7 R% `4 z) y1 W# l2 ~; i
end if;
9 Q2 F I! Y5 U
. X i# R+ P8 H$ D end process; * f7 R5 w2 u. y" c4 _: A1 i ?; {
/ c- A4 X+ x. c* C, W9 ^ reset<=‘1' when Qs="255" else 1 t, W% j1 I+ H8 _
; y& O; P& P, N" c9 \% j ‘0';
. {$ A' z" v, |0 G" ]' d! |
6 W% B6 j, H: d caolock<=‘1' when Qs="0" else : ^5 C6 _) ?" W
: a+ Z! `. s; l6 e
‘0';
- O6 T$ i1 [, S2 k& k; d: _% s* W" |0 z& {6 Q1 ], M* Y
Q<=Qs; $ [! K& V% x _' J
0 }2 w ? q/ a: @; q! y cao<=reset or caolock;
) g9 C$ W; L1 y% G" d4 ]: F
3 A. Y; U& k9 C8 y) j end a_counter;
" \5 l9 ?3 L0 p; ^2 T6 Y" X# k: e' z
& v# l Q, l0 [, w% T在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路.其模块的VHDL程序如下:
% R5 K3 q9 O5 g" q R" ~# E# n; r$ t9 U2 E, Q9 ?& o5 O- b
entity delay is 3 s) t7 l4 i) u1 z% W
- o0 z% o X n# T. E' h0 M- j
port(clk: in std_logic; 4 a9 }6 L3 x* y5 c
/ P8 T. s1 Q6 U" j input: in std_logic_vector(1 downto 0);
% |6 v; l3 H' p* L( Q
2 l0 W5 h( T( ]5 v$ k- Z! B5 F output:out std_logic_vector(1 downto 0) , V( V2 X) e9 V- I* X5 `9 ]6 H1 j
2 Q$ I1 [0 A+ Z
end delay; ]( l. o" v8 |+ k: [' T
) ^4 }' F2 n, F& e7 W/ m0 M
architecture a_delay of delay is # h8 h5 M. G; U- ]
9 H% o; w% i) R# h3 V7 W$ i; f7 u7 r signal Q1,Q2,Q3,Q4: std_logic; 7 z$ o+ H9 Y- k l& q9 j( y5 w" Z
! K, p8 ^- T7 s
begin
5 b3 `# v2 r6 U" u
- Y6 M6 F! J k0 [# c( W( c process(clk)
9 N% y$ @8 l* p( p; p" U" b( h1 {5 a6 H3 U4 r* f3 ]( q# G
begin
# B% d1 g# w; M$ \: ^) F" a: S6 f* }% ?2 M% [. S
if clk'event and clk=‘1' then " n- S; m# a% K$ s2 _) e
; C4 R. P, u; |4 \0 p Q3<=Q2;
! ]: f, _$ x- }+ ~2 [0 \4 `# @4 g/ S
Q2<=Q1;
, e. }) K! g. o% T# Z0 r
- v k) @( T; \# a) b9 M! U7 C Q1<=input(1); 8 ]6 U2 G. M4 X0 ~$ A4 C2 N9 t
" g! W: j1 _. z1 J$ Y* w- T/ j end if; 6 E8 o2 }& a! Y4 _* \' D1 l
3 K; o# W, h2 ?3 q+ X end process; 6 Z) _/ G g1 s1 ^( K
9 {, D% W0 i# A+ ?! P2 u4 j) p
Q4<=not Q3;
# ~" G, T. w! A2 @. o/ W( k! q) m5 ?) [' s& i/ x
output(1)<=input(1)and Q3;
7 F$ v1 Q3 ~2 G# D8 X3 J/ i2 g! S% e' m6 v" C3 W
output(0)<=input(0)and Q4;
6 S* N5 U& C2 Z; ]1 p# u
- w; w' O' r% Y: t, n end a_delay; / H) G7 C1 J( [! N* q
2 Z6 z6 \8 m. e* h, P
% z' X2 V5 q; |" n$ u3 X
3 结束语
) `& X$ p7 _9 b! y. ?. Q4 f' t" l) C- O' r W
采用可编程逻辑器件和硬件描述语言,同时利用其供应商提供的开发工具可大大缩短数字系统的设计时间,节约新产品的开发成本,另外,还具有设计灵活,集成度高,可靠性好,抗干能力强等特点.本文设计的PWM控制电路用于某光测设备的传动装置时,取得了良好的效果. |
|