上机实践1:DFT分析
利用Cadence环境下calculatorl中的dft函数对一个sin信号(1MHz)做频谱分析。
- 如何进入calculator界面?Tools→Calculator
- 函数 dft() 的设置:数据截取时间段、dft 点数
- 如果仿真结果不理想,建议提高仿真精度
dB20(dft(VT("/VSIN)0 1.3e-05 (1024*16) "Rectangular" 1 "default" 1.0))
如何提高 Tran 仿真精度?
■ 仿真精度不足时,tran时间步进太大,波形不标准,DFT自然效果不好。
上机实践2:50%占空比的方波DFT
利用Cadence环境下calculatorl中的dft函数对一个vpulse信号(1MHz)做频谱分析。
■ 基波幅度为 1 的话,3次谐波幅度1/3,5次谐波幅度1/5……
上机实践3:用sin信号合成方波
■ 用多个频率幅度不同的 vsin 信号源串联在一起,合成方波。
上机实践4:频谱泄露
上机实践5:用FFT计算理想ADC的动态特性
clear;clc;
N = 1024;
M = 37;
fin = 1e6;
fs = N*fin/M;
Ts = 1/fs;
t = 0:Ts:(N-1)*Ts;
LSB = 2/2^10;
vin = sin(2*pi*fin*t);
vin = round(vin/LSB)*LSB; % vin/LSB四舍五入
figure(1);
plot(t,vin);
s = fft(vin);
s = abs(s) + 1e-6;
s_dB = 20*log10(s);
s_dB = s_dB - max(s_dB);
s_dB = s_dB(1:N/2);
figure(2);
f = (0:1:N/2-1)*fs/N;
plot(1:N/2,s_dB);
% 计算SNR
sig_bin = M+1; % 第一根是DC,信号谱线是第 (M+1) 根
s = s(1:N/2);
s = s.^2;
power_sig = s(sig_bin);
power_noise = sum(s) - power_sig;
snr = 10*log10(power_sig/power_noise)
enob = (snr - 1.76) / 6.02