CN105094723B - 一种在波形显示器中快速渲染大型模拟波形的方法 - Google Patents
一种在波形显示器中快速渲染大型模拟波形的方法 Download PDFInfo
- Publication number
- CN105094723B CN105094723B CN201410198682.1A CN201410198682A CN105094723B CN 105094723 B CN105094723 B CN 105094723B CN 201410198682 A CN201410198682 A CN 201410198682A CN 105094723 B CN105094723 B CN 105094723B
- Authority
- CN
- China
- Prior art keywords
- waveform
- value
- points
- interval
- monotony
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
随着集成电路规模的急剧增加,电路仿真所产生的波形文件也越来越大,一个信号的点数很容易达到千万级别甚至更多,这给波形显示器的渲染显示提出了更高的要求。因此,对原始波形进行扫描和数学分析,提取能够代表波形特征的特殊点,然后进行过滤和转换,得到点数较少的新波形。该方法可以大大提高渲染的速度,同时保证转换后的波形形状与原始波形一致,这对于快速查看和测量波形,以便验证仿真结果具有重要意义。本发明基于一种高效的波形过滤方法,提出了用于快速渲染显示大型模拟波形的解决方案。在实际工程应用中,此方法可以加快波形的显示速度,极大地提高了仿真结果验证的效率。
Description
技术领域
本发明是一种在波形显示器中快速渲染显示波形的方法,适用于快速显示仿真过程中产生的点数巨大的模拟波形,所属的技术领域是集成电路计算机辅助设计领域,尤其是涉及大规模集成电路的仿真领域。
背景技术
随着集成电路规模的急剧增加,电路仿真所产生的波形文件也越来越大。波形显示器(Viewer)是直接查看波形的工具,它可以通过Zoom(放大或缩小)、Measure(测量X值、Y值和斜率等)等操作来观察波形细节,以验证仿真结果是否符合要求,是电路设计领域必不可少的工具之一。对于一个点数超过千万的波形,用波形显示器查看时,不仅读取数据的速度非常重要,渲染显示的速度也同样不可忽视。在频繁进行Zoom等操作时,每次都需要重新渲染波形以刷新Viewer,速度的快慢将直接影响用户体验。因此,在保证波形基本形状不失真的前提下,对原始波形进行过滤转换,得到点数很少的新波形,可以极大地提高Viewer刷新的速度,这对于实际电路设计尤其是电路仿真具有重要意义。
波形的渲染显示是Viewer能够顺利进行Zoom、Measure等其他操作的前提。目前,在集成电路仿真领域,比较常用的Viewer有:Synopsys公司的Custom WaveView,Cadence公司的WaveScan,Silvaco公司的SmartView。对于大数据波形的快速渲染显示, 不少Viewer都在致力于提升其速度,有的已经有了较好的解决方案。因此,提出并实现一种具有自主知识产权的快速渲染方法具有非常重要的意义。
本发明的基本原理为:在任何既定像素宽度的屏幕上,每单位像素上只要能得到其纵轴方向的最大值和最小值,就可以绘出整个波形的基本形状,而且不会失真。这种方法得到的特征波形点数很少,可以大大地提高渲染的速度;而且,它还可以通过设置点数阈值,以满足不同用户对时间和空间的不同需求,因而具有良好的可扩展性和实用性。
发明内容
本发明针对大规模集成电路仿真生成的大型模拟波形,提出了一种在波形显示器上快速渲染这类波形的方法。在实际工程应用中,以该方法得到的新波形保留了原始波形的基本形状特征,不会出现失真现象,而且,由于新波形的点数较少,大大提高了渲染速度,为Viewer进行其他后续操作提供了极大的便利,增强了Viewer的实用性。
本发明的主要技术方案包括以下两个部分:
一、基于像素点的波形快速显示原理
众所周知,计算机显卡是以像素点为单位来显示图形图像的,对应的屏幕也是由N*M的像素阵列组成的。以分辨率为1024*768为例,可以认为屏幕是由横轴上的1024个像素点与纵轴上的768个像素点组成的像素阵列。屏幕上任何图案的显示,就是通过分别控制这个像素阵列上的点的颜色、灰度值等实现的。
对于一个模拟波形而言,由于其具有连续性,因此,渲染显示时只需要简单地连接前后相邻的两个点即可得到曲线。计算机显卡和显示器结构共同决定了屏幕的最大分辨率,所以,对于一个软硬件确定的计算机系统而言,其显示屏上横轴所能够显示的像素点个数也是确定的。如图1所示,由于人眼的分辨能力有限,当坐标缩放到一定程度后,在像素宽度内的所有原始点实际上就几乎处于同一条直线上了,因此,只要将该区域内所有点的最大值和最小值求出来,作为区域两端的Y值,然后将这两个点相连,则这段波形的基本形状就可以大致勾勒出来,其他的点实际上都可以忽略。也就是说,当原始波形的点数过多时,没有必要将所有点都渲染出来,只需要显示其大致形状即可。至于具体细节,可以通过连续放大等操作来进一步查看。
上述原理表明,基于像素显示的屏幕,其最大分辨率决定了模拟波形在渲染显示时的点数阈值。简单地说,点数阈值只要超过最大分辨率中的水平像素个数即可。例如,假设某屏幕的最大分辨率为1024*768,则其横轴方向上可显示的像素个数最多为1024个,因此,过滤转换后的新波形,点数只要大于1024个就可以把原始波形的基本形状完整无误地显示出来。
二、大型模拟波形的过滤方法
在第一部分中所述的波形快速显示原理的基础上,本发明设计了一种将大型模拟波形进行过滤的方法,过滤后的新波形能够完好地表示原始波形的特征,且点数很少,可以极大地提高渲染的速度。
如图2所示,大型模拟波形的过滤步骤如下:
1.设置点数阈值。
点数阈值,即波形过滤需要满足的点数最小值。该值可以由用户自己设置,但必须限制其大于屏幕最大分辨率的水平像素个数。原因如下:
1)若阈值小于水平像素个数,则过滤后的点太少,以至于不能覆盖水平方向上的所有像素。这种情况下,人的肉眼能够辨别出来细小的差异,因此第一部分所述原理的前提条件不成立,很可能会因为过滤而出现失真现象。
2)波形点数若小于水平像素个数,渲染速度已经很快,刷新时间也非常短,根本没有必要浪费时间去进行过滤。
所以,当波形点数小于阈值时,将不进行过滤,直接渲染原始波形。
对于一台最大分辨率为1024*768的显示器屏幕而言,只要满足阈值N > 1024即可。为了方便计算,我们可以取整,例如取N = 2000。另外,鉴于目前大部分PC机所配显示器的水平像素个数都不超过4000,因此,我们也可以取N = 4000。
2.根据阈值N,将X轴进行等距划分,计算出特征波形的所有X值。
阈值确定之后,接下来就是将原始波形的X轴进行等距划分。例如,原始波形的X轴范围为0~10s,N = 4000,则将这10s均分为4000份,每份的距离delta_x = 10/4000s =2.5ms。过滤后的特征波形将会有(4000 + 1) = 4001个点,必须提前求出这4001个点的X坐标值,以便后续计算等距点所在区域的Y值。以线性横坐标轴为例,第i个点的X坐标值的计算公式如式(1)所示:
Xi = X0 + i * delta_x (0 <= i < N) (1)
需要特别注意的一点是,这里的“等距”划分是基于屏幕像素而言的,而不是Viewer坐标轴的。因此,不同的坐标轴,“等距”的意义并不相同。也就是说,对于非线性的X坐标轴,等距划分的结果其实并不是“等距”的。以log10坐标为例,如图3所示,这是显示ac信号的默认坐标轴。在这种情况下,“等距”划分得到的坐标值应该是经过pow(10,x)运算后得到的值,所以,每个等距区间的范围是不相等的,第一个等距区间映射到实际的X范围可能是[1,10],第二个则可能变为了[10,100],其他区间以此类推。因此,对于log10坐标轴,则第i个点的X坐标值的计算公式如式(2)所示:
Xi = pow(10, (X0 + i * delta_x)) (0 <= i < N) (2)
3.扫描原始波形,将其划分为多个单调区间。
单调区间是指函数在某一区间内的函数值Y,随自变量X增大而增大(或减小)恒成立。如果函数y=f(x)在某个区间是增函数或减函数,那么就说函数y=f(x)在这一区间具有(严格的)单调性,这一区间叫做y=f(x)的单调区间。
从单调区间的定义可以知道,在单调区间内,所有点的最大值和最小值必然是该区间两端的Y值。这样,就不必要去遍历整个单调区间,可以节省大量计算时间。
4.根据单调区间与等距区间的大小关系,分别采用不同方法,设置等距点的Y值。
1)单调区间小于或等于等距区间的情况。
这种情况下,需要根据等距区间的X轴范围,找到其包含的所有单调区间。由于单调区间的两端必定是最值,因此只需比较两端的Y值即可,不必再次遍历。比较后得到一个最大值和最小值,将它们设为这两个等距点的Y值。
2)单调区间大于等距区间的情况。
求出单调区间中各等间距区域的最大值和最小值,这是过滤方法中最重要的一个步骤。在每个单调区间里,都包含一定数目的等距点,其数量取决于单调区间的范围大小。但是,不同单调区间所包含的原始点数目并不一定相同,其稠密程度也可能有差别。当波形的点数达到千万级别时,在一个等距区间内就有可能包含成千上万个原始点,也可能只包含数十个点,这取决于原始波形中点的稠密分布情况。
对每个单调区间,求出相邻两个等距点之间所在区域的最大值和最小值,作为这两点的Y值。它分两种情况:
i.中间点的一般处理。
中间点是指单调区间内除第一个点和最后一个点之外的所有等距点,它们的处理方法是一致的。如图4所示,p1,p2为中间的一组等距点,而p3,p4为其下一组等距点,分别求出对应区域的最大值和最小值,然后连接p2和p3两个点即可。在第3步中,我们已经求出了单调区间,它为接下来的计算提供了2个便利:
a)在单调区间内的相邻等距点,不管其区域内包含多少个原始点,其最大值和最小值必定在区域两端,也就是说,只需要直接求出两等距点所对应的Y值即可,如[x1,x2]等距区间,则最大值必定为y2,最小值必定为y1。至于前后顺序,即将哪一点的Y值设为最大值,这并不重要。因为在一个像素点区间,人眼的分辨能力有限,只能看到一条竖线,X轴上两个点几乎已经重合了,根本没有什么区别。将这两个点相连,就能代表该区域内波形的基本形状特征。
b)两两等距区间相隔的中间区域,如图4所示的[x2,x3],这段区间没有必要去处理。因为点p1、p2、p3、p4最后将会相连,而区间[x1,x4]位于单调区间内,其本身必然也是单调递增或递减的,所以,区间[x2,x3]的点,其Y值也不可能为[y2,y3]之外的值。
ii.边界点的特殊处理。
首先,需要区分的是,与上面所述的“中间点”不同,边界点不是指等距点,而是原始点。它分为两种:起始点和结束点。边界点的处理非常重要,因为边界点是两个单调区间的分界点,其Y值必定是单调区间内的一个最大值或最小值,必须包含在里面,否则,很有可能导致过滤后波形形状的失真。当边界点正好与等距点重合时,其处理方法与中间点的处理相同。因此,下面我们只讨论边界点落在等距区间内的情况。
a)起始点的处理。
假设单调区间内包含不止一个等距点。找到起始点后面紧邻的第一个等距点,直接将其Y值设为起始点的Y值。这是因为起始点也在单调闭区间内,其Y值必然满足单调递增且小于或者单调递减且大于等距点的Y值。如图5.a所示,p0、p1、p2为三个等距点,p0是前一个单调区间的最后一个点,p1和p2分别为后一个单调区间的第一个点和第二个点。点p是后一个单调区间的起始点,位于[x0,x1]之间。这种情况下,应该将p1的Y值用p的Y值替换(即p1'点),然后再进行连接。图中p0p1p2为错误的连接,p0p1'p2为正确的连接。
b)结束点的处理。
假设单调区间内包含不止一个等距点。找到结束点前面紧邻的第一个等距点,直接将其Y值设为结束点的Y值。这是因为结束点也在单调闭区间内,其Y值必然满足单调递增且大于或者单调递减且小于等距点的Y值。如图5.b所示 , p0、p1、p2为三个等距点,p0和p1是前一个单调区间的最后两个点,p2为后一个单调区间的第一个点。点p是前一个单调区间结束点,位于[x1,x2]之间。这种情况下,应该将p1的Y值用p的Y值替换(即p1'点),然后再进行连接。图中p0p1p2为错误的连接,p0p1'p2为正确的连接。
c)单调区间只包含一个等距点的情况。这种情况下,与起始点的处理相似,即将这个唯一的等距点的Y值设为起始点的Y值,不过,还需要确保将下一个等距点(在下一单调区间)的Y值设为结束点的Y值。如图5.c所示,p0、p1、p2为三个等距点,p1是位于中间位置的单调区间的唯一点,p0是其前一个单调区间的最后一个点,p2是其后一个单调区间的第一个点;点pb是中间位置单调区间的起始点,处于[x0,x1]之间;点pe是中间位置单调区间的结束点(也可以认为是其后面单调区间的起始点),处于[x1,x2]之间。这种情况下,应该将p1的Y值用pb的Y值替换(即p1'点),将p2的Y值用pe的Y值替换(即p2'点),然后再进行连接。图中p0p1p2为错误的连接,p0p1'p2'为正确的连接。
为了避免边界点被重复包含计算,我们采用区间前闭后开的方式,除了最后一个单调区间,所有的结束点都忽略不管,而将它作为下一单调区间的起始点去处理。这样,只需要按照(b)所述方法特殊处理最后一个单调区间的结束点(即波形中的最后一个点)就可以了,而且,情况(c)此时属于情况(a)的特殊情况,完全可以套用(a)的处理方法。
5.连接所有等距点,形成特征波形。
这一步在这里不进行详述,只需按顺序将点连成曲线即可。
实例说明:
为了对比渲染速度,我们对多个模拟波形文件做了实验,信号的点数级别范围为1E+5~1E+8,点数阈值都设为4000。实验所用的机器为普通PC机,处理器为Intel(R) Core(TM) i5-3470 @3.2GHz,四核,内存8G,操作系统Redhat 2.6.18-308.el5,得到的结果如表(1)所示。
表1 波形过滤前后速度对照表
波形文件大小(单位:B) 信号点数 点数阈值 读取时间(单位:s) 直接渲染用时(单位:s) 过滤后渲染用时(单位:s)
504513180 116815 4000 1.60 3.53E-3 3.73E-4
14269912 1186232 4000 0.22 5.38E-2 2.59E-3
1077834072 10920150 4000 6.51 2.45 2.77E-3
8951828540 69799312 4000 95.56 23.44 4.29E-3
从表(1)的结果可知:读取信号数据的速度不仅与信号点数相关,波形文件大小也是重要的影响因素之一;而渲染的速度则只与点的数量有关,点数越多,刷新所需的时间也越长。当点数在1e+5级别时,过滤方法的优势似乎不够明显;但当点数达到千万级别时,过滤后的用时仅仅是直接渲染时的千分之一左右。因此,大型模拟波形的过滤方法对Viewer显示波形具有非常重要的作用,它能极大的提高渲染的速度,从而增强产品的可用性。
附图说明
图1 基于像素点的快速波形显示原理图
图2 过滤方法流程图
图3 log10坐标轴的“等距”示意图
图4 中间点的最值计算示意图
图5 边界点的处理示意图。
Claims (2)
1.一种在波形显示器中快速渲染大型模拟波形的方法,其技术特征包含以下几个步骤:
根据显示区域范围,统计原始波形的点数,确定已经超过设定的特征波形的点数阈值;
根据所述点数阈值,对横轴进行等距划分,计算出线性横坐标轴或者横坐标为log10的坐标的特征波形的横坐标值;
将原始波形划分为多个单调区间;
根据所述等距区间与所述单调区间的大小,设置与所述横坐标值对应的纵坐标值;
连接所有等距点,形成特征波形;
所述点数阈值,大于屏幕最大分辨率的水平像素个数;所述根据所述点数阈值,对横轴进行等距划分,计算出线性横坐标轴或者横坐标为log10的坐标的特征波形的横坐标值的步骤,进一步包括:
对于线性横坐标轴,横坐标值的计算公式为:
Xi=X0+i*delta_x;
横向坐标为log10坐标时,横坐标值的计算公式为:
Xi=pow(10,(X0+i*delta_x));
其中,i为大于等于0且小于N的自然数;Xi为第i个点的横坐标值;X0为起点横坐标值;delta_x为每份的距离。
2.根据权利要求1所述的方法,其特征在于,所述根据所述等距区间与所述单调区间的大小,设置与所述横坐标值对应的纵坐标值的步骤,进一步包括:
单调区间小于或等于等距区间时,根据等距区间的横坐标轴范围,找到其包含的所有单调区间;比较所述单调区间两端的纵坐标值,得到最大值和最小值作为与所述横坐标值对应的纵坐标值;
单调区间大于等距区间时,对每个单调区间,求出相邻两个等距点之间所在区域的最大值和最小值,作为与所述横坐标值对应的纵坐标值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410198682.1A CN105094723B (zh) | 2014-05-13 | 2014-05-13 | 一种在波形显示器中快速渲染大型模拟波形的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410198682.1A CN105094723B (zh) | 2014-05-13 | 2014-05-13 | 一种在波形显示器中快速渲染大型模拟波形的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094723A CN105094723A (zh) | 2015-11-25 |
CN105094723B true CN105094723B (zh) | 2018-12-21 |
Family
ID=54575280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410198682.1A Active CN105094723B (zh) | 2014-05-13 | 2014-05-13 | 一种在波形显示器中快速渲染大型模拟波形的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094723B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273000B (zh) * | 2017-06-14 | 2020-04-14 | 电子科技大学 | 一种智能示波器的屏幕多分辨率适配方法 |
CN110246204B (zh) * | 2019-05-28 | 2024-01-05 | 深圳数联天下智能科技有限公司 | 波形绘制方法、装置、计算机设备及可读存储介质 |
CN114252672A (zh) * | 2021-11-12 | 2022-03-29 | 普源精电科技股份有限公司 | 信号处理方法、芯片、信号显示装置和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102109543A (zh) * | 2010-12-08 | 2011-06-29 | 电子科技大学 | 一种具有波形图像实时缩放功能的数字三维示波器 |
CN102539866A (zh) * | 2010-12-31 | 2012-07-04 | 北京普源精电科技有限公司 | 数字示波器及波形处理方法 |
-
2014
- 2014-05-13 CN CN201410198682.1A patent/CN105094723B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102109543A (zh) * | 2010-12-08 | 2011-06-29 | 电子科技大学 | 一种具有波形图像实时缩放功能的数字三维示波器 |
CN102539866A (zh) * | 2010-12-31 | 2012-07-04 | 北京普源精电科技有限公司 | 数字示波器及波形处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105094723A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110660066B (zh) | 网络的训练方法、图像处理方法、网络、终端设备及介质 | |
Alipio et al. | Impulse efficiency of grounding electrodes: Effect of frequency-dependent soil parameters | |
CN1319375C (zh) | 基于边缘检测的图像缩放的方法 | |
CN104142766B (zh) | 应用于电容式面板的控制点感测方法与装置 | |
CN101644980B (zh) | 位置检测装置及位置检测方法 | |
CN107240384B (zh) | 显示器亮度补偿方法及装置 | |
JP6716603B2 (ja) | 飛行時間型画素アレイの解像度を上げるための方法および装置 | |
CN105094723B (zh) | 一种在波形显示器中快速渲染大型模拟波形的方法 | |
CN107123122A (zh) | 无参考图像质量评价方法及装置 | |
CN107110909B (zh) | 局部放电判别装置及局部放电判别方法 | |
US10557870B2 (en) | Apparatus and method for time correlated signal acquisition and viewing | |
CN108647492B (zh) | 一种染色质拓扑相关结构域的表征方法及装置 | |
CN108171666A (zh) | 一种用于共聚焦内窥镜的正弦畸变图像矫正方法 | |
CN102968808B (zh) | 用于显示的方法和装置 | |
CN105579940A (zh) | 用于宽纵横比应用的触控面板 | |
Carlsen et al. | Evaluation of analytical performance based on partial order methodology | |
Vijayan et al. | Efficient implementation of 8-bit vedic multipliers for image processing application | |
CN104473633A (zh) | 异常心电数据的判断方法和装置 | |
EP3304529A1 (en) | Geographically smoothed demographic cartograms and cartogram server | |
CN104461009B (zh) | 物体的测量方法和智能设备 | |
Li et al. | Measurement of diameter and scale of cashmere fibers by computer images analysis | |
WO2014193771A1 (en) | Data interpolation and classification method for map data visualization | |
CN107478884A (zh) | 一种快速显示波形搜索结果的方法和示波器 | |
CN108681486A (zh) | 最优线程数量求取方法及装置 | |
CN104977556B (zh) | 基于死区时间测量的平均波形捕获率测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100102 Beijing city two Chaoyang District Lize Road No. 2 A block two layer Patentee after: Beijing Huada Jiutian Technology Co.,Ltd. Address before: 100102 Beijing city two Chaoyang District Lize Road No. 2 A block two layer Patentee before: HUADA EMPYREAN SOFTWARE Co.,Ltd. |