一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 7158|回复: 0

一种基于CPLD的PWM控制电路设计

[复制链接]
发表于 2009-1-2 20:45 | 显示全部楼层 |阅读模式
在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统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控制电路用于某光测设备的传动装置时,取得了良好的效果.

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-28 06:22 , Processed in 0.028474 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表