测量结果分析
仪表分析
我们嘉立创EDA支持的仿真仪表有万用表、示波器和函数发生器、瓦特计和逻辑分析仪,未来还将陆续增加一些仪表模型供选择使用。
- 万用表
点击万用表在右侧属性框的类型选择伏特计或安培计,分别用于测量电路里的电压和电流。测量电压时万用表并联接到所测器件两端,测量电流时万用表串联在电路里面。
- 函数发生器
函数发生器,用于给电路提供信号源。点击选中图纸上的函数发生器后在右侧的属性框内选择正弦波、三角波或矩形波作为输入方式,设置测试的频率、占空比、振幅、偏置和上升/下降时间。
在使用过程中,函数发生器的COM端与GND相连,正向输入和反向输入根据实际需求选择连接到电路当中。
几个重要参数说明:
(1)频率:即输入波形的频率大小,默认单位为HZ。根据设置的频率大小和公式周期T=1/f可以计算得出周期的值;
(2)占空比:指的是在一个循环周期内,高电平持续时间占周期的比例大小;
(3)振幅:指输入波形的幅值大小;
(4)偏置:即设置信号中直流成分的大小,偏离零点电位,可以设置正负。
- 示波器
嘉立创EDA支持一个双通道的示波器,用于测量电路中所测信号与时间关系的波形变化。
仿真运行后会弹出所有测试点的波形变化图。
点击电路中的示波器后可以在右侧的属性框内选择“查看仪表”,专门查看该示波器所测波形图,通过修改横纵坐标刻度,可以使波形显示更加直观。下面我们来看一下两个波形显示页面的区别和使用方式:
(1)所有波形展示页面
仿真成功后会自动弹出这个总体波形显示页面,由于最初的波形会比较密,可以通过鼠标左键框选部分波形可以进行放大。
坐标系的横坐标代表时间、左侧纵坐标代表电压值、右侧纵坐标代表电流值,通过顶部的波形名称对应各种不同颜色的波形图查看仿真结果。
鼠标点在波形图上会自动将所点位置的横坐标时间值和纵坐标的电压值/电流值显示出来,非常地清晰和直观。
在对应菜单栏的右侧还可以进行波形的自定义配置,分栏展示、修改背景和任意波形的颜色;也支持直接导出CSV文件和复制该图片或将图片保存在本地。
(2)示波器波形显示页面
点击电路中的示波器后在右侧选择“查看仪表”进入示波器波形页面,如下图。
刚进入时如果波形显示在图中不够直观,不能很好得看出波形变化那么可以通过修改下面的时基刻度和两个通道的幅值刻度使波形显示更清晰。
时基刻度用于修改X轴上每一格代表的时间;A、B通道上的刻度用于修改Y轴上一格代表的幅值大小,两个通道还支持设置Y轴位移量,即将该通道的波形向上或向下垂直移动。
- 瓦特计
瓦特计用于测量交、直流电路功率的仪器。
瓦特计有两组测试接口,左边为电压输入端,与被测电路并联使用;
右侧的为电流输入端,与电流串联使用。显示面板屏幕显示为测得的平均功率值,下面的Power Factor屏幕显示所测得的功率因数,数值在0~1之间。
- 逻辑分析仪
嘉立创EDA提供了一个精简的逻辑分析仪,外接10路信号输入。
点击逻辑分析仪,在右侧进行设置,主要就是阈值电压和系统时钟频率的设置,当外界信号高于阈值电压时显示为高电平,低于阈值电压时为低电平显示。
经过仿真后点击仪表,在右侧属性栏内选择查看仪表查看逻辑电平信号。
命令分析
- 使用.meas命令
.meas命令用于分析.ac,.dc的输出数据。Op,.tf,.tran或.noise模拟。模拟完成后立即执行该命令。
它以与其他spice指令相同的方式在原理图中输入,并带有:
文本属性 > 文本类型 > spice
要使用.meas命令,请按F8运行仿真,然后在仿真完成后,执行以下操作:
仿真>查看仿真报告
(1).MEAS命令中术语的含义
.meas类型[AC | DC | OP | TRAN | TF | NOISE]取决于要评估的数据,这些数据源自AC分析、DC、工作点、瞬态、传递函数或噪声分析模拟。.meas类型是可选的,但使用时允许.MEAS语句仅用于给定的分析类型。这允许根据运行的模拟类型使用不同的.meas语句选择。
名称是一个包含测量结果的变量,所以名称是必需的,以便将结果用作其他.MEAS语句中的参数。
trig_variable,targ_variable和out_variable是源自仿真的向量,例如电压向量v(out)。VAL = val需要一个实数val。val也可以是实参或用{}括起来的表达式,它可以扩展为实数。
如果.meas类型为tran,则TD = td和AT = time期望一个时间值。对于AC分析,AT将是一个频率值,而TD将被忽略;对于DC分析,AT是电压(或电流),而TD被忽略。RISE和FALL预期也会如此。频率和时间值可以从0开始并扩展为正实数。直流分析中独立(标度)轴的电压(或电流)输入可以以任意实数值开始或结束。
.MEAS语句的结果可以用作其他.MEASURE语句中的参数。在模拟中其他位置的.param语句中定义为参数的值可以用作值以及.meas语句中的表达式。可以在.meas语句的值和表达式中使用函数,但那些将时间作为变量调用的函数(例如delay(x,time),导数函数ddt(x)和积分函数sdt(x)或idt(x))除外)。
(2).meas命令的类型,语法和示例
1)种类
.MEASURE语句有两种基本的不同类型。那些引用横坐标的点(沿着水平或x轴(即.tran分析的时间轴或.ac分析的频率轴)绘制的自变量)和.MEASURE语句横坐标上的范围。就本教程而言,第一种.MEASURE语句将称为Point,第二种将称为Range。
2)指向
指向水平轴上单个点的.MEAS语句用于在特定点或满足条件时打印数据值或其表达式。使用以下语法:.MEAS [SURE] [AC | DC | OP | TRAN | TF | NOISE][<find|deriv|param> ][WHEN | AT =]][TD =] [<rise|fall|cross>= [| LAST]]
分析类型是可选的,但如果使用,则指定.MEAS语句适用的分析类型。这允许将.MEAS语句仅应用于某些分析类型。测量结果包含在名为name的变量中。然后,变量名可以允许将结果用作其他.MEAS语句中的参数。
下面是Point类型.MEAS语句的示例,这些语句返回的值指向水平轴上的单个点:
.MEAS TRAN res1 FIND V(out) AT=5m
在t = 5ms处将V(out)的值打印为res1。
.MEAS TRAN res2 FIND V(out)*I(Vout) WHEN V(x)=3*V(y)
第一次满足条件V(x)= 3 V(y)时,打印表达式V(out)I(Vout)的值。这将被标记为res2。
.MEAS TRAN res3 FIND V(out) WHEN V(x)=3*V(y) cross=3
第三次满足条件V(x)= 3 * V(y)时打印V(out)的值。这将被标记为res3。
.MEAS TRAN res4 FIND V(out) WHEN V(x)=3*V(y) rise=last
当逼近V(x)增加3 V(y)时,最后一次满足条件V(x)= 3 V(y)时打印V(out)的值。这将被标记为res4。
.MEAS TRAN res5 FIND V(out) WHEN V(x)=3*V(y) cross=3 TD=1m
第三次满足条件V(x)= 3 * V(y)时打印V(out)的值,但是直到时间达到1ms才开始计数。这将被标记为res5。
.MEAS TRAN slope DERIV V(out) AT=5m
在标记为斜率的t = 5ms处打印V(out)的斜率值。
关键词 | 间隔执行操作 |
---|---|
AVG | 计算平均值 |
最大值 | 求出最大值 |
最低 | 找出的最小值 |
聚丙烯 | 求出峰-峰 |
均方根值 | 计算的均方根 |
INTEG | 整合 |
.MEAS TRAN res6 PARAM 3*res1/res2
打印3 * res1 / res2的值。该格式对于打印其他.meas语句结果的表达式很有用。并非要在要评估的表达式中包含基于直接模拟数据的表达式,例如V(3),但如果存在,则数据取自最后的模拟点。结果将标记为res6。
请注意,在以上示例中,虽然结果指向的是沿水平轴的单个点,但它是基于纵坐标数据(因变量在垂直轴或y轴上绘制的)。如果不需要坐标信息,则.MEAS语句在横坐标上打印发生测量条件的点:
.MEAS TRAN res6 WHEN V(x)=3*V(y)
第一次满足条件V(x)= 3 * V(y)时打印。这将被标记为res6。
在AC分析中类似:
.MEAS AC acres6 WHEN mag(V(x))=1/sqrt(2)
打印满足条件mag(V(x))= 1 / sqrt(2)的最低频率。这将被标记为acres6。
3)范围
.MEAS语句的另一种类型是指横坐标上的一个范围(沿水平或x轴(即.tran分析的时间轴或.ac分析的频率轴)绘制的自变量。使用以下语法:
语法:.MEAS [AC | DC | OP | TRAN | TF | NOISE][<avg|max|min|pp|rms|integ> ][TRIG [[VAL] =]] [TD =][<rise|fall|cross>=][TRIG [[VAL] =]] [TD =][<rise|fall|cross>=]
横坐标的范围由“ TRIG”和“ TARG”定义的点指定。如果省略,则TRIG点默认为模拟的开始。
同样,TARG点默认为模拟数据的结尾。如果TRIG,TARG和之前的WHEN点的所有三个均被省略,则.MEAS语句将在整个数据范围内运行。可以在一定间隔内完成的测量操作的类型为:
如果未指定任何测量操作,则.MEAS语句的结果是TRIG和TARG点之间沿横坐标的距离。
下面是示例间隔.MEAS语句:
.MEAS TRAN res7 AVG V(NS01)+ TRIG V(NS05) VAL=1.5 TD=1.1u FALL=1+ TARG V(NS03) VAL=1.5 TD=1.1u FALL=1
在1.1us之后打印从V(NS05)的第一个下降到1.5V的V(NS01)的平均值,在1.1us之后打印V(NS03)的第一个下降到1.5V的平均值。这将被标记为res7。
对于.AC分析,仅考虑表达式复杂值的实部,即可将复杂数据的条件表达式转换为实际条件。
这是一个示例说明如何在另一个.MEAS语句中使用.MEAS语句的结果。在这种情况下,将计算3dB带宽:
.MEAS AC tmp max mag(V(out)); find the peak response and call it "tmp"
.MEAS AC BW trig mag(V(out))=tmp/sqrt(2) rise=1
+ targ mag(V(out))=tmp/sqrt(2) fall=last
2
3
打印两点之间的频率差,其峰值响应降低3dB。
注意:.AC分析得出的数据很复杂,.measurement语句结果也是如此。
但是,等式仅指复数的实部,即“ mag(V(out))= tmp / sqrt(2)”等效于Re(mag(V(out)))= Re( tmp / sqrt(2))。
.NOISE分析的AVG,RMS和INTEG操作与分析类型不同,这是因为噪声在整个频率的正交范围内更有意义地积分。
因此,AVG和RMS都给出RMS噪声电压,而INTEG给出积分的总噪声。因此,如果添加SPICE指令
.MEAS NOISE out_totn INTEG V(onoise)
.MEAS NOISE in_totn INTEG V(inoise)
2
总的集成输入和输出参考均方根噪声将打印在仿真报告中。
- .meas语句
LTspice中的.meas语句功能强大,但是要花些时间才能了解如何使用它们并获得最佳结果。
因此,强烈建议在使用.meas语句模拟之前,应设置并进行简化的测试模拟,并尝试不同的设置。
为了帮助实现这一点,以下示例说明了可以使用.MEAS语句进行的一些测量:
(1)测量WaveForm参数01
(2)测量WaveForm参数02
(3)测量稳定时间
(4)查找增益和带宽
(5)如何使用.meas语句测量周期和频率
有关.meas语句的更多信息,请在LTspiceXVII工具中的“帮助”中查找.measure或在此处访问:http://ltwiki.org/LTspiceHelpXVII/LTspiceHelp/html/DotMeasure.htm
更多示例
.meas tran inv_delay 2 trig v(in) val='vp/2' td=1n fall=1 targ v(out) val='vp/2' rise=1
.meas tran test_data1 trig AT=1n targ v(out) val='vp/2' rise=3
.meas tran out_slew trig v(out) val=' 0.2vp' rise=2 targ v(out) val=' 0.8vp' rise=2
.meas tran skew when v(out)=0.6
.meas tran skew2 when v(out)=skew_meas
.meas tran skew3 when v(out)=skew_meas fall=2
.meas tran skew4 when v(out)=skew_meas fall=LAST
.meas tran skew5 FIND v(out) AT=2n
.meas tran v0_min min i(v0) from='dfall' to='dfall+period'
.meas tran v0_avg avg i(v0) from='dfall' to='dfall+period'
.meas tran v0_integ integ i(v0) from='dfall' to='dfall+period'
.meas tran v0_rms rms i(v0) from='dfall' to='dfall+period'
.meas dc is_at FIND i(vs) AT=1
.meas dc is_max max i(vs) from=0 to=3.5
.meas dc vds_at when i(vs)=0.01
.meas ac vout_at FIND v(out) AT=1MEG
.meas ac vout_atd FIND vdb (out) AT=1MEG
.meas ac vout_max max v(out) from=1k to=10MEG
.meas ac freq_at when v(out)=0.1
.meas ac vout_diff trig v(out) val=01 rise=1 targ v(out) val=01 fall=1
.meas ac fixed_diff trig AT=10k targ v(out) val=0.1 rise=1
.meas ac vout_avg avg v(out) from=10k to=1MEG
.meas ac vout_integ integ v(out) from=20k to=500k
.meas ac freq_at2 when v(out)=01 fall=LAST
.meas ac vout_rms rms v(out) from=10 to=1G
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
10.2.3 .meas语句的准确性
.meas语句是对模拟后的数据执行的,换句话说,是在模拟完成并存储了来自模拟后的数据之后。
重要的是要注意,LTspice生成的数据为浮点格式。
LTspice在压缩级别上具有可选设置,该设置适用于它在存储时生成的数据。浮点数格式和数据压缩的结合意味着,由于存储数字所使用的有限精度,数值精度存在一些小误差。这样的另一个结果是,.meas语句输出的准确性受到LTspice使用默认数据压缩设置使用的任何波形数据存储后的准确性的限制。为了限制嘉立创EDA服务器处理的数据量,用户无法使用LTspice本地安装中通过控制面板进行的完全压缩控制。
但是,可以通过将以下.option语句作为spice指令包含在模拟示意图中,来降低应用于存储数据的压缩级别(通常这足够了):
.option plotwinsize = 0
当然,通过降低压缩级别来提高精度可能会导致在仿真过程中生成大量数据,从而超出嘉立创EDA内部数据存储限制并生成一个“Your Simulation Results are too large”警告。
同样,AC分析(.ac)结果的准确性很大程度上取决于每十倍频程/八度音阶/扫频的点数。点的数量越多,结果将越准确,但是如上所述,存在产生过多数据的风险。
鉴于这些准确性考虑因素,在测试条件时注意:“什么时候 = “要求条件彼此交叉,而不是要求精确相等,因为数值精度的错误可能无法满足,这是更可靠的方法。当试图精确地发现信号或峰值的峰值可能出现在x轴(即时间或频率轴)上时,这尤其成问题。找到最大值(MAX)很容易,但可能无法将出现该最大值的x轴值用作参数。因此,当信号等于MAX值返回x轴值时,很想使用均等测试。有时这可能有效,而其他时候则可能无效。
有几种方法可以解决此问题,但是最可靠的解决方案是测试从峰值的低端接近时和从高端偏离时,信号越过一点小于MAX的点。为此,可以在上升时将信号与最大值减去和偏移(或最大值乘以仅小于1的数字)进行比较,然后再与下一个FALL进行比较。当出现峰值时,RISE测试在x轴上返回一个值,而在峰值上方,FALL测试则返回另一个值。然后,由用户决定是使用一个还是另一个函数,或者使用某些函数(例如两者的平均值或几何平均值)来更好地估计峰的实际位置。
由于函数的斜率在峰值或谷值处穿过零点,因此,一个更复杂的解决方案(尽管仅适用于瞬态分析(即仅适用于时域信号)并且可能不适用于有噪声的信号)可能是:使用具有ddt(x)函数的行为源来生成被测信号的导数,然后测试导数过零点,以找到峰值或谷值的确切时间。