脈衝密度調製

脈衝密度調製

脈衝密度調製(Pulse Density Modulation),簡稱PDM,是一種使用二進制數0,1表示模擬信號的調製方式。在PDM信號中,模擬信號的幅值使用輸出脈衝對應區域的密度表示。PWM波是PDM波轉換頻率固定的一種特例,對於一個使用8位長表示的電壓信號而言,峰值的1/2處會高低電平各持續一半,即128個時鐘周期。在PDM信號中,會在1,0之間每個時鐘周期都切換。兩種波形的平均值都是50%,但是PDM波切換的更加頻繁。對於100%和0的電平信號,兩種方式的輸出相同。

定義

在實際輸出的一位數據流中,只存在“1”和“0”,1的密度越大,代表該區域對應的模擬信號幅值越大,反之,0的密度越大,代表該區域的模擬信號幅值越小。1和0連續轉換的區域對應中間幅值。使用低通濾波器將PDM信號濾波後,可以恢復連續的模擬信號波形。

AD轉換

PDM數據流是通過sigma-delta調製實現從模擬到離散的編碼,在此過程中會使用一位量化器,以使輸出非1即0。1和0各自對應波形上升或下降的趨勢。在現實世界中,很少有單方向變化的信號,總會存在量化誤差,即1、0所表示的信號與實際模擬信號對應的差值,這個誤差在sigma-delta電路中,通過迴路反饋回來。因此,誤差通過反饋,又能影響下一次的量化輸出和誤差,起到了平滑的作用。

DA轉換

把PDM信號解碼為模擬信號非常簡單:只需要把PDM信號通過一個低通濾波器即可,該方法可行的原因是,低通濾波器能很好地起到平均波形信號的作用。由於原信號的平均幅值被各個時刻的脈衝1、0的密度衡量,因此低通濾波器是解碼過程唯一所需的步驟。

代碼

matlab仿真實現

仿真如右圖所示,採樣時間為0.001s,輸入信號為正弦波,頻率為2*pi,根據Y(z)=E(z)+[X(z)-Y(z)*z^-1]*(1/(1-z^-1)),轉換為差分方程,得到y(n)=x(n)+e(n)-e(n-1)

脈衝密度調製 脈衝密度調製

得到的波形為:

脈衝密度調製 脈衝密度調製

matlab代碼實現

%Sample demo for Delta modulation

sample_num=200;

n_sample=5;

x_src=0:2*pi/sample_num:n_sample*2*pi;

y_src=sin(x_src);

%y_src(i)與qe(i+1)對應,y_pdm(i)

% Delta modulation-demodulation

%len 表示採樣點數

len = length(y_src);

qe(1) = 0;

for i=1:len

if(y_src(i)>=qe(i))

y_pdm(i)=1;

else

y_pdm(i)=-1;

end

qe(i+1)=y_pdm(i)-y_src(i)+qe(i);

end

subplot(2,1,1);plot(y_src,'r');

grid on

title('(red:input signal, green:sin PDM wave)');

ylabel('amplitude');

axis([0 n_sample*sample_num -1 1])

subplot(2,1,2);plot(y_pdm,'g');

grid on

ylabel('amplitude');

axis([0 n_sample*sample_num -1 1])

仿真波形:

脈衝密度調製 脈衝密度調製

套用

PDM是索尼公司SACD所使用的編碼方式,名為 Direct Stream Digital。

一些系統會把立體音頻的PDM信號轉換為串列數據,主時鐘的上升沿代表左聲道的一位數據,下降沿代表右聲道的一位數據。

相關詞條

熱門詞條

聯絡我們