一、PDM简介
将信号的振幅变化按比例地变换成脉冲宽度的变化,得到脉冲宽度调制(PDM)。详细的原理理论可以参考该文:文献阅读–Pulse-Width Modulation,本文主要介绍PDM的FPGA实现,PDM的生成方式很多具体形式根据需求会有所不同
二、实验内容
实验设备: ZYNQ7020
2.1 恒频后沿调制
早期的PDM信号通过比较器生成,通过比较锯齿波和输入信号生成
脉冲信号。随着数字信号处理的广泛应用,现在通过一个计数器与数字信号进行比较就可生成脉冲信号。
实验生成PDM信号将采用锯齿波信号作为载波,如图所示:
PDM输出的前导(上升)沿在固定时刻出现,而后导(下降)沿的位置为随着参考信号电平的变化而调制。因此,该方法也称为恒频后沿调制。三角波计数从0开始递增,N时重置为0同时PDM上升沿出现。
module PDM
(
Clk,
Rst,
Din,
Do,
cnt
);
input Rst,Clk;
input [15:0] Din;
output reg Do;
output reg [9:0] cnt;
reg [9:0] Dtr;
always @(posedge Rst or posedge Clk)begin
if(Rst) begin
Do<=1'b0;
cnt<=10'b0;
end
else begin
cnt<=cnt+1'b1;
if (cnt>Dtr)begin //比较生成脉冲
Do<=1'b0;
end
else begin
Do<=1'b1;
end
if (cnt==1023)begin //计数采样
Dtr<=Din[15:7];
end
end
end
endmodule
实现效果如下图所示
2.2 中心对齐调制(锯齿波形式)
恒频后沿调制使用实验设备测试时,PDM通过滤波器无法正确恢复出PDM信号,将PDM信号生产改为中心对齐的形式。如图所示:
2.3 方法对比
恒沿后沿调制公式
P
D
M
=
{
1
c
n
t
⩽
S
p
0
c
n
t
>
S
p
PDM= \begin{cases}1 & cnt \leqslant S_p \\ 0 & cnt>S_p\end{cases}
PDM={10cnt⩽Spcnt>Sp
中心对齐调制公式
P
D
M
=
{
1
c
n
t
≥
L
o
r
c
n
t
⩽
R
0
c
n
t
<
L
o
r
c
n
t
>
R
PDM= \begin{cases}1 & cnt \geq L &or& cnt \leqslant R \\0 & cnt<L &or&cnt>R\end{cases}
PDM={10cnt≥Lcnt<Lororcnt⩽Rcnt>R
通过公式可以发现,其实两种方式生成的PDM波形是一致的,脉冲高低电平的宽度是相同的,只是第二种方法将脉冲中心移动到了计数中心点。
三、实验结果
PDM为恒频后沿调制,PDM2为中心对齐调制
文章来源:https://www.toymoban.com/news/detail-840610.html
总结
通过查资料发现载波使用三角波并进行规则采样PDM信号应该也是中心对齐的,实验的对齐方式实现仍使用锯齿载波,但在PDM判断采样上做了处理。但是实测后发现中心对齐方法脉冲并非完全对称,实际FPGA中Sp是数字信号比如实验中的16bit信号,压缩到1024的范围进行比较实际只需用到10bit,这时在生成L和R两个比较值可能会产生+1差值,无法实现公式中的完全对称,该情况输出脉冲右半边会比左半边多一个时钟周期,可以通过降低采样位数统一Sp位数去解决但是损失一定精度。文章来源地址https://www.toymoban.com/news/detail-840610.html
到了这里,关于ZYNQ实验--PDM波形生成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!