微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > 求教大神关于sigma-delta调制器行为仿真遇到的问题

求教大神关于sigma-delta调制器行为仿真遇到的问题

时间:10-02 整理:3721RD 点击:

求教大神们,我按照Understanding Sigma Delta data convertors书设计了CIFF结构的二阶调制器,得出了a g b c参数,然后用SDtoolbox_Piero Malcovati这个行为仿真工具箱建立了行为仿真模型,在仿真时遇到了些问题:我的带宽是1KHz,过采样率为512,采样电容83fF,运放饱和电压设计的为3V,增益为80dB,GBW=200MHz,SR=20V/us;仿真时当输入幅值比较大时比如2.85V,只有输入信号频率为带宽临界频率1KHz时SNR才有120dB左右,其他频率点SNR都非常低,但当输入信号幅值比较小时,如0.15V,在整个频率带内SNR都比较高,位数也能达到16bits以上;疑问:
1,为何在输入信号幅值比较高时SNR下降如此厉害了,从图7可见,在输入为1V时SNR已经下降的很厉害了?产生这个的原因是结构没设计好?还是行为仿真模型不对?或者是所使用的行为仿真工具中的模型不准?因为在模型里已经设置运放饱和电压为3V了。
2,在仿真中发现同样的电路和参数运行几次得到的结果有差别,有时差别还比较大,产生这个的原因会是行为模型中噪声用随机函数来模拟产生的缘故吗?
3,按照红皮书确定了电路结构和系数后,接下来要进行行为仿真,行为仿真模型是自己设计,还是利用一些专家开发的现成的工具箱里的模型?比如SDtoolbox_Piero Malcovati和SDT_Simona Brigati行为仿真工具箱。
4,利用MATLAB行为仿真定下各个子模块电路的spec后,接下来应该怎样做了?是否需要在cadence里用verilog-A建模,进行进一步的仿真分析?还是直接进行晶体管级设计?
问题比较多,还望大神不厌其烦帮我解答呀,拜谢了!

行为模型

仿真程序
clear
t0=clock;
% ************************************************************************
% Global variables
% ************************************************************************
bw=1e3;
% Base-band
R=512;
Fs=R*2*bw;
% Oversampling frequency
Ts=1/Fs;
N=2^14;
% Samples number
nper=2;
Fin=nper*Fs/N;
% Input signal frequency (Fin = nper*Fs/N)
%Ampl=2.85;
% Input signal amplitude [V]
Ampl=0.15;
Ntransient=10;
%
%
k=1.38e-23;
% Boltzmann Constant
Temp=300;
% Absolute Temperature in Kelvin
Cs=83e-15;
% Integrating Capacitance of the first integrator
alfa=(1e4-1)/1e4;
% A=Op-amp finite gain (alfa=(A-1)/A -> ideal op-amp alfa=1)
Amax=3;
% Op-amp saturation value [V]
sr=20e6;
% Op-amp slew rate [V/s]
GBW=200e6;
% Op-amp GBW [Hz]
noise1=0;
% 1st int. output noise std. dev. [V/sqrt(Hz)]
%delta=8e-9;
% Random Sampling jitter (std. dev.)
delta=0;
NCOMPARATORI=1;% one bit quantizer
match=9e-10;% Realistic value, but not related to any technology (because of non disclosure agreement)
% Modulator coefficients
a1 = 1.9139;
a2 = 5.8782;
b1 = 0.6459;
c1 = 0.6459;
c2 = 0.1244;
g1 = 1.0091e-004;
finrad=Fin*2*pi;
% Input signal frequency in radians

% ************************************************************************
% Open Simulink diagram first
% ************************************************************************
open_system('TwoOrderDesignMdl')
options=simset('InitialState', zeros(1,3), 'RelTol', 1e-3, 'MaxStep', 1/Fs);
sim('TwoOrderDesignMdl', (N+Ntransient)/Fs, options);
% Starts Simulink simulation
% ************************************************************************
%Calculates SNR and PSD of the bit-stream and of the signal
% ************************************************************************
w=hann_pv(N);
f=Fin/Fs;
% Normalized signal frequency
fB=N*(bw/Fs);
% Base-band frequency bins
yy1=zeros(1,N);
yy1=yout(2+Ntransient:1+N+Ntransient)';
ptot=zeros(1,N);
[snr,ptot]=calcSNR(yy1(1:N),f,1,fB,w,N);
Rbit=(snr-1.76)/6.02;
% Equivalent resolution in bits

仿真所得结果如下



图1:信号频率125Hz,幅值0.15V



图2:信号频率973Hz,幅值0.15V



图3:信号频率1KHz,幅值0.15V



图4:信号频率125Hz,幅值2.85V



图5:信号频率937Hz,幅值2.85V



图6:信号频率1KHz,幅值2.85V



图7:信号频率125Hz,幅值1V

后面的文字为啥都加横线了?

我不是做delta-sigma的,但看你第一个问题好像已经用管子在搭电路了? 你在系统设计的时候就应该找到你的Maximum Signal Amplitude (MSA),这是重要的系统参数之一,超过这个幅度,你的系统就会不稳定

我也在搞这个呀

我来尝试回答一下
1. 输入太大积分器会饱和造成snr下降, 可以看看understanding的图3.8. 一般测试的时候加的是-6dB的信号
2. ... 看不到图, 无法解释
3. 自己搭用Schreier的toolbox+simulink模型最好
4. MATLAB比较适合计算系数, 在晶体管级设计前最好搭个Verilog-A模型

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top