SAR教程系列7——在cadence中用Spectrum工具FFT仿真ADC的ENOB、SNR等动态性能指标

首先在仿真之前,你得有一个ADC。然后是思考如何仿真的问题,如何加激励,如何使用相关工具查看仿真结果。假定你有一个可以仿真的ADC,大致经过下列步骤可以得到ADC的相关动态性能指标。

第一步:在ADC后面接一个理想的DAC。

第二步:确定如何加激励(满足相干采样情况下,设定输入信号频率)。此步为重点

第三步:使用相关工具进行频谱分析,查看结果。

第四步:把参数送到ADE L中的OUTPUT中查看

第一步:修改理想DAC的VerilogA代码

至于要在ADC后面加一个理想DAC,对于没有仿真ADC经验的可能不知道。可以参考何乐年老师的《逐次逼近模/数转换器(SAR ADC)设计与仿真》。

那么理想DAC自己写VerilogA吗?有些资料(如陈铖颖的《CMOS模拟集成电路设计与仿真实例——基于Cadence ADE》)的附录中会把代码贴出来,何老师这本书也贴出来了,还贴在正文部分,并且代码中不仅注释有误,其它地方也有错误。我觉得这一点都不友好!对于一个没有交流途径的人来说还以为要自己敲代码呢!!

其实Cadence就自带的理想DAC的代码。

位于以下Library中
在这里插入图片描述
至于要修改到自己需要的位数,也很简单,相信有一定基础的都可以自己改过来。

下图是源代码

示例中是 module dac_8bit_ideal,何乐年书中居然这个都没有改过来,当然这都无伤大雅。

有个感慨就是这个示例程序居然是1997年,20多年过去,由此也可见中国与世界的差距!!!
在这里插入图片描述

第二步:确定相关输入频率及仿真

这一步是比较重要的一步,也是最容易出错的一步。

重点参考文章:ADC FFT仿真基础_Klein N的博客-CSDN博客_adc fft

我这里就不复制了,以一具体实例,按步骤说明如何操作。

首先要知道以下几个核心要点:

频谱分析工具DFT,在样本点为时有个高效的方法叫FFT
采样若满足相干采样,则不需要加窗函数就可以分析
满足相干采样时,采样频率、信号频率、采样周期数M、采样点数N要满足以下关系:
上面这个关系是进行一切设置的基础。通常取M为质数且奇数,如3、5、13等,N取
下面就重点说明根据上面的公式进行相关的计算:

一、确定采样率

设ADCCLK的周期为40ns,即频率为25MHz,设置采样周期为8CLK,转换周期是12CLK,因此采样时间间隔为20CLK,从而采样率为1/(20*40n)=1.25MSPS(1.25MHz)

(若采样周期为4CLK,采样率为25M/16=1.5625MSPS)

也就是ADCCLK的频率除以采样周期+转换周期。

二、确定采样点N和周期数M

采样点取2^n,这样可以进行FFT分析。此处取M=3,N=128

三、确定AC分析的输入频率fin=fs*M/N

根据采样定理,输入频率要小于1.25M/2=0.625MHz=625KHz。

若M=3,取N=128,则fin=1.25M*3/128=29.296875KHz

四、确定仿真时间

如果采样M个周期,每个周期时间1/fin,则:

T=M/fin=N/fs=128/1.25M=102.4us。仿真时,稍微多点时间,保证后面分析时,取数据取在非跳变处。比如仿真110us。

由这个公式也可以看出,在采样率确定的情况下,N越大需要的仿真时间越长,而与输入信号频率无关。

至此,已经考虑到有如何加激励,设置多长的仿真时间的问题。

接下来就是在电路图做好设置,就可以仿真啦。

如果仿真时间比较长,比如取4096个点,那仿真时间可能无法接受。可以考虑使用多核

在ADE窗口中:Setup>Environment,弹出如下窗口,加上:

+mt=20 +aps

在这里插入图片描述
仿真完成后,波形大概如下:

从图中可以看出,正弦信号经过ADC转换,再经过理想DAC的转换,基本靠谱。
在这里插入图片描述

第三步:设置参数并查看结果

得到瞬态仿真波形后,接下来就是对信号进行频谱分析。

分析方法可以采用:

1.Cadence Spectrum工具
2.MATLAB计算
Spectrum工具的调用,可以参考:cadence-virtuoso中的FFT分析 - 知乎

这里要重点说明的是开始时间、结束时间、采样点数。

比如此文中,采样点是128个,采样周期是3个,采样时间是102.4us

因此在设置时,首先选择一个稳定的点,比如本文选的1.6us,那么结束时间就为102.4+1.6=104us

再在下面的采样点中输入128,那么灰色的采样率将会与你预设的一致!!!

如下图所示。
在这里插入图片描述
在这里插入图片描述

第四步:把参数送到ADEL中的OUTPUT中查看

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588056.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言编写Linux的Shell外壳

目录 一、输出命令行 1.1 了解环境变量 1.2 获取用户名、主机名、当前路径 1.3 缓冲区改进MakeCommandLine 二、获取用户命令 2.1 读取函数的选择 2.2 细节优化 2.3 返回值 三、指令和选项分割 3.1 strtok 函数 3.2 分割实现 四、执行命令 4.1 fork 方法 4.2 进…

HarmonyOS 应用开发之通过数据管理服务实现数据共享静默访问

场景介绍 典型跨应用访问数据的用户场景下,数据提供方会存在多次被拉起的情况。 为了降低数据提供方拉起次数,提高访问速度,OpenHarmony提供了一种不拉起数据提供方直接访问数据库的方式,即静默数据访问。 静默数据访问通过数据…

精彩解读:短链接应用全方位探究

title: 精彩解读:短链接应用全方位探究 date: 2024/4/2 17:44:50 updated: 2024/4/2 17:44:50 tags: 短链接定义映射算法原理简洁美化优势工作流程解析安全隐私保护商业营销应用技术趋势发展 1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务&#…

内网横向——域渗透之黄金票据复现

kerberos 协议 Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。 在Kerberos协议中主要是有三个角色的存在: 访问服务的Client(以下表述为Client 或者用…

redis链表结构和简单动态字符串(SDS)

1.双向链表 redis中的普通链表是双向链表。通过链表节点结构体可知有全驱节点和后继节点。 1.链表节点和链表 //adlist.h typedef struct listNode {struct listNode *prev; //前驱节点struct listNode *next; //后继节点void *value; //节点值 } list…

33-4 XXE漏洞 - xxe判断

判断是否存在 XXE 攻击漏洞: 1)有源码情况: 查找相关函数,如 simplexml_load_string(),用于检测 XML 是否会被解析。 2)无源码情况: 抓包检查报文是否包含 XML 传参,如果是 XML …

Java项目:86 springboot电影评论网站系统设计与实现

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本电影评论网站管理员和用户。 管理员功能有个人中心,用户管理,电影类别管理,电影信息管理,留…

CLIP 图文检索,相似度计算

CLIP 是OpenAI提出的神经网络,它可以从自然语言监督中有效地学习视觉概念。 CLIP 可以应用于任何视觉分类基准,只需提供要识别的视觉类别的名称,类似于 GPT-2 和 GPT-3 的“零样本”功能。 相关paper 用法可以参考github 这里举几个使用CLI…

时间管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

JVM 组成

文章目录 概要JVM 是 Java程序的运行环境(java二进制字节码的运行环境)JVM 的主要组成部分运行流程:程序计数器堆元空间方法区常量池运行时常量池 概要 JVM 是 Java程序的运行环境(java二进制字节码的运行环境) 好处&…

在linux下conda 创建虚拟环境失败的解决方法

报错内容一&#xff1a; Solving environment: failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/conda-forge/noarch/repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are…

关系型数据库与非关系型数据库、Redis数据库

相比于其他的内存/缓存数据库&#xff0c;redis可以方便的实现持久化的功能&#xff08;保存至磁盘中&#xff09; 一、关系数据库与非关系型数据库 1.1 关系型数据库 一个结构化的数据库&#xff0c;创建在关系模型基础上一般面向于记录 SQL语句 (标准数据查询语言) 就是一种…