法律状态公告日
法律状态信息
法律状态
2017-06-06
授权
授权
2015-02-04
实质审查的生效 IPC(主分类):G06F17/50 申请日:20140911
实质审查的生效
2015-01-07
公开
公开
技术领域
本发明涉及一种用Proteus仿真逻辑分析仪测得硬件电路时序波形方法。
背景技术
逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,利用便于观察的形式显示出数字系统的运行情况,最主要作用在于时序判定和对数字系统进行分析和故障判断。大多数开发人员通过逻辑分析仪等测试工具的协议分析功能可以很轻松的发现错误、调试硬件、加快开发进度,为高速度、高质量完成工程提供保障。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑1和0),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为High,低于参考电压者为Low,在High与Low之间形成数字波形。
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。逻辑分析仪和Proteus是两个完全独立系统,还没专门的接口实现逻辑分析仪数据直接导入Proteus。
发明内容
本发明的目的是利用Proteus仿真逻辑分析仪器测得波形。
为了达到上述目的,本发明的技术方案是提供了一种基于Easy HDL仿真逻辑分析仪测得波形方法,采用Proteus软件的Easy HDL语法,包括以下步骤:
步骤1、利用逻辑分析仪采集硬件电路的波形信号,在电脑端利用逻辑分析仪自带软件将波形数据导出形成数据文件。
步骤2、设定基础时间间隔DT为采样频率的倒数,将数据文件转换成Easy HDL脚本,包括以下步骤:
步骤2.1、依据逻辑分析仪实际用于测量的引脚数目N创建N个脚本文件;
步骤2.2、读取数据文件中当前行数据,判断当前行数据是否为文件尾,如果是文件尾则跳至步骤2.5,如果当前行不是有效数据跳至步骤2.4,否则执行步骤2.3;
步骤2.3、拆分数据并写脚本文件,包括步骤:
获取当前行数据表示信号没有发生变化的字符A,还抽取当前数据行中逻辑分析仪各个引脚的当前值,按照格式“SLEEP t*DT,OUT=Pinx”分别写入对应的脚本文件,Pinx为逻辑分析仪引脚Pinx的值;
步骤2.4、当前行号+1,跳至步骤2.2执行;
步骤2.5、保存并关闭文件结束将导出数据转换成转换成Easy HDL脚本;
步骤3、在Proteus软件中放置N个发生器Generator,其Digital Types属性设置为Easy HDL,并将相应生成的Easy HDL脚本导入,运行仿真,生成所测得数字波形。
优选地,在所述步骤1之后并所述步骤2之前有:
对导出的数据文件进行文件生成合并文件后,逐行读取文件进行判别,并删除无用信息,形成新的数据文件。
本发明的另一个技术方案是提供了一种基于Proteus的仿真逻辑分析仪测得波形方法,采用Proteus软件的Easy HDL语法,包括以下步骤:
步骤1、利用逻辑分析仪采集硬件电路的波形信号,在电脑端利用逻辑分析仪自带软件将波形数据导出形成数据文件:
步骤2、设定基础时间间隔DT为采样频率的倒数,将数据文件转换成EasyHDL脚本,包括以下步骤:
步骤2.1、依据逻辑分析仪的实际用于测量引脚数目N创建N个脚本文件,分别定义为脚本文件Pin1,…脚本文件PinN;
步骤2.2、以读写模式打开脚本文件Pinn,n初始化为1;
步骤2.3、读取数据文件的当前行数据,判断当前行数据是否为文件尾,如果是文件尾则跳至步骤2.6,如果当前行不是有效数据跳至步骤2.5,否则执行步骤2.4;
步骤2.4、拆分数据并写脚本文件,包括步骤:
步骤2.4.1、获取当前行数据表示信号没有发生变化的字符A,还抽取当前数据行中逻辑分析仪各个引脚的当前值,将时间t赋值为A;
步骤2.4.2、循环执行临时行号+1,临时行号初始值为1,获取下一行数据,判断当前引脚数据是否与上一行相应的引脚数据值一致,若一致则t=t+当前行数据中表示信号没有发生变化的字符,若不一致,则循环结束,且取当前行号值= 临时行号-1;
步骤2.4.3、按照格式“SLEEP t*DT,OUT=Pinx”写入脚本文件,Pinx为逻辑分析仪引脚Pinn的值;
步骤2.5、当前行号+1,跳至步骤2.2执行;
步骤2.6、n=n+1,判断n是否大于N,若是,则执行步骤2.7,否则,跳至步骤2.2;
步骤2.7、保存并关闭文件,结束将导出数据转换成脚本的流程;
步骤3、在Proteus软件中放置N个发生器Generator,其Digital Types属性设置为Easy HDL,并将相应生成的Easy HDL脚本导入,运行仿真,生成所测得数字波形。
本发明通过利用逻辑分析软件数据导出功能,将数据按照指定格式导出数据文件,再利用设计程序软件对数据文件进行进一步处理得到最终数据文件,按照Proteus中Easy HDL语法的要求对每个引脚进一步生成Easy HDL数据脚本文件。在Proteus模型文件中依据要仿真的波形的通道数放置Easy HDL Generator端子,并导入相应的脚本文件,关闭Easy HDL Generator设置窗口。保存文件,并利用Proteus仿真功能即可在Proteus中输出仿真波形。为利用Proteus对波形文件进行进一步仿真分析处理提供基础。
本发明通过将逻辑分析仪测得波形导出,进一步处理后输入到Proteus软件,进行波形重现,为进一步的仿真测试提供基础。
附图说明
图1为本发明提供方法的流程图;
图2为本发明中数据文件生成脚本文件流程。
具体实施方式
为方便说明实施方法,本发明兹以2个实施例说明本发明提出的方法。
实施例1
本发明提供了一种基于Proteus的仿真逻辑分析仪测得波形方法,其步骤为:
数据导出:利用孕龙科技的逻辑分析仪及相应的软件ZEROPLUS logic Analyzer说明数据导出(本例中采样频率为1MHz)。首先在波形文件中删除无用的波形通道。单击“文件”-》“波形导出”后弹出“波形导出”对话框,设置 参数,导出参数选“否”,显示方向选“垂直”,数据类型选“所有”,数据格式选“数据变化点压缩”,资料格式选“二进制”,设定每个文件输出采样点数(范围为1-600000,本例为方便后续说明设置为50),并设置需要导出的数据范围,设定导出文件名“数据”,单击保存等待导出结束,输出一系列序号连续的文件“数据_1.txt”、“数据_2.txt”...、“数据_10.txt”、...、“数据_99.txt”、“数据_100.txt”等。
文件预处理:(1)合并文件:方法1,编写程序取排序后文件列表,按照文件创建时间以及文件名排序,创建新文件All.txt,按顺序读取排序后每个文件内容,写入到All.txt。方法2,利用文本编辑软件或文件合并工具软件合并,以EmEditor为例(版本13)为例,打开所有输出数据文件,工具->分割(合并)->把几个文档合并成一个文件,按照文件序号排序,设定目标文件文件名为All.txt,按照提示完成合并。(2)删除空行以及非数据行:方法1:利用文本编辑软件利用正则表达式执行高级替换消除非数据行及空行。方法2,利用高级语言编程清除所有空行以及非数据行。
数据文件转换成Easy HDL脚本:设定基础时间间隔DT为采样频率(Cypl)的倒数1/Cypl s(本实例中采样频率1MHz,DT值为0.000001s=1us)。转换流程如下:
S1.依据引脚数目N创建脚本文件,命名分别为“Pin1.txt”、“Pin2.txt”、..、“PinN.txt”,本例中只有两个引脚,故创建“Pin1.txt”、“Pin2.txt”。在新创建脚本文件中写入“Cypl=1000000”、“float DT=1/Cypl”。
S2.读取All.txt当前行数据,判断当前行数据是否为文件尾,如果是文件尾则跳至S5,否则执行S3继续下一步处理。
S3.拆分数据并写脚本文件。比如获取“62~66(5) 1 0”,括号前为波形变化起止时间点,括号中数值为信号没有发生变化的时间间隔t,从数据文件中抽取第一个括号中字符换数字为t(本例中为5),抽取右括号后第一个数据为第一引脚数据Pin1(本例为1),抽取剩下另外一个数据Pin2(本例为0)。按照格式“SLEEP t*DT,OUT=Pinx”写入脚本文件(其中Pinx为引脚数据当前值),写Pin1脚本文件当前行为“SLEEP 5*DT”及下一行为OUT=1”,写Pin2脚本文件当前行为“SLEEP 5*DT”及下一行为“OUT=0”:
S4.当前行号+1,跳至S2执行。
S5.保存并关闭文件,结束将导出数据转换成脚本流程。
Proteus模型创建:新建模型文件,增加N个Generator端子(本例为两个),各个端子的名称分别设置为Pin1、Pin2、..、PinN,设置各个Generator属性为Digital Types的Easy HDL,设置每个Generator的名称,并将相应生成的脚本代码复制粘贴到相应的Generator的local script窗口。并分别保存各个Generator和工程文件。
运行仿真,对应Generator引脚将生成逻辑分析仪所测得数字波形。
实施例2
本例中除了脚本生成过程,其它同实例1。
简化脚本长度,在输出数据变化中是以每组引脚中有一个发生变化就输出一组数据,在引脚超过两个以上时候,这样必然导致某几个引脚输出一些数据有一定程度的冗余。
以本实例中的数据文件为例,
PIN2数据变化频繁,PIN1数据很少变化。可以通过在写时候合并冗余行数据,只有在引脚值真正变化时候才输出。第三行开始连续4行没有变化,第7行开始又有四行没变化,因此可以在转换成脚本时合并PIN1的3-6行和7-10行数据。合并方法详述如下。
数据文件转换成Easy HDL脚本:设定基础时间间隔DT为采样频率(Cypl)的倒数1/Cypl s(本实例中采样频率1MHz,DT值为0.0000001s=1us)。转换流程如下:
S1.依据引脚数目N创建脚本文件,命名分别为“Pin1.txt”、“Pin2.txt”、..、 “PinN.txt”,本例中只有两个引脚,故创建“Pin1.txt”、“Pin2.txt”。在新创建脚本文件中写入“Cypl=1000000”、“float DT=1/Cypl”。
S2.从n=1(PIN1)以读写模式打开脚本文件,重新以只读方式打开数据文件All.txt。
S3.读取All.txt当前行数据,判断当前行数据是否为文件尾,如果是文件尾则跳至S6,否则执行S4继续下一步处理。
S4.拆分数据并写脚本文件。比如获取“32~36(5) 0 1”,括号前为波形变化起止时间点,括号中数值为信号没有发生变化的时间间隔t,从数据文件中抽取第一个括号中字符换数字为t(本例中为5),抽取右括号后当前引脚数据Pinx(本例PIN1为0,PIN2为1)。
取临时行号为当前行号值3。
循环执行临时行号+1,获取下一行判断当前引脚数据是否与上一行Pinx值一致,一致则t=t+括号中数据,否则循环结束,且取当前行号值=行号临时值-1。
最终当前t=5+10+3+5=23,PIN1值为0,当前行号值为6。
按照格式“SLEEPt*DT,OUT=Pinx”写入当前引脚的脚本文件(其中Pinx为引脚数据当前值),写Pinx脚本文件当前行为“SLEEP 23*DT”及下一行为OUT=0”。
S5.当前行号+1,跳至S3执行。
S6.所有引脚脚本转换结束跳至S7,否则引脚号加1跳至S2。
S7.保存并关闭文件,结束将导出数据转换成脚本流程。
机译: 基于使用嵌入对象中的概率网络的微仿真方法,对物理实体与传感器测得的影响因素之间的非线性依赖性进行仿真的方法和装置
机译: Easy slab是基于留置构件的模板系统,用于浇铸单向带肋混凝土板,带肋板可节省混凝土,同时提供中等到重载的出色跨度Easy slab是基于留置构件的轻型模板,易于运输,无需起重机是必须的。 Easy slab的优点是地板是EPS绝缘的,并且在“锅”之间具有“桥”的隔音功能,从而使大多数公用事业都可以在“桥”产生的空隙内运行
机译: 逻辑分析仪和使用该逻辑分析仪分析波形数据的方法