基于FPGA的SPWM设计方案.docx_第1页
基于FPGA的SPWM设计方案.docx_第2页
基于FPGA的SPWM设计方案.docx_第3页
基于FPGA的SPWM设计方案.docx_第4页
基于FPGA的SPWM设计方案.docx_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于FPGA的SPWM设计方案第1章绪论1.1 SPWM介绍PWM的全称是Pulse Width Modulation(脉冲宽度调制)。,它是通过改变输出方波的占空比来改变等效的输出电压。广泛地用于电动机调速和阀门控制,比如电动车电机调速就是使用这种方式SPWM,即正弦脉冲宽度调制(Sinusoidal Pulse Width Modulation),就是在PWM的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规律排列,用SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值,这样输出波形经过适当的滤波可以做到正弦波输出。它广泛地用于直流交流逆变器等.1.2 SPWM原理实现方案1.2.1 等面积法该方案实际上就是SPWM法原理的直接阐释,用同样数量的等幅而不等宽的矩形脉冲序列代替正弦波,然后计算各脉冲的宽度和间隔,并把这些数据存于微机中,通过查表的方式生成PWM信号控制开关器件的通断,以达到预期的目的.由于此方法是以SPWM控制的基本原理为出发点,可以准确地计算出各开关器件的通断时刻,其所得的的波形很接近正弦波,但其存在计算繁琐,数据占用内存大,不能实时控制的缺点.1.2.2 硬件调制法硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形。通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形。其实方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波。但是,这种模拟电路结构复杂,难以实现精确的控制。1.2.3 软件生成法由于微机技术的发展使得用软件生成SPWM波形变得比较容易,因此,软件生成法也就应运而生。软件生成法其实就是用软件来实现调制的方法,其有两种基本算法:即自然采样法和规则采样法.1.2.3.1 自然采样法以正弦波为调制波,等腰三角波为载波进行比较,在两个波形的自然交点时刻控制开关器件的通断,这就是自然采样法.其优点是所得SPWM波形最接近正弦波,但由于三角波与正弦波交点有任意性,脉冲中心在一个周期内不等距,从而脉宽表达式是一个超越方程,计算繁琐,难以实时控制。1.2.3.2 规则采样法规则采样法是一种应用较广的工程实用方法,一般采用三角波作为载波。其原理就是用三角波对正弦波进行采样得到阶梯波,再以阶梯波与三角波的交点时刻控制开关器件的通断,从而实现SPWM法.当三角波只在其顶点(或底点)位置对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(即采样周期)内的位置是对称的,这种方法称为对称规则采样。当三角波既在其顶点又在底点时刻对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(此时为采样周期的两倍)内的位置一般并不对称,这种方法称为非对称规则采样。规则采样法是对自然采样法的改进,其主要优点就是是计算简单,便于在线实时运算,其中非对称规则采样法因阶数多而更接近正弦.其缺点是直流电压利用率较低,线性控制范围较小。以上两种方法均只适用于同步调制方式中。1.2.4 低次谐波消去法低次谐波消去法是以消去PWM波形中某些主要的低次谐波为目的的方法。其原理是对输出电压波形按傅氏级数展开,表示为u(t)=ansinnt,首先确定基波分量a1的值,再令两个不同的an=0,就可以建立三个方程,联立求解得a1,a2及a3,这样就可以消去两个频率的谐波。该方法虽然可以很好地消除所指定的低次谐波,但是,剩余未消去的较低次谐波的幅值可能会相当大,而且同样存在计算复杂的缺点。该方法同样只适用于同步调制方式中。1.2.5 梯形波与三角波比较法前面所介绍的各种方法主要是以输出波形尽量接近正弦波为目的,从而忽视了直流电压的利用率,如SPWM法,其直流电压利用率仅为86.6%。因此,为了提高直流电压利用率,提出了一种新的方法-梯形波与三角波比较法.该方法是采用梯形波作为调制信号,三角波为载波,且使两波幅值相等,以两波的交点时刻控制开关器件的通断实现PWM控制。由于当梯形波幅值和三角波幅值相等时,其所含的基波分量幅值已超过了三角波幅值,从而可以有效地提高直流电压利用率。但由于梯形波本身含有低次谐波。所以输出波形中含有5次,7次等低次谐波。1.2.6.1 单极性法如图1.2.6.1调制波和载波:曲线是正弦调制波,其周期决定于需要的调频比kf,振幅值决定于ku,曲线是采用等腰三角波的载波,其周期决定于载波频率,振幅不变,等于ku=1时正弦调制波的振幅值,每半周期内所有三角波的极性均相同(即单极性)。调制波和载波的交点,决定了SPWM脉冲系列的宽度和脉冲音的间隔宽度,每半周期内的脉冲系列也是单极性的。(2)单极性调制的工作特点:每半个周期内,逆变桥同一桥臂的两个逆变器件中,只有一个器件按脉冲系列的规律时通时断地工作,另一个完全截止;而在另半个周期内,两个器件的工况正好相反,流经负载ZL的便是正、负交替的交变电流。图 1.2.6.1 单极性SPWM1.2.6.2 双极性法如图1.2.6.2 调制波和载波:调制波仍为正弦波,其周期决定于kf,振幅决定于ku,中曲线,载波为双极性的等腰三角波,其周期决定于载波频率,振幅不变,与ku=1时正弦波的振幅值相等。调制波与载波的交点决定了逆变桥输出相电压的脉冲系列,此脉冲系列也是双极性的,但是,由相电压合成为线电压(uab=ua-ub;ubc=ub-uc;uca=uc-ua)时,所得到的线电压脉冲系列却是单极性的。(2)双极性调制的工作特点:逆变桥在工作时,同一桥臂的两个逆变器件总是按相电压脉冲系列的规律交替地导通和关断,毫不停息,而流过负载ZL的是按线电压规律变化的交变电流。图 1.2.6.2 双极性SPWM1.3 SPWM硬件实现方案 一、采用单片机来产生SPWM的方法,只须采用单片单片机,控制灵活,但SPWM信号的产生需占用CPU大量的工作时间,通用性差。 二、基于DSP控制的单相逆变电源设计方案,运算速度快,但合成频率较低且不可调。三、采用单片机和FPGA协同设计,实现了对SPWM信号的调频控制,但系统实现比较复杂,成本较高。四、基于FPGA的SPWM控制器实现方案,通过控制相位累加器和输入频率来控制。1.4 本设计方案选择通过以上分析,FPGA具有丰富的存储资源,完全可以存储足够的相位字来生成三角波和正弦波。FPGA是硬件级别的设计,可以快速实现查表等操作。所以可以生成较高频率的波形。综上,本设计采用FPGA,通过双极性的三角波,正弦波比较法来设计SPWM发生器。1.5 本章小结 产生SWPM的方法很多。应该根据需要选择合适的方法,否则可能造成资源的浪费或无法实现指标。虽然随着现在集成电路的发展,已经有和多成熟的SPWM专用芯片,比如SA8281,但基于FPGA的SPWM可以做到高速,稳定,还可以同其他数字电路一起设计在一块FPGA上。从而减小电路的复杂性。因此基于FPGA的SPWM设计有它自己的优势。第2章VHDL设计2.1 总体框图输出比较器三角波地址正弦波地址三角波LUT正弦波LUT相位累加器地址发生器三角波时钟正弦波时钟时钟发生器可调分频器主时钟2.2 模块设计2.2.1 可调分频器频率控制可以通过控制相位增量来控制。但由于本设计采样值较少。容易造成波形的不连续。所以选择控制输入频率。详细程序见附录1。分频器有计数器,比较器,和触发器等组成,频率字被高电平使能锁存进寄存器后,计数器对时钟脉冲进行计数,当计数器等于频率字寄存器后,对输出取反,从而实现分频。分频后频率分频器RTL原理图如图 2.2.1.1图 2.2.1.1 可调分频器原理图分频器RTL仿真如图图 2.2.1.2 分频器RTL仿真图2.2.1.2为fre_word为4,16,8时的时序图。可以看到当频率字fre_word送的数据线上后,然后使能,输出clk_out的频率就会相应改变2.2.2 时钟发生器为了得到较准确的SPWM波。选取三角波的频率为为正弦波的16倍,且两者应该同步,所以设计了时钟发生器。详细程序见附录。时钟发生器由一个二进制计数器,比较器和触发器组成,触发器可以同步两时钟的相位。时钟发生器有时钟输入,复位,和三角时钟输出,正弦时钟输出。RTL原理图如图2.2.2.1。从RTL仿真可以看出,两者的上升沿是同步的。图2.2.2.1 时钟发生器RTL原理图 RTL仿真如图 2.2.2.2图 2.2.2.2 时钟发生器RTL仿真2.2.3 地址发生器地址发生器由于产生LUT的地址。可以同步产生三角波LUT和正弦波LUT的地址。地址发生器的地址宽度为8位,地址为线性递增。当达到最大值是从0重新开始。地址发生器主要由加法器组成。详细程序见附录。地址发生器有三角,正弦时钟输入,和三角,正弦地址输出,复位。RTL原理图如图2.2.3.1.图2.2.3.1. 地址发生器RTL原理图地址发生器RTL仿真如图 2.2.3.2图 2.2.3.2 地址发生器RTL仿真2.2.4 相位调节器器 为了能够精确的控制输出SPWM,所以通过相位累加器精确调节正弦波的相位,从而控制SPWM的相位。相位累加器用来实现输入地址和相位控制字的相加,从而改变正弦输入的相位。详细程序见附录。相位累加器有8位相位输入,相位字使能,复位。如果想正弦波后移,根据三角公式,当相位字超过周期的一半即可实现相位的后移。原理图如图2.2.4.1图2.2.4.1 相位累加器RTL原理图RTL仿真如图 2.2.4.2.图 2.2.4.2 相位累加器RTL仿真从图中可以看出,当使能相位输入以后,输出地址(上方)相对输入(下方)有明显的超前。2.2.5 LUTL两种波形LUT实际由ROM组成,ROM根据输入的地址输出相应的数据,即可完成查表操作。由于ROM的mif文件计算比较麻烦,所以使用C语言编程,由计算机生产,程序见附录2.由于现今的FPGA都带有足够的RAM,所以ROM的设计是用芯片本身的RAM改变而成。RTL原理图如图 2.2.5.3部分mif文件值如下表。 表 2.2.5.1 表2.2.5.22.2.6 比较器比较器用来实现正弦数据和三角波数据的比较。当正弦波输入大于三角波输入,输出1,其余输出0,。从而产生需要的SPWM波。比较器的比较操作有三角波时钟进行同步。详细程序见附录。比较器有两个输入,一个输出,和时钟输入。RTL原理图如图 2.2.6.1 图 2.2.6.1 比较器原理图RTL仿真如图 2.2.6.2图 2.2.6.2 比较器RTL仿真 图中,当IN1IN2时,输出Q即为1,。2.3 顶层设计为了直观的进行各信号之间的连接,顶层实体采用原理图符号的形式进行设计。先将个模块转换成符号文件,然后再顶层进行设计。顶层设计如图 2.3.1 图 2.3.1 顶层设计顶层的RTL仿真如图 2.3.2 图 2.3.2 顶层RTL仿真 图中fre_word为00000011,pha_word为00000000。2.4 本章小结 VHDL部分的设计选择的工具是Altera的Quartus II 13.0。软件可以根据FPGA设计的不同流程选择不同的工具和选择不同的设计文件。极大的方便了FPGA的开发。RTL仿真部分采用的是MentorGrath的ModelSim。该软件时现如今比较成熟,仿真效果较好的第三方VHDL仿真器。同时,由于现在开发需要的数据越来越来,如何熟练的使用C语言让计算机帮组计算也是非常重要的。由于本章主要是在RTL级进行设计,可能会与实际硬件有出入。所以下一章将进行硬件仿真。第3章FPGA硬件调试3.1 硬件搭建硬件由两部分组成。波形生成器和控制时序生成器。控制时序由MSP430单片机生成。FPGA采用的是Alterat公司的Cyclone II 系列的EP2C5T144。整个设计的实物连接如图 3.1。 图 3.13.2 波形调试 为了减小调试的复杂程度。对于正弦波和三角波两内部信号使用的是Altera的片内逻辑分析仪SignalTap II Logical Analyser。可以设置好时钟和触发信号后将内部信号通过JTAG上传给电脑显示出来。 经过调试。示波器显示如图3.2.1 图 3.2.1 示波器显示可以看出信号具有比较明显的SPWM信号特征。SignalTap II Logical Analyser内部分析结果如下。图 3.2 为正弦波信号。由于器件内部RAM有限,导致采样深度不够,无法显示出完整周期的信号。图 3.3 为内部三角波信号。信号良好。两者上部分均为内部的SPWM信号。 图 3.2 内部正弦信号 图 3.3 内部三角波信号3.3 本章小结 经过计算,理论SPWM的的频率为 22.3khz,实测为21.1khz,考虑硬件延迟和外部干扰。信号基本正确。由于没有进行信号调理,导致波形有明显的尖脉冲。同时由于器件限制,也未能获得完整的正弦信号。考虑这些因素,调试比较陈功。第4章总结此设计从原理到实现,都以尽可能简单的方式来实现SPWM。内部地址线采用的是8位,而不是通过较高的32位最后进行总线转换而成。在分频环节,采用了前级分频的方法,而不是通过调节相位累加器,这样能尽可能保证比较数据的数量。获得较精确的波形。最后,通过比较简单的硬件,实现了SPWM。此次设计最后比较成功。能够获得较好SPWM信号。但从中还是能看到此方法的不足之处。比如频率较低,频率计算麻烦。信号失真较大。从原理上,如果要获得平滑的正弦信号,必然需要增加LUT里的值,这样一来,就会降低输出频率,同时由于调频采用的是分频器原理,进一步降低了系统的频率。最后导致50M的时钟却只输出了20几k的频率。同时由于没有对输出信号进行调整,导致波形并不完美。这可以通过后记得调理电路加以改善。最后,进过此次设计,可以看出还有很多可以改进的地方。比如原理实现,软件设计。硬件选择。所以,实现SPWM方法很多,在合适的地方用合适的方案才是最佳的选择,高精度不一定就是最合适的。参考文献1 张文爱.EDA技术与FPGA引用.电子工业出版社,2012:1-2002 高迹象.大学生电子设计模拟设计部分.电子工业出版社,2010:56-893 毛惠丰.SPWM等效采样原理与实现.西安交通大学论文,2006:1-404 Mentor Graph Company.ModelSim User Guid,2010:100-1095 Altera,Quartus II 13.0 user manual,2013:455-5006 TI Company,MSP430x1xx user guid,2010:56-797 阎石,数字电子技术基础,高等教育出本社,2010:466-5008 谭浩强,C程序设计,清华出版社,2012:102-1209 佚名,数字系统设计与VHDL,电子工业出版社,2010:102010 文良化,计数器的设计,宜宾学院课程,2014:致谢 在此次设计过程,有很多人给予了我力所能及的帮助。 首先,是EDA指导老师,文良话,在此次设计中,帮助我解决了很多自己想不通的问题,对设计中的缺陷用进行了纠正。帮助我完善了设计。在此深表感谢。其次是设计中通力合作的室友,有吴庆文,侯杰等。他们帮助我查找资料,完善设计等。最后是实验室管理员张朝阳老师。为此次设计提供了必要的调试场地和调试仪器。附录可调分频器VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fre_adj isport( fre_word:in std_logic_vector(7 downto 0); fre_en: in std_logic;clk_in: in std_logic;clk_out:out std_logic;rst: in std_logic);end entity fre_adj;architecture archi_freadj of fre_adj issignal fre_cnt:std_logic_vector(7 downto 0);signal fre_cnt_word:std_logic_vector(7 downto 0);signal tmp:std_logic;begin process(clk_in,fre_en,rst) begin if clk_inevent and clk_in=1 then if rst=0 then tmp = 1; fre_cnt=00000000; elsif fre_en=1 then fre_cnt_word = fre_word; else fre_cnt = fre_cnt + 1; end if; if fre_cnt=fre_cnt_word then tmp = not tmp; fre_cnt = 00000000; end if; end if; end process; clk_out = tmp;end architecture archi_freadj;时钟发生器VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity clock_gen is port( clk: in std_logic; rst: in std_logic; Q_SIN:buffer std_logic; Q_TRI:buffer std_logic );end clock_gen;architecture archi of clock_gen issignal Q_SIN_CNT:std_logic_vector(3 downto 0);begin process(clk) begin if clkevent and clk=1 then if rst=0 then Q_SIN = 1; Q_SIN_CNT = 0000; Q_TRI = 1; else Q_SIN_CNT = Q_SIN_CNT+1; Q_TRI = not Q_TRI; end if; if Q_SIN_CNT=1111 then Q_SIN= not Q_SIN; end if;end if;end process;end architecture archi;地址发生器VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity address_gen is port( clk_sin:in std_logic; clk_tri:in std_logic; rst:in std_logic; out_sin:out std_logic_vector(7 downto 0); out_tri:out std_logic_vector(7 downto 0) );end entity address_gen;architecture archi_add_gen of address_gen issignal out_sin_tem:std_logic_vector(7 downto 0);signal out_tri_tem:std_logic_vector(7 downto 0);begin sin:process(clk_sin,rst) begin if clk_sinevent and clk_sin=1 then if rst=0 then out_sin_tem = 00000000; else out_sin_tem = out_sin_tem + 1; end if; end if; end process sin; tri:process(clk_tri,rst) begin if clk_trievent and clk_tri=1 then if rst=0 then out_tri_tem = 00000000; else out_tri_tem = out_tri_tem + 1; end if; end if; end process tri; out_sin = out_sin_tem; out_tri = out_tri_tem;end architecture archi_add_gen; 相位累加器VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity pha_adj isport( pha_word:in std_logic_vector(7 downto 0); pha_en: in std_logic;clk: in std_l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论