一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 4504|回复: 0
收起左侧

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

[复制链接]
发表于 2009-1-2 20:45 | 显示全部楼层 |阅读模式
在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统PWM控制电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点?因此PWM控制电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高.随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便.针对以上情况,本文给出一种基于复杂可编程逻辑器件(CPLD)的PWM控制电路设计和它的仿真波形. ' d2 w( g0 S1 [( p7 ^+ W

- k: N7 W- [# U; S% g  1 PWM控制电路基本原理 4 t1 q" ]) I' _; G0 C9 x- p
/ n5 b- C) R  p/ c. f% ^) {
  为了实现直流伺服系统的H型单极模式同频PWM可逆控制,一般需要产生四路驱动信号来实现电机的正反转切换控制.当PWM控制电路工作时,其中H桥一侧的两路驱动信号的占空比相同但相位相反,同时随控制信号改变并具有互锁功能;而另一侧上臂为低电平,下臂为高电平.另外,为防止桥路同侧对管的导通,还应当配有延时电路.设计的整体模块见图1所示.其中,d[7:0]矢量用于为微机提供调节占空比的控制信号,cs为微机提供控制电机正反转的控制信号,clk为本地晶振频率,qout[3:0]矢量为四路信号输出.其内部原理图如图2所示.
8 `' \! Z, u+ Z9 m" J$ G- c  该设计可得到脉冲周期固定(用软件设置分频器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模块的控制信号,用于控制电机的正反转.
  ^$ i2 ?, F* {9 p6 w
: f! B! H+ v' b9 a* T4 k  2 电路设计 1 c, |4 o; h2 W( m: r  A% l* x
1 E3 Y. O2 O( v
  本设计采用的是Lattice半导体公司推出的is-plever开发平台,该开发平台定位于复杂设计的简单工具.它采用简明的设计流程并完整地集成了Leonardo Spectrum的VHDL综合工具和ispVMTM系统,因此,无须第三方设计工具便可完成整个设计流程.在原理设计方面,本设计采用自顶向下、层次化、模块化的设计思想,这种设计思想的优点是符合人们先抽象后具体,先整体后局部的思维习惯.其设计出的模块修改方便,不影响其它模块,且可重复使用,利用率高.本文仅就原理图中的I12计数器模块和I11延迟模块进行讨论.
. ]! q2 N) E" L; j
, w/ g/ ^7 p0 A( q" z( ~  计数器模块的VHDL程序设计如下:
' I0 @' {; ^6 b& K& c: a) |9 P. q# k( b* \- g! i  P* d
  entity counter is   ^( U6 G# j# `
; r+ b2 }- F/ Z" I' a3 O" q0 ~, S: }
  port(clk: in std logic; : c  [2 F5 N- _

4 m/ g5 m1 D3 G/ Y( \4 x2 }) C  Q : out std logic vector(7 downto 0); 2 M' e, m. z4 N+ Q
( l( D" c& C9 N% L
  cao: out std_logic);
2 |% s9 H% b/ j+ k% E) @0 ^  e' t
3 ]. i# h+ }& Z( |  end counter; + }4 G& b) Y7 w- U4 {( u+ l

8 M+ B% ~  G- B9 M# r5 R( ~  architecture a_counter of counter is " z% H( e: L6 ]- X5 u: z& I

$ @# _" z" o7 I& n- I  signal Qs: std_logic_vector(7 downto 0); 8 D9 ~! E. k# `
3 T2 ~8 s% _& z: a& B6 r7 D8 Q
  signal reset: std_logic;
) z0 F; L" i  V! U7 A2 ~
2 F6 A% }1 q# n" o$ X/ F5 k  signal caolock: std_logic; " |4 D: q' @1 n

) a. z" m$ n5 M) i' s0 Q$ P' V  begin
- D& ~% O: ~3 k
9 V% m# W4 H) F& Q7 \; c  process(clk,reset) 0 |% \8 h/ X) W! {: k
/ C* V1 s* {1 |$ \* K
  begin
1 b% s) E1 n' R0 h, X3 E2 ?5 s* g% m5 b/ x  }
  if(reset=‘1')then ' E5 ^% m. K, x$ L, K5 X! p3 e9 ~; B, _

! ~- n7 g- Q1 p& {/ f  Qs<=“00000000”;
6 I* Y# j' V2 w
* b# _- I" @; q# c) @) r2 q: S  elsif clk'event and clk=‘1' then ' P  h+ I) ~% E5 \- _

* K" C9 o1 _  N6 b. D" K  Qs<=Qs+‘1'; / N3 N- B! f$ r) c; X

- [$ A3 u3 H* ~7 [% p: z4 n  end if;
0 i+ {$ w: J2 ]6 i$ S0 z  m7 U5 E/ s0 a! N$ D3 D9 v0 _2 W
  end process;
) _2 a! B5 p, A4 a* d" i- {
! k( N7 V' s, c: _5 g) ^6 m; j  reset<=‘1' when Qs="255" else
5 d9 `& w# f, L$ @2 ^
+ Q7 h( C# i- H  ‘0';
# I: a; }5 n7 r5 w% {8 }& |
, n: p: j9 D* X; m. o3 V7 T  caolock<=‘1' when Qs="0" else
: i/ i) s/ B. i6 S/ k
$ _" ~5 c8 u; O7 J  ‘0'; 3 q- k& T! b) g! M# A
5 u3 l' L; u) w& }
  Q<=Qs;
& T& h* U1 I2 t0 n8 ~
# a5 g% s, b: g" f1 R9 N  cao<=reset or caolock; - @$ o# J( v' B
" v% q& G# i, L" K5 r' K: D
  end a_counter;
" F3 {' ]( d" s( [) S9 ^2 b; I& F4 o1 F
在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路.其模块的VHDL程序如下:
& s; l; t6 [' y) K/ G5 Y4 k( }
4 O$ [! ]/ x, q* R* _  entity delay is , h; a" i) u6 I1 C! }: V! Q
/ C! ~0 [! a7 O2 c# K
  port(clk: in std_logic;
( f5 M  c: Q" U# q- `. [5 o, x% M. E8 j# ?. \- x0 l
  input: in std_logic_vector(1 downto 0); + T) p* l) o3 \- X* {* `4 y9 j6 G) e4 Y
! T, f4 s% Q( }, t& S
  output:out std_logic_vector(1 downto 0)
" d+ P6 z6 f, a, ^
+ J- [' X& z# G, f# D% F* L7 U  end delay; * x6 X2 d8 B" H: r+ E4 J

+ G+ H$ ]" R6 }! |, K$ M  architecture a_delay of delay is
  W3 d5 w% Y* z" a6 K: o, f: ], S9 {4 ^% g6 V; G
  signal Q1,Q2,Q3,Q4: std_logic;
" S' f1 z8 e) \' B: c0 \0 C  a: Z; m  z/ w5 N: r0 p1 k# C  E
  begin ' h  j4 Y; o( X; O6 h
: g7 `4 m+ ]* s# H: [
  process(clk) ' u. l3 P6 W( Z3 [  W$ ~7 `6 d
" V) Q: P9 m4 [; v1 c5 e
  begin ) W5 m% A. R& X

& ]( s2 P) j2 \/ _& Y  if clk'event and clk=‘1' then ' t# U) I9 }1 [( H

3 T2 C. n& t: }. q  Q3<=Q2;
% l; V  E; b$ [, f* J4 l, h) _9 f7 B7 F4 C  W) }$ O8 J3 P
  Q2<=Q1;
6 X* z# q7 C0 p2 [0 b3 o% e4 E6 p* c8 k; h
  Q1<=input(1);
: \2 p- T. a/ R8 K
) S3 w5 F" f4 E8 h! h( c% V* V( b6 [! ?  end if; 1 g# p5 @2 z% \. X% g9 H( @
8 K1 y. ]1 i! D  j" g8 A
  end process;
( J7 [' [4 Q9 T7 V- d
- Q- _3 ]) H  _0 ~0 |% N5 m  Q4<=not Q3;
4 S% |8 _, z" p) k3 x1 s' J- t6 J
# C. A: W7 e: i! O- g8 s  output(1)<=input(1)and Q3;
7 Y* C# b( M( W* T6 g# |- T7 `- Q0 Z2 M: V: E9 }! n
  output(0)<=input(0)and Q4; * g3 b. ]- O- g! `. M1 @  M; @! v$ D
- ^5 G9 y  D. y" H( M6 K& a
  end a_delay;
6 F0 b) X0 h! n2 }7 N# a
7 z% f) y+ g4 f8 K( ?* R& w( g: R5 w3 n/ a/ m1 x/ `1 s
  3 结束语
4 q2 T% o( P0 G3 M7 v
9 C6 t" |7 E, w9 B2 u  采用可编程逻辑器件和硬件描述语言,同时利用其供应商提供的开发工具可大大缩短数字系统的设计时间,节约新产品的开发成本,另外,还具有设计灵活,集成度高,可靠性好,抗干能力强等特点.本文设计的PWM控制电路用于某光测设备的传动装置时,取得了良好的效果.

本版积分规则

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

GMT+8, 2024-5-18 17:59 , Processed in 0.047542 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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