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. CTFshow 反序列化 web268
  2. MATLAB实战系列(十四)-如何通过YALMIP和CPLEX求解小规模(CVRP)路径调度问题(附MATLAB代码)
  3. 在Asp.net应用程序中构建基于WCF Web.Api的服务
  4. poj 2749 2-SAT问题
  5. Python -bs4介绍
  6. linux下gate版本管理,Linux安装使用GoldenGate
  7. 【视觉项目】【day4】8.24号实验记录(消除瓶子内部“边缘”)
  8. C++11 学习笔记 lambda表达式
  9. getvod.php_php腾讯云点播视频加密
  10. OneNote使用技巧及运用
  11. 农村三资管理平台app_古劳农村“三资”管理规范化、系统化、数字化引来江门日报关注报道...
  12. GooFlow有后门代码
  13. 快播创始人微博晒出团队合照
  14. Multisim高频电子线路4.7振荡器仿真
  15. Eclipse解压后打开报错javaw.exe in your current PATH
  16. Vscode新建vue模板
  17. 分析方法--FMEA,6sigma,脑力激荡法
  18. python基础知识-12-模块的了解
  19. 基于struts2 拦截器ResultType为chain的Action之间数据传递 ——表单页面打开优化
  20. Java修仙,法力无边(光速回顾Java基础~)

热门文章

  1. java毕业设计驾考预约系统(附源码、数据库)
  2. Python(二) 表示‘组’的概念与定义
  3. 因为近视,你可能报不了的大学专业有这么多!
  4. mysql isempty函数_判空使用isEmpty()方法?这个开发常识你别说自己不知道
  5. 《Cesium 基础知识点》- Cesium.Color 的使用(小技巧)
  6. Darknet53(YOLO V3骨干网络)
  7. tensorflow2.3实现PPLCNet——一个速度更快、准确率更高的轻量级骨干网络
  8. 适用于Ubuntu手机的Ubuntu Touch OTA
  9. 如何通过数据分析做到科学预测?
  10. 基于Arduino Pro Micro的游戏手柄制作