基于FPGA的PWM脉宽调制

时间:2025-09-12  作者:Diven  阅读:0

我们还是先从脉冲宽度调制的基础说起。脉冲宽度调制,英文缩写为:PWM(Pulse Width Modulation),是通过数字信号实现对模拟电路控制的非常有效的技术,常被应用于测量、通信、功率控制与变换等众多领域。

基于FPGA的PWM脉宽调制

那么PWM是如何工作的?

我们知道,数字电路只能产生高电平(1)或低电平(0),在小脚丫上也就意味着3.3V和0V。那么如果我们的应用恰好在这之间怎么办?比如,将3.3V直接连到LED上会导致LED灯很亮。如何将LED灯调暗呢?当然,最简单的办法就是直接串联一个限流电阻但这样一来,限流电阻就需要不断产生功耗,而这个功耗实际上是完全浪费掉的。

无非就是调节LED的亮度而已,难道就没有其更好的办法了吗?当然有,用我们今天学习的PWM就可以轻松实现。在进一步探讨点亮LED之前,我们先通过图1了解一些基本的参数:图1

图1中,脉冲信号的周期为T,高电平宽度为t。如果我们将t/T定义为占空比,占空比就是2/3,因为高电平的宽度占了整个周期的2/3。在图1中我们还可以看到一条红色虚线,画在了脉冲高度2/3的位置。这条虚线实际上就对应着最终的有效值。那么如何在FPGA上生成PWM信号呢?

我们还是习惯看图说话,请看图2。假如我们有一个锯齿波,然后在锯齿波上设置一个阈值(黑色水平虚线),凡是大于该阈值时输出均为高电平,反之则为低电平,这样我们是不是就得到一个PWM信号呢?如果我们想调整占空比,那么调节阈值的高低就可以了。在本例中,阈值线越低占空比越高。图2

如果把上面的描述再抽象化一下,就可以画出图3的模块框图。锯齿波实际上就可以用计数器生成,阈值就是一个数值而已,比较器是用来生成最后输出高低电平用的。图3

有了设计思路之后,我们来看一下最终代码。

Module pwm (PWM_out, clk, reset); input clk, reset; output reg PWM_out; wire [7:0] counter_out; //计数器的8位宽储存,可以最多数128次时钟的嘀嗒 parameter PWM_ontime = 32; //阈值设在32,对应25%的占空比 always @ (posedge clk) begin //比较器 if (PWM_ontime > counter_out) PWM_out <= 0; else PWM_out <= 1; end counter counter_inst( //调用计数器 .clk (clk), .counter_out (counter_out), .reset(reset) );endModulemodule counter(counter_out,clk,reset); //计数器模块代码 output [7:0] counter_out; input clk, reset; reg [7:0] counter_out; always @(posedge clk) if (reset) //如果没有按reset,则计数器清零 counter_out <= 8'b0; else //如果按下reset,则计数器开始计数 counter_out <= counter_out + 1;endmodule

在代码中,我们设置的计数器位宽是8位,也就是每128次后自动重新计数。所以,该计数器的最大频率也就是12MHz/128=93.75KHz。图3中可以看出,PWM信号的频率和计数器的频率相同,因此也是93.78KHz。

试想一下,LED现在正以超过每秒9万次的速度闪烁,肉眼是完全分辨不出来的。那么闪烁过程中,亮/灭的比值越大,LED的视觉发光效果就越强,反之则越弱。我们最后将上述程序导入小脚丫中,并通过调节阈值来观察小脚丫上的LED发光强度的变化。

现在思考题来了:

已知小脚丫的板载LED的正向点亮电压为1.8V

已知小脚丫的高电平为3.3V,低电平为0V

现在我们将一个占空比为10%的PWM信号接到LED上,能不能看到LED点亮?

回答错误的你一定非常不服,于是从积灰的古董箱里翻出来宝刀已老的万用表,调成直流电压测量模式后一测发现:没错啊!就是0.33V,和预期的3.3*10%=0.33V一样!那怎么可能还会点亮,一定是LED坏了,哦不,是万用表坏了,好像也不是…难道是小脚丫坏了?

猜您喜欢

温度校正器是重要的仪器,应用于工业、实验室及科研领域。主要作用是确保温度测量的准确性和可靠性。在许多生产过程中,温度控制直接影响产品的质量和安全,使用温度校正器...
2010-01-29 00:00:00

MOSFET电荷泵是一种应用于电子电路中的电源管理技术,凭借其高效的功率转换和简单的电路设计,成为许多电子产品中重要的一部分。对于一般受众来说,了解这种技术的基...
2024-04-28 00:00:00

坡口机是专用于金属加工的设备,主要用于对工件的边缘进行坡口处理,以便于焊接或拼接。能够根据不同的工件需求,灵活调整坡口的角度和深度,确保焊接接头的质量与强度。坡...
2015-04-21 00:00:00

硅电容结构是电子器件中重要组成部分。用于存储电能,也可以调节电流。本文将详细探讨硅电容的特性和应用。硅电容的定义硅电容是利用硅材料制作的电容器。具有较高的介电常...
2025-03-24 15:00:37

快速识别贴片电阻好坏,可以采用以下几种方法:外观检查: 观察电阻表面是否有裂纹、烧焦痕迹、变形或污染。如有以上情况,电阻很可能已损坏。此外,检查焊盘是否有虚焊或...
2024-11-26 11:29:30

冷压端子,又称接线端子,是用于连接电线和电气设备的元件。通常由金属材料制成,具有良好的导电性和耐腐蚀性。冷压端子的主要功能是提供稳固的电气连接,以确保电流顺畅流...
2022-11-21 00:00:00

压敏电阻是非线性电阻,其阻值会施加电压的变化而改变。10D431K是压敏电阻中的型号,应用于电路保护、瞬态电压抑制等领域。本文将详细介绍10D431K压敏电阻的...
2025-04-13 22:01:10

0805贴片电阻是一种常用的电子元件,它的尺寸代码「0805」代表着它的外形大小。 具体来说,0805指的是英制尺寸,表示该电阻的长和宽分别为0.08英寸和0....
2025-04-14 15:02:28

在选择手机配件时,规格和尺寸是非常重要的因素。无论是手机壳、屏幕保护膜还是充电器,了解其具体尺寸可以确保完美贴合和高效使用。不同品牌和型号的手机,其配件的规格往...
2017-08-23 00:00:00

电位器作为调节电路参数的重要元件,其品质和性能直接影响到电子设备的稳定性和使用寿命。Walsin(华新)作为知名的电子元器件制造商,其电位器产品凭借很好的品质和...
2022-03-27 15:20:18