双极性SPWM波生成

2023-10-27

本篇文章主要介绍用于逆变电路的双极性SPWM波生成。
SPWM波就是脉冲宽度按正弦规律变化和正弦波等效的PWM波形,用于控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,经滤波后可以得到正弦波输出(也就是交流电)。通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。

  • 1、SPWM波生成

    简单来说,spwm波就是以正弦波为调制波,三角波为载波调制生成的。接下来就介绍一下正弦波和三角波是怎么生成的吧。

  • 2、三角波生成

    三角波生成挺简单的,利用计数器递增就行了,在这里其实可以用三角波,也可以用锯齿波,但一般来说,用三角波效果应该会好很多。因为我写的代码是verilog,就直接把verilog代码贴出来吧。

module tri_rom
(
input clk,
input rst_n,
input [11:0]top,
output reg [11:0]tri_wave
);

reg [11:0]cnt;

always@(posedge clk or negedge rst_n)
begin 
	if(!rst_n)
		cnt<=12'd0;
	else 
	begin
		if(cnt<top)
			cnt<=cnt+12'd1;
		else
			cnt<=12'd0;
		if(cnt<(top/2))
			tri_wave<=cnt*2;
		else
			tri_wave<=(top-cnt)*2;
	end
end

endmodule

或者这个

module tri_rom(
input clk,
input [15:0] top,
output reg [15:0] tri_wave
);
reg [15:0] cnt=16'd0;
always@(posedge clk)
begin
if(cnt<top) 
   cnt<=cnt+1'd1;
else 
   cnt<=15'd0;
if(cnt<(top/2))
   tri_wave<=cnt*8;
else
   tri_wave<=(top-cnt)*8;
end
endmodule

也可以用波表来生成。

原理大家自己理解,挺简单的,不做过多描述

  • 3、正弦波生成

     正弦波的生成就是靠波表。先在matlab生成一个正弦波波表。
    

    然后在quatus中创建一个ROM
    在这里插入图片描述
    在这里插入图片描述
    把matlab中生成的正弦波表导入进来
    在这里插入图片描述
    ROM就设置好了,需要注意的是,ROM读取的位数和容量要和matlab生成的波表一致。

    在verilog中读取波表的频率可以自行控制,主要的方法是:假设我们波表中有1000个数,也就是说,一个周期的正弦波采样1000个数形成波表。现在用50KHz的时钟,以10为步进读取波表,那么显然需要读取1000/10=100次才能输出一个正弦波表。也就是说,我们需要50KHz/100=500Hz的频率输出一个波表,即输出正弦波的频率为500Hz。
    顺表提一下,为了精确的控制频率,这个步进10(也可以说是频率控制字)可以用定点数进行运算。
    再贴一下正弦波生成的代码

module sin(
input clk,
input rst_n,
input [10:0]KW,
output [10:0]out_sin
);

reg [20:0]phase;

always@(posedge clk or negedge rst_n)
begin 
	if(!rst_n)
		phase<=21'd0;
	else
		phase<=phase+KW;

end
wire [10:0]addr_sin=(phase[20:10]>11'd1024)?(phase[20:10]-11'd1024):phase[20:10];
 
sin_rom	rom_sin_inst
(
	.address ( addr_sin ),
	.clock ( clk ),
	.q ( out_sin )
);
endmodule
  • 4、生成SPWM波

    将三角波和正弦波进行比较就可以得到SPWM波。在逆变中,要考虑到调制度以及偏置的问题,如下图:
    在这里插入图片描述

  • 5、单极性SPWM波和双极性SPWM波的区别

    最后想说一下单极性和双极性的区别。主要就是单极性在峰值(±1)处的占空比最大,占空比变化规律是从小到大,再从大到小。单极性应该可以用余弦波代替正弦波生成(如果不是,希望指正!)
    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

双极性SPWM波生成 的相关文章

  • 直链文件服务器,山寨云直链 服务器拒绝

    山寨云直链 服务器拒绝 内容精选 换一换 在您申请了云耀云服务器后 可以通过管理控制台查看和管理您的云耀云服务器 本节介绍如何查看云耀云服务器的详细配置 包括云耀云服务器名称 镜像信息 系统盘 数据盘 安全组 弹性公网IP等信息 登录管理控
  • React 跳转路由传参, 页面请求两次

    问题 路由跳转时 页面发出了两次一模一样的网络请求 但是当前页刷新时 仅发出一次请求 问题条件说明 在跳转路由上带参数 且参数中包含中文 问题分析 浏览器对中文参数进行转码导致组件加载两次 解决方案 在传递参数时 对参数用encodeURI
  • Mysql中的redo log和undo log

    redo log 日志 gt 持久性 重做日志 记录的是事务提交时数据页的物理修改 是用来实现事务的持久性 主要有重做日志缓冲 redo log buffer 以及重做日志文件 redo log file 组成 前者在内存 后者在磁盘 当事
  • Flutter的AspectRatio控件实现视频播放、图片播放按照长宽比缩放

    AspectRatio控件的作用 AspectRatio小部件用于调整其子级小部件的宽高比 它将其子级小部件的宽度调整为给定的宽度 并根据宽度计算出相应的高度 以保持指定的宽高比 使用场景 调整容器的宽高比 当您希望在布局中使用容器或小部件
  • TCP/IP协议思维导图

    期末考试时候自己用Xmind写的 我们的教材是谢希仁 计算机网络 第六版
  • PHP使用curl抓取网站数据,包括IP伪造和来源伪装等实现方法

    1 伪造客户端IP地址 伪造访问referer 一般情况下这就可以访问到数据了 curl setopt curl CURLOPT HTTPHEADER X FORWARDED FOR 110 85 108 185 CLIENT IP 110
  • js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示

    题目中问题一拆为二 文字在超出长度时 如何实现用省略号代替 超长长度的文字在省略显示后 如何在鼠标悬停时 以悬浮框的形式显示出全部信息 文字在超出长度时 如何实现用省略号代替 用CSS实现超长字段用省略号表示的方法 所有浏览器兼容 html
  • 环境配置:Win10 - VSCode - MinGW64 - OpenCV 4.5.0 - ZBar 0.23.92

    环境配置 Win10 VSCode MinGW64 OpenCV 4 5 0 ZBar 0 23 92 前言 1 VSCode 下载VSCode 安装 C C 插件 项目配置 2 MinGW 选择MinGW的原因 MinGW下载 开始安装
  • 删除了文件,磁盘空间没有释放,怎么办

    find home type f size 1024M 先找出大于1G的文件 再lsof grep file看文件被哪个进程占用 再kill掉进程 再删除文件
  • 【论文导读】Causal Machine Learning:A Survey and Open Problems

    最新的arXiv上的综述 迅速过一遍 2022 7 13 历史 C1已看完 三页 ML面临挑战 1 当数据分布发生变化时 泛化性能大幅下降 2 缺乏对生成模型样本的精细控制 3 有偏见的预测加强了对某些子群体的不公平歧视 4 过度抽象和与问
  • 怎么往服务器里拷贝文件,怎么往云服务器上拷贝文件

    怎么往云服务器上拷贝文件 内容精选 换一换 无法直接从云备份控制台查看备份中的数据 您可以通过以下几种方式进行查看 云服务器备份使用云服务器备份创建镜像后 再使用镜像创建云服务器 登录云服务器 查看服务器中的数据 云硬盘备份使用云硬盘备份创
  • mysql5.7递归查询

    MySQL 5 7支持递归查询 这种查询方式可以在一个表中查找具有父子关系的数据 递归查询通常使用WITH RECURSIVE语句进行构造 这个语句使用两个部分 递归部分和终止部分 递归部分定义了递归查询的开始条件和递归关系 而终止部分定义
  • LVGL使用记 - 数据更新显示

    介绍一下界面数据显示方法 关键API Set a an event handler function for an object Used by the user to react on event which happens with t
  • 数字藏品源码APP商城开发团队

    数字藏品源码APP商城开发团队 数字藏品商城软件开发 数字藏品分销模式开发 数字藏品交易平台开发 数字藏品现成源码软件定制 微信分销返利制度开发 NFT数字藏品平台开发定制 数字藏品系统多少钱 在全世界范围来看 数字藏品的外延更大 通常被称
  • flea-db使用之SQL模板接入

    SQL模板接入 引言 1 准备工作 2 使用讲解 2 1 SQL模板配置 2 2 新增数据 2 3 查询数据 2 4 更新数据 2 5 删除数据 2 6 分页查询 2 7 单个结果查询 计数 2 8 单个结果查询 总和 引言 本篇将要演示
  • 2017-7-28 2-8 编写函数rightrot(x,n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n位后所得到的值

    include
  • Prefix Flip【小模拟】

    题目链接CF 1382 C2 题意 有两个字符串 现在我们要让第一个字符串变成第二个字符串 只允许使用2N次操作 问操作 每次操作是选前缀x个 然后首先前缀x全体异或1 然后字符串翻转 于是 很明显的 我们可以按次数每次维护最后一个字符串
  • Python 字符串与二进制串的相互转换

    一个问题 在Python中 如何将一个字符串转换为相应的二进制串 01形式表示 并且能够将这个二进制串再转换回原来的字符串 一个简单版本 def encode s return join bin ord c replace 0b for c

随机推荐

  • 企业实施数字工厂管理系统应对这几个流程进行优化

    在当今快速发展的商业环境中 企业需要不断地提高管理水平以保持竞争优势 数字工厂系统解决方案作为一种先进的信息化管理系统 可以帮助企业在多个方面实现管理改进 本文将探讨数字工厂管理系统对企业管理的九个方面的影响和作用 一 企业信息化管理方面
  • iOS下XMPP开发之XMPP开发环境配置(一)MySQL安装配置

    1 即时通讯技术简介 即时通讯技术 IM Instant Messaging 支持用户在线实时交谈 如果要发送一条信息 用户需要打开一个小窗口 以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容 有许多的IM系统 如AOL Yah
  • 【Note】关于研发合作中spillover(溢出)的理解

    1 文献中的描述 1 1 technology spillover 其中非常重要的一点是 称之为technology spillover 技术溢出 的部分直接影响的是成本 而不是其他的部分 效用之类的 意识到这个关键点之后 才理解了为什么很
  • Qt中静态变量使用方法

    静态变量可以在各个页面之前使用 先定义一个用于存放静态变量的类 例如datavar 在datavar h中添加如下代码 ifndef DATAVAR H define DATAVAR H include
  • Mybatis3 快速入门

    Mybatis3 快速入门 目前常见的持久层java框架有Hibernate Mybatis SpringData 笔者比较喜欢用SpringData Hibernate 和 Mybatis 也经常用 今天通过 Mybatis 的简介 数据
  • js 中的document.open 方法

    转载自 http blog 163 com hanyan102600 126 blog static 438503422008228111841848 document open 定义和用法 open 方法可打开一个新文档 并擦除当前文档的
  • 聊一聊Cookie(结合自己的学习方法分享一篇维基百科和一篇segmentfault(思否)好文)

    一 最近在带着Java服务端同学一起做一个新的项目 有一些基本的概念 无论是前端还是Java服务端 很多同学都是在按照经验办事 在一个公司的经验用很多年 经常容易犯经验主义的错误 很多时候 最基础的概念 最基本的东西还是要懂的 二 首先学习
  • Image Super-Resolution via Sparse Representation——基于稀疏表示的超分辨率重建

    经典超分辨率重建论文 基于稀疏表示 下面首先介绍稀疏表示 然后介绍论文的基本思想和算法优化过程 最后使用python进行实验 稀疏表示 稀疏表示是指 使用过完备字典中少量向量的线性组合来表示某个元素 过完备字典是一个列数大于行数的行满秩矩阵
  • C# 调用Qt 库

    转载 C 调用Qt 库 tangkaixuan 的博客 CSDN博客 c qt Qt创建动态库给C 调用 通过回调完成交互 DS小龙哥的博客 CSDN博客 qt怎么调用c
  • ant design change等方法默认传值加上自定义参数传值

  • 时间序列 R 08 指数平滑 Exponential smoothing

    1 1 简单指数平滑 simple exponential smoothing SES SES适用于不计趋势与季节性的时间序列 我们在可以使用平均值模型和naive模型来做粗略的预测 点击查看 他们懂预测方法分别是 使用最后一个值 naiv
  • STM32F042 CAN使用例子

    代码如下 include mycan h CAN初始化 tsjw 重新同步跳跃时间单元 范围 1 3 CAN SJW 1tq CAN SJW 2tq CAN SJW 3tq CAN SJW 4tq tbs2 时间段2的时间单元 范围 1 8
  • tensorfllow-gpu遇到gpu资源不够的情况

    本人windows10测试tensorflow gpu的资源使用情况 开启两个tensorflow gpu进程 两个进程的代码一致 第一个进程创建随机变量后gpu使用情况如下 第二个进程创建随机变量时gpu使用情况如下 可以看到已经快使用完
  • Linux配置和使用Git

    本文已收录至 Linux知识与编程 专栏 作者 ARMCSKGT 演示环境 CentOS 7 目录 前言 正文 注册Giett构建仓库 注册giett 构建仓库 Linux配置Git 下载Git 配置Git用户名 配置Git账户邮箱 验证是
  • Qt(c++)调用海康威视监控摄像头

    文章目录 一 海康威视监控摄像头开发SDK介绍 二 海康SDK模块说明 三 Qt项目中海康威视SDK配置 四 实时预览摄像头图像程序 一 海康威视监控摄像头开发SDK介绍 设备网络SDK是基于设备私有网络通信协议开发的 为嵌入式网络硬盘录像
  • 探究软件测试人员的进阶之路

    一谈到进阶 大部分文章 包括前面一些文章也会写到职级如何从初级 中级 高级 一直进阶到专家级 然后写上每个级别所需要的知识技能 然而 我们掌握了这些所谓初 中 高的知识和技能 真的就能成为测试专家了吗 对于这个问题 大部分人应该都带着疑惑或
  • qt导入html css样式表,第45篇 进阶(五)Qt样式表

    第45篇 进阶 五 Qt样式表 导语 一个完善的应用程序不仅应该有实用的功能 还要有一个漂亮的外观 这样才能使应用程序更加友善 更加吸引用户 作为一个跨平台的UI开发框架 Qt提供了强大而灵活的界面外观设计机制 Qt样式表是一个可以自定义部
  • 分数阶导数的意义_导数的意义

    分数阶导数的意义 钙衍生物 CALCULUS DERIVATIVES After derivative theory posts we will start to see some of the applications that make
  • 私人用的红帽linux,红帽宣布为个人开发者提供16个RHEL免费许可 支持在生产环境中使用...

    自从红帽宣布结束CentOS操作系统后就引起很多争议 按红帽计划CentOS 8将是最后的版本并且会在年底停更 这使得很多依赖该操作系统的个人和企业无比愤怒 因为这突如其来的变更将会导致大量生产环境需要更换系统 现在红帽为平息用户愤怒正在扩
  • 双极性SPWM波生成

    本篇文章主要介绍用于逆变电路的双极性SPWM波生成 SPWM波就是脉冲宽度按正弦规律变化和正弦波等效的PWM波形 用于控制逆变电路中开关器件的通断 使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等 经滤波后可以得到正弦波输