0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

眨眼学会PWM

冬至子 来源:玩儿转FPGA 作者:东哥 2023-06-28 17:24 次阅读

所谓PWM,就是用高电平时间和波形周期的比值代表某个数。如果这个数经过滤波后变成了接近连续的曲线表现出来那就是DA转换;如果通过这个比值表达的是控制电机的电压,那么表现出来就是电机控制。一切可以量化的东西都可以用PWM的方式去表示,这也是PWM应用广泛的原因。

产生PWM的方法:

1.产生一个计数器,满脉冲周期后翻转。

2.产生一个比较器,到达比例位置的时候输出高电平,否则输出低电平,整个过程见下图

图片

FPGA本质上是数字电路。为了生成上图的结果,所以我们需要按照上述的2步流程设计两个电路,第一个电路是计数器,第二个电路是在计数器后面的比较器,对计数器输出进行监控,一旦高于占空比对应的计数值的时候里面变为0,其余时候为1,这样就基本实现了PWM。也就对应了下面两段代码:

//计数器电路,cnt_cycle就是计数器输出计数结果 always@(posedge clk)

begin

cnt_cycle <= (cnt_cycle == (T-1)) ? 0 : cnt_cycle + 1;

end

/ 比较器电路 ,pwm_buf 为输出PWM结果,红色字为计数器输入,绿色字为比较器比较线 /

always@(posedge clk)

begin

pwm_buf <= (cnt_cycle < duty_cycle_buf) ? 1'b1 : 1'b0;

end

也就是说,以上两段代码对应的电路如下图:

图片

针对以上电路我要作一点说明:计数器在FPGA里面的实现就是加法器和触发器组成的,加法器每次对输出+1,下一个时钟把+1的结果给到输出端,根本不是数电书上异步2分频的结果!另外再次强调,由于FPGA的设计收到实际因素的限制,数电书上某些理模型是难以在实际中大量应用的,所以FPGA内部很多结构和综合结果都与数电书上有差异,但是数字电路的基本原理是没有任何改变的!

PWM还差最后一点,因为输入占空比可以不断改变,也就是第一张图的比较线是会上下移动的,为了不影响我们在计数的过程中突然采集到突变的值最终导致,不平滑的占空比,所以占空比输入在每个计数周期完成后才会去采集。也就是大家看到的这句:

always@(posedge clk)

begin

if(cnt_cycle == (T-1)) duty_cycle_buf <= (duty_cycle > T-1) ? T-1 : duty_cycle;

end

只有在cnt_cycle计数一个周期T的时候,占空比值才会更新,也就是比较线才会移动!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA设计
    +关注

    关注

    9

    文章

    428

    浏览量

    26538
  • 电机控制
    +关注

    关注

    3536

    文章

    1880

    浏览量

    268901
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5191

    浏览量

    214143
  • 比较器
    +关注

    关注

    14

    文章

    1652

    浏览量

    107254
  • 触发器
    +关注

    关注

    14

    文章

    2000

    浏览量

    61195
收藏 人收藏

    评论

    相关推荐

    PWM应用

    PWM
    橙群微电子
    发布于 :2023年03月09日 09:11:48

    眨眼拍照的眼部传感器哪家有做?

    眨眼拍照的眼部传感器哪家有做?
    发表于 05-14 10:52

    PWM怎么样才能学会啊,求帮忙

    PWM怎么样才能学会啊,求帮忙
    发表于 12-29 19:44

    眨眼睛,开关电器——新型传感器研制出来了!

    最近,中国科学家发明了一种新型传感器,它可附在眼镜上探测我们的眼部运动:我们眨眨眼,电灯就光亮;再眨眨眼,电灯就熄灭。“眨眨眼”就搞定开关家用电器等的日常任务将成为现实。 “该项技术可以被认为拥有了
    发表于 08-07 15:58

    Xilinx XUPV5LX110T错误导致眨眼没有停止正常吗?

    时用作目标,程序员很好检测到我的电脑和状态指示灯是绿色的,当我下载bitstrem它说它是成功但卡没有变化而且错误导致眨眼没有停止,这是正常的吗?这个主题也发布在virtex 5子论坛上,以防你越过它!谢谢你的帮助
    发表于 08-21 10:07

    PWM的异常行为

    所期望的。改变PWM参数也会改变眨眼的速度。但是,如果我改变程序阅读:LED只是停留。由于PWM参数(在前面的例子中工作得很清楚),我希望它能快速闪烁。有什么明显的因素会导致这种行为吗?我是否误解
    发表于 09-27 10:51

    pwm程序停止调用回调函数

    ,timer2(pwm计时器)根本不算数。所以我开始比较眨眼PWM定时器代码。唯一的区别是“DrvtTMRMARALMALL”函数。所以我添加了一个空回调。我注意到在动态实现中,生成的代码从来没有设置
    发表于 03-05 10:05

    PWM怎么样学习

    PWM怎么样才能学会啊,求帮忙
    发表于 07-08 05:22

    眨眼的电子猫电路图

    眨眼的电子猫电路图
    发表于 05-21 13:15 1973次阅读
    会<b class='flag-5'>眨眼</b>的电子猫电路图

    声控眨眼玩具电路图

    声控眨眼玩具电路图
    发表于 07-29 09:15 1072次阅读
    声控<b class='flag-5'>眨眼</b>玩具电路图

    基于Adaboost算法的驾驶员眨眼识别

    基于Adaboost算法的驾驶员眨眼识别 眨眼是一种睁闭眼睛的生理活动,眨眼的速度会受疲劳程度、情感压力、行为种类、睡觉数量、眼睛受伤程度、疾
    发表于 11-09 17:17 1200次阅读

    眨眼的小猫咪电路图

    眨眼的小猫咪电路图 T1与外围元件组成模拟猫的音频振荡电路。
    发表于 11-18 18:16 1280次阅读
    会<b class='flag-5'>眨眼</b>的小猫咪电路图

    免动手摄影 眨眼时便按下快门

    日本的一个研发团队最近让免动手摄影变得比以往任何时候都更加简单——至少是对于戴眼镜的人而言。他们所研发的Blincam是一部附接在眼镜上的相机,可在你眨眼时按下快门。
    发表于 04-17 15:51 1114次阅读

    如何快速学会PLC编程

    PLC编程可以很快学会。想学会PLC的心情是可以理解的.
    的头像 发表于 09-07 10:06 9952次阅读
    如何快速<b class='flag-5'>学会</b>PLC编程

    儿童乐高Arduino教程之眨眼草图

    电子发烧友网站提供《儿童乐高Arduino教程之眨眼草图.zip》资料免费下载
    发表于 07-10 15:15 0次下载
    儿童乐高Arduino教程之<b class='flag-5'>眨眼</b>草图