FPGA 实现SVPWM调制
SVPWM调制方法使用 SPWM 零序注入法来实现 SPWM 等效SVPWM (使用最大最小法)
clear;
clc;
t=0:1e-4:20e-3;
va=sin(2*pi*50*t);
vb=sin(2*pi*50*t-2*pi/3);
vc=sin(2*pi*50*t-4*pi/3);
tpos=zeros(1,length(t));
tneg=zeros(1,length(t));
for i=1:length(t)
tpos(i)=max([va(i),vb(i),vc(i)]);
tneg(i)=min([va(i),vb(i),vc(i)]);
end
triplen=(tpos+tneg)*0.5;
va3 = va-triplen+1;
vb3 = vb-triplen+1;
vc3 = vc-triplen+1;
plot(t,va3,t,vb3,t,vc3,t,triplen)
为了简化设计直接使用逻辑资源初始化sin表 为简单化,这里不放正弦表
module svm(
input sys_clk ,
input rst_n ,
output reg [7:0] a ,
output reg [7:0] b ,
output reg [7:0] c
);
parameter SINN = 12'd1024;
reg [7:0] max;
reg [7:0] min;
reg [7:0] sin[1024:0];
reg [11:0] ai;
reg [11:0] bi;
reg [11:0] ci;
//最大值
always@(posedge sys_clk or