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
    +关注

    关注

    116

    文章

    5847

    浏览量

    223726
  • 比较器
    +关注

    关注

    14

    文章

    1886

    浏览量

    111406
  • 计数器
    +关注

    关注

    32

    文章

    2306

    浏览量

    97554

原文标题:verilog 实现PWM DAC

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    DAC43401 8 位 1 通道电压输出智能 DAC技术手册

    10 位 DAC53401 和 8 位 DAC43401 (DACx3401) 是引脚兼容的缓冲电压输出数模转换器 (DAC) 系列。这些器件功耗非常低,采用微型 8 引脚 WSON 封装
    的头像 发表于 11-04 09:52 261次阅读
    <b class='flag-5'>DAC</b>43401 8 位 1 通道电压输出智能 <b class='flag-5'>DAC</b>技术手册

    DAC53701 10 位 1 通道电压输出智能 DAC技术手册

    10 位 DAC53701 和 8 位 DAC43701 (DACx3701) 是引脚兼容的缓冲电压输出智能数模转换器 (DAC) 系列。这些器件功耗非常低,采用微型 8 引脚 WSON 封装
    的头像 发表于 11-01 11:37 982次阅读
    <b class='flag-5'>DAC</b>53701 10 位 1 通道电压输出智能 <b class='flag-5'>DAC</b>技术手册

    DAC43701 8 位 1 通道电压输出智能 DAC技术手册

    10 位 DAC53701 和 8 位 DAC43701 (DACx3701) 是引脚兼容的缓冲电压输出智能数模转换器 (DAC) 系列。这些器件功耗非常低,采用微型 8 引脚 WSON 封装
    的头像 发表于 11-01 10:52 817次阅读
    <b class='flag-5'>DAC</b>43701 8 位 1 通道电压输出智能 <b class='flag-5'>DAC</b>技术手册

    DAC53701-Q1/DAC43701-Q1 技术文档总结

    汽车级 10 位 DAC53701-Q1 和 8 位 DAC43701-Q1 (DACx3701-Q1) 是引脚兼容的缓冲电压输出智能数模转换器 (DAC) 系列。这些器件功耗非常低,采用微型 8
    的头像 发表于 10-27 16:03 667次阅读
    <b class='flag-5'>DAC</b>53701-Q1/<b class='flag-5'>DAC</b>43701-Q1 技术文档总结

    DAC43902-Q1技术文档总结

    DAC43901-Q1 和 DAC43902-Q1 (DAC4390x-Q1) 是一系列具有双通道和四通道 PWM 输出的汽车 8 位智能 DAC
    的头像 发表于 10-27 14:50 381次阅读
    <b class='flag-5'>DAC</b>43902-Q1技术文档总结

    DAC43901-Q1/DAC43902-Q1 技术文档总结

    DAC43901-Q1 和 DAC43902-Q1 (DAC4390x-Q1) 是一系列具有双通道和四通道 PWM 输出的汽车 8 位智能 DAC
    的头像 发表于 10-27 10:17 342次阅读
    <b class='flag-5'>DAC</b>43901-Q1/<b class='flag-5'>DAC</b>43902-Q1 技术文档总结

    如何利用Verilog HDL在FPGA上实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA上实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在FPGA中实现SRAM读写测试,包括设计SRAM接口模块
    的头像 发表于 10-22 17:21 3948次阅读
    如何利用<b class='flag-5'>Verilog</b> HDL在FPGA上<b class='flag-5'>实现</b>SRAM的读写测试

    DAC43902-Q1汽车智能DAC技术解析与应用设计指南

    Texas Instruments DAC43902-Q1汽车类智能DAC提供四路PWM输出,还可用作触发输入或输出。DAC43902-Q1提供一个预配置的状态机,该状态机通过逻辑方式
    的头像 发表于 08-07 10:03 826次阅读
    ‌<b class='flag-5'>DAC</b>43902-Q1汽车智能<b class='flag-5'>DAC</b>技术解析与应用设计指南

    一种基于PWM的电压输出DAC电路设计

    对实际应用中的脉宽调制(PWM)波形的频谱进行了理论分析,指出通过一个低通滤波器可以把PWM 调制的敷模转换信号解调出来,实现PWMDAC
    发表于 08-04 14:58

    芯知识|广州唯创电子WT2003H语音芯片PWM/DAC通道切换检测指南

    广州唯创电子WT2003H语音芯片因其高集成度与丰富接口(支持PWMDAC、I2S输出)被广泛应用于语音播报设备。在实际开发中,可靠判断PWMDAC输出通道的切换状态是硬件调试的关
    的头像 发表于 06-25 08:36 495次阅读
    芯知识|广州唯创电子WT2003H语音芯片<b class='flag-5'>PWM</b>/<b class='flag-5'>DAC</b>通道切换检测指南

    芯知识 语音芯片中的音频输出,PWMDAC的比较

    PWM音频输出硬件简单成本低但音质受限,功耗高;DAC音频输出音质高动态范围宽但硬件复杂成本高。选择取决于产品需求和成本预算。
    的头像 发表于 02-10 13:14 1044次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Circuit,专用集成电路)设计是一个复杂的过程,涉及到逻辑设计、综合、布局布线、物理验证等多个环节。在这个过程中,Verilog被用来描述数字电路的行为和结构,进而实现ASIC的设计。 具体来说
    的头像 发表于 12-17 09:52 1435次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法是Verilog FPGA开发中的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的Verilog测试平台设计方法及
    的头像 发表于 12-17 09:50 1558次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代码更直观,易于
    的头像 发表于 12-17 09:44 2679次阅读