一种嵌入式SoC系统中通用死区可配置PWM波生成电路
技术领域
本发明涉及微电子技术领域及集成电路SoC系统中IP设计领域。尤其涉及一种基于APB片上总线的SoC系统中需要产生周期可调、占空比及死区可配置的任意多路并且成对输出的互为反向的PWM波电路。
背景技术
脉冲宽度调制(PWM)是电子电力领域通常使用的控制中枢电路,并且在工业自动化、机器人、精密数控机床、航空航天等领域都有广泛的应用。而随着嵌入式SoC系统芯片技术的发展,在SoC芯片上集成PWM IP模块需求也变得越来越多,使用简单通用的方法实现片上SoC系统的PWM波的输出可以节省面积、减少运算量、简单易操作、通用性强、具有好的易移植等特性。而为了防止PWM后级驱动电机或功率器件出现同时导通现象而出现烧毁设备或器件事件发生,需要死区保护。要求设计的PWM生成电路常常需要插入死区时间,并且具有死区可配置特性。
而现有PWM实现技术有的是通过硬件电路,有的是采用FPGA、CPLD进行控制;有的提出SoC系统的PWM IP核设计,但或存在复杂难实现,内部结构多置有FIFO读写模块;或是有的仅仅实现独立的输出PWM方波,不具有插入死区时间及死区可配置的功能。
例如在专利《基于定时器产生死区可调的PWM控制信号系统》,公开号:CN103873035A一文中,提出了一种通过基于定时器将溢出中断进程和两个比较寄存器连接起来,控制PWM死区时间的方法,本设计不使用定时器溢出中断进程控制死区时间并且不同于上述专利提出的设计方法实现死区可配置特性,只通过正确配置几个寄存器,产生周期可配置,占空比可调节、死区可配置的PWM波。
在专利《基于FPGA的PWM信号发生器》,采用FPGA方法仅仅配置高电平持续时间模块和低电平持续时间模块,实现PWM信号产生,但不具备死区可配置特性。本文设计的是一种SoC通用的PWM IP核,也仅仅通过配置一些寄存器实现PWM波产生,且实现产生带死区的并且死区可配置的成对的反向的PWM波输出。
在论文《嵌入式SoC中PWM IP核的设计实现》(作者:张月),提出了一种简易的通过内部计数器和采样寄存器配置产生的PWM IP核电路,设计简单易实现。但主要是产生独立的PWM波,不带有插入死区且死区可配置特性,不同于本文产生的相反的成对输出的并且死区可配置的PWM生成电路。
综上所述的已有的提出的PWM相关电路,有的是关于硬件电路生成的,有FPGA或CPLD控制产生,也有SoC系统中独立的PWM电路,但没有关于嵌入式SoC系统中产生通用带死区的并死区可配置的PWM波产生的设计和方法,且本电路在SoC系统中使用仅仅通过芯片内处理器配置几个寄存器就可以实现输出互为反向的带死区和死区可配特性的PWM波产生,和其他提出的产生的带死区的PWM波电路原理和设计不同。
发明内容
本发明所要解决的技术问题是提供一种嵌入式SoC系统中通用死区可配置PWM波生成电路,产生可以通过控制配置的成对输出的且带死区的相反输出的PWM波,且多路成对输出的PWM方波具有周期可调、占空比可控制、死区可配置的特性。
为解决上述技术问题,本发明提供一种嵌入式SoC系统中通用死区可配置PWM波生成电路,其特征是,包括PWM接口模块和PWM设计模块;
PWM接口模块用于APB接口与PWM设计模块的对接以及对寄存器的读写配置;
PWM设计模块用于通过PWM接口配置的寄存器和选择控制信号完成PWM的两路反向波输出;
PWM设计模块内部包括若干个PWM寄存器和与PWM寄存器对应连接的四个计数器和三个PWM逻辑模块;由计数器进行自减计数,当PWM逻辑模块传输更新信号时,计数器重新加载计数起始值并自减计数,当计数至0时,输出计数器自减至零的信号zero_out至PWM逻辑模块;PWM逻辑模块根据输入的计数器自减至零的信号zero_out,控制输出PWM的高低电平以及中断信号的产生。
PWM寄存器包括:控制寄存器、正向电机驱动脉冲宽度P寄存器、反向电机驱动脉冲宽度N寄存器、死区D寄存器、中断使能寄存器EI、中断不使能寄存器DI、中断使能值读取寄存器RI和中断状态寄存器IS。
所述计数器包括MUX选择器、加法器、触发器和位或非逻辑;
计数器当前值counter_value和计数器起始值start_value通过第一MUX选择器的更新信号进行选择,第一MUX选择器的输出信号和32′hffffffff通过加法器进行相加,输出结果等效于是第一MUX选择器的输出信号进行自减计数;自减计数的输出结果输入到第二MUX选择器,通过第二MUX选择器的选择端信号进行选择,第二MUX选择器的输出结果通过触发器打一拍寄存输出到触发器的Q端,触发器寄存输出结果进行位或非逻辑判断,当判断其为全零时,输出高电平信号。
所述PWM逻辑模块包括MUX选择器和逻辑门;根据输入的控制寄存器的值control_reg_out经过反相器取反、判断计数器计数值为全零输出信号period_zero以及判断配置周期寄存器为最大或最小值信号,三者通过与门逻辑后,做为第三MUX选择器的控制选择端控制第三MUX选择器选择输出0或1值;第三MUX选择器选择输出信号作为计数器的更新信号输出送至计数器;控制高电平计数器计数值更新的更新信号通过反相器取反后与高电平时间计数器至零信号通过与门进行相与逻辑后作为第四MUX选择器的控制信号选择控制第四MUX选择器输出信号控制计数器停止信号为0或1输出;控制高电平计数器的计数停止信号与判断周期寄存器配置为最大值进行或非逻辑后作为第五MUX选择器的控制选择信号控制一路pwm输出信号为1或0输出。
与现有技术相比,本发明有益效果:
1、应用的SoC系统中的通用IP使用、移植性高、通用性强、简单易操作。
2、产生周期可调节、占空比可配置、互为反向成对输出的多路PWM波。
3、成对输出的互为反向的两路PWM波,具有插入死区时间特性,并且死区时间可配置。
4、通过配置几个寄存器即可实现具有死区可配置特性的成对的反向的两路PWM波的输出。
5、内部电路硬件资源少,通过配置几个寄存器即可实现输出成对的反向带死区的PWM波。
6、内部电路主要是计数器和控制逻辑电路组成,无复杂的状态机控制及FIFO模块,电路简单易实现,占用的硬件资源少,节约成本。
附图说明
图1输出PWM波示意原理图;
图2 PWM生成器的系统结构图;
图3 PWM设计模块电路结构图;
图4内部产生的三路PWM波形图;
图5产生的一路PWM原始波形示意图;
图6 PWM内部计数器模块电路示意图;
图7 PWM逻辑模块电路示意图;
图8 PWM寄存器模块电路示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明设计一种带APB接口的应用于嵌入式SoC系统中的通用带死区互为反向输出的PWM发生器,主要是用于基于APB总线的SoC中,内部具有一个32位计数器,该模块可输出用户所需要的高低电平脉冲,并且通过用户配置可控制脉冲宽度、脉冲重复次数、周期、死区时间、延迟以及相位等;具有可编程中断功能;通过重复复制使用可实现支持多路成对的独立的PWM波输出产生;每一对两路,输出反向,互为反向的一对PWM插入死区时间,并且死区可配置调节;每路PWM输出周期在(0~FFFFFFFF)个时钟周期时间之间可配置,且占空比0.01%~99.99%可配置;成对反向的输出的PWM波可以通过设置实现同时输出其中任意成对相反的多路,每路独立可控。一个PWM发生器通过配置寄存器值可以实现输出pwmp_output和pwmn_output为一对反向的两路输出。
如图1所示,PWM发生器输出成对的反向的PWM波原理图,1对反向脉冲输出,每一路是正反两相,驱动电平是低电平。具体说明如下:
(1)T:输出调制脉冲周期;
(2)P:正电机驱动时间;
(3)N:反向电机驱动时间;
(4)D:正向电机和反向电机驱动脉冲之间不交叠时间,即死区时间;
(5)满足关系式:T=P+N+2D。
一个PWM发生器,输出两路反向的PWM波,输出的PWM波具有死区可配置特性。PWM发生器电路内部共设有8个寄存器供用户写访问,分别为:控制CR寄存器、正向电机驱动脉冲宽度P寄存器、反向电机驱动脉冲宽度N寄存器、死区D寄存器、中断使能寄存器EI、中断不使能寄存器DI、中断使能值读取寄存器RI(只读)、中断状态寄存器IS(只读)等。输出调制脉冲周期由内部计算T=P+N+2D自动生成。
通道配置寄存器用于配置各通道输出的正向电机P脉冲宽度和反向电机N脉冲宽度,以控制正向电机驱动时间和反向电机驱动时间。正向电机驱动脉冲宽度P寄存器的上电复位值为32’h0H。在正常输出过程中向P写32’h0H,将关闭正向电机驱动信号,即P输出为高。再次向P寄存器写入有效数据,P将恢复正常输出。反向电机驱动脉冲宽度N寄存器的复位值为32’h0H,同样在正常输出过程中向N写32’h0H,也将关闭反向电机驱动信号,即N输出为高。再次向N寄存器写入有效数据,N也将恢复正常输出。死区D寄存器的值复位默认值为32’h0H,即不带死区时间,通过配置死区寄存器值,产生可配置死区时间。周期T寄存器的值由电路内部自动生成,满足关系式:T=P+N+2D。
本专利主要设计一种基于APB接口的产生独立的成对输出反向的PWM波,输出的PWM波具有带死区并且死区时间可配置的特性。其PWM生成器系统结构图如图2所示,主要分为带APB接口的PWM接口模块pwm_iface和PWM设计模块pwm_design两大部分,PWM接口主要是完成APB接口与PWM内部功能设计模块的对接,以及一些寄存器的读写配置等。PWM接口模块pwm_iface内部对APB接口信号进行转化,转化为和PWM内部连接的信号并进行一些寄存器读写配置和功能选择信号的传输。PWM设计模块pwm_design为PWM逻辑及控制功能的主要形成和实现部分,主要是实现通过PWM接口配置的寄存器和选择控制信号完成PWM的两路反向波输出,并实现PWM中断选择输出。
PWM设计模块pwm_design内部主要若干个PWM寄存器配置模块pwm_register、四个计数器模块pwm_counter、三个PWM逻辑模块pwm_logic及其他逻辑控制功能部分等组成。PWM设计模块pwm_design的电路结构框图如图3所示,由于图示篇幅有限,本领域技术人员常规手段采用的连接关系未全部示出,其中的PWM设计模块内部工作的时钟信号pclk和APB接口信号的时钟信号pclk相连接,PWM设计模块内部工作控制的复位n_p_reset信号和APB接口的复位信号n_p_reset相连接;三个PWM逻辑模块i_logic_n、i_logic_p1和i_logic_p2内部的中断使能寄存器读写选择信号int_en_reg_sel、中断不使能寄存器读写选择信号int_dis_reg_sel、中断读寄存器选择信号int_read_sel都分别和外部端口名称一致的中断使能寄存器读写选择信号int_en_reg_sel、中断不使能寄存器读写选择信号int_dis_reg_sel、中断读寄存器选择信号int_read_sel相连接。PWM设计模块pwm_design其中的内部的计数器模块pwm_counter和相连的对应的PWM逻辑模块pwm_logic,控制着PWM的高电平时长和周期时长。通过内部电路逻辑和寄存器配置,产生周期一致高低电平占空比不同的三路PWM波输出pwmp1_output、pwmp2_output及pwmn_output,如图4所示的三路PWM波的波形。产生的pwmp1_output和pwmp2_output进行相同或逻辑产生pwmp_output输出,产生的pwmp_output和pwmn_output互为反向输出,并且插入死区配置时间为dtime时间的时钟周期。
而内部电路pwmp1_output、pwmp2_output及pwmn_output的产生原理相同,都是通过配置高电平时间和周期时间产生的PWM波,只是三路PWM波配置的周期时间相同,高电平时间不同,并且满足以下关系:
通过寄存器配置和控制内部高电平时间寄存器的值和周期时间寄存器的值满足以下关系
①hitime_reg_out_n=pltime_reg_out+2*dtime_reg_out;
②hitime_reg_out_p1=dtime_reg_out;
③hitime_reg_out_p2=dtime_reg_out+pltime_reg_out;
④period_reg_out=pltime_reg_out+nltime_reg_out+2*dtime_reg_out
以上①②③④式中的pltime_reg_out表示正向电机驱动脉冲宽度P寄存器的值即正电机驱动时间的值,nltime_reg_out表示反向电机驱动脉冲宽度N寄存器的值即反向电机驱动时间的值,dtime_reg_out表示死区D寄存器即正向电机和反向电机驱动脉冲之间不交叠时间,即死区时间的值;而hitime_reg_out_n控制pwmn_output的高电平时间,hitime_reg_out_p1控制pwmp1_output的高电平时间,hitime_reg_out_p2控制着pwmp2_output的高电平时间。period_reg_out控制三路波形的周期时间且三路PWM波周期值相同。三路PWM波pwmp1_output、pwmp2_output、pwmn_output的产生电路原理相同,都是通过控制高电平时间和低电平时间产生的PWM波,产生的PWM波形图如图5所示。
三路PWM波pwmp1_output、pwmp2_output、pwmn_output中的每一路PWM波都是配置高电平时间和周期时间即可,内部电路原理相同。其内部电路主要有内部的PWM计数器模块和PWM逻辑模块共同控制产生,计数器模块控制着内部计数器自减计数,每次减到0时,重新加载load计数器初始值。一路PWM需要进行高电平时间计数和周期时间计数,高电平计数和周期时间计数的原理和电路结构相同。计数器模块的电路原理图如图6所示,计数器模块主要有MUX选择器、加法器、触发器及位或非逻辑组成。计数器当前值counter_value和计数器起始值start_value通过MUX选择器1的更新信号update信号进行选择,MUX选择器1的输出信号,和32′hffffffff通过加法器进行相加,输出结果等效于是MUX选择器1的输出信号进行自减计数;自减计数的输出结果输入到另一个MUX2选择器,通过MUX2选择端halt信号进行选择,MUX2选择输出结果通过触发器打一拍寄存输出到触发器的Q端,触发器寄存输出结果进行位或非逻辑判断,当判断其为全零时,输出zero_out高电平信号。计数器模块pwm_counter内部功能主要进行自减计数。当PWM逻辑模块传输update更新信号时,计数器模块pwm_counter重新加载计数起始值start_value并自减计数,当计数至0时,输出计数器自减至零的信号zero_out至PWM逻辑模块。
PWM逻辑模块pwm_logic主要是控制计数器的更新和根据输入的计数器自减到零的zero_out信号,控制输出PWM的高低电平,以及控制中断信号的产生。PWM逻辑模块主要电路图如图7所示,其PWM逻辑模块仍主要有MUX选择器、逻辑门电路等组成,根据输入的控制寄存器的值control_reg_out经过反相器取反、判断周期计数器计数值为全零输出信号period_zero以及判断配置周期寄存器为最大或最小值信号三者通过与门逻辑后,做为MUX选择器3的控制选择端控制MUX选择器3选择输出0或1值;MUX选择器3选择输出信号作为周期计数器的更新信号period_update输出送至周期计数器模块;同理控制高电平计数器计数值的更新信号hitime_update和控制周期计数器计数值的更新信号产生原理和电路结构相同;控制高电平计数器计数值更新的更新信号hitime_update通过反相器取反后与高电平时间计数器至零信号hitime_zero通过与门进行相与逻辑后作为MUX4选择器的控制信号选择控制MUX4选择器输出信号控制计数器停止信号hitime_halt为0或1输出。控制高电平计数器的计数停止信号hitime_halt与判断周期寄存器配置为最大值进行或非逻辑作为MUX5的控制选择信号控制一路pwm输出信号pwm_out为1或0输出。
PWM逻辑模块pwm_logic的控制分为对中断的控制及中断的产生、对计数器的控制逻辑及计数器值响应部分、一路PWM高低电平控制及PWM波输出部分。同时PWM逻辑模块控制着和对应的PWM计数器初始值的加载和更新,PWM逻辑模块还具有PWM中断的产生和清除逻辑。
PWM寄存器模块pwm_register配置主要完成PWM内部寄存器的配置和寄存器值的传输,其电路结构图如图8所示;电路结构主要为触发器实现寄存器值的保存和更新;APB接口写PWM寄存器配置值输入到触发器的输入端,通过时钟寄存后,保存输出到触发器的Q端。
PWM生成器主要通过核处理器配置PWM一些寄存器即可完成互为反向的插入可配置死区时间的成对的PWM波的输出,主要需要配置寄存器功能表如下。
①控制寄存器
②正向电机驱动脉冲宽度P寄存器
③反向电机驱动脉冲宽度N寄存器
④死区时间D寄存器
⑤中断使能寄存器
⑥中断不使能寄存器
⑦读中断使能值寄存器
(8)读中断状态寄存器
位域 |
访问类型 |
功能描述 |
31:1 |
R |
Reserved |
0 |
R |
读取值反映内部中断状态值,“1”PWM中断有效,“0”中断无效 |
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。