首先将cadence中波形导出,为matlab程序备用。(这里的cadence波形可以是经过理想DAC后还原的一个输出波形,也可以是未还原的几组数字信号,因为测试需要,我采用的是后一种。)
具体的导出方法是,选中波形曲线,在菜单栏中选择Trace——Export,在最下面可以选择开始和结束点以及步长。即可产生数据列表,默认为.csv文件。(Matlab可以处理.csv文件,但是为了速成,套用网上找来的程序模板,我把导出的数据复制后新建了.txt文本格式)

%F:\matlab_work\ADC_8bit_test6.m
%F:\matlab_work\ADC_8bit_1024_249M.txt
%8 bits 1Gsps ADC vin=249.0234375MHz,1024采样点(相干性采样)
%by.HZY
clear all;clc;close all;
numpt=1024;% fclk=455/16/14;% a=textread('dds_data_out.txt','%s')';%以字符形式打开文件
% a=dlmread('sample_data.txt','%s')';%以字符形式打开文件
a=dlmread('ADC_8bit_1024_249M.txt','%s')';%以字符形式打开文件% for i = 1:numpt
% v1(i) = bitxor(v1(i),15872);
% end%v1 is a column vector(1:numpt), and count is its length
%v1=dlmread('F:\pelican_ADC_test\vjtag_prj\data_analysis\single_tone.txt','');
%fclose(fid);
%change v1 into a row vectoradc_data=a';%采样得出的数据形成的矩阵vin=1;d7=2;d6=3;d5=4;d4=5;d3=6;d2=7;d1=8;d0=9;%标示样本矩阵的列
vref=0.512;
fclk=1e9;%A/D转换器的采样频率
adc_bit=8;
for i=1:1:numpt
dout(i)=(adc_data(i,d7)/2+adc_data(i,d6)/4+adc_data(i,d5)/8+adc_data(i,d4)/16+adc_data(i,d3)/32+adc_data(i,d2)/64+adc_data(i,d1)/128+adc_data(i,d0)/256)*vref;%通过转换器出来的结果,恢复原来的波形doute(i)=dout(i)-1;%将正弦波的共模电平偏置为0
%doute(i)=dout(i)-mean(dout(i));
end
figure(3)
plot(doute);
doutw=doute.*hanning(numpt)';%加汉宁窗
%doutw=doute;
dout_spect=fft(doutw);%进行FFT变换,然后利用下面的算法求出SNR、SINAD、SFDR
dout_dB=20*log10(abs(dout_spect));
maxdB=max(dout_dB(1:numpt/2));
x=((0:numpt/2-1).*fclk/numpt)/1000000; % fclk/numpt为频谱分辨率,即frequency bin。因为FFT频谱图关于中心对称所以只要分析一半的频谱图即可
y1=dout_dB(1:numpt/2)-maxdB;
figure(1)
plot(x,y1);
axis([0,520,-120,5]);
grid off;
title('1024-Samples FFT spectrum');
xlabel('Frequency (kHz)');
ylabel('Magnitude (dB)');%画出FFT的幅频特性曲线figure(2)
plot(dout_dB);fin=find(dout_dB(1:numpt/2)==maxdB);%找出幅度最大的频率点
span=max(round(numpt/200),5);%round函数四舍五入
%span=10;
spanh=2;
spectp=(abs(dout_spect)).*(abs(dout_spect));%幅度的平方
Pdc=sum(spectp(1:span));%spectp函数
Ps=sum(spectp(fin-span:fin+span));%信号的幅度平方和
Fh=[];
Ph=[];
for har_num=1:10%寻找1至10次谐波分量
tone=rem((har_num*(fin-1)+1)/numpt,1);%rem(a,b)为a除以b取余数
if tone>0.5
tone=1-tone;
end
Fh=[Fh tone];
har_peak=max(spectp(round(tone*numpt)-spanh:round(tone*numpt)+spanh));
har_bin=find(spectp(round(tone*numpt)-spanh:round(tone*numpt)+spanh)==har_peak);
har_bin=har_bin+round(tone*numpt)-spanh-1;
Ph=[Ph sum(spectp(har_bin-1:har_bin+1))]; %计算谐波分量
end
Pd=sum(Ph(2:5));
Pn=sum(spectp(1:numpt/2))-Pdc-Ps-Pd;
format;
SNR=10*log10(Ps/Pn)
SINAD=10*log10(Ps/(Pn+Pd))
SFDR=10*log10(Ph(1)/max(Ph(2:10)))
ENOB=(SINAD-1.76)/6.02
  • Frequency/FFT bins 说明:

【ADC】分析ADC动态参数的MATLAB代码相关推荐

  1. 【图像隐藏】基于DCT、DWT、LHA、LSB的数字图像信息隐藏系统含各类攻击和性能参数附matlab代码

    1 内容介绍 1.1 课题研究的目的和意义 自二十世纪九十年代以来,网络在我们的生活中得到了快速的普及,网络几乎存 在于家家户户中,特别是一些用于交流的软件自诞生以来更是为我们的生活都带来了 极大的便 ...

  2. 动态矩阵控制 MATLAB代码

    1 %预测控制书上的P79例5-1 得到的输出曲线趋近于无穷 不对 不知错误在哪里 pid控制器也是趋近于无穷大 2 %不明白采样周期Ts怎么用,什么意思??? 3 %将阶跃响应 离散状态空间模型的采 ...

  3. 层次分析法(AHP)——matlab代码实现

    层次分析法(AHP)的主要思想是根据研究对象的性质将要求达到的目标分解为多个组成因素,并按组成因素间的相互关系,将其层次化,组成一个层次结构模型,然后按层分析,最终获得最高层的重要性权值.层次分析法把 ...

  4. AHP层次分析法求解过程(matlab代码)

    查看全文 http://www.taodudu.cc/news/show-6469878.html 相关文章: Matlab实现PSO算法(附上6个完整仿真源码) 计算机组成原理 扩展指令的操作码,[ ...

  5. 梯度倒谱matlab程序,MFCC梅尔倒谱参数及matlab代码

    右端就会是连续的,那就可以不需要乘上汉明窗了.但是在实作上,由于基本周期的计算会需要额外的时间,而且也容易算错,因此我们都用汉明窗来达到类似的效果. 5.三角带通滤波器(Triangular Band ...

  6. 主成分分析 (PCA) 和独立成分分析 (ICA)附Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步进步,matlab项目目标合作可私信.

  7. HDR高动态压缩【MATLAB代码】

    本文给出的是高动态范围图像压缩的程序,即HDR转换为LDR,其中程序中用到的hdr格式的高动态范围图像下载地址为http://download.csdn.net/detail/majinlei121/ ...

  8. 让书写的Matlab代码运行更快 Recipes for Faster Matlab Code

    Matlab 在 Research 中用得非常多,确实也是非常方便实用,只是有一个问题就是写 Matlab 代码的时候经常需要用一些比较奇怪独特的方式来思考和处理问题,否则写出来的代码虽然同样能工作, ...

  9. Rhino gha开发如何添加动态参数

    此文章来自 http://www.grasshopper3d.com/forum/topic/listForContributor?user=30xopnbe87ou3 Grasshopper3d的官 ...

最新文章

  1. PCL的PNG文件和计算点云重心
  2. Travis CI : 最小的分布式系统(一)
  3. 分拆之后又有大动作,惠普的下一步怎么走?
  4. spring 学习—spring的相关概念(01)
  5. fabio负载均衡入门
  6. 【设计模式】装饰器模式的使用
  7. sonar 规则之漏洞类型
  8. 对一句正则表达式的理解
  9. Java并发编程之并发容器ConcurrentHashMap(JDK1.7)解析
  10. android启动其他app的服务器,Android中通过外部程序启动App的三种方法
  11. 设计模式 轮子哥的论点
  12. android菜单详解二:选项菜单
  13. 矩阵奇异值分解(SVD)
  14. Centos yum 命令行 安装KDE Desktop
  15. ESP32-CAM——内网穿透教程
  16. 第三篇——哈希值校验工具
  17. C语言计算个人所得税
  18. websocket连接不上
  19. dna计算机开发,科学家正在开发DNA电脑
  20. VS(SQL Server一样)设置护眼背景色

热门文章

  1. 三种方法完美绕过安全狗2015最新版
  2. Win10 Edge浏览器,复制网址卡死
  3. pythonfor三角函数_Python入门之三角函数全解【收藏】
  4. knn算法python代码_KNN算法原理(python代码实现)
  5. 云服务器使用初体验博客征文获奖通知
  6. 大脑如同编程,bug如何修复?
  7. Gym报错 The observation returned by the `reset()` method is not contained with the .......
  8. 【2021】9月遭遇苹果审核心路历程
  9. vue 拖拽div 自定义div拖拽
  10. MySQL列转行函数