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

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

3天内不再提示

PWM的原理是什么?调制器是怎样实现的?

GReq_mcu168 2018-07-23 16:49 次阅读

一、 PWM(脉冲宽度调制Pulse Width Modulation)原理:脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。图1所示为脉冲宽度调制系统的原理框图和波形图。该系统有一个比较器和一个周期为Ts的锯齿波发生器组成。语音信号如果大于锯齿波信号,比较器输出正常数A,否则输出0。因此,从图1中可以看出,比较器输出一列下降沿调制的脉冲宽度调制波。

PWM的原理是什么?调制器是怎样实现的?

PWM的原理是什么?调制器是怎样实现的?

其中,x{t}是离散化的语音信号;Ts是采样周期;o4YBAFtVmAyAdQrvAAABMD3BCnQ345.jpgo4YBAFtVmAyAOTqZAAABOpOZ0gs060.jpgp(t)可以表示为: PWM的原理是什么?调制器是怎样实现的?o4YBAFtVmAyAFGLcAAAItitjsJc396.jpgo4YBAFtVmA2Ad228AAACV2B9yv4912.jpg

二、 数字脉冲宽度调制器的实现:实现数字脉冲宽度调制器的基本思想参看图2。

PWM的原理是什么?调制器是怎样实现的?

图中,在时钟脉冲的作用下,循环计数器的5位输出逐次增大。5位数字调制信号用一个寄存器来控制,不断于循环计数器的输出进行比较,当调制信号大于循环计数器的输出时,比较器输出高电平,否则输出低电平。循环计数器循环一个周期后,向寄存器发出一个使能信号EN,寄存器送入下一组数据。在每一个计数器计数周期,由于输入的调制信号的大小不同,比较器输出端输出的高电平个数不一样,因而产生出占空比不同的脉冲宽度调制波。

PWM的原理是什么?调制器是怎样实现的?

为了使矩形脉冲的中心近似在t=kTs处,计数器所产生的数字码不是由小到大或由大到小顺序变化,而是将数据分成偶数序列和奇数序列,在一个计数周期,偶数序列由小变大,直到最大值,然后变为对奇数序列计数,变化为由大到小。如图3例子。

奇偶序列的产生方法是将计数器的最后一位作为比较数据的最低位,在一个计数周期内,前半个周期计数器输出最低位为0,其他高位逐次增大,则产生的数据即为偶数序列;后半个周期输出最低位为1,其余高位依次减小,产生的数据为依次减小的偶序列。具体电路可以由以下电路图表示:

PWM的原理是什么?调制器是怎样实现的?

三、 8051中的PWM模块设计:应该称为一个适合语音处理的PWM模块,输出引脚应该外接一积分电路。输出波形的方式适合作语音处理。设计精度为8位。PWM模块应包括:1、 比较部分(Comp):2、 计数部分(Counter):3、 状态及控制信号寄存/控制器(PWM_Ctrl);1) 状态积寄存器:(Flags),地址:E8H ;①EN: PWM模块启动位,置位为‘1’将使PWM模块开始工作;②(留空备用)③④解调速率标志位:00 – 无分频;01 – 2分频;10 – 10分频;11 – 16分频。 (RESET后为00)⑤(留空备用)⑥(留空备用)⑦(留空备用)⑧(留空备用)注意:该寄存器可以位操作情况下可写,不可读;只能在字节操作方式下读取。2) 数据寄存器(DataStore),地址:F8H;注意:该寄存器值不可读,只可写。

4、 端口:1) 数据总线(DataBus);(双向)2) 地址总线(AddrBus);(IN)3) PWM波输出端口(PWMOut);(OUT)4) 控制线:① CLK:时钟;(IN)② Reset:异步复位信号;(IN 低电平有效)③ WR:写PWM RAM信号;(IN 低电平有效); ④ RD:读PWM RAM信号;(IN 低电平有效)⑤ DONE:接受完毕反馈信号;(OUT 高电平有效)⑥ INT:中断申请信号;(OUT 低电平有效)⑦ IntResp:中断响应信号;(In低电平有效)⑧ ByteBit:字节/位操作控制信号(IN 1-BYTE 0-BIT);⑨中断占用相当于MCU8051的外部中断2,则可保证在5个指令周期之内,“读取数据”中断必定得到响应。

PWM模块使用方法:因为占用了8051外部中断1,所以在不使用该模块时,应该把外部中断2屏蔽。而PWM模块产生的中断请求可以看作是“能接受数据”的信号。中断方法如后“中断读取数据过程”。使用PWM模块,应该先对内部地址8FH的数据寄存器写入数据,然后设置地址8EH的状态寄存器最低位(0)为‘1’,即PWM模块开始工作并输出PWM调制波(如TIMER模块)。在输出PWM调制波过程中,应及时对PWM写入下一个调制数据,保证PWM连续工作,输出波形连续。 (待改进)

中断读取数据过程:

PWM模块可以读取数据,申请中断信号INT置位为‘0’,等待8051响应;

8051接受到中断申请后,作出中断响应,置位IntResp信号线为‘0’;

PWM模块收到IntResp信号后,把中断申请信号INT复位为‘1’,等待8051通知读取数据WR信号;

8051取出要求数据放于数据总线(DataBus)上,并置WR信号为‘0’;

PWM模块发现WR信号为‘0’,由数据总线(DataBus)上读取数据到内部数据寄存器,将DONE位置位为‘1’;

8051发现DONE信号的上跳变为‘1’,释放数据总线;

PWM模块完成当前输出周期,复位DONE为‘0’,从此当前数据寄存器可以再次接受数据输入。

注意事项:

1)输出的PWM信号中的高电平部分必须处于一个输出周期的中间,不能偏离,否则输出语音经过低通后必定是一失真严重的结果。

2)对于8位精度的PWM,每个输出周期占用256(28)个机器周期,但是包含256个机器周期至少有22个指令周期,亦即264(22*12)个机器周期,由于语音信号的连续性,256与264之间相差的8个机器周期是不能由之丢空的,否则也会使输出信号失真。如果将须输出数字量按256/264的比例放大输出,亦不可行,因为如此非整数比例放大,放大倍数很小,则经过再量化后小数部分亦会被忽略掉,产生失真。举例:输出数字量为16,按比例放大后为16.5,更会产生难以取舍的问题。

故采取以下办法:该模块以时钟周期为标准,而与TMBus无关,即基本上与8051部分异步工作。读取数据方式为每次读取足够数据段储存于模块内的RAM内(暂定每次读取8字节),储存字节数必须能保证PWM输出该段数据过程中,有足够时间从RAM处继续读取数据。由于占用了8051的外部中断2,中断申请在3个指令周期(36个时钟周期)内必定能得到响应,而PWM模块处理一个数据需要固定耗时256个时钟周期,故能保证PWM模块顺序读取数据中断能及时得到响应,不会影响调制信号的连续性。

3)RD RAM过程是异步过程。

4)输出后数据寄存器不自动清零。因为可以通过把Flags(0)写‘0’而停止PWM模块继续工作。

HMX

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

    关注

    114

    文章

    4885

    浏览量

    209818
  • 脉冲
    +关注

    关注

    19

    文章

    853

    浏览量

    94763
  • 调制器
    +关注

    关注

    3

    文章

    781

    浏览量

    44711

原文标题:PWM (脉冲宽度调制)原理与实现

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    具有PWM调制器的四通道集成D类音频驱动IC-IRS2093

    PWM调制器,还有具有自复位控制的可编程双向过电流保护(OCP)、欠压锁定保护(UVLO)和实现可扩展电源设计的可编程预置死区时间。`
    发表于 03-05 21:49

    调制器/解调简介

    信号携带进行传播。调制过程在发信端,完成调制过程的装置叫调制器。解调过程是调制的反过程,即把低频信号从高频载波上搬移下来的过程。解调过程在收信端,
    发表于 11-18 09:43

    有没有写过fm调制器的fpga实现的代码

    有没有写过fm调制器的fpga实现的代码,求大神赐教
    发表于 04-15 21:54

    相移PWM调制器SPC5x

    嗨伙计,我是这里的新手,有代码示例,培训等部分吗?目前,我正致力于控制带有相移PWM调制器的电力电子转换。感谢您的帮助或建议。罗伯托 #pwm
    发表于 11-07 09:48

    请问FM调制器的FPGA实现

    求助FM调制器的FPGA实现,对FPGA这些完全不了解,在网上看可以用DDS技术实现FM的数字调制,就在书上按照步骤先做了产生正弦波分频模块寻址模块数据存储模块,但编译不能通过,也不知
    发表于 03-16 11:43

    有没有写过fm调制器的fpga实现的代码?

    看了视频资料只会实现输出正弦波,不会写FM调制,请问写有没有写过fm调制器的fpga实现的代码,急求
    发表于 03-17 17:35

    Δ-Σ 调制器是如何工作的?

    0V时,1s密度为50%。因此,可以在不超出调制器范围的情况下测量基准电压和负基准电压之间的输入电压。那么通过将输入转换为比特流调制器实现了什么?观察调制器的频谱内,输入电压和采样数字
    发表于 08-12 04:45

    隔离型Σ-Δ调制器的简化框图

    的时钟抖动,并重构时钟信号,以实现Σ-Δ编码的正常功能。图2a:显示了具有相同FPGA板和应用软件的内和外时钟Σ-Δ调制器的测量设置图3:显示了示波器捕获的两类Σ-Δ调制器的MCLK
    发表于 10-21 16:12

    ∑-△调制器的设计原理是什么?怎么实现FPGA?

    ∑-△调制频率合成器及其实现∑-△调制器原理设计∑-△调制器的FPGA实现
    发表于 04-15 06:47

    如何实现扩频通信调制器自顶向下的设计?

    如何实现扩频通信调制器自顶向下的设计?如何实现扩频通信调制器的仿真测试?
    发表于 04-29 06:46

    怎样采用定时的方法去实现PWM脉宽调制

    PWM是什么?怎样采用定时的方法去实现PWM脉宽调制呢?
    发表于 11-08 06:08

    邻频调制器怎么调整_邻频调制器调试教程

    本文主要介绍了邻频调制器如何调整_邻频调制器怎样调整。邻频调制器(也称作射频调制器,调频调制器
    发表于 01-16 15:39 1.5w次阅读

    用三个运放实现脉冲宽度调制器,3 OPAMP implement PWM controler

    用三个运放实现脉冲宽度调制器,3 OPAMP implement PWM controler 关键字:运放电路,脉宽调制电路,MAX4094
    的头像 发表于 09-20 18:32 1294次阅读

    PWM超级方波调制器

    电子发烧友网站提供《PWM超级方波调制器.zip》资料免费下载
    发表于 07-05 10:16 0次下载
    <b class='flag-5'>PWM</b>超级方波<b class='flag-5'>调制器</b>

    空间光调制器的原理 空间光调制器的作用

    空间光调制器的原理 空间光调制器的作用  空间光调制器是一种利用光的干涉、衍射等现象对光进行调制的器件,可以实现对光波的幅度、相位等进行调节
    的头像 发表于 12-20 13:45 972次阅读