所谓PWM波(Pulse Width Modulation),即脉冲宽度调制,也就是占空比可变的脉冲波形。它利用微处理器输出PWM信号,即用输出的高低电平的变化情况,实现对模拟电路控制的一种非常有效的计数,广泛应用于测量、通信、功率控制等领域。

如图一输入的时钟为系统时钟,后边的周期信号计数器主要有两个作用:

作用一、形成一个周期计数器,从零开始计数,每计数到固定值Cycle就置为零并重新开始计数,形成如图所示的锯齿波,该锯齿波的周期为一个固定值。

作用二、设置一个计数值如Cnt,把计数器从零计数到Cnt之间的部分设为高电平,Cnt到Cycle之间的部分设为低电平。

如此一来,在周期计数器的不断重复下,就会形成一个个重复的高低电平。如下图:

所谓的调节占空比就是调节高低电平所占周期的比列就行。比如将Cnt的值设置的大一点但不能超过周期值Cycle,那么形成的脉冲的高电平的脉宽就更宽一点。

下面给出一组占空比不断变化的PWM波的例程代码,可用来做呼吸灯用。

//周期计数器    时钟频率为50M
always @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)period_cnt <= 16'd0;else if( period_cnt == 16'd50000)period_cnt <= 16'd0;elseperiod_cnt <= period_cnt + 1'b1;
end//在周期计数器的节拍下递增或递减占空比always @( posedge sys_clk or negedge sys_rst_n) ) beginif (!sys_rst_n) ) beginCycle_cnt <= 16'd0 ;Cycle_flag <= 16'd0;endelse beginif( (period_cnt == 16'd50000) ) begin  //计满1msif( (Cycle_flag == 1'b0) ) begin  //占空比递增状态if( (Cycle_cnt == 16'd50000) ) //如果占空比已递增至最大Cycle_flag <= 16'd1;else        //否则占空比以 25 为单位递增Cycle_cnt <= Cycle_cnt  + 16'd25;endelse begin       //占空比递减状态if(Cycle_cnt == 16'd0) //如果计数器已递减至0Cycle_flag <= 16'd0;  //转变为递增状态elseCycle_cnt <= Cycle_cnt  - 16'd25;  //占空比以25为单位递减endendend
end

FPGA(七) PWM波相关推荐

  1. STM32之PWM波

    说起PWM波,做过智能小车的人肯定都很清楚了,其实他就是一种脉宽调制.在智能小车上,我们一般用PWM波来控制小车的速度,通过控制方波中高低电平的比例,来达到控制小车转速的目的.而32的芯片他提供了专门 ...

  2. PWM波控制LED灯的亮暗

    在做蓝桥杯第九届省赛题的时候,遇到了这样一个题目:实现4个不同等级的LED亮度分布. 这个要求我们可以联想到第七届的省赛题,控制PWM波的输出,我们在这里也可以应用相同的原理,就是通过定时器来达到LE ...

  3. Android设备通过usb控制zedboard产生pwm波实验

    Android设备通过usb控制zedboard产生pwm波实验 一.实验目的 安卓设备如安卓平板,通过usb与zedboard通信,在安卓设备端控制zedboard端产生的pwm波的频率和占空比. ...

  4. STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐

    1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5). 基本定时器:它有 ...

  5. STM32F103输出多路死区互补PWM波

    TIM1,TIM8可以产生死区互补PWM波,学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考.Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定 ...

  6. 产生频率或者占空比可调的PWM波【汇编语言】

    PWM在各个编程中都非常的重要,在学习32单片机,FPGA等中都有学习到,本次文章为介绍汇编语言编写频率或占空比可调的PWM波,从更加底层的方面介绍和去了解pwm波生成的过程,基于S3C2410X/S ...

  7. stm32f4 输出pwm波_stm32的pwm输出代码及注释

    stm32是非常常用的单片机.脉冲宽度调制(PWM),是英文"Pulse WidthModulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非 ...

  8. verilog正弦电压PWM波产生

    使用verilog语言,在quartusII平台下运行并在modelsim下进行仿真测试. 本设计的思想: 顶层模块共分下面四个模块,包括分频器,ROM配置,地址产生,ROM数据读取产生sin电压 通 ...

  9. MSP430F5529 DriverLib 库函数学习笔记(六)定时器A产生PWM波

    目录 1.通过Timer_A_outputPWM配置产生PWM波 初始化函数 计算 修改占空比的函数 整体程序 效果 2.单定时器产生多路PWM信号 初始化函数 实验结果 3.对称PWM信号的产生 初 ...

  10. ros 双wan配置_基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发...

    模块对应cabin_controllers/serial_to_mcu.模块实现的功能为监听网络中PWM矩阵信息,将其转换成十六进制数据通过串口下发至MCU,实现对推进器电机的控制.模块数据的串口通信 ...

最新文章

  1. vue音乐项目歌手详情页小结
  2. jenkins 漏洞集合 简介
  3. 安全产品研发与落地的一些方法与思考
  4. ​linux 系统出现Give root password for maintenance 问题
  5. 基于小波变换的图像边缘检测(matlab祖传代码注释)
  6. 爬虫python代码广告_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)...
  7. TCP和Web Socket混合使用的一个例子
  8. 真正厉害的人,早就戒掉了“贫穷思维”
  9. secureFX上传文件的时候报错,secureFX崩溃
  10. MongoDB数据表基本操作
  11. 泛型系列3:获取泛型的类型
  12. One Millisecond Face alignment with an Ensemble of Regression Trees
  13. VS 2017 RC到期的解决方法
  14. MySQL 时间戳(timestamp类型)和时间(datetime类型)的获取/相互转换/格式化
  15. 《软件工程》— 实用软件工程——习题答案
  16. 计算机语言日语换成中文,win7系统怎么把语言变成日语
  17. 飞思卡尔mc9s08烧录方法_飞思卡尔8位单片机MC9S08教程
  18. 视觉SLAM笔记(64) 八叉树地图
  19. UFS发生命令超时处理流程
  20. office软件(word、excel)打开出现“无法打开这个应用”问题

热门文章

  1. Android 多媒体框架stagefright
  2. 如何轻松集成VARCHART XGantt
  3. java基于ssm的学校教务管理系统的设计与实现论文
  4. 在线小说网站的设计与实现(附源码)
  5. 简述Handler机制原理
  6. Visual Studio - 安装VAX
  7. DPDK Release 20.11
  8. 实验七 数据选择器和译码器的应用
  9. 深入理解linux网络pdf,深入理解Linux网络技术内幕 pdf epub mobi txt 下载
  10. 如何将卫星影像按固定比例尺输出(1:5千,1:1万等)