Menu

PCMtoSDM

yamamoto2002
Attachments
CRFB2nd.png (143759 bytes)
CRFB3rd.png (167635 bytes)
CRFB4th.png (177710 bytes)
CRFB5th.png (220055 bytes)
CRFB6thMathematica.png (177204 bytes)
CRFB7thMathematica.png (225403 bytes)
Flow.png (24397 bytes)
NTF5PoleZero.jpg (47457 bytes)
SynthesizeNTF.jpg (108209 bytes)

Converting 44.1kHz PCM to 2.8MHz 1bit SDM

conversion flow
Figure 1 : Conversion flow

64x Upsampler converts 44.1kHz PCM to 2.8MHz PCM.
(Original sample values are represented as floating point value ranging from -1.0 to 1.0. Noise shaping filter becomes unstable if input signal is large magnitude, therefore PCM sample value range is reduced to value range from -0.5 to +0.5 somewhere before Noise shaping.)

Noise shaping filter converts 2.8MHz PCM to 2.8MHz 1bit SDM. Noise shaper output is a stream of two symbols: -1.0 and +1.0.

Noise shaping filter design (CRFB structure)

Obtain noise transfer function (NTF) of noise shaping filter using Matlab Delta Sigma Toolbox synthesizeNTF function.
Input parameter is order of NTF and over sample rate = 64.
Output is position of NTF zeros and poles. (Figure 10 and Figure 11)

Result: https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWDigitalFilter/NTFHzcoeffs.cs#l122

■ Calculate g_k, a_k, b_k parameters of CRFB circuit ■

I chose CRFB structure for noise shaping filter.

First calculate g_k.
NTF zeros z_k is placed on the unit circle of gauss plane with ±ω_k angle from real axis. Parameter g_k is calcuated by
solving equation 1-g_k/2 = cosω_k

Then calculate a_k.
Multiply all NTF poles p_k with Σ(z - p_k) and expand it to get polynomial coefficients d_k.
Build equation of NTF polynomial and reshape it to get unknown a_m values fron known d_n, g_o (Figure. 2 to Figure 9)
Calculate a_k values using this equation and known d_k and g_k values.

Then b_k := a_k.

Calculated result g_k, a_k, b_k is shown on Figure 2, 4, 6 and 8.

Example of CRFB noise shaping filter implementation : https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWDigitalFilter/LoopFilterCRFB.cs

[WWOfflineResampler] uses 5th order CRFB to create CD quality 2.8MHz 1bit SDM data.

CRFB 2nd order
Figure 2 : 2nd order CRFB Noise shaper schematics.

CRFB 2nd order
Figure 3 : 2nd order CRFB NTF equation solving to calculate parameter a0, a1

CRFB 3rd order
Figure 4 : 3rd order CRFB Noise shaper schematics.

CRFB 3rd order
Figure 5 : 3rd order CRFB NTF equation

CRFB 4th order
Figure 6 : 4th order CRFB Noise shaper schematics.

CRFB 4th order
Figure 7 : 4th order CRFB NTF equation

CRFB 5th order
Figure 8 : 5th order CRFB Noise shaper schematics.

CRFB 5th order
Figure 9 : 5th order CRFB NTF equation

synthesizeNTF osr=64
Figure 10 : synthesizeNTF frequency response curve.

pole zero plot of 5th order NTF
Figure 11 : 5th order noise shaping filter NTF pole zero plot.

CRFB 6th order
Figure 12: 6th order CRFB NTF equation

CRFB 7th order
Figure 13: 7th order CRFB NTF equation

References

Understanding Delta-Sigma Data Converter, Richard Schreier and Gabor C. Temes ,Wiley-IEEE Press, 2004


Related

Wiki: Home
Wiki: PlayPcmWinEn
Wiki: PlayPcmWinJp
Wiki: WWOfflineResampler