SPWM(Sinusoidal Pulse Width Modulation),即正弦脈寬調(diào)制,它以頻率與期望的輸出電壓波相同的正弦波作為調(diào)制波,以頻率比期望波高得多的等腰三角波作為載波,當(dāng)調(diào)制波與載波相交時(shí),由它們的交點(diǎn)確定逆變器開(kāi)關(guān)器件的通斷時(shí)刻,從而獲得幅值相等、寬度按正弦規(guī)律變化的脈沖序列。雙極性控制的PWM方式如圖1所示。
圖1 雙極性控制的PWM方式
接下來(lái)介紹FPGA的實(shí)現(xiàn)過(guò)程,首先用Quartus II軟件、波形生成工具或者matlab等生成一定頻率的正弦波和等腰三角波的mif格式的文件,如圖2所示。
圖2 生成的mif文件
建立工程,并使用兩個(gè)單端口rom的ip核,分別存放正弦波和三角波的mif文件的數(shù)據(jù),如圖3所示。
圖3 配置rom的ip核
編寫(xiě)設(shè)計(jì)文件和仿真文件,并包含到工程中,同時(shí)設(shè)置仿真參數(shù)。設(shè)計(jì)文件的核心語(yǔ)句如下:
//cnt_sine:正弦波rom對(duì)應(yīng)地址
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信號(hào)
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;
接下來(lái)對(duì)工程進(jìn)行編譯,編譯通過(guò)后啟動(dòng)功能仿真。在modelsim進(jìn)行一些基本的配置后,生成的仿真波形如圖4所示,驗(yàn)證通過(guò)。
圖4 仿真波形
-
matlab
+關(guān)注
關(guān)注
185文章
2974瀏覽量
230380 -
正弦波
+關(guān)注
關(guān)注
11文章
642瀏覽量
55339 -
PWM
+關(guān)注
關(guān)注
114文章
5181瀏覽量
213793 -
逆變器
+關(guān)注
關(guān)注
283文章
4715瀏覽量
206687 -
仿真
+關(guān)注
關(guān)注
50文章
4070瀏覽量
133552 -
SPWM
+關(guān)注
關(guān)注
14文章
356瀏覽量
60611
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論