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

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

3天内不再提示

浅析基于verilog如何实现PWM DAC

FPGA开源工作室 来源:FPGA开源工作室 作者:leee 2021-07-02 10:32 次阅读

PWM 采用任意宽度的输入值,并创建只有一位宽度的输出。使用自由运行计数器的 PWM,这是能做的最简单的 PWM。

module PWM( input clk, input rst_n, input [3:0] PWM_in, output PWM_out);

reg [3:0] cnt;always @(posedge clk or negedge rst_n) if(!rst_n) cnt《=0; else cnt 《= cnt + 1‘b1; // free-running counter

assign PWM_out = (PWM_in 》 cnt)?1’b1:1‘b0; // comparatorendmodule

6893c2be-dadd-11eb-9e57-12bb97331649.png

选择了一个4位的 PWM 这里,所以 PWM 周期是16。输入可以从0到15,因此 PWM 输出比从0% 到15/16 = 93% 。如果需要能够达到100% ,输入需要有一个额外的bit位。

这段代码工作得很好,尽管当前形式的代码有点幼稚,因为输入必须是固定的(或者只有当计数器溢出 = 返回到0时才会更改)。否则输出将出现故障。因此,很可能需要一些额外的逻辑(通常是在正确的时间捕获输入的闩锁)

使用可加载的上下计数器的 PWM,这是一个稍微复杂一点的设计。

module PWM2( input clk, input rst_n, input [3:0] PWM_in, output PWM_out);

reg [3:0] cnt;reg cnt_dir; // 0 to count up, 1 to count downwire [3:0] cnt_next = cnt_dir ? cnt-1’b1 : cnt+1‘b1;wire cnt_end = cnt_dir ? cnt==4’b0000 : cnt==4‘b1111;

always @(posedge clk or negedge rst_n ) if(!rst_n) cnt 《= 0; else cnt 《= cnt_end ? PWM_in : cnt_next;always @(posedge clk or negedge rst_n) if(!rst_n) cnt_dir《=1’b0; else cnt_dir 《= cnt_dir ^ cnt_end;assign PWM_out = cnt_dir;endmodule

它使用一个可加载的上下计数器,不需要输出比较器。有趣的是,它并不完全等同于第一个设计,因为输出周期有17个状态而不是16个(输出从1/17 = 6% 到16/17 = 94%)。

编辑:jq

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

    关注

    114

    文章

    5140

    浏览量

    213359
  • 比较器
    +关注

    关注

    14

    文章

    1633

    浏览量

    107086
  • 计数器
    +关注

    关注

    32

    文章

    2253

    浏览量

    94339

原文标题:verilog 实现PWM DAC

文章出处:【微信号:leezym0317,微信公众号:FPGA开源工作室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用PWM实现电源管理的策略

    PWM(脉冲宽度调制)是一种广泛应用于电子设备中实现电压调节和功率控制的技术,它通过改变信号的脉冲宽度来模拟输出不同的电压幅值,从而高效控制设备的工作状态。在电源管理中,PWM技术发挥
    的头像 发表于 11-18 16:23 190次阅读

    如何利用Verilog-A开发器件模型

    Verilog-A对紧凑型模型的支持逐步完善,在模型的实现上扮演越来越重要的角色,已经成为紧凑模型开发的新标准。而且Verilog-A能够在抽象级别和应用领域中扩展SPICE建模和仿真功能,因此学会
    的头像 发表于 10-18 14:16 300次阅读
    如何利用<b class='flag-5'>Verilog</b>-A开发器件模型

    使用DAC8760系列实现HART™通信

    电子发烧友网站提供《使用DAC8760系列实现HART™通信.pdf》资料免费下载
    发表于 10-17 09:21 0次下载
    使用<b class='flag-5'>DAC</b>8760系列<b class='flag-5'>实现</b>HART™通信

    用于现场发送器的高性能16位PWM 4-20 MA DAC

    电子发烧友网站提供《用于现场发送器的高性能16位PWM 4-20 MA DAC.pdf》资料免费下载
    发表于 09-26 10:52 0次下载
    用于现场发送器的高性能16位<b class='flag-5'>PWM</b> 4-20 MA <b class='flag-5'>DAC</b>

    技术分享:国产工业级HMI芯片Model系列PWM-DAC实现指南

    在Model系列HMI芯片应用中,很多小伙伴对PWM调试方面存在一些问题,因此,本期我们将深入探讨PWM-DAC原理及实现方法,希望通过本期内容带给大家一些启发。
    的头像 发表于 09-20 17:42 439次阅读
    技术分享:国产工业级HMI芯片Model系列<b class='flag-5'>PWM-DAC</b><b class='flag-5'>实现</b>指南

    使用MSP430高分辨率定时器的PWM DAC

    电子发烧友网站提供《使用MSP430高分辨率定时器的PWM DAC.pdf》资料免费下载
    发表于 09-20 10:53 0次下载
    使用MSP430高分辨率定时器的<b class='flag-5'>PWM</b> <b class='flag-5'>DAC</b>

    在低成本MSP430 MCU上使用PWM实现数字DAC应用说明

    电子发烧友网站提供《在低成本MSP430 MCU上使用PWM实现数字DAC应用说明.pdf》资料免费下载
    发表于 09-13 09:56 0次下载
    在低成本MSP430 MCU上使用<b class='flag-5'>PWM</b><b class='flag-5'>实现</b>数字<b class='flag-5'>DAC</b>应用说明

    如何实现pwm的控制功能

    数字信号控制技术,通过控制脉冲的占空比来实现对模拟信号的控制。占空比是指在一个周期内,脉冲的高电平时间与整个周期时间的比值。 特点 PWM具有以下特点: (1)简单易实现PWM只需要
    的头像 发表于 08-08 15:08 602次阅读

    AFE031DF1的DAC模式,PWM模式下并未输出信号是怎么回事?

    我尝试了AFE031DF1的DAC模式,可以正常运行,发出信号 ,但是PWM模式下,MCU有PWM波,但是AFE031DF1并未输出 信号,请问为甚麽 ?
    发表于 08-07 06:29

    PWM控制电机转速的原理与实现

    PWM(脉宽调制)是一种广泛应用于电机控制领域的调制技术。它通过调节脉冲信号的占空比,实现对电机转速的精确控制。PWM控制电机转速的方法因其高效、稳定、易于实现等优点,在现代工业、家电
    的头像 发表于 06-03 17:23 5440次阅读

    PWM+DMA,然后用DAC输出,可以是触发输出吗?

    如果用PWM+DMA,然后用DAC输出,可以是触发输出吗?输出的是否是占空比可调的方波,可以是三角波吗?求大神解答。
    发表于 04-22 06:59

    verilog语音实现浮点运算

    Verilog可以通过使用IEEE标准的浮点数表示来实现浮点运算。下面是一个基本的Verilog模块示例,展示了如何进行加法、乘法和除法等常见的浮点运算操作: module
    发表于 03-25 21:49

    verilog function函数的用法

    Verilog 是一种硬件描述语言 (HDL),主要用于描述数字电子电路的行为和结构。在 Verilog 中,函数 (Function) 是一种用于执行特定任务并返回一个值的可重用代码块。函数在
    的头像 发表于 02-22 15:49 5002次阅读

    在NuEdu,pwm_dac示例程序中,让pwm来供电,为什么pwm产生的是输出假象的电压?

    在NuEdu,pwm_dac示例程序中,是让pwm来供电,用adc来量取电压值。能够得到很均衡的数字。 这里我有个小问题,pwm产生的电压不是实实在在电压,是通过快速开关,来输出假象的电压,这个
    发表于 01-17 07:44

    WTN6系列语音芯片:PWMDAC音频输出在PCB设计中的优势

    随着科技的飞速发展,语音芯片在电子产品中的应用越来越广泛。其中,唯创知音的WTN6系列语音芯片凭借其卓越的性能和多样的功能,受到了市场的热烈欢迎。特别是其支持PWMDAC两种音频输出方式的特点
    的头像 发表于 12-18 08:46 590次阅读
    WTN6系列语音芯片:<b class='flag-5'>PWM</b>与<b class='flag-5'>DAC</b>音频输出在PCB设计中的优势