基于FPGA的三相SPWM的设计及其优化

目前,变频调速一般采用微处理器和专用芯片来实现。但是普通的专用芯片运算速度受微处理器系统时钟影响,且开发周期长,硬件调试不方便[1]。随着微电子技术和EDA软件的发展,出现的FPGA几乎克服了所有这些不足,所以本设计采用了FPGA方案。

       三相SPWM的产生一般可以通过三相相位上互差120°的正弦波与三角波比较来实现。三相正弦表可以由三个独立的相位互差120°的正弦表组成,这在设计思路上是简单的,但实际中却有很大的浪费。

       目前有人采用了分时复用的方法来减少三相正弦表所占用的逻辑门[1]。从正弦波的波形可以看出,正弦波具有很好的对称性,还能对正弦表再进行优化。

       因此,本文提出了利用分时复用以及正弦波的对称性,对三相正弦表进一步优化,以进一步减少正弦表所占用的逻辑门,提高FPGA的利用率。

       1 数据的合成

  数据合成由分时复用电路和运算电路两部分组成。通过分时复用,使得所需的正弦表减少到原来的1/3,即产生三相正弦波只需一个正弦表。运算电路利用正弦波的对称性,使得实现一个完整周期的正弦波只需1/4周期的正弦表。两者结合,从而完成三相正弦波只需一个1/4周期的 正弦表,达到最大程度的节省资源的目的。

   1.1 分时复用原理及其应用

  分时复用的原理是各路信号占用同一信道的不同时间间隙进行信号传输。具体到本电路就是利用对正弦表寻址的高速度,使一个正弦表在不同时间段查询不同相的正弦波的幅值,以达到减少正弦表所占用的FPGA资源的目的。  

  电路的具体实现:三路在相位上互差120°的地址数据并行输入,通过一个三选一的选择器来进行选择,选择器的控制端接三进制的计数器[1]。如,计数器为0时,输出的是A相的地址。计数器为1时,输出的是B相的地址。计数器为2时,输出的是C相的地址。因此只要使输入的三相地址周期性变化,就实现了并行输入的三相地址数据在时间上形成了连续,也就实现了三相地址数据的合成。这样就可以利用一个正弦表来得到三相的正弦值。把正弦表减少到没有采用分时复用时的1/3。该部分电路的仿真波形如图1所示。图中ADDA,ADDB,ADDC分别为A相,B相和C相的相位值。ADDRESS为合成一路后的相位值。

三项地址合成电路的仿真波形

  1.2 正弦波的对称性及其应用

  由正弦波波形可知,正弦波具有很好的对称性。π/2~π的幅值大小与0~π/2的幅值大小相同,只是他们在时间上出现的顺序刚好相反。π~3π/2的幅值与0~π/2的幅值的绝对值相同,极性相反。3π/2~2π部分的幅值与π~3π/2的大小相等,只是时间上出现的顺序相反。因此,根据正弦波的对称性,只在正弦表ROM中存有相位0~π/2时的幅值。利用0~π/2相位时的幅值产生完整的正弦波波形。 产生正弦波首先需要对正弦表进行寻址,把量化的相位值转化为对应的量化的幅值。由于正弦表ROM中仅存有相位0~π/2时的幅值,而π/2~π,3π/2~2π的绝对值与相位0~π/2的幅值在时间上出现的顺序相反,因此,要获得π/2~π,3π/2~2π的幅值必须对相位0~π/2时的幅值进行反向寻址。反相寻址通过地址输入矢量取反来实现[2]。本设计把周期2π量化为8位,即对一个正弦波周期进行256次取样。因此对0~π/2相位寻址所需的地址线为64条。ADDRESS定义为STD_LOGIC_VECTOR(7DOWNTO0),ADDRESS低6位用于对ROM表进行寻址,当地址数据ADDRESS(6)为“1”时,对地址ADDRESS的低6位取反再对ROM寻址。

  正弦波的负半周的形成。由于负半周的幅值与正半周的幅值在极性上相反,因此对输出的对应的幅值取反。幅值是否取反由输入的地址数据ADDRESS(7)决定,当ADDRESS(7)为“1”时,对应的输出幅值取反[2]。并把ADDRESS(7)取反作为最终输出的正弦波幅值的最高位。这样做实际上把正弦波向Y轴正方向平移了一个幅值,避免了幅值出现负值。

  这样在分时复用的基础上,通过利用正弦波的对称性,完成了三相数据只需一个1/4周期的ROM即可查询。在分时复用和利用正弦波对称性2个相对独立的模块连接的过程中必须考虑到时序的问题。如果只是把2个模块简单的连接到一块,只能产生一相的SPWM,如果时序上解决不好,产生的三相正弦波精度会受到影响,一个周期的正弦波不再由256个点组成,如果这样,也就失去了优化的意义。

  2 数据的分离

  由以上可知,从一个1/4正弦波周期的ROM表中可以得到三相相位互差120°的正弦波的幅值,但是由于输入的三相地址在时间上是连续的,即对ROM表寻址的地址只有一路,因此,虽然得到了三相正弦波的幅值,可是他们是按ADDRESS中各相之间的关系混合在一起的。因此,必须对所得到的幅值进行分离,才能得到三相正弦波。由波形ADDRESS中各相地址的相互关系可知,分离数据只要把分时复用的合成部分反接即可,仿真波形如图2所示(为了使在同一个波形中可以同时看清DATA中的各项数据,图2对MAXPLUSⅡ的仿真波形的2.0μs之前的输出零部分进行了截去。)图中DATA为根据1/4周期正弦表所得的三相混合数据,DATAA,DATAB,DATAC分别为分离后A相,B相和C相的相位对应的幅值。由三相正弦波幅值之间的相互关系和变化趋势可以得知,输出的数据是正确的。最后把所得的三相数据锁存,再与产生的三角波比较产生三相六路SPWM。

三项数据分离部分的仿真波形

  3 结语

  由以上分析及仿真可知,采用一个1/4周期的正弦表实现三相正弦数据的查询是可行的。这将极大的节省所用FPGA的门数,提高其利用率,极大地降低编程的劳动量,且输出的三相正弦波与不利用分时复用和正弦波对称性时相比,精度不受任何影响,每个正弦周期还是由256个点组成,只是正弦波的频率有所降低,这是由于系统的速度和占用面积之间本来就是一种矛盾。图3是本次设计产生的三相六路SPWM,系统仿真的时钟周期为200ns,由于FPGA的系统时钟频率可以达到很高,所以不会对输出的SPWM频率产生影响。

三相六路SPWM仿真波形

 

  参考文献

  [1]李明峰,叶剑利.分时复用时CPLD设计变频系统中的应用[J].单片机与嵌入式系统应用,2002.[2]DanielJ.Modulating direct digital synthesizer in a quicklogic FPGA.[3]潘松,王国栋.VHDL实用教程[M].成都:电子科技大学出版社,2000.

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值