左图是一个M-STEP的midrise量化器,右图是一个midtread的量化器
基本参数如下:
参数
Mid-Rise
Mid-Tread
比较器
5
6
比较器电平
-4,-2, 0, +2, +4
-5, -3, -1, +1, +3, +5
反馈结果
-5, -3, -1, +1, +3, +5
-6, -4, -2, 0, +2, +4, +6
反馈FS
±5
±6
量化器的建模,这篇主要分析量化器的增益k
v = k ⋅ y + e v=k \cdot y + e
v = k ⋅ y + e
对于输入信号y[n],量化输出为v[n],为了去确定量化器的增益k,需要去找最小均方差
σ e 2 = N → ∞ 1 N ∑ n = 0 N ( v [ n ] − k y [ n ] ) 2 \sigma_{e}^{2} = \lim_{N\rightarrow\infty}\operatorname{}\frac{1}{N}\sum_{n = 0}^{N}\left( v\left\lbrack n \right\rbrack - ky\left\lbrack n \right\rbrack \right)^{2}
σ e 2 = N → ∞ lim N 1 n = 0 ∑ N ( v [ n ] − k y [ n ] ) 2
定义内积 (inner product, scalar product),内积是投影的过程
可以将内积理解为投影的物理意义。内积是向量空间中两个向量之间的一种运算,它将一个向量投影到另一个向量上,并给出了它们之间的相似程度或对齐程度。在几何学中,如果有两个向量 A 和 B,它们的内积 A·B 可以用来描述向量 A 在向量 B 上的投影长度,乘以向量 B 的长度。换句话说,内积可以告诉我们向量 A 在向量 B 方向上的投影有多长。内积还可以用于衡量两个向量之间的夹角。如果两个向量 A 和 B 的内积为零,即 A·B = 0,则表示它们垂直或正交。当内积为正时,表示它们的夹角小于 90 度,而内积为负时,表示它们的夹角大于 90 度。
举例说明投影为0时,两个向量的夹角为90°
考虑两个二维向量 A 和 B,可以将它们表示为 A = (A₁, A₂) 和 B = (B₁, B₂)。它们的内积可以表示为 A·B = A₁B₁ + A₂B₂。如果 A·B = 0,那么 A₁B₁ + A₂B₂ = 0。这意味着 A₁B₁ = -A₂B₂。如果 A₁ 和 A₂ 不同时为零,那么 B₁ 和 B₂ 必须满足 B₁ = -A₂/A₁ * B₂。这表示向量 B 的分量 B₁ 和 B₂ 的比例与向量 A 的分量 A₁ 和 A₂ 的比例相反。换句话说,向量 B 的方向与向量 A 的方向垂直。举个例子,考虑向量 A = (3, 2) 和向量 B = (-2, 3)。它们的内积为 A·B = 3*(-2) + 2*3 = 0,因此它们是垂直的向量。这个例子说明了当两个向量的内积为零时,它们的方向是互相垂直的。内积为零意味着向量的投影相互独立,它们没有共享相同方向的分量。
< a , b > = N → ∞ 1 N ∑ n = 0 N a [ n ] b [ n ] = E [ a b ] \left< a,b \right>= \lim_{N\rightarrow\infty}\frac{1}{N}\sum_{n = 0}^{N}{a\left\lbrack n \right\rbrack b\left\lbrack n \right\rbrack} = E\left\lbrack {ab} \right\rbrack
⟨ a , b ⟩ = N → ∞ lim N 1 n = 0 ∑ N a [ n ] b [ n ] = E [ a b ]
这样
σ e 2 = < e , e > = < v − k y , v − k y > = < v , v > − 2 k < v , y > + k 2 < y , y > \begin{aligned}
σ_e^2&=<e,e> \\[0.8em]
&=<v-ky,v-ky> \\[0.8em]
&=<v,v>-2k<v,y>+k^2<y,y>
\end{aligned}
σ e 2 = < e , e > = < v − k y , v − k y > = < v , v > − 2 k < v , y > + k 2 < y , y >
对于一个
y = a x 2 + b x + c y=ax^2+bx+c
y = a x 2 + b x + c
它的极值出现在
x = − b 2 a x = -\frac{b}{2a}
x = − 2 a b
也就是出现在
k = − − 2 < v , y > 2 < y , y > = < v , y > < y , y > k = -\frac{-2<v,y>}{2<y,y>}=\frac{<v,y>}{<y,y>}
k = − 2 < y , y > − 2 < v , y > = < y , y > < v , y >
如果直观地去理解这个公式的含义,其实就是输入信号在量化输出的投影,再除以自身的长度,显而易见这就是量化增益。
以下这段MATLAB代码,是一个MID-TREAD的量化器,LEVEL=40,由于分析的信号幅度只到10,所以这相当于没有SATURATION的量化器。
% Autor : Ring
% Time : 2023-07-10
% Reference : Understanding Delta-Sigma Data Converters, 2nd Editon, p35
clear;clc;
f=7;fs=256;
A=0.5:0.1:10;
lvl=4;
k0=midTreadEffectiveGain(A,f,fs,40);
k1=randnEfectiveGain(A,f,fs,40);
k2=randEfectiveGain(A,f,fs,40);
hold on;
plot(A,k0);
plot(A,k1);
plot(A,k2);
legend("sine","gaussian","uniform")
ylabel("k,effective gain")
xlabel("A,magnitude")
function v=midRiseQuantizer(y,LEVELS)
% mid-tread quantizer, delta=2
v=ceil(y/2) * 2 - 1;
% even number of quantizer LEVELS
vmax=(LEVELS-1);
% saturation judement
if(abs(v)>vmax)
v=sign(v)*vmax;
end
end
function v=midTreadQuantizer(y,LEVELS)
% mid-tread quantizer, delta=2
v=floor((y+1)/2) * 2;
% odd number of quantizer LEVELS
vmax=(LEVELS-1);
% saturation judement
if(abs(v)>vmax)
v=sign(v)*vmax;
end
end
function k=midTreadEffectiveGain(A,f,fs,LEVELS)
length=size(A,2);
k=zeros(1,length);
for i=1:1:length
Ts=1/fs;
N=ceil(10/f*fs);
n=1:1:N;
y=A(i)*sin(2*pi*f*n*Ts);
v=zeros(1,N);
for n=1:1:N
v(n)=midTreadQuantizer(y(n),LEVELS);
end
num=sum(v.*y)/N;
dem=sum(y.*y)/N;
k(i)=num/dem;
end
end
function k=randEfectiveGain(A,f,fs,LEVELS)
length=size(A,2);
k=zeros(1,length);
for i=1:1:length
Ts=1/fs;
N=ceil(10/f*fs);
n=1:1:N;
y=A(i)*rand(1,N);
v=zeros(1,N);
for n=1:1:N
v(n)=midTreadQuantizer(y(n),LEVELS);
end
num=sum(v.*y)/N;
dem=sum(y.*y)/N;
k(i)=num/dem;
end
end
function k=randnEfectiveGain(A,f,fs,LEVELS)
length=size(A,2);
k=zeros(1,length);
for i=1:1:length
Ts=1/fs;
N=ceil(10/f*fs);
n=1:1:N;
y=A(i)*randn(1,N);
v=zeros(1,N);
for n=1:1:N
v(n)=midTreadQuantizer(y(n),LEVELS);
end
num=sum(v.*y)/N;
dem=sum(y.*y)/N;
k(i)=num/dem;
end
end
[正弦信号] 对于一个∆=2的量化器,量化噪声的∆^2/12=1/3,也就是误差的方差=1/3。当SINE的AMPLITUDE<1时,MID-TREAD的量化器得到的k=0,这是因为只有A<1,所有的量化结果v都是0。
[高斯信号] 对于一个标准差σ=1的gaussian分布随机信号,其幅值达到了±3σ,对于一个midtread量化器,相当于4 level的信号(-3,-1,1,3),此时σ e 2 σ_e^2σ e 2 达到理想的1/3,增益k达到1。个人理解,当σ<1/3时,量化结果就全是0,自然k=0;当σ>1/3时,量化结果v开始有数值,但是没能分布开,当数值大于1时的信号不能被准确反映,自然k偏小;当σ≥1后,信号的标准偏差为1以为着离散程度的统计数值,而∆=2量化器的误差是±1,当信号的离散程度<1时,此时量化器对于信号偏粗糙,所以量化器不能准确反映这个随机信号(注意这里,我们是以集合或者统计的眼光去看待信号,把这个σ当成信号的精度)。
用以上的结论,去分析高斯随机信号在midrise量化器的表现,可以知道,当σ<2/3时,量化结果总是1,量化结果偏大,导致k偏大;当σ>2/3后,k能够减小一些更快一些,更快地向着1收敛;当σ≥1时,与上分析同理,量化增益为1。
[等概率分布噪声信号] 表现与Sine信号很像,作者为什么不用这种信号作对比分析呢?
当量化器有范围限制后[ − m a x , + m a x ] [-max,+max][ − m a x , + m a x ] ,随着输入信号增大,量化结果偏小,所以等效量化器增益偏小;对于正弦信号和高斯分布信号,这个等效量化器的增益开始减小正是发生在A / 2 ⩾ m a x A/\sqrt{2}\geqslant maxA / 2 ⩾ m a x 和σ / 3 ⩾ m a x \sigma/3\geqslant maxσ / 3 ⩾ m a x 。
下图是一个M=5的量化器,所以量化增益开始偏小分别A=5/sqrt(2)和σ=5/3
这个quantiser是midrise的,量化结果是±1,这样的话,增益可以简化为
k = < v , y > < v , v > = E [ ∣ y ∣ ] E [ y 2 ] k =\frac{<v,y>}{<v,v>}=\frac {E[|y|]} {E[y^2]}
k = < v , v > < v , y > = E [ y 2 ] E [ ∣ y ∣ ]
当信号放大10倍后,等效增益缩小10倍,信号越大,等效增益越小;
modulator输入的信号,包括信号和噪声(比如采样噪声),因此有必要研究2输入的量化器模型
v = k 1 y 1 + k 2 y 2 + e v=k_1y_1+k_2y_2+e
v = k 1 y 1 + k 2 y 2 + e
这里,y1和y2分别是正弦信号和高斯分布的随机信号
y = A sin [ 2 π ( f / f s ) n ] + N ( 0 , σ ) y=A\sin\left[2\pi \left(f/fs\right)n\right]+N(0,\sigma)
y = A sin [ 2 π ( f / f s ) n ] + N ( 0 , σ )
其中,f代表正弦信号的频率,而f_s代表采样信号的频率,为了能够尽可能地采到所有点,希望fs比较大,且f与fs之间是相干采样的关系,即f/fs是是质数之比,这里
f / f s = 7 / 256 , σ = 1 \begin{matrix}f/f_s=7/256, &\sigma=1\end{matrix}
f / f s = 7 / 2 5 6 , σ = 1
对于一个M-STEP的mid-tread的量化器,M=5时,最大量化结果M-1=4,最大输入信号M=5,当A=5-3σ=2时,开始出现削顶的问题;求k1,k2的方法是
k 1 = < v , y 1 > < y 1 , y 1 > , k 2 = < v , y 2 > < y 2 , y 2 > \begin{matrix}k_1=\displaystyle \frac{<v,y_1>}{<y_1,y_1>},&k_2=\displaystyle \frac{<v,y_2>}{<y_2,y_2>}\end{matrix}
k 1 = < y 1 , y 1 > < v , y 1 > , k 2 = < y 2 , y 2 > < v , y 2 >
当输入信号A=[0,2]时,k1=k2=1,当A继续增大后,k1,k2开始下降,且k2下降得更快。
前者是因为当A>2后,v开始削顶。后者是因为,看量化结果v,出现削顶后的噪声部分完全看不到了,而sine信号仅仅是顶端的部分看不到了。
当sine信号独自存在时,要用其RMS值,也就是A/sqrt(2)去评估其在quantiser中的overload问题,因为此时的sine信号独立承担的分布量化区间的任务;
当sine信号与高斯信号同时存在时,分布量化区间,“be busy”的任务主要时由高斯信号承担,高斯信号的频率时256,而sine的频率7,相比高斯信号,sine信号仅相当于DC值,所以这里在计算overload特性时,用的时A而非A/sqrt(2)
量化器的误差e o f f 1 e_{off1}e o f f 1 可以忽略,因为这个就是量化误差,可以被integrator的低频增益压制住。而DAC的误差是一个问题,因为这个反馈的DAC信号与输入信号无法区分,其实就是输入信号。那么这个单bit的DAC误差ε1和ε2会导致:
Offset的误差,中心值,(ε1-ε2)/2
Gain误差,FullScale, 1+(ε1+ε2)/2
输出信号量化后,落在± V L S B / 2 {\pm V_{LSB} }/{2}± V L S B / 2 之间的概率是一致的。Uniformly distributed quantization noise spectrum (White Noise)
∫ − V L S B 2 V L S B 2 ρ d V = 1 ⟹ ρ = 1 V L S B \int_{- \frac{V_{ {LSB} } }{2} }^{\frac{V_{ {LSB} } }{2} }{\rho dV = 1} \Longrightarrow \rho = \frac{1}{V_{ {LSB} } }
∫ − 2 V L S B 2 V L S B ρ d V = 1 ⟹ ρ = V L S B 1
量化噪声功率
P n o i s e = ∫ − V L S B 2 V L S B 2 ρ V 2 d V = 1 V L S B V 3 3 ∣ − V L S B 2 V L S B 2 = 1 V L S B ( V L S B 3 8 3 − − V L S B 3 8 3 ) = V L S B 2 12 \begin{aligned}
P_{ {noise} } &= \int_{- \frac{V_{ {LSB} } }{2} }^{\frac{V_{ {LSB} } }{2} }{\rho V^{2}dV = \left. \ \frac{1}{ {V_{LSB} } }\frac{V^{3} }{3} \right|_{- \frac{V_{LSB} }{2} }^{\frac{V_{ {LSB} } }{2} } }
\\[0.8em]
&= \frac{1}{V_{ {LSB} } }\left( \frac{\frac{ {V_{ {LSB} } }^{3} }{8} }{3} - \frac{- \frac{ {V_{ {LSB} } }^{3} }{8} }{3} \right) = \frac{ {V_{ {LSB} } }^{2} }{12}
\end{aligned}
P n o i s e = ∫ − 2 V L S B 2 V L S B ρ V 2 d V = V L S B 1 3 V 3 ∣ ∣ ∣ ∣ ∣ − 2 V L S B 2 V L S B = V L S B 1 ( 3 8 V L S B 3 − 3 − 8 V L S B 3 ) = 1 2 V L S B 2
噪声的功率是V L S B 2 / 12 {V_{LSB}^2}/{12}V L S B 2 / 1 2 ,功率谱密度是V L S B 2 / 12 / 2 π = V L S B 2 / 24 π V_{LSB}^2/12/{2\pi}=V_{LSB}^2/24\piV L S B 2 / 1 2 / 2 π = V L S B 2 / 2 4 π
正弦信号的功率
P s i g n a l = ( 2 2 V F u l l S c a l e 2 ) 2 = V F u l l S c a l e 2 8 = ( 2 N V L S B ) 2 8 P_{signal} = \left( \frac{\sqrt{2} }{2}\frac{V_{FullScale} }{2} \right)^{2} = \frac{ {V_{FullScale} }^{2} }{8} = \frac{\left( 2^{N}V_{LSB} \right)^{2} }{8}
P s i g n a l = ( 2 2 2 V F u l l S c a l e ) 2 = 8 V F u l l S c a l e 2 = 8 ( 2 N V L S B ) 2
功率的计算时信号电压在1欧姆电阻上的功率,那么对于周期信号,需要计算一个周期内的能量然后除以周期,那么则有
P s i g n a l ‾ = E T = 1 T ∫ 0 1 / T ( V F u l l s c a l e 2 sin ( 2 π T t ) ) 2 d t = V F u l l s c a l e 2 8 \overline{P_{signal} }=\frac{E}{T}=\frac{1}{T}\int_{0}^{1/T}\left(\frac{V_{Fullscale} }{2}\sin\left(\frac{2\pi}{T}t\right)\right)^2dt=\frac{V_{Fullscale}^2}{8}
P s i g n a l = T E = T 1 ∫ 0 1 / T ( 2 V F u l l s c a l e sin ( T 2 π t ) ) 2 d t = 8 V F u l l s c a l e 2
如果sine信号的magnitude为 A AA ,peak-to-peakd电压为 V F u l l s c a l e = 2 A V_{Fullscale}=2AV F u l l s c a l e = 2 A ,所以SINE信号对应的RMS电压为
V s i n e , R M S = P s i g n a l ‾ = V F u l l s c a l e 2 2 = A 2 V_{sine,RMS}=\sqrt{\overline{P_{signal} } }=\frac{V_{Fullscale} }{2\sqrt2}=\frac{A}{\sqrt2}
V s i n e , R M S = P s i g n a l = 2 2 V F u l l s c a l e = 2 A
使用Mathematica做上面的积分计算代码为
ClearAll["Global`*"]
sig = fs/2*Sin[2*Pi*f*t];
FullSimplify[Integrate[sig^2, {t, 0, 1/f}]/(1/f)]
信噪比为:
SNR = 10 10 P s i g n a l P n o i s e = 10 10 2 2 N V L S B 2 8 V L S B 2 12 = 10 10 3 ⋅ 2 2 N 2 \text{SNR} = 10\log_{10}\cfrac{P_{signal} }{P_{noise} } = 10\log_{10}\cfrac{\cfrac{2^{2N}{V_{LSB} }^2}{8} }{\cfrac{ {V_{LSB} }^2}{12} } = 10\log_{10}\cfrac{3 \cdot 2^{2N} }{2}
SNR = 1 0 log 1 0 P n o i s e P s i g n a l = 1 0 log 1 0 1 2 V L S B 2 8 2 2 N V L S B 2 = 1 0 log 1 0 2 3 ⋅ 2 2 N
换底公式:a b = c b / c a \log_{a}b = {\log_{c}b}/{\log_{c}a}log a b = log c b / log c a
SNR = 10 10 3 ⋅ 2 2 N 2 = 10 10 2 2 N + 10 10 3 2 = 10 2 2 2 N 2 10 + 10 10 3 2 = 6.02 N + 1.76 \begin{aligned}
\text{SNR} &= 10\log_{10}\frac{3 \cdot 2^{2N} }{2} = 10\log_{10}2^{2N} + 10\log_{10}\frac{3}{2}\\[0.8em]
&=10\frac {\log_2{2^{2N} } }{\log_2{10} }+10\log_{10}\frac 3 2 \\[0.8em]
&=6.02N+1.76
\end{aligned}
SNR = 1 0 log 1 0 2 3 ⋅ 2 2 N = 1 0 log 1 0 2 2 N + 1 0 log 1 0 2 3 = 1 0 log 2 1 0 log 2 2 2 N + 1 0 log 1 0 2 3 = 6 . 0 2 N + 1 . 7 6
(1)一个信号的带宽是B BB ,采样频率需要是2 B 2B2 B 能无失真地还原这个信号。这里再提高O S R OSRO S R 倍采样,采样后的信号频率会出现在
[ − B , B ] = [ − π O S R , π O S R ] \left\lbrack - B,B \right\rbrack = \left\lbrack \frac{- \pi}{ {OSR} },\frac{\pi}{ {OSR} } \right\rbrack
[ − B , B ] = [ O S R − π , O S R π ]
(2)量化噪声采样前后功率不变,其功率为V L S B 2 / 12 { {V_{LSB} }^{2} }/{12}V L S B 2 / 1 2 ,功率谱密度为V L S B 2 / { {V_{LSB} }^{2} }/V L S B 2 /
(3)对信号进行滤波,这样信号的功率不变,而噪声的功率只剩下了
V L S B 2 24 π × 2 π O S R = V L S B 2 12 O S R = P n o i s e O S R \frac{V_{LSB}^{2} }{24\pi} \times \frac{2\pi}{ {OSR} } = \frac{V_{LSB}^{2} }{12OSR} = \frac{P_{ {noise} } }{ {OSR} }
2 4 π V L S B 2 × O S R 2 π = 1 2 O S R V L S B 2 = O S R P n o i s e
(4)过采样的量化噪声信噪比计算如下:
SNR O S R − SNR = 10 10 P s i g n a l P n o i s e / O S R P s i g n a l P n o i s e = 10 10 O S R = 3.02 × 2 O S R \text{SNR}_{OSR}-\text{SNR}=10\log_{10}\cfrac{\cfrac{P_{signal} }{P_{noise}/OSR} }{\cfrac{P_{signal} }{P_{noise} } }=10\log_{10}{OSR}=3.02\times\log_2{OSR}
SNR O S R − SNR = 1 0 log 1 0 P n o i s e P s i g n a l P n o i s e / O S R P s i g n a l = 1 0 log 1 0 O S R = 3 . 0 2 × log 2 O S R
过采样等效N e N_eN e
6.02 × N e + 1.76 = 6.02 × N + 1.76 + 3.02 × 2 O S R N e = N + 0.5 × 2 O S R \begin{aligned}
6.02\times N_e + 1.76 &= 6.02\times N + 1.76 + 3.02\times\log_{2{ OSR} }\\[0.8em]
N_e&=N+0.5\times\log_2{OSR}
\end{aligned}
6 . 0 2 × N e + 1 . 7 6 N e = 6 . 0 2 × N + 1 . 7 6 + 3 . 0 2 × log 2 O S R = N + 0 . 5 × log 2 O S R
这样的提高的效率相当于0.5 × 2 0.5\times\log_20 . 5 × log 2
放大器到积分器,对于一个负反馈环路
输出 = 直通的信号 1 + 环路增益 = A V in 1 + A β 输出 = \frac{直通的信号}{1 + 环路增益} = \frac{AV_{\text{in} } }{1 + A\beta}
输 出 = 1 + 环 路 增 益 直 通 的 信 号 = 1 + A β A V in
那么对于这样的一个系统,我们可以观察到噪声被抑制了(1+A)倍
v = A u 1 + A + e 1 + A v = \frac{ {Au} }{1 + A} + \frac{e}{1 + A}
v = 1 + A A u + 1 + A e
对于任何一个系统,总是有延迟的
在反馈环路上增加一个延迟单元后,我们从Z变换的角度去看这个问题,一个离散的系统
V ( z ) = A U ( z ) 1 + A z − 1 + E ( z ) 1 + A z − 1 (1) V\left( z \right) = \frac{ {AU}\left( z \right)}{1 + Az^{- 1} } + \frac{E\left( z \right)}{1 + Az^{- 1} }\tag{1}
V ( z ) = 1 + A z − 1 A U ( z ) + 1 + A z − 1 E ( z ) ( 1 )
对于这个离散的系统的极点,要求所有的极点要在单位圆内,这样的系统才能稳定
z = − A , ∣ A ∣ < 1 \begin{matrix}z=-A,&|A|<1\end{matrix}
z = − A , ∣ A ∣ < 1
这样,A<1后,对噪声的抑制能力就没有了,如果将增益变为随频率变化的积分器,在DC处有infinite的增益,随着频率提高逐渐降低
A = 1 1 − z − 1 (2) A = \frac{1}{1-z^{-1} }\tag{2}
A = 1 − z − 1 1 ( 2 )
此时,将(2)代入(1)后,系统将不存在极点,解决了稳定性问题
V ( z ) = U ( z ) + ( 1 − z − 1 ) E ( z ) V(z)=U(z)+(1-z^{-1})E(z)
V ( z ) = U ( z ) + ( 1 − z − 1 ) E ( z )
STF函数等于1,而NTF是一个一阶的高通滤波器( 1 − z − 1 ) (1-z^{-1})( 1 − z − 1 )