基于Avalon总线的多通道PWM控制器的实现
QooIC.com 新闻出处:电子市场 | 发布时间:2011/4/14 15:31:07
0 引言
设计了一种可应用于片上可编程系统的多通道数字PWM 控制器。该控制器基于Ava lon片内总线技术, 符合该总线的读写传输时序, 具有完备的PWM 输出能力。控制器用原理图输入与V erilog HDL语言混合设计的方法在Cyc lone II系列的EP2C5F256C6现场可编程控制器上实现。实验表明, 这种PWM 控制器具有很高的可重用性, 更易于调试和实现多通道控制,并可应用于任何支持Avalon片内总线的片上可编程系统上。
随着半导体技术的不断进步, 已经可以在单片FPGA 中集成一个或数个软CPU 核以构成可编程片上系统SOPC[ 1 ] 。但这些CPU 核仅包含了运算器、控制器、内存管理单元等核心部件, 大量的外围设备需要通过片内总线进行扩展, 比如定时器、GPIO、DMA 控制器等。本文基于A ltera公司的Ava lon片内总线, 设计了一种多路PWM 控制器, 凡是能符合Avalon 总线规范的SOPC 均能通过它获得完善的PWM 输出能力。PWM是直流电机常用的调速控制方法, 也是众多微控制器必不可少的标准配置。
1 Avalon总线概述:
图1为一个典型的SOPC 系统, 它由软核处理器、Ava lon片内总线、PWM 控制器和IO 口组成, 如图所示。

Ava lon片内总线是A ltera专为SOPC 量身定制的, 主要用于连接片内的软核CPU 和其他外设, 以便在FPGA 中构成可编程片上系统。A va lon片内总线描述了部件之间的端口连接关系, 以及部件间通信的时序关系。作为一种总线规范, 它具有下列基本特性
( 1)最大4GB 的线性地址空间。
( 2)内置地址译码功能, 总线自动产生所有外设的片选信号;( 3)多主设备总线结构, 即总线上可以包含多个主设备, 并自动生成仲裁逻辑;( 4)具有动态地址对齐能力, 如果参与传输的双方总线宽度不一致, Avalon总线自动处理数据传输的细节, 使得不同数据总线宽度的外设能够方便地连接。
Ava lon外设分为主设备和从设备两类。能够在Ava lon总线上发起总线传输的是主设备, 例如像N ios II这样的软核CPU。需要指出的是, 主设备不一定是CPU, 若一个AD转换控制器可发起总线传输, 那么它也被认为是主设备。从设备只能响应A valon总线传输, 而不能发起总线传输, 例如UART 控制器、定时器、计数器和G IO等。本文设计的PWM 控制器就属于A valon总线的从设备, 其端口为从端口。
2 PWM控制器原理
PWM ( Pu lseW idthModulat ion)即脉冲宽度调制技术, 它通过对一系列脉冲的宽度进行调制, 来等效地获得所需要的波形(含形状和幅值) [ 3] 。其基本原理是: 冲量相等而形状不同的窄脉冲作用在具有惯性的环节上时, 其效果基本相同。冲量指窄脉冲的面积, 效果基本相同是指环节的输出响应波形基本相同。为脉冲宽度调制系统的原理框图和波形图图2所示。

图2( a)中比较器反相输入端是一个周期为Ts的锯齿波(对于数字PWM 控制器, 该锯齿波由计数器来实现), 同相输入端为控制信号x ( t) , 比较器的输出与其输入的关系可由图2( b)表述。可以看出, 比较器输出一系列下降沿调制的脉冲宽度调制波, 该波形由一系列占空比不同的矩形脉冲构成, 其占空比与控制信号x( t)的瞬时值成比例关系。如果x ( t)大于锯齿波信号则比较器输出正常数(对于数字PWM 控制器其输出为高电平) , 否则输出0。
3 PWM控制器的总体设计
将PWM 控制器分成Avalon总线接口、计数器、比较器、死区保护单元4个组成部分, 如图3所示。

其中Avalon总线接口负责PWM控制单元与总线的信息交换, 这些信息包括控制输入x ( t)、计数溢出值、死区时间等参数。计数器对系统时钟计数, 模拟锯齿波的产生。比较器将计数值与输入控制输入x ( t)进行比较, 以决定输出电平。计数溢出值将决定PWM 波形频率, 而控制量x( t)将决定PWM 波形的占空比。比较器的输出信号经过输出模块的处理后变成2路频率相同, 相位相反的PWM波形。
4 PWM控制器的实现
根据PWM控制单元的结构图, 在Quartus II开发环境下设计了其顶层原理图, 如图4所示。

4.1 总线接口的实现
Ava long总线是32位的, 但对于PWM 控制器而言, 16 位的数据宽度足以满足实际应用的要求, 所以PWM 控制单元的各项参数均按16位线宽进行设计。
总线接口中, clk为总线时钟输入, CE为片选线, WR写控制信号, ADD为2位地址线, Data为16位数据线, 它们均为输入信号。总线接口检测到有效的片选信号后便进入总线信号译码状态, 当有效的写信号发生时便将数据总线上的数据写入到对应的地址中去, 并输出控制信号控制后端部件的执行。
图5所示为Ava lon总线的主设备向从设备发起写传输的时序图, 共需2个时钟周期来完成一次写传输, 分A、B、C、D 四个阶段, 描述如下:

其中: 写传输开始于c lk上升沿; Data、ADD、WR 信号有效; Ava lon总线模块对地址信息进行译码, 并向从端口设置有效的片选信号; 从端口在这一个c lk的上升沿捕获Da ta、ADD、WR和CE等信息, 写传输到此结束。
PWM 控制单元由片选信号CE 选定, 即控制器的基地址是在生成SOPC 系统时自动分配的, 而控制器内部各参数地址需要手动分配, 内部寄存器地址如表1所示。

当要启动PWM定时器时, 只需向CTR寄存器写入一个任意值即可。主机的写传输在上述的D时刻之后便结束, 而从设备则刚从该时刻开始解析D ata和ADD 等信息。因此, PWM 控制单元作为A valon总线上的从设备也是在该时刻接收OV、X、DELAY、CTR 等信息并存入相应的寄存器。
4.2 锯齿波发生器和PWM比较器的实现:
图4中, 计数器lpm_counter0与比较器lpm _compare1组成的电路相当于一个锯齿波发生器。计数器通过总线接口发出的EN信号使能后, 便对系统时钟进行计数, 而比较器lpm _compare1将该计数值与计数溢出值OV 进行比较, 若计数值大于计数溢出值则复位计数器, 计数器从0开始重新计数。计数器计数值在0-OV (计数溢出值)之间, OV 值越小, PWM 波的频率越高, 反之则得到低频的PWM 波。实际上, 计数溢出值OV 寄存器起到了一个分频器的作用。
计数器lpm _counter0又与比较器lpm_compare0组成PWM 比较器, 这一电路实现PWM 初级波形的生成。当lpm _counter0的计数值大于控制量X时, 比较器lpm_compare0输出高电平, 否则输出低电平。
4.3 死区保护的实现
当PWM 应用于类似H 型桥式驱动电路的场合时, 必须防止不同桥臂上的功率开关管同时导通, 否则将引起器件的损坏。这就需要在一管关断和另一管导通的驱动脉冲之间设置逻辑延时, 即死区保护。
模块# Delay由V erilogHDL语言描述, 其实现的功能是判断# PWM IN 引脚是否为上升沿, 若是则延时# Delay个系统时钟。lpm_compare0输出的初级PWM 波经一反相器得到一相位与原波形相反的PWM 波,将这两路信号分别送入两个# Delay模块, 便可得到一对具有死区保护功能的PWM 波形。
5 PWM控制单元的测试
因采用了16位的数据宽度, 所以可得到以下PWM控制器的3个主要参数。
( 1)占空比: 即输出的PWM 中, 高电平保持的时间与该PWM的时钟周期的时间之比。对于16位PWM控制器, 其占空比的理论范围为1~ 65535: 1。
( 2)分辨率: 相当于能达到的最小占空比, 对于16位的PWM, 理论上能达到的分别率就1: 65535(单斜率)。
( 3)频率: 就是PWM 计数器的溢出频率。对于0??02us的计数周期, 若将计数溢出值设定为65535, 其溢出频率为763H z。事实上, 该频率的倒数即为锯齿波的周期Ts。
PWM 控制器在EP2C70F672上验证通过, 计数频率为50MHz, 计数溢出值设定为1023个计数脉冲, 这相当于48??8K 的PWM频率。
图6所示为占空比为8: 1的PWM 输出情形, 图7所示为占空比4: 1的情形。


从测试结果可以看出, 该PWM控制器的各项参数均符合设计要求。
6 小结
本文设计的PWM 控制器能同时输出两路相位相反的脉宽调制波形, 并具有时间可调的死区保护功能,使得对直流负载的控制更为可靠。统一接口的使用, 使得该控制器可以应用于所有符合A valon总线规范的场合而不需改动内部结构, 并可以方便地在Avalon总线上挂接多个PWM 控制器, 实现多通道并行控制, 这使得片上可编程系统能够更为方便的操作控制对象。