我的问题是,如果一个电路控制时序的周期是1s,但是采样频率是0.5s,而且在0.5s和1s处输出还是不一样的,那怎么去理解差分方程,怎么去理解Z传递函数,以下我分析实现了一种求解方法

(1)为了求每一个 PHASE2(积分相位)的输出,列出“积分-采样-积分”的过程,PHASE2 (n) → PHASE1(n+0.5) → PHASE2(n+1) ...
⎩⎪⎨⎪⎧Phase2 -> Phase1:Phase1 -> Phase2:[Vin(n+0.5)−0]⋅Cs1=−[Vout(n+0.5)−Vout(n)]⋅Cint[0−Vin(n+0.5)]⋅Cs1=−[Vout(n+1)−Vout(n+0.5)]⋅(Cint+Cs2)
联立,消去 PHASE1 时刻的 Vout(n+0.5),得到如下结果,
Vout(n+1)=Vin(n+0.5)⋅2+Vout(n)
Z变换得到传递函数:
Hint(z)=−211−z−1z−0.5⟹Hint(z2)=2z2−2−z
(2)为了求每一个 PHASE1(采样相位)的输出,还是靓丽方程,消去 PHASE2 时刻的 Vout(n+1),得到:
Vout(n+1.5)=Vin(n+0.5)⋅2+Vout(0.5)−Vin(n+1.5)
Z 变换得到传递函数:
Hsample=1−z−1−1+0.5z−1⟹Hsample(z2)=z2−1−z2+0.5
因为我的采样周期是PHASE1+PHASE2的和,Z变换分析的信号只能是PHASE1或者PHASE2,不能集合求解,那如何求出PHASE1+PHASE2的整合起来的递推公式呢?如何求解这个差分方程呢?
我不会直接求解,只能将 Hint 和 Hsample 整合起来:首先要变化采样率,简单的让 ejωTs 变成 ejω2Ts,也就是让 z 变成 z2,但这并不会让插的值等于0。接着我分别让 Hint(z2) 和 Hsample(z2) 在时域乘以一个的方波,最后求和就可以得到完整的 PHASE1+PHASE2 的传递函数了。

1)提高采样率,但是插入的点的值还是上一个的值,不是0,Hint(z2) 和 Hsample(z2) 的波形:信号是离散的,只有圈圈才是真实的信号。

2)为了让插的值为0,乘以一个方波,得到 Hint(z2)×0101 和 Hsample(z2)×1010;

3)将两者加起来,得到完整的传递函数

4)我在cadence里做了同样的仿真,结果一致


直接递推求解的方法
(1)还是列出“积分-采样-积分”的过程,PHASE2 (n) → PHASE1(n+0.5) → PHASE2(n+1) ...
⎩⎪⎨⎪⎧Phase2 -> Phase1:Phase1 -> Phase2:[Vin(n+0.5)−0]⋅Cs1=−[Vout(n+0.5)−Vout(n)]⋅Cint[0−Vin(n+0.5)]⋅Cs1=−[Vout(n+1)−Vout(n+0.5)]⋅(Cint+Cs2)
(2)观察 Phase2 –> Phase1,PHASE2 (n) → PHASE1(n+0.5) 这个过程,得到 Hsample(z)
Vinz0.5=−Vout(z0.5−1)⟹Hsample(z)=VinVout=−1−z−0.51
H1(z) 中 z−0.5 说明采样会发生在 Ts⁄2,意味着我们的采样间隔不是 Ts,而是 Ts⁄2,得到
Hsample(z2)=1−z−1−1=z−1−z
(3)观察 Phase1– Phase2,PHASE1(n+0.5) → PHASE2(n+1) 这个过程,得到 H2(z)
−Vinz0.5=−Vout(z−z0.5)×2⟹Hint(z)=211−z−0.5z−0.5
同理,H2(z) 中 z−0.5 说明采样会发生在 Ts⁄2,意味着我们的采样间隔不是 Ts,而是 Ts⁄2 ,得到
Hint(z2)=211−z−1z−1=z−10.5
(4)接下来是考虑如何把 Hsample(z2) 和 Hint(z2) 结合起来的问题
- 首先这已经是线性系统了,每一个时刻的输出点,是 Hsample(z2) 和 Hint(z2) 共同响应的结果。
- 但是这里是有采样-积分-采样…交替的过程的,所以还要每个传递函数的采样速率提高一倍,以完成交替求和的过程?得到 Hsample(z4) 和 Hint(z4)
- 所以这里的 Hint(z4) 的响应其实是要先有 Hsample(z4) 响应的,所以每一个 Hint(z4) 与 Hsample(z4) 响应线性叠加时,加的是上一时刻 H1(z4),也就是 z−1Hsample(z4),
这样最终表达式为:
H(z)=z−1Hsample(z4)+Hint(z4)=−z−1z2−1z2+z2−10.5=z2−1−z+0.5
(5) Simulink 验证:与之前方法及 Cadence 结果一致


给该系统施加一个冲击响应(黄色),忽略输出的初始零状态,输出(蓝色)的变化是有规律的

回忆之前的传递函数
H(z)=z−1Hsample(z4)+Hint(z)=1−z−2−z−1+1−z−20.5z−1=1−z−2−z−1+0.5z−2
尝试如何直接看出规律?时刻 1 3 4 5 9 的这些 数值=-1 的项满足如下关系
VinVout=1−z−2−z−1⟹Vout(n)=Vout(n−2)−Vin(n−1)
clear;clc;
Ci=1;Cf=1;Cm=10;A=1000;
syms vi vo
%syms Cm Ci Cf A
syms vx vox w
z=exp(1j*w)
eq1 = (0-vi*z^0.5)*Ci + (0-vo*z^0.5/(-A))*Cm + (vo*z^0.5/(-A)-vo*z^0.5)*Cf ...
== (vx-0)*Ci + (vx-vox/(-A))*Cm + (vx-vox)*Cf
eq2 = (vo*z^0.5/(-A)-0)*Cm == (vox/(-A)-vx)*Cm
eq3 = (vox/(-A)-vx)*Cm + (vx-vox)*Cf == (vo*z^1.5/(-A)-0)*Cm + (vo*z^1.5/(-A)-vo*z^1.5)*Cf
[vo_ans,~,~] = solve([eq1,eq2,eq3],[vo,vox,vx])
eq4 = (0-vi*z^0.5)*Ci + (0-vo*z^0.5/(-A))*Cm + (vo*z^0.5/(-A)-vo*z^0.5)*Cf ...
== (vx-0)*Ci + (vx-vo*z^0.5/(-A))*Cm + (vx-vo*z^0.5)*Cf
eq5 = (vo*z^0.5/(-A)-0)*Cm == (vo*z^0.5/(-A)-vx)*Cm
[vo2_ans,~] = solve([eq4,eq5],[vo,vx])
TF0=vo2_ans/vi *z^-0.5
TF1 = abs(vo_ans/vi)
TF11 = abs(vo_ans/vi+vo2_ans/vi*z^-0.5)
TF2 = abs( (Ci/Cf) * (z^-1) / (1+1/A*(1+Ci/Cf)-(1+1/A)*(z^-1)) )
fplot(TF1,[pi/100000,pi])
hold on;
fplot(TF2,[pi/100000,pi])
hold on;
fplot(TF11,[pi/100000,pi])
set(gca,'XScale','log')
set(gca,'YScale','log')
legend({'Enhancement','Normal','Enhancement2'})
xlim([0 19379])
ylim([0 72193])