好文档 - 专业文书写作范文服务资料分享网站

基于FPGA的SVPWM算法的实现毕业论文

天下 分享 时间: 加入收藏 我要投稿 点赞

的算法进行编程实现,主要采用了Verilog HDL编程语言和图形编辑的方式来进行软件编程,并使用Altera Modelsim 软件对其编程结果进行仿真验证。文中简单介绍一些编程技巧,例如使用Mealy型状态机的程序结构以增加程序的可读性和使用移位代替乘除法运算减少硬件资源的使用。而SVPWM算法的实现当中最主要分成如图3.1运算模块、PWM发生模块、死区模块三大模块顺序处理以完成各种所需要的功能,其中运算模块在整个软件设计当中占核心地位。沩氣嘮戇苌鑿鑿槠谔應。 频率恒压频比三相电压矢量合成Clark变换PWM控制信号求解导通时间扇区判别死区生成PWM生成 图3.1 软件结构图

3.1 运算模块

3.1.1 三相参考电压峰值计算模块

图3.2 恒压频比模块

其中主要的运算程序如下:

if(F>50) Um=310;//超过基频50HZ输出峰值310 else if(F<10) Um=62; //低于频率10HZ输出峰值62

else Um=(F<<2)+(F<<1)+(F>>2);//10至50HZ输出Um=4.4F*21/2 钡嵐縣緱虜荣产涛團蔺。

当输入频率大于基频50HZ的时候我们就输出电压的峰值Um为310,当频率

低于10HZ时,电压峰值Um为62,如果输入10至50HZ则按公式Um?4.4f?2运算,程序当中主要采取了移位逼近的方式来完成。懨俠劑鈍触乐鹇烬觶騮。 仿真图如下:

2 8

图3.3 10HZ以下电压峰值图

图3.4 50HZ以上电压峰值图

如图所示输入频率满足Um?4.4f?2的公式运算结果,10HZ及以下恒定电压值恒定,50HZ以上电压值恒定。 3.1.2 三相电压矢量发生模块

图3.5 三相电压矢量发生模块

这一模块的功能块主要由三个模块组成,ROM_CTR、COS_ROM、Serial_Paralell三个模块组成,三相电压矢量发生模块输入电压频率F和时钟信号CLK,ROM_CTR模块将输入的频率通过运算转化为计数时钟脉冲的次数进行计数,以此达到改变参考三相电压矢量的旋转角度的周期变化,并且输出端口ADD周期输出角度。COS_ROM模块主要是存储余弦表,其中存储的余弦值是以平移放大的值的方式存储,当接收到上一个模块输出的角度和数值输出控制信号EN,q端口输出对应角度的正弦值。Serial_Paralell模块将所接收到的余弦值通过运算将ROM中的数值转化为放大10000倍的余弦真实值并且通过COS_OUT端口并行输出余弦值如图。謾饱兗争詣繚鮐癞别瀘。

2 8

图3.6 三相余弦值仿真图

3.1.3 坐标变换模块

图3.7 坐标变换模块

坐标变换模块主要程序如下:

U_alfa=((2*UA-UB-UC)>>2)+((2*UA-UB-UC)>>3)+((2*UA-UB-UC)>>5);呙铉們欤谦鸪饺竞荡赚。 //Uα=61/2/3 (UA-UB/2-UC/2)

U_beta=(UB-UC)>>1+(UB-UC)>>3+(UB-UC)>>4+(UB-UC)>>6;莹谐龌蕲賞组靄绉嚴减。 // Uβ=21/2/2(UB-UC)

坐标变换模块输入三相电压矢量的余弦值,通过Clark变换公式见2.13,变换出Ualfa,Ubeta值输出。其中小数的乘除法运算通过移位相加的方式来逼近结果。仿真结果如图:麸肃鹏镟轿騍镣缚縟糶。

图3.8 Ualfa、Ubeta仿真图

从仿真结果可以看到Clark变换后的三相余弦值合成两相仍然为按正弦波变化,其中幅值是原来的1.22倍。納畴鳗吶鄖禎銣腻鰲锬。 3.1.4 开关导通时间计算模块

2 8

图3.9 计算T1、T2模块

开关时间导通时间计算模块主要由Solve_X_Y_Z(求解中间变量)、

Solve_T1_T2(求解导通时间T1、T2)、Manage_T1_T2(过调制处理) 三个功能模块组成。風撵鲔貓铁频钙蓟纠庙。 求解中间变量模块主要运算程序如下:

X=Ubeta*Um*28/10000;//X=31/2* Uα*Um*Tpwm/Udc;

Y=(3*Ualfa+1732*Ubeta/1000)*Um*8/10000;//(3Uα+31/2*Uβ)Tpwm/2/Udc;灭

嗳骇諗鋅猎輛觏馊藹。 Z=(3*Ualfa-1732*Ubeta/1000)*Um*8/10000;//(3 Uα-31/2 Uβ*T)/2/Udc;铹鸝饷飾镡閌赀诨癱骝。 程序中则主要是按照公式2.17至2.19来编辑,其中的小数化成了整数运算。

过调制处理模块主要程序:

if((T_1>Tpwm)||(T_2>Tpwm)||((T_1+T_2)>Tpwm))//当T1和T2的时间和或者任意一个大于调制周期Tpwm攙閿频嵘陣澇諗谴隴泸。 begin

T_1=T_1*9/10;//T1按0.9倍减少 T_2=T_1*9/10;// T2按0.9倍减少 end

当导通的时间超过了范围则进行按比例缩减,直到满足要求,其中Tpwm为

调制周期100us,使用的时钟频率是50MHZ所以计数5000次就是100us。趕輾雏纨颗锊讨跃满賺。 如下图,输入坐标变换后的Ualfa、Ubeta的值,求解出中间变量X、Y、Z三个与导通时间相关的中间变量,同样X、Y、Z与输入同频的正弦波并且幅值变小。 夹覡闾辁駁档驀迁锬減。 2 8

图3.10中间变量X、Y、Z仿真图

图3.11导通时间T1、T2仿真图

在每个扇区当中,参考矢量由相邻两个开关矢量合成,随着参考矢量的转动,

逐渐远离参考矢量的开关矢量的导通时间将越来越短,靠近的开关矢量反之。时间T0则随着扇区周期变化。视絀镘鸸鲚鐘脑钧欖粝。

图3.12导通时间T1、T2按比例缩减仿真图

当计算出来的时间超出了限定范围,则循环进行按比例减少直至满足要求。

3.1.5 参考矢量位置判断模块

图3.13扇区判断模块

2 8

基于FPGA的SVPWM算法的实现毕业论文

的算法进行编程实现,主要采用了VerilogHDL编程语言和图形编辑的方式来进行软件编程,并使用AlteraModelsim软件对其编程结果进行仿真验证。文中简单介绍一些编程技巧,例如使用Mealy型状态机的程序结构以增加程序的可读性和使用移位代替乘除法运算减少硬件资源的使用。而SVPWM算法的实现当中最主要分成如图3.1运算模块、PWM发生模块、死区模块三大模块顺序处理以完成各种所需
推荐度:
点击下载文档文档为doc格式
93qc558opz0a0pl1szsm0n19a8hrgx00gxg
领取福利

微信扫码领取福利

微信扫码分享