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.mzph.cn/news/788641.shtml

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

相关文章

idea快速找到maven中冲突的依赖,解决依赖冲突

红色实线:冲突,红色虚线:依赖于同一个包的多版本 选择包,右键Excluede,排除 问题原因: 一个项目中需要jar包A和jar包B,而jar包A和jar包B都需要依赖jar包C,但A需要1.2.16版本的C,B需要1.2.17版本的C,这时候就可能会产…

基于MPPT的风力机发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1风能与风力发电机模型 4.2风力机功率特性与最大功率点 4.3 MPPT 5.完整工程文件 1.课题概述 基于MPPT的风力机发电系统simulink建模与仿真。MPPT使用S函数编写实现。基于最大功率点跟踪&#xff08…

Python快速入门系列-8(Python数据分析与可视化)

第八章:Python数据分析与可视化 8.1 数据处理与清洗8.1.1 数据加载与查看8.1.2 数据清洗与处理8.1.3 数据转换与整理8.2 数据可视化工具介绍8.2.1 Matplotlib8.2.2 Seaborn8.2.3 Plotly8.3 数据挖掘与机器学习简介8.3.1 Scikit-learn8.3.2 TensorFlow总结在本章中,我们将探讨…

构建第一个ArkTS应用(FA模型)

创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发(本文以应用开发为例,Atomic Servi…

权限管理系统【BUG】

1.1.简介 忙里偷闲,学点Java知识。越发觉得世界语言千千万,最核心的还是思想,一味死记硬背只会让人觉得很死板不灵活,嗯~要灵活~ 1.2.问题 permission.js:37 [Vue warn]: Error in render: "TypeError: Cannot read prope…

docker + miniconda + python 环境安装与迁移(简化版)

本文主要列出从安装dockerpython环境到迁移环境的整体步骤。windows与linux之间进行测试。 详细版可以参考:docker miniconda python 环境安装与迁移(详细版)-CSDN博客 一、docker 安装 略过,参见详细版or其他教程 二、dock…

Nginx反向代理和缓存

一、Nginx反向代理 1.调度和代理的区别: 1.调度基于内核层面,代理基于应用层面 2.代理必须实现一手托两家 3.调度不需要监听任何端口,不需要工作任何应用程序,代理需要工作和上游服务器一模一样的进程 4.调度没有并发上限&am…

django-haystack,具有全文搜索功能的 Python 库!

目录 前言 安装与配置 全文搜索基础 搜索引擎配置 索引配置 搜索视图与模板 过滤器与排序 自定义搜索逻辑 应用场景 1. 电子商务网站的商品搜索 2. 新闻网站的文章搜索 3. 社交网站的用户搜索 4.企业内部系统的文档搜索 总结 前言 大家好,今天为大家分享…

详解Qt中使用线程

详解Qt中使用线程 Qt中的线程相关知识涵盖了线程创建、管理、通信以及线程安全等方面。下面将详细讲解这些知识点,并提供对应的示例代码。 线程创建与管理 QThread类 Qt通过QThread类来创建和管理线程。要创建一个新的工作线程,通常有两种方法&#…

【项目新功能开发篇】需求分析和开发设计

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

vue 加 websocket 聊天

<template><div style="height: 100%; width: 100%; background-color: #fff"><div class="wrap"><!-- 头部 --><div class="titleBox"><imgsrc="@/assets/image/avatar.png"style="argin: 10p…

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序…

Android adb 常用命令

以下是一些常用的adb&#xff08;Android Debug Bridge&#xff09;命令列表&#xff1a; 连接设备&#xff1a; adb devices&#xff1a;列出已连接的 Android 设备。adb connect <设备IP地址>&#xff1a;通过TCP/IP连接到设备。adb disconnect <设备IP地址>&…

SpringBoot多级多模块聚合项目下maven打包报‘packaging‘ with value ‘jar‘ is invalid.

问题场景&#xff1a; SpringBoot多级多模块项目中部分pom文件报红&#xff0c;mvn clean时报错&#xff1a;‘packaging’ with value ‘jar’ is invalid. Aggregator projects require ‘pom’ as packaging. 项目背景 项目是一个多级多模块项目&#xff0c;简单分为&…

【系统架构设计师】- 知识点汇总(易错总结)

—————————————————————————————————— 一、函数依赖的推理规则&#xff1a; 1、自反律&#xff1a;若Y⊆X⊆U&#xff0c;则X→Y在R上成立。 2、增广律&#xff1a;若X→Y在R上成立&#xff0c;且Z⊆U&#xff0c;则XZ→YZ在R上也成立。 3、传…

Vue-Next-Admin:适配手机、平板、PC的开源后台管理模板

摘要&#xff1a;随着移动设备和PC的普及&#xff0c;为了满足不同设备的需求&#xff0c;开发一个能够自适应手机、平板和PC的后台管理系统变得至关重要。本文将介绍一个基于Vue3.x、Typescript、Vite、Element Plus等技术的开源模板库——Vue-Next-Admin&#xff0c;帮助开发…

FebHost:人工智能时代的新宠儿.AI域名

近年来,人工智能技术在各行各业迅猛发展,正在深刻改变着我们的生活。作为AI领域的专属域名,.AI域名正成为越来越多企业和个人的首选。 那么,.AI域名到底是什么呢?它是一种特殊的顶级域名(Top-Level Domain, TLD),于2013年由 安哥拉政府正式退出。与其他通用顶级域名如.com、.…

华为ensp路由器模拟ftp服务器访问

众所周知ensp的pc只有ping功能&#xff0c;ssh、telnet、ftp都无法实现&#xff0c;所以想实现需要更换为路由器 R1需要FTP到server的ftp服务 server的FTP配置就这些命令&#xff0c;主要的是路径&#xff0c;然后在网络可达的情况下就可以进行登录测试了 aaa local-user hu…

uniapp通过蓝牙传输数据 (ios)

在uni-app中&#xff0c;可以通过uni-ble&#xff08;uni-app官方提供的蓝牙插件&#xff09;来实现iOS设备上的蓝牙数据传输。 首先&#xff0c;确保已在uni-app的manifest.json文件中添加uni-ble插件的配置&#xff1a; "permission": { "scope.userLocati…

Windows power shell/cmd/shell/脚本

Windows power shell/cmd/shell/脚本 1、shell shell&#xff1a;shell脚本运行的环境&#xff0c;是一个概念不是特指 shell脚本&#xff1a;shell脚本就是将一系列命令按照一定的顺序保存到一个文本文件中&#xff0c;该文本文件被赋予执行权限&#xff0c;执行时依次执行…