一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 7157|回复: 0

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

[复制链接]
发表于 2009-1-2 20:45 | 显示全部楼层 |阅读模式
在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统PWM控制电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点?因此PWM控制电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高.随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便.针对以上情况,本文给出一种基于复杂可编程逻辑器件(CPLD)的PWM控制电路设计和它的仿真波形.
- W( B: z2 W# }( a, n, f! j1 A" t
3 A6 D# P/ o* A1 _2 ^" Q  1 PWM控制电路基本原理
& s3 A+ C8 n- r/ q  K8 w; Y6 j6 I# M8 |
  为了实现直流伺服系统的H型单极模式同频PWM可逆控制,一般需要产生四路驱动信号来实现电机的正反转切换控制.当PWM控制电路工作时,其中H桥一侧的两路驱动信号的占空比相同但相位相反,同时随控制信号改变并具有互锁功能;而另一侧上臂为低电平,下臂为高电平.另外,为防止桥路同侧对管的导通,还应当配有延时电路.设计的整体模块见图1所示.其中,d[7:0]矢量用于为微机提供调节占空比的控制信号,cs为微机提供控制电机正反转的控制信号,clk为本地晶振频率,qout[3:0]矢量为四路信号输出.其内部原理图如图2所示.
* b1 K7 R# ?4 I) Y* B2 d* g  该设计可得到脉冲周期固定(用软件设置分频器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模块的控制信号,用于控制电机的正反转.
& r$ |+ W0 u9 \5 S( t0 J, B* [9 t! ~1 s# w6 S' S
  2 电路设计 5 k1 Y" w5 f$ @. d* [" F
3 T8 G: T& Y' ?3 D' j
  本设计采用的是Lattice半导体公司推出的is-plever开发平台,该开发平台定位于复杂设计的简单工具.它采用简明的设计流程并完整地集成了Leonardo Spectrum的VHDL综合工具和ispVMTM系统,因此,无须第三方设计工具便可完成整个设计流程.在原理设计方面,本设计采用自顶向下、层次化、模块化的设计思想,这种设计思想的优点是符合人们先抽象后具体,先整体后局部的思维习惯.其设计出的模块修改方便,不影响其它模块,且可重复使用,利用率高.本文仅就原理图中的I12计数器模块和I11延迟模块进行讨论. 9 @/ z1 H* ~" z
6 z& S$ F% s6 T4 M9 E4 m
  计数器模块的VHDL程序设计如下:
- |" W$ x- O$ Y/ v  s# ]2 W& d% }
  entity counter is - [6 F6 @7 X' z/ {3 O9 e
' [3 U5 b) C9 X& }# Y6 L) a
  port(clk: in std logic; 6 w( {3 V9 j$ A5 F$ X" k5 P

, T& N" {" `  ~! k2 B  Q : out std logic vector(7 downto 0); 1 l2 c6 l: R4 V; j" K, a
, p6 D4 G9 z# W) F+ h, j
  cao: out std_logic); 5 g/ R: N7 ?% H2 |( O4 p
" r% ]$ x6 B( d
  end counter;
& i  j) K# f& V! [& z/ _1 E7 n5 `1 D3 q2 `7 X. v5 p7 _9 f6 S0 e1 S& J
  architecture a_counter of counter is
' |+ B7 u* Z- P! t4 l# P4 f# L6 M# G0 o7 ^% i
  signal Qs: std_logic_vector(7 downto 0); / i  L, h0 c4 Z/ i# @5 c
/ g6 t" E. P0 i
  signal reset: std_logic;
  z5 `/ R! d- `. i0 U/ m5 Z# ^3 _& P
  signal caolock: std_logic; 5 B+ D" f5 Q  ~7 p; a

1 Q' s5 `1 m( _$ u' p# D6 o: G  begin
/ V9 p( s* [5 L. J) S7 O) f- B9 q6 d( G' s+ P( |2 h
  process(clk,reset) ) f0 e- _0 E1 I( a
; l& w1 N" m# |7 j
  begin : c/ _7 A: X0 x3 D  `; @

1 N- Q" c9 i; _1 v; W) X7 P  if(reset=‘1')then 0 S9 F: ^" c' d+ J
$ a3 o7 C8 k) T- T. z6 k5 M
  Qs<=“00000000”; / ]' ?$ l6 g9 G. @6 ^$ h* z* ~8 |

3 I' f& y/ Y  V* ]' M% e  elsif clk'event and clk=‘1' then
0 L- c% E2 }" |5 u( l
  V3 _& ]/ m6 A, p  Qs<=Qs+‘1'; $ }8 R2 D* K7 `) X: ~

0 y5 `, T1 Q4 i2 @& F1 k, X' h  end if; 9 O3 Z  ]. p4 }# V& @% _

: }8 x( t9 w2 b  Y1 c  end process;
9 u- M7 [- t" f, j. z. X. Y8 H- V+ Y" K( v# _1 W* M
  reset<=‘1' when Qs="255" else
: s% f1 f+ q: I+ |- |! j' v, S  ~, ?9 T1 z! h0 {
  ‘0'; ; L  @/ A5 T, T, u' [" j# f5 z
- `& y/ j) b: B2 s" X6 P  V
  caolock<=‘1' when Qs="0" else
; q( }/ Q; w! d$ b& n
" `6 U; p2 g* x# O, z  ‘0'; 7 P0 U) e6 f* g; ~, U' r: N
$ Z$ M7 A, S& F0 }) J" V
  Q<=Qs; + i. h, r! e! F! D

6 J3 U/ e& s4 x! R3 T) [  \  cao<=reset or caolock;
  s4 |3 R8 J$ l. ?2 s2 _4 |6 y" \
  end a_counter;
. x! U  Z0 u5 x* J8 U8 v, ]0 S
8 G$ ^3 @0 ]0 z% G. A& l- A( ~在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路.其模块的VHDL程序如下:
9 t9 r+ s' l* H+ u" g5 g  |. m- p: D+ K5 B/ n
  entity delay is
, T- Q; p6 W) ?5 ^
" R1 B0 H* t$ p  port(clk: in std_logic; 1 x( ~# P3 g0 R+ T

4 q* L* @+ J2 ]  input: in std_logic_vector(1 downto 0);
- y" i7 L; H* u9 e4 o
; w8 j  c, }, H. E( M  output:out std_logic_vector(1 downto 0) " Z" p& |9 H6 p0 ?! |  Z
3 B/ r& U  v4 a6 f  V* ?
  end delay;
0 B0 [$ L! {$ B2 p% d. {# x3 X9 I9 m: f
  architecture a_delay of delay is
( M/ r, k4 H4 S2 V" w  R: N% ]0 C# @3 K0 t* E5 n( V
  signal Q1,Q2,Q3,Q4: std_logic; & D0 r$ g. w  _9 ~6 J. l0 \8 N$ c

$ f* K. J! Z. U7 p  begin 3 g# J# r; U$ F4 }% s* b, S5 y

' Q6 X% J' {% R0 e! e5 v/ o3 a  process(clk)
! i) G6 W5 u$ \2 s, T$ Q5 Z% N, ^% A, x+ L( V
  begin
9 @6 b- Y% H6 t* ~% [
2 |% U' X5 y1 X8 R2 b5 {; h: D  if clk'event and clk=‘1' then $ b. q3 x) O" ~" S# R$ h

+ ~7 g# V- S5 U' k7 w3 }9 V$ g  Q3<=Q2;
4 @) Z! @2 g1 C- |1 H) a( M$ P5 U3 q) a* i) |2 s
  Q2<=Q1; 8 y' H, B  u2 f* J1 O# W8 l1 C
/ Q7 _2 l+ X8 o' @) |
  Q1<=input(1); $ b0 D* R1 q) h" C* }$ u0 T+ P

) I0 ~$ P4 {! @7 b6 ~  end if;
9 x% _' g$ C6 x# b3 f$ d7 E( z+ ?2 c0 ?/ c' W
  end process; ; B$ y# j! N  ]. A% L, T) \* k+ c
/ d+ e- J+ `4 `6 N- F( T) f
  Q4<=not Q3; : Q  N. G7 L5 A0 P* k8 I) f6 E
; l; J3 B6 a3 L
  output(1)<=input(1)and Q3; ; Q3 k$ ?0 z$ @, T& p8 S

9 v8 F5 g( W. G& ^  output(0)<=input(0)and Q4;
$ y# t* y4 \" y3 o% S# R
3 l& @8 j# P2 }; P: l" R  F  end a_delay;
/ I, @6 Q2 A, Q+ B* `; n2 [  p  Q
" D5 t/ Y$ ~- M0 B; V, ^
% e6 _& ]0 M9 k& Y2 u5 U# x) O2 @  3 结束语 ' d: ?( _" x3 o. p2 y! j4 O
% h2 r! r& z: p7 L: x. {% m# ?+ D7 U
  采用可编程逻辑器件和硬件描述语言,同时利用其供应商提供的开发工具可大大缩短数字系统的设计时间,节约新产品的开发成本,另外,还具有设计灵活,集成度高,可靠性好,抗干能力强等特点.本文设计的PWM控制电路用于某光测设备的传动装置时,取得了良好的效果.

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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