全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

基于FPGA的SPWM调制实现过程

时间:2023-10-01 10:02

人气:

作者:admin

标签:

导读:SPWM(Sinusoidal Pulse Width Modulation),即正弦脉宽调制,它以频率与期望的输出电压波相同的正弦波作为调制波,以频率比期望波高得多的等腰三角波作为载波,当调制波与载波相交时,由...

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 仿真波形

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信