SPWM(Sinusoidal Pulse Width Modulation),即正弦脈寬調制,它以頻率與期望的輸出電壓波相同的正弦波作為調制波,以頻率比期望波高得多的等腰三角波作為載波,當調制波與載波相交時,由它們的交點確定逆變器開關器件的通斷時刻,從而獲得幅值相等、寬度按正弦規律變化的脈沖序列。雙極性控制的PWM方式如圖1所示。
圖1 雙極性控制的PWM方式
接下來介紹FPGA的實現過程,首先用Quartus II軟件、波形生成工具或者matlab等生成一定頻率的正弦波和等腰三角波的mif格式的文件,如圖2所示。
圖2 生成的mif文件
建立工程,并使用兩個單端口rom的ip核,分別存放正弦波和三角波的mif文件的數據,如圖3所示。
圖3 配置rom的ip核
編寫設計文件和仿真文件,并包含到工程中,同時設置仿真參數。設計文件的核心語句如下:
//cnt_sine:正弦波rom對應地址
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
cnt_sine<=11'd0;
else if(cnt_sine==CNT_SINE_MAX)
cnt_sine<=11'd0;
else
cnt_sine<=cnt_sine+1'b1;
end
//cnt_triangle:三角波rom存放地址
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
cnt_triangle<=8'd0;
else if(cnt_triangle==CNT_TRIANGLE_MAX)
cnt_triangle<=8'd0;
else
cnt_triangle<=cnt_triangle+1'b1;
end
//生成PWM信號
assign pwm_0=(q_sine > q_triangle) ? 1'b1 : 1'b0;
assign pwm_1=~pwm_0;
assign pwm_2=pwm_0;
assign pwm_3=pwm_1;
接下來對工程進行編譯,編譯通過后啟動功能仿真。在modelsim進行一些基本的配置后,生成的仿真波形如圖4所示,驗證通過。
圖4 仿真波形
-
matlab
+關注
關注
185文章
2974瀏覽量
230385 -
正弦波
+關注
關注
11文章
642瀏覽量
55341 -
PWM
+關注
關注
114文章
5181瀏覽量
213807 -
逆變器
+關注
關注
283文章
4715瀏覽量
206697 -
仿真
+關注
關注
50文章
4070瀏覽量
133552 -
SPWM
+關注
關注
14文章
356瀏覽量
60615
發布評論請先 登錄
相關推薦
評論