数字IC设计随笔之三(如何从fsdb波形中提取信号进行分析:python+matlab)_提取fsdb文件中数据-程序员宅基地

技术标签: 数字设计工具  

如何从fsdb波形中提取信号进行分析:python+matlab

在涉及ADC或DAC的芯片中,建立模拟电路的行为级模型进行仿真后,往往需要从fsdb波形文件中提取信号进行信号质量分析。

通过python执行命令将fsdb中的特定波形数据提取到report.txt文件中,再读取该文件至列表中,去除文件起始标志行,将文件中的有符号二进制数转换为10进制,以图形化的方式显示波形,既可以粗略查看仿真结果的正确性,又可以进行波形分析。

import os
import pandas as pd 
import numpy as np 
import matlab.engine
import bitvector

os.system("fsdbreport tb.fsdb -w 24 -s /tb/u1/adc_data_reg\[23:0\] -o report.txt")

f = open("report.txt","r")
lines = f.readlines()
f.close()
data = lines[2:-1]
bit_obj = bitvector.bitVector()
for i in range(len(data)):
    a = data[i].split()
    vbin = bit_obj.new_Bin(33,a[1])
    data[i] = vbin.to_Dec()
x = np.arange(len(data))
y = np.array(data)
eng = matlab.engine.start_matlab()
X = matlab.double(x.tolist())
Y = matlab.double(y.tolist())
h=eng.sig_analyze(X,Y)
os.system('pause')

上述脚本为处理Σ-ΔADC抽取滤波器输出信号的提取和显示,运行脚本后将会显示ADC转换码值,此时可以进一步调用MATLAB函数进行信噪比、有效位数等结果分析。
在这里插入图片描述
进行上述操作的核心是在python中调用MATLAB函数,为了方便调用,将需要执行的操作写成MATLAB函数,在该示例中为sig_analyze,其输入参数x,y用于显示波形,信号噪声失真比分析直接调用MATLAB函数sinad,最后输出有效位数。

安装用于 Python 的 MATLAB 引擎 API请参考:
https://ww2.mathworks.cn/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42967497/article/details/108583911

智能推荐

H3C路由器配置——静态路由-程序员宅基地

文章浏览阅读7.3k次,点赞6次,收藏37次。一、网络畅通条件及排错思路1、网络畅通的条件网络畅通的条件:数据包能去能回,也是我们排除网络故障的理论依据。2、网络不畅通示列①、目标主机不可达  原因分析:可能是数据包没有到达目的地,在中途就丢去了(绝大部分原因是在去的路上没有配置路由条目)。②、请求超时  原因分析:可能是数据包到了目的地,返不回来(绝大部分原因是在回的路上没有配置路由条目)。3、..._h3添加静态路由

使用MongoDB中Aggregation统计数据_mongodb差值统计-程序员宅基地

文章浏览阅读5.2k次。{ftoc}聚合管道(Aggregation Pipeline)定义聚合管道是MongoDB提供的一种数据统计框架。通过Aggregation操作,能够实现类似于SQL 中Group By操作的功能。由于之前MongoDB中实现聚合操作需使用相对复杂的MapReduce,而聚合管道拥有固定的操作符表达, 使用更为简单。因此,聚合管道能够成为MapReduce_mongodb差值统计

分布式缓存_分布式缓存 专栏-程序员宅基地

文章浏览阅读281次。定义缓存:用于存储数据的硬件或软件的组成部分,以使得后续更快访问相应的数据。缓存是系统快速响应中的一种关键技术,是一组被保存起来以备将来使用的东西,介于应用开发和系统开发之间,是产品经理们经常估计不到的地方,也是技术架构设计中的非功能性约束。分布式缓存是指缓存技术在分布式系统中的应用,主要考虑****等问题。背景如何设计分布式缓存架构分布式redistair..._分布式缓存 专栏

windows2008下用IIS配置PHP环境-程序员宅基地

文章浏览阅读4.4k次。以下安装默认您的windos2008上已经配置好了IIS,并能成功运行。下面内容主要讲在如何利用IIS搭建php服务。如果你是第一次使用windows配置网站,建议先熟悉一下IIS的相关配置。1.下载php安装包: 建议在官网进行下载:http://www.php.net/2.安装php时选择isapi模式; 3.配置IIS: 进入IIS,选择网站-〉ISAPI筛选

redis 数据缓存技术_fpm进程 执行完会关闭redis连接吗-程序员宅基地

文章浏览阅读3.5k次。最近在研究数据缓存技术,了解缓存技术什么?有什么优势?有什么劣势?怎么去使用缓存技术?我主要研究的产品是redis 缓存技术(因为网上好多人都说redis 比 memcahed)缓存技术是什么?传统的数据存储是将数据存储到磁盘上的一种持久化存储(比如Mysql),而redis 是将数据存储在内存当中。有什么优势?读写性能上,在内存中读写数据比在磁盘上读写数据快的多,支持的迸发量也大得多(............_fpm进程 执行完会关闭redis连接吗

STM32F103---标准库函数之驱动RTC_stm32f103用标准库无法使用lse-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏4次。要想驱动RTC很简单,查看stm32f10x参考手册找到以下图片内容,就有思路了。经过参考手册介绍LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。我们选用LSE时钟源。根据以上图片作者的思路是: 1.首先使能对应位 进行访问RTC 2.选择对应时钟源 3.配置RTC 4 .选择中断参考如下图便可以写代码了。最后得出代码 ..._stm32f103用标准库无法使用lse

随便推点

Oracle11g默认目录结构-程序员宅基地

文章浏览阅读2.3k次。Oracle11g默认目录结构from: http://www.dbform.com/archives/369Oracle11g到现在为止应该算是正式发布了,基本上主流的操作系统平台版本都已经可以下载了。在自己的机器上安装了一套for Windows 32bit的版本,在Windows平台下安装Oracle一如既往的简单和流畅,安装完软件,DBCA创建数据库,之后让我们来看一下Or..._windows 系统下 oracle 11g 控制文件control1 和 control2 默认目录分别是哪里?

电子常识_二极管档 压降 含义-程序员宅基地

文章浏览阅读953次。电子常识_二极管档 压降 含义

5G MEC分流方案探讨_mec部署条件-程序员宅基地

文章浏览阅读893次。在Multi-homingchag场景下,UPF应支持IPv6多归属(Multi-homing)功能,即一个PDU会话可以与多个IPv6前缀相关联,该UPF作为分支点(Branching Point)连接多个PDU会话锚点UPF,再接入数据网络,并支持提供将不同IPv6前缀的上行业务流转发至不同的PDU会话锚点UPF,以及将来自链路上的不同PDU会话锚点UPF的下行业务流合并到5G终端,可同时作为IPv6多归属的分支点和PDU会话锚点。用户PDU会话经过边缘UPF,通过UL CL分流。_mec部署条件

关于使用vscode断点调试ORB_SLAM2程序时,断点无效的解决方案_orb-slam2断点测试-程序员宅基地

文章浏览阅读516次。需要在CMakeLists.txt 里加set (CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -g”)开启debug 不然断点调试是无效的具体配置见文章https://blog.csdn.net/weixin_39754100/article/details/105200806_orb-slam2断点测试

已解决net start MongoDB 报错:服务名无效_the service name is invalid mongodb-程序员宅基地

文章浏览阅读4.4k次,点赞30次,收藏3次。net start MongoDB 报错:服务名无效_the service name is invalid mongodb

张孝祥java面试大全-程序员宅基地

文章浏览阅读274次。目录1. Java基础部分 41、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 42、Java有没有goto? 43、说说&和&&的区别。 44、在JAVA中如何跳出当前的多重嵌套循环? 45、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 56、short s1 = 1; s1 = s1 + 1;有什..._张孝祥面试宝典

推荐文章

热门文章

相关标签