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

作者:学习FPGA的电气小兴兴 https://www.bilibili.com/read/cv17290883 出处:bilibili

基于FPGA的SPWM调制相关推荐

  1. 基于FPGA的MSK调制的仿真

    1.问题描述: 1)  设计和验证适合FPGA实现的MSK调制和解调实现方案, 2) MSK系统的发端:含随机数字信息生成模块.MSK调制模块.数模(DA)模块. 3)  MSK系统的收端:含MSK解 ...

  2. m基于FPGA的64QAM调制解调、载波同步verilog实现

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 64QAM(正交幅度调制),在使用同轴电缆的网络中,这种数字频率调制技术通常用于发送下行链路数据.6 ...

  3. 【FPGA教程案例34】通信案例4——基于FPGA的QPSK调制信号产生,通过matlab测试其星座图

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  4. m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序

    目录 1.算法描述 2.仿真效果预览 3.Verilog核心程序 4.完整FPGA 1.算法描述 整个模型的基本框图为 软件无线电是现代通信技术的重要研究领域和发展方向,目前发展迅速.快速发展的软件无 ...

  5. 基于FPGA的2ASK调制仿真

    2ASK调制技术总的来说很简单,先产生二进制基带信号,产生一个载波信号,利用一个2选1开关电路进行输出.比如为1输出载波,为0则置0. 按照这样的思想,我们可以得出2FSK.2PSK的调制.对于2FS ...

  6. 基于FPGA的AM调制与解调(Verilog语言)

    一.概述 说是概述,但是你还是得必须容我先瞎扯一番的.又是课程的作业,要通过FPGA实现AM信号的产生与解调.我们最开始手上是有硬件的板卡的,型号是叫Nexys Video.(当然现在被老师收走了,所 ...

  7. 基于FPGA的spwm产生VHDL

    spwm产生 使用VHDL语言实现 实验过程: 硬件操作 操作 上电 接入5V电源,用配套的线,USB那端接电脑即可: 电源开关 按下电源开关,程序已经固化到FPGA上了,上电即可运行. 工程截图:

  8. 【FPGA教程案例32】通信案例2——基于FPGA的FSK调制信号产生

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  9. 基于FPGA的QPSK调制系统verilog开发

    目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 正交相移键控(Quadrature Phase Shift Keying,QPSK)是一种数字调制方式.它分为绝对相移和相对相移两种.由于 ...

最新文章

  1. 春运渡劫!Python给我抢回家的火车票
  2. 字节二面,让写一个LFU缓存策略算法,懵了
  3. python中字符串编码转换
  4. 2000字详解 当Pandas遇上超大规模的数据集该如何处理呢?
  5. oracle adf_Oracle ADF和Oracle Jet一起工作。 建筑模式
  6. pdo mysql fedora_在Fedora 23 Server和Workstation上安装LAMP(Linux, Apache, MariaDB和PHP)
  7. PyTorch学习笔记——PyTorch简介
  8. rhino编程语言c井,Rhino插件开发:RhinoScript脚本教程(4):VBScript基础
  9. idea配置Tomcat乱码处理
  10. 【刘润五分钟商学院】-161白马不是马吗?
  11. ipd敏捷开发_IPD+敏捷开发
  12. Https所涉及名词及相关后缀名解释
  13. C语言数字图像处理---1.6图像亮度对比度调节
  14. Lenient assertions(Unitils介绍三)
  15. 四天工作制究竟香不香;复旦发布类ChatGPT模型Moss;苹果上新348元省电保护膜 | EA周报...
  16. 史上最全Android文件管理器技术方案细节
  17. Linux第六章课后题6-4
  18. ESP32-CAM+PIR传感器=动作抓拍监控
  19. kettle定时备份->mysql+mongoDB增量备份
  20. 热门好用的企业网盘工具大盘点

热门文章

  1. java object isempty,Java JsonObject.isEmpty方法代码示例
  2. 【Java 8 新特性】Java Comparator.nullsFirst | 将空元素被认为小于非空元素
  3. js获取日期周数,并根据周数算出当前周的开始和结束日期(周日开始,周六结束)
  4. 【手工花制作大全】纸水仙的传说和diy教程
  5. 利用html和CSS制作的鲜花市场首页
  6. Google Earth Engine(GEE)——全球红树林分布、地上生物量和树冠高度
  7. 生活的眼前,真的只有苟且吗?
  8. 路由与交换技术(1)_交换网络
  9. 视频教程-微信小程序开发教程(第1篇)-微信开发
  10. 关于在2440上移植rtl8192和rtl8188cus linux驱动遇到的问题及解决方法!!!