基于FPGA的可编程PWM电路设计
时间:05-19
来源:互联网
点击:
0 引言
某系统中的H桥驱动电路需要采用2路脉冲宽度调制器(Pulse Width Modulation,PWM)信号来驱动一个电机,以控制其正、反两个方向的运转,且两路信号必须有一定的时间间隔来避免驱动电流过大而损害驱动元件。为使其能灵活应用,针对系统要求,本设计的PWM控制器应具备以下功能:
(1)有3路独立PWM输出,每路输出2个驱动信号,而且其周期、占空比、死区时间应可编程;
(2)对应10 MHz系统时钟,周期为1μs~6.5536 ms;
(3)应用精简地址线,以节省外围引脚及地址资源的占用;
(4)能提供与8/16 bits单片机的双向数据接口,并具有内置的地址/数据锁存器(74lS373)。
1 PWM电路的结构规划
在采用自顶向下(Top_Down)正向设计PWM器件的过程中,芯片的结构划分和规格定制是整个设计的重要环节,因此合理的结构设计将决定整个设计的成败。
PWM 输出信号的周期、脉宽、死区时间等参数可以通过加载内部的寄存器来实现,写人PWM芯片的数据分为数据字与控制字两部分。由内部控制逻辑 (ControlLogie)模块来处理控制字信息,并译码产生各内部通道的内部信息寄存器片选信号。数据字则通过内部数据总线在各通道模块来传递PWM 的特征信息数据。
PWM芯片内部各模块可通过内部片选结合读写使能来完成数据交换。芯片与外围控制器进行数据交换时,可采用双模式接口 (8/16 bits),并可通过外置选择引脚DataWidth来选配。
本芯片的核心是由3个完全独立且相同的通道模块 (Channel)构成。通道内部的数据接口用于完成外部读写逻辑(RWLogic)传输到内部数据总线的数据收发工作。PWM周期生成模块 (ClkGen)则可依据写入的周期信息,输出PWM的周期控制信号。
PWM输出由通道状态机完成,当通道接收到PWM信息数据后,先进行数据校验,合格的数据将在合适的条件下启动状态机,并在不同的状态下完成PWM输出。而不合格的数据则被忽略。
地址/数据锁存依据通用 74LS373的逻辑功能,可以通过编写一个完全可替代的L74LS373来实现。
根据上述总体的构建思路,最终给出的芯片总体结构如图 1所示。
2 PWM电路的结构设计
从图1所示的PWM电路总体结构可以看出,该PWM电路主要由模块片选译码、控制逻辑、读写逻辑、通道等四个模块组成。
2.1 模块片选译码
该模块主要通过地址信号Addr与片选信号Cs_b的组合逻辑电路生成内部各子模块的片选信号(ControlLogic,3个通道:Channel2,Channel1,Channel0)。
2.2 控制逻辑
该模块主要产生通道内部Regs片选控制信号及各通道的输出控制信号,同时完成精简地址线的操作。
每个通道都包含各自独立的4个16 bits的寄存器,包括正向信号长度、负向信号长度、死区长度、周期长度等。由于控制字寄存器为8 bits,因此.整个芯片至少占用3×4×2+1=25个地址(每个地址存储8 bits数据),传统做法至少需要5根地址线译码,而采用区分数据信息类型(控制字,数据字)的方式则可将地址线精简到2根。相对单片机紧缺的外面地址资源来说,其好处是显而易见的。具体来说,通过对写人ControlRegister(控制字寄存器)的值进行分析,结合数据传输宽度生成内部Regs片选控制信号,就可以通过控制字信息来完成内部Regs的地址译码,同时反馈被操作的寄存器信息到RWLogic模块,从而完成8/16bits的数据读写操作。
值得注意的是,由于PWM内部包含了3个完全一样的独立通道,因此,为了更方便的对控制字进行操作,通过对控制字寄存器的分析,可用控制逻辑电路自动将当前被操作通道的控制寄存器信息存储在对应的控制寄存器中备份。这样既方便在编程中灵活地操作各通道,又可避免读写过程中的误修改非相干通道的控制信息。
2.3 读写逻辑
该模块用于处理外部数据Data[15:0](包括外部为16位或8位数据总线连接方式)到内部DataInternal[15:0]的转换。当DataWidth为1时,采用16 bits的数据传输;当DataWidth为0时,采用8 bits数据传输。通过PWM能完成对外部8 bits或16 bits的信息传输要求,准确的读写内部16bits的Regs。具体实现时,如采用16 bits传输,由于内部数据采用16 bits传输,可以采用每个地址对应16 bits数据,每个数据位一一对应的传输方式;而采用8 bits传输时,由于内部数据采用16bits传输,故可通过分析地址的奇偶特性来确定数据高低字节的存放,也就是通过ControlLogic反馈的字节选择位,来使读写逻辑电路能够自适应地把16 bits的Regs数据信息分割加载到合适的数据通道上,从而完成数据的输入输出控制。
为了精简数据线,实现数据的双向流通,本模块通过片选和读写使能信号所控制的双向三态门接口电路来隔离读写信息。
2.4 通道
Channel 是PWM芯片的核心部分,每个Channel模块都由3个子模块组成,图2所示是各Channel子模块的内部结构图。
2.5 数据接口
数据接口用于完成通道内寄存器的读写功能。该模块通过组合通道片选、内部寄存器片选信号及模块读写使能信号来产生各寄存器的读写使能信号。其读写操作可通过三态门与内部数据通道进行数据交换。
写入本模块的寄存器信息将进行数据校验。只有校验合格的数据才能载入内部寄存器的一级缓冲器(Buf)中,内部寄存器的一级缓冲器(Buffer)数据将输出到PWMFSM模块,以提供PWM的特征数据。
2.6 周期信号发生器
周期信号发生器可生成PWM的周期控制信号,其周期的长短由数据接口传过来的周期寄存器值(CyeleReg)决定。该模块将通过内部计数器计数时钟,并与CycleReg比对,从而产生PWM的周期控制信号CycleScale。
2.7 状态机
状态机是产生PWM信号的核心功能模块。通过加载Data Interface模块接收到的通道内部寄存器Buffer值,由状态机来进行运转。PWMFSM模块中包含有一个自运转状态机。当符合条件的寄存器值写入Channel寄存器后,状态机将在CycleScale信号的起始信息的引导下,在时钟的上升沿将内部寄存器一级Buffer写入到本模块中的PWM 信息寄存器Buf中,以便在下一个运行周期内载入到PWM的状态机中。状态机启动后,它将根据当前状态输出脉冲驱动信号。其状态机的运转图如图3所示。
其运转流程如下:
(1)从复位或停止工作状态进入IDLE状态;
(2) 在合法的数据写入通道寄存器且CycleScale的启始信号被接收后,状态机将当前通道内部寄存器Buffer的值载人状态机定时器,同时进入正向脉冲状态,以便准备输出正向电机驱动信号;
(3)在正向脉冲状态下,定时器开始减计数,直到到达完成正向驱动所需要的时间,同时在结束正向驱动的输出后,进入死区状态;
(4)在死区状态,关闭正向、负向电机驱动信号,并通过定时器等待死区时间结束,然后进入负向电机驱动状态 (负向脉冲);
(5)在负向脉冲状态下,定时器开始减计数,直到到达完成负向驱动所需要的时间,到在结束负向驱动的输出后,进入死区状态;
(6)在死区状态,关闭正向、负向电机驱动信号,并通过定时器等待死区时间结束,然后进入空闲等待状态。等待下一次的启动信号。
某系统中的H桥驱动电路需要采用2路脉冲宽度调制器(Pulse Width Modulation,PWM)信号来驱动一个电机,以控制其正、反两个方向的运转,且两路信号必须有一定的时间间隔来避免驱动电流过大而损害驱动元件。为使其能灵活应用,针对系统要求,本设计的PWM控制器应具备以下功能:
(1)有3路独立PWM输出,每路输出2个驱动信号,而且其周期、占空比、死区时间应可编程;
(2)对应10 MHz系统时钟,周期为1μs~6.5536 ms;
(3)应用精简地址线,以节省外围引脚及地址资源的占用;
(4)能提供与8/16 bits单片机的双向数据接口,并具有内置的地址/数据锁存器(74lS373)。
1 PWM电路的结构规划
在采用自顶向下(Top_Down)正向设计PWM器件的过程中,芯片的结构划分和规格定制是整个设计的重要环节,因此合理的结构设计将决定整个设计的成败。
PWM 输出信号的周期、脉宽、死区时间等参数可以通过加载内部的寄存器来实现,写人PWM芯片的数据分为数据字与控制字两部分。由内部控制逻辑 (ControlLogie)模块来处理控制字信息,并译码产生各内部通道的内部信息寄存器片选信号。数据字则通过内部数据总线在各通道模块来传递PWM 的特征信息数据。
PWM芯片内部各模块可通过内部片选结合读写使能来完成数据交换。芯片与外围控制器进行数据交换时,可采用双模式接口 (8/16 bits),并可通过外置选择引脚DataWidth来选配。
本芯片的核心是由3个完全独立且相同的通道模块 (Channel)构成。通道内部的数据接口用于完成外部读写逻辑(RWLogic)传输到内部数据总线的数据收发工作。PWM周期生成模块 (ClkGen)则可依据写入的周期信息,输出PWM的周期控制信号。
PWM输出由通道状态机完成,当通道接收到PWM信息数据后,先进行数据校验,合格的数据将在合适的条件下启动状态机,并在不同的状态下完成PWM输出。而不合格的数据则被忽略。
地址/数据锁存依据通用 74LS373的逻辑功能,可以通过编写一个完全可替代的L74LS373来实现。
根据上述总体的构建思路,最终给出的芯片总体结构如图 1所示。
2 PWM电路的结构设计
从图1所示的PWM电路总体结构可以看出,该PWM电路主要由模块片选译码、控制逻辑、读写逻辑、通道等四个模块组成。
2.1 模块片选译码
该模块主要通过地址信号Addr与片选信号Cs_b的组合逻辑电路生成内部各子模块的片选信号(ControlLogic,3个通道:Channel2,Channel1,Channel0)。
2.2 控制逻辑
该模块主要产生通道内部Regs片选控制信号及各通道的输出控制信号,同时完成精简地址线的操作。
每个通道都包含各自独立的4个16 bits的寄存器,包括正向信号长度、负向信号长度、死区长度、周期长度等。由于控制字寄存器为8 bits,因此.整个芯片至少占用3×4×2+1=25个地址(每个地址存储8 bits数据),传统做法至少需要5根地址线译码,而采用区分数据信息类型(控制字,数据字)的方式则可将地址线精简到2根。相对单片机紧缺的外面地址资源来说,其好处是显而易见的。具体来说,通过对写人ControlRegister(控制字寄存器)的值进行分析,结合数据传输宽度生成内部Regs片选控制信号,就可以通过控制字信息来完成内部Regs的地址译码,同时反馈被操作的寄存器信息到RWLogic模块,从而完成8/16bits的数据读写操作。
值得注意的是,由于PWM内部包含了3个完全一样的独立通道,因此,为了更方便的对控制字进行操作,通过对控制字寄存器的分析,可用控制逻辑电路自动将当前被操作通道的控制寄存器信息存储在对应的控制寄存器中备份。这样既方便在编程中灵活地操作各通道,又可避免读写过程中的误修改非相干通道的控制信息。
2.3 读写逻辑
该模块用于处理外部数据Data[15:0](包括外部为16位或8位数据总线连接方式)到内部DataInternal[15:0]的转换。当DataWidth为1时,采用16 bits的数据传输;当DataWidth为0时,采用8 bits数据传输。通过PWM能完成对外部8 bits或16 bits的信息传输要求,准确的读写内部16bits的Regs。具体实现时,如采用16 bits传输,由于内部数据采用16 bits传输,可以采用每个地址对应16 bits数据,每个数据位一一对应的传输方式;而采用8 bits传输时,由于内部数据采用16bits传输,故可通过分析地址的奇偶特性来确定数据高低字节的存放,也就是通过ControlLogic反馈的字节选择位,来使读写逻辑电路能够自适应地把16 bits的Regs数据信息分割加载到合适的数据通道上,从而完成数据的输入输出控制。
为了精简数据线,实现数据的双向流通,本模块通过片选和读写使能信号所控制的双向三态门接口电路来隔离读写信息。
2.4 通道
Channel 是PWM芯片的核心部分,每个Channel模块都由3个子模块组成,图2所示是各Channel子模块的内部结构图。
2.5 数据接口
数据接口用于完成通道内寄存器的读写功能。该模块通过组合通道片选、内部寄存器片选信号及模块读写使能信号来产生各寄存器的读写使能信号。其读写操作可通过三态门与内部数据通道进行数据交换。
写入本模块的寄存器信息将进行数据校验。只有校验合格的数据才能载入内部寄存器的一级缓冲器(Buf)中,内部寄存器的一级缓冲器(Buffer)数据将输出到PWMFSM模块,以提供PWM的特征数据。
2.6 周期信号发生器
周期信号发生器可生成PWM的周期控制信号,其周期的长短由数据接口传过来的周期寄存器值(CyeleReg)决定。该模块将通过内部计数器计数时钟,并与CycleReg比对,从而产生PWM的周期控制信号CycleScale。
2.7 状态机
状态机是产生PWM信号的核心功能模块。通过加载Data Interface模块接收到的通道内部寄存器Buffer值,由状态机来进行运转。PWMFSM模块中包含有一个自运转状态机。当符合条件的寄存器值写入Channel寄存器后,状态机将在CycleScale信号的起始信息的引导下,在时钟的上升沿将内部寄存器一级Buffer写入到本模块中的PWM 信息寄存器Buf中,以便在下一个运行周期内载入到PWM的状态机中。状态机启动后,它将根据当前状态输出脉冲驱动信号。其状态机的运转图如图3所示。
其运转流程如下:
(1)从复位或停止工作状态进入IDLE状态;
(2) 在合法的数据写入通道寄存器且CycleScale的启始信号被接收后,状态机将当前通道内部寄存器Buffer的值载人状态机定时器,同时进入正向脉冲状态,以便准备输出正向电机驱动信号;
(3)在正向脉冲状态下,定时器开始减计数,直到到达完成正向驱动所需要的时间,同时在结束正向驱动的输出后,进入死区状态;
(4)在死区状态,关闭正向、负向电机驱动信号,并通过定时器等待死区时间结束,然后进入负向电机驱动状态 (负向脉冲);
(5)在负向脉冲状态下,定时器开始减计数,直到到达完成负向驱动所需要的时间,到在结束负向驱动的输出后,进入死区状态;
(6)在死区状态,关闭正向、负向电机驱动信号,并通过定时器等待死区时间结束,然后进入空闲等待状态。等待下一次的启动信号。
电路 PWM 电流 单片机 总线 信号发生器 仿真 FPGA Altera 示波器 Verilog ModelSim EDA CPLD 电子 相关文章:
- 一种新型防伪读码器的设计(01-01)
- 基于ARM与DSP的嵌入式运动控制器设计(04-25)
- 航天器DC/DC变换器的可靠性设计(02-12)
- 基于ARM核的AT75C220及其在指纹识别系统中的应用(05-24)
- 基于nRF2401智能小区无线抄表系统集中器设计(04-30)
- 卫星电源分系统可靠性设计与研究(02-12)