|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
用delsig工具包做sigma-delta的系统仿真,出现了一些问题,搞不明白,发个贴大家都来讨论一下。
1.在delta-sigma数据转换器中的讲解设计噪声函数的时候一般用工具包里面的synthesizeNTF函数,但我看了一下,好像里面的量化器只有默认的一位,如果我要做多位的量化器仿真,不是没着了吗?还好,后面一个函数clans据说能够进行多位仿真,于是我写了一下程序:
order=3;
OSR=64;
opt=1;
Q=3;
%H=synthesizeNTF(order,OSR,opt); 注:这行如果用来替代下面一行,是可以用的
H=clans(order,OSR,Q,0.95,opt);
figure(1);
plotPZ(H);
f=linspace(0,0.5,1000);
z=exp(2*pi*f);
figure(2);
plot(f,dbv(evalTF(H,z)));
sigma_H=dbv(rmsGain(H,0,0.5/OSR))
用clans仿真,调用的时候出现了一个错误,如下:
??? Error using ==> fmincon
FMINCON cannot continue because user supplied nonlinear constraint function
failed with the following error:
Error using ==> rfinputs
Not supported for models with complex data.
Error in ==> clans6 at 35
x = fmincon(@(x)dsclansObj6a(x,order,OSR,Q,rmax,Hz),x,...
Error in ==> clans at 19
NTF=clans6(order,OSR,Q,rmax,opt);
Error in ==> NTF_test at 6
H=clans(order,OSR,Q,0.95,opt);
把fmincon函数调用的地方贴出来:
% Run the optimizer
options = optimset('TolX',1e-6, 'TolFun',1e-6, 'TolCon',1e-6, 'MaxIter',1000 );
options = optimset(options,'Display','off');
options = optimset(options,'Diagnostics','off');
options = optimset(options,'LargeScale','off');
x = fmincon(@(x)dsclansObj6a(x,order,OSR,Q,rmax,Hz),x,...
[],[],[],[],[],[],@(x)dsclansObj6b(x,order,OSR,Q,rmax,Hz),options);
NTF = dsclansNTF(x,order,rmax,Hz);
return
function f=dsclansObj6a(x,order,OSR,Q,rmax,Hz)
% Objective function for clans; Optimization Toolbox version >= 6
% f is the magnitude of H at the band-edge
H = dsclansNTF(x,order,rmax,Hz);
f = abs(evalTF(H,exp(1i*pi/OSR)));
return
function [g,g_eq]=dsclansObj6b(x,order,OSR,Q,rmax,Hz)
% Constraint function for clans; Optimization Toolbox version >= 6
% g =||h||_1 - Q
H = dsclansNTF(x,order,rmax,Hz);
g = sum(abs(impulse(H,100))) -1 - Q;
g_eq = [];
return
有没有知道这是什么问题啊?
2.还有一个小问题,那个SDtool中有个ADC-DAC模块,里面有个比较器的个数,怎么将其余量化器的位数联系起来啊?? |
|