↓点击上面的“电子工程图册”即可轻松关注
1.脉宽调制原理
2.调制器的设计思想
3.具体实施设计
1.脉宽调制原理:
脉宽调制波通常由一系列不同比值空的矩形脉冲组成,与信号的瞬时采样值成正比。图1示出了脉宽调制系统的原理框图和波形图。该系统由一个比较器和一个周期为Ts的锯齿波发生器组成。如果语音信号大于锯齿信号,比较器输出一个正常数字A,否则输出0。因此,从图1可以看出,比较器输出一系列下降沿调制的脉宽调制波。
从图1b的分析可以看出,产生的矩形脉冲的宽度取决于在下降沿时间t k的语音信号的幅度值。因此,采样值之间的时间间隔是不均匀的。即使是采样信号也可以通过在系统的输入端插入采样保持电路来获得,但是对于实际的tk-kts
X{t}是离散的语音信号;Ts为采样周期;未调制的宽度;m是调制指数。
但是,如果矩形脉冲近似如下:脉冲幅度为a,中心在t = k Ts,相邻脉冲之间的变化较慢,那么脉宽调制波xp(t)可以表示为:
其中,。没有频谱分析,从等式(2)可以看出,脉宽信号由语音信号x(t)加上DC分量和相位调制波组成。此时,相位调制引起的信号重叠可以忽略,因此脉宽调制波可以直接由低通滤波器解调。
二、数字脉宽调制器的实现:
实现数字脉宽调制器的基本思路见图2。
图中,在时钟脉冲的作用下,周期计数器的5位输出逐渐增大。5位数字调制信号由寄存器控制,并持续与周期计数器的输出进行比较。当调制信号大于周期计数器的输出时,比较器输出高电平,否则输出低电平。周期计数器循环一个周期后,向寄存器发送使能信号en,寄存器发送下一组数据。在每个计数器计数周期中,由于输入调制信号的大小不同,比较器输出端输出的高电平数量也不同,从而产生空比例不同的脉宽调制波。
图3
为了使矩形脉冲的中心近似在t=kTs,计数器产生的数字码不是按顺序从小到大或从大到小变化,而是将数据分为偶数序列和奇数序列。在一个计数周期内,偶数列从小到大变化,直到达到最大值,然后对奇数列进行计数,由大到小变化。如图3例子所示。
奇偶序列的生成方法是将计数器的最后一位作为比较数据的最低位。在一个计数周期内,前半个周期计数器输出的最低位为0,其他高位依次递增,则生成的数据为偶数序列;在周期的后半段,输出的最低位为1,其他高位依次递减,生成的数据是依次递减的偶数序列。具体电路可由以下电路图表示:
三、8051中的PWM模块设计:
应该叫适合语音处理的PWM模块,输出引脚要接积分电路。输出波形适合语音处理。设计精度为8位。
脉宽调制模块应包括:
1.比较部分(比较):
2.计数器:
3.状态和控制信号寄存器/控制器(PWM _ CTRL);
1)状态产品寄存器:(Flags),地址:e8h
① en: PWM模块启动位,设置为‘1’将使PWM模块开始工作;
②(保留空备用)
③ ④解调速率标志位:00–无分频;01–2分频;10–10分频;除以11–16。(复位后00)
⑤(保留空备用)
⑥(保留空备用)
⑦(保持空备用)
⑧(保留空备用)
注意:在位操作的情况下,该寄存器可以被写入和读取;只能在字节操作模式下读取。
2) DataStore,地址:F8H;
注意:该寄存器值不可读,只能写入。
4.端口:
1)数据总线(data bus);(双向)
2)地址总线(addr总线);(英寸)
3) PWM波输出端口(PWM输出);(输出)
4)控制线:
① CLK:时钟;(英寸)
②复位:异步复位信号;(低电平有效)
③ WR:写PWM RAM信号;(IN为低电平有效);
④ RD:读取PWM RAM信号;(低电平有效)
⑤完成:接收反馈信号;(输出高电平有效)
⑥ INT:中断应用信号;(输出低电平有效)
⑦InTersp:中断响应信号;(低电平有效)
8字节位:字节/位操作控制信号(in1-byte 0-bit);
⑨⑩
如果中断占用相当于MCU8051的外部中断2,可以保证“读取数据”中断将在5个指令周期内响应。
PWM模块的用法:由于8051外部中断1被占用,在不使用该模块时,外部中断2应该屏蔽。脉宽调制模块产生的中断请求可以视为“接受数据”的信号。中断方法如下:“中断读取数据的过程”。使用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取出所需数据,放在数据总线上,并将WR信号设置为“0”;
脉宽调制模块发现WR信号为“0”,从数据总线读取数据到内部数据寄存器,并将完成位设置为“1”;
8051发现DONE信号跳转变为‘1’,释放数据总线;
脉宽调制模块完成当前输出周期,并将完成复位为“0”,此时当前数据寄存器可以再次接受数据输入。
注意事项:
1)输出PWM信号的高电平部分必须在一个输出周期的中间,不能偏离,否则输出语音经过低通后会严重失真。
2)对于8位精密PWM,每个输出周期占用256(28)个机器周期,但至少有22个指令周期,其中包括256个机器周期,即264(22*12)个机器周期。由于语音信号的连续性,与256和264不同的8个机器周期不能丢失空,否则会产生输出信号。按照256/264的比例放大要输出的数字量是不可行的,因为如果由于这样的非整数放大,放大倍数很小,那么重新量化后就会忽略小数部分,造成失真。比如输出数是16,放大后是16.5,很难选择。
所以采取了以下措施:模块以时钟周期为标准,与TMBus无关,即与8051部分基本异步工作。读取数据的方式是每次读取足够的数据段,并存储在模块中的RAM中(每次暂定读取8个字节)。存储的字节数必须确保在这段数据的脉宽调制输出期间,有足够的时间继续从内存中读取数据。由于8051的外部中断2被占用,中断应用可以在3个指令周期(36个时钟周期)内响应,PWM模块处理一个数据需要256个时钟周期,因此可以保证PWM模块顺序读取数据的中断能够及时响应,而不影响调制信号的连续性。
rdram过程是异步的。
4)输出后数据寄存器不会自动清零。通过将标志(0)写入“0”,可以停止脉宽调制模块继续工作。
看了这篇文章有收获吗?请与更多人分享
关注《电子工程专辑》做一个优秀的工程师!
回复关键词是干货:电路设计,电容,三极管,PCB接地
请加微信13264108376加入“模拟电源”“嵌入式”微信群
长按二维码识别注意力
一键关注+历史信息阅读原文
1.《脉冲宽度 PWM 原理与实现》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《脉冲宽度 PWM 原理与实现》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/860714.html