数字IC设计随笔之三(如何从fsdb波形中提取信号进行分析:python+matlab)

如何从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

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在 Makefile 控制 fsdb 波形的生成,你可以使用以下步骤: 1. 首先,确保你的工程支持 fsdb 波形的生成。这意味着你的设计需要使用 Verilog 或者 VHDL 语言,并且你的仿真工具支持生成 fsdb 波形文件。 2. 在 Makefile ,你需要定义一个目标(target)来生成 fsdb 波形文件。你可以使用仿真工具提供的命令行选项来实现这一点。例如,如果你使用的是 VCS 仿真工具,你可以使用以下命令行选项来生成 fsdb 波形文件: ``` vcs -fsdb <其他选项> ``` 其 `<其他选项>` 是你在编译和仿真过程所使用的其他选项。 3. 在 Makefile ,你可以创建一个规则(rule)来定义生成 fsdb 波形文件的步骤。这个规则应该依赖于编译和仿真的步骤,并且在执行时调用仿真工具的命令行来生成 fsdb 波形文件。例如: ``` waveform.fsdb: design.v sim.v vcs -fsdb <其他选项> -o simulation_output mv simulation_output waveform.fsdb ``` 这里假设 `design.v` 是你的设计文件,`sim.v` 是你的仿真文件。`waveform.fsdb` 是生成的 fsdb 波形文件。 4. 最后,在 Makefile ,你需要定义一个默认目标,该目标依赖于生成 fsdb 波形文件的目标。这样,当你运行 `make` 命令时,Makefile 将自动执行生成 fsdb 波形文件的步骤。例如: ``` all: waveform.fsdb waveform.fsdb: design.v sim.v vcs -fsdb <其他选项> -o simulation_output mv simulation_output waveform.fsdb ``` 这样,当你运行 `make` 命令时,Makefile 将会自动执行生成 fsdb 波形文件的步骤。 请注意,上述示例的命令行选项和文件名可能需要根据你的实际情况进行修改。此外,如果你使用的是其他仿真工具(例如 ModelSim),你需要查阅相应的文档以了解如何在命令行生成 fsdb 波形文件
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值