一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

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

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

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

+ N* c; @$ `! l3 Y  1 PWM控制电路基本原理 # a0 }/ j5 {. v7 r' g
7 W  m& A8 \0 T* m9 H, K5 A' [
  为了实现直流伺服系统的H型单极模式同频PWM可逆控制,一般需要产生四路驱动信号来实现电机的正反转切换控制.当PWM控制电路工作时,其中H桥一侧的两路驱动信号的占空比相同但相位相反,同时随控制信号改变并具有互锁功能;而另一侧上臂为低电平,下臂为高电平.另外,为防止桥路同侧对管的导通,还应当配有延时电路.设计的整体模块见图1所示.其中,d[7:0]矢量用于为微机提供调节占空比的控制信号,cs为微机提供控制电机正反转的控制信号,clk为本地晶振频率,qout[3:0]矢量为四路信号输出.其内部原理图如图2所示.
$ p3 X0 b: |7 v2 a9 N  M# w  该设计可得到脉冲周期固定(用软件设置分频器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模块的控制信号,用于控制电机的正反转.
5 l* Q: X' ?6 E7 [: B1 {- K8 }: T
  2 电路设计 , `. J; E3 w8 z

) d* S0 e/ A7 i+ b+ I  本设计采用的是Lattice半导体公司推出的is-plever开发平台,该开发平台定位于复杂设计的简单工具.它采用简明的设计流程并完整地集成了Leonardo Spectrum的VHDL综合工具和ispVMTM系统,因此,无须第三方设计工具便可完成整个设计流程.在原理设计方面,本设计采用自顶向下、层次化、模块化的设计思想,这种设计思想的优点是符合人们先抽象后具体,先整体后局部的思维习惯.其设计出的模块修改方便,不影响其它模块,且可重复使用,利用率高.本文仅就原理图中的I12计数器模块和I11延迟模块进行讨论. 5 B8 w/ {1 S/ O  h9 H- b

" n& e3 O9 `  ]" d( y  计数器模块的VHDL程序设计如下:
) K7 U# H' `1 d% J3 S
' Q1 P9 z0 W% o3 q  C. F$ L  entity counter is 5 P) T; u+ u/ }9 D

4 k$ {' J* e( o, X8 K( N  port(clk: in std logic;
% T9 x9 G$ c: U# }: w  X8 N- }( Z2 Z% k7 Y" H* b) j8 n
  Q : out std logic vector(7 downto 0); & \6 v4 D9 O: X& Q) E. o) H/ H
. L& N/ h" @) O, B
  cao: out std_logic); * v; N) M; q' ~. L5 Q! l) _
* V5 |. o6 K# ]5 ?+ C
  end counter; ! E$ J1 q/ G- I/ P

& k: n; T3 ^) y9 w1 G( W  architecture a_counter of counter is
  j2 J! V6 |( m. O3 Y0 v5 }: V% y3 u2 ~& u% \" J8 C9 k' w( `
  signal Qs: std_logic_vector(7 downto 0);
1 e3 M2 _+ v, ^4 L
1 w- Q& ?$ K3 S$ J% E9 k  signal reset: std_logic;
* |( y/ J) H- M4 z( E. m4 K1 n' ]/ W( S
  signal caolock: std_logic;
4 f  X3 X& Z7 K* r
. E& ^; Z2 O7 I5 \& |9 ]  begin
- e8 Q( {( `, ]/ |3 G
5 B" n4 H# s, \+ G2 e$ K# J6 [9 ?$ j. r  process(clk,reset)
6 h) M" ]7 U; I8 F( F
+ f# U/ T4 d0 d$ x0 |  begin ) F+ F* D" W' z1 B

+ X$ L! R7 l/ s  if(reset=‘1')then
2 b8 f% x2 c  u2 k& S% n( ~5 M/ V+ C1 q2 v8 ^
  Qs<=“00000000”;
& A: }0 n# s$ L' q1 x& r6 Q4 ~
5 O! X  d! n3 Z6 R, R  elsif clk'event and clk=‘1' then
  w* t% y8 C3 l8 ^# g% S; B% _* |! }# {
  Qs<=Qs+‘1';
5 r3 v# z( t( H  T+ M+ Q
9 l, R8 t( J- C, @" {$ D  end if; 0 |9 ~" A4 h7 n. z
7 V* N* ?( I$ @  K4 s2 ^
  end process;
  e$ x' H3 w) N) N  y' z
  ^3 }# ^5 _  D# B+ A# s6 B9 M3 Y  reset<=‘1' when Qs="255" else
5 x7 [( r* B0 v& E" x$ O4 [6 T# P4 ~% s% l+ j# {
  ‘0'; - z" y7 g. b+ i, z+ n" k

% K' o, w3 _$ J7 L  caolock<=‘1' when Qs="0" else
& _3 t* x" ?: p. e
% i, b4 A" W1 |' c1 e3 x3 X  ‘0';
. j2 W. e) Y/ b. `, y( b3 O
' R* a0 t- Y/ L3 z# n- {  Q<=Qs;
. t6 W8 G: f, C2 N( ?  n, @' Q4 G) R+ b, G7 U2 t
  cao<=reset or caolock; 0 u6 r% i% h0 c/ o4 ^% Y

% Z' L# N, [5 C- S1 a1 B  end a_counter;
- g2 I) \" t% L4 \! T) R3 O0 L$ S) e% Z& F+ W
在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路.其模块的VHDL程序如下:
; ^, B+ Q2 a# e' C% M
# Y7 d" H2 {6 `, Y5 W7 g: _' G  entity delay is $ P( ?/ \  ]) Y& a  d
( m, }/ p$ I( V' c$ _5 r8 S, O
  port(clk: in std_logic; 6 S3 A) h4 i: q6 A8 b6 ]
: Q0 @5 l: O/ @9 n3 o3 k- R
  input: in std_logic_vector(1 downto 0);
9 |* P4 {& X: G( D/ q* x5 U( {7 g) M: S2 q" g- K
  output:out std_logic_vector(1 downto 0) ' k* s, ^0 y' b' D1 C+ i3 F
! q& ^& L( M: g) r, F
  end delay; ) M5 `- `# }% `
- Z" s( g# T5 v  o, v4 E
  architecture a_delay of delay is 6 |2 B' g; o" M3 ~' M1 t) R
* c4 t; w: ]5 \+ ?+ X
  signal Q1,Q2,Q3,Q4: std_logic; 4 o; V8 ]) `8 P( z
9 V# p  K% a$ E0 P+ t0 X6 J
  begin 5 E2 ?4 O3 m0 b2 I( F/ f' u
+ u. f! ~) c' ~, p  \
  process(clk) ) O/ ?$ l) e8 z$ U; [% [
( n" e$ V% }6 V: y- K
  begin
2 S" `. U1 m' [% m% g) J9 P4 ?8 x) f+ i& z/ H3 F, V
  if clk'event and clk=‘1' then
; Z+ H0 w, O' e) Y) p
! e. S1 L, Z- r6 k/ g! @7 W  Q3<=Q2; 7 }% q/ k! c1 X# l. k* p
2 }# a4 k6 @- y
  Q2<=Q1;
! ^( U+ J2 N& ]( N2 W
. z$ c. \9 K9 S' B; d7 I  Q1<=input(1);
6 V; S! @1 A% K  m! w( K# Y5 y7 t
  end if; # }' D% D8 b8 m) W9 c: J

% U) u$ J1 ^. [! R+ ~  end process;
. }% g2 d# f0 A- j' t1 ~8 G8 ]. F- w
: P, [+ V' O0 F  Q4<=not Q3;
& u5 O) x% F/ F% h0 [, A: t- f* D5 s3 O# l" b
  output(1)<=input(1)and Q3;
) h# y* y* L! S. Y; N9 H. v' g: c
- K  E* C# y' p5 P& U4 [: {  output(0)<=input(0)and Q4;
. b/ {9 I, x7 [5 K; d) `! i
, X7 h) U, V6 }  m' ~4 [  end a_delay;
3 W6 T  M$ M* k5 i3 k) e- x: M2 j3 @( w. `" B- w6 ]

2 Y& S0 A4 d4 e+ B2 J2 V( T: u! |4 K  3 结束语
" |+ r/ D; K; T& S) C8 K
& T6 B8 R* O- s& q" a$ B, H: h6 ^  采用可编程逻辑器件和硬件描述语言,同时利用其供应商提供的开发工具可大大缩短数字系统的设计时间,节约新产品的开发成本,另外,还具有设计灵活,集成度高,可靠性好,抗干能力强等特点.本文设计的PWM控制电路用于某光测设备的传动装置时,取得了良好的效果.

本版积分规则

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

GMT+8, 2024-5-6 02:43 , Processed in 0.047943 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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