Verilog:【6】PWM调制器(pwm_modulator.sv)

本文介绍了一种基于SystemVerilog的PWM调制器设计方法,包括模块功能、代码实现、工作原理及仿真验证过程。该设计通过调整输入控制信号来改变输出PWM信号的脉冲宽度。

碎碎念:

这一篇带来的是比较常用的PWM调制器,仿真的波形很好看哟!

感觉之前模块功能说明部分有些简单了,之后会加上专门讲解端口定义的表格!

这里发现了原作者的小bug,稍微有一丢丢成就感,在和人家进行沟通交流ing

目录

1 模块功能

2 模块代码

3 模块思路

4 TestBench与仿真结果


1 模块功能

输入8比特控制信息,输出对应的脉冲宽度调制信号。具体端口信息如下:

参数与输出输出端口
参数/端口名 功能说明
CLK_HZ 默认系统时钟频率
PWM_PERIOD_DIV 与MOD_WIDTH共同控制信号宽度
PWM_PERIOD_HZ PWM频率(实际上没用用到这个参数)
MOD_WIDTH 调制控制信号的宽度
clk 输入系统时钟
nrst 系统复位信号
mod_setpoint 调制的设定值
pwm_out PWM输出信号
start_strobe 开始某一次调制的输出标志
busy 运行状态忙碌标志

2 模块代码

//------------------------------------------------------------------------------
// pwm_modulator.sv
// Konstantin Pavlov, pavlovconst@gmail.com
//------------------------------------------------------------------------------

// INFO ------------------------------------------------------------------------
// Pulse width modulation (PWM) generator module
//
// - expecting 8-bit control signal input by default
// - system clock is 100 MHz by default
// - PWM clock is 1.5KHz by default
//
// - see also pdm_modulator.sv for pulse density modulation generator


/* --- INSTANTIATION TEMPLATE BEGIN ---

pwm_modulator #(
  .PWM_PERIOD_DIV( 16 )              // 100MHz/2^16= ~1.526 KHz
  .MOD_WIDTH( 8 )                    // from 0 to 255
) pwm1 (
  .clk( clk ),
  .nrst( nrst ),

  .control(  ),
  .pwm_out( 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlexYiWang

不要打赏,想要一个赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值