80C51系列单片机仿真器选购指南
第六章 如何测试通用仿真器
在选择了仿真器生产厂商后,用户还需要对仿真器的性能做仔细的测试,保证您选择的仿真器能够达到该仿真器保证的性能以及作为仿真器应该达到的性能。
在选择一种仿真器前,通过该仿真器的广告和销售人员的介绍,用户能基本上了解该仿真器的突出性能。这些突出性能应该是该仿真器确实存在的功能,虽然可能有被夸大但一般都不会有欺骗的成分。这些性能好不好需要有针对性的一一验证,这里只能建议用户将目光注意在实际仿真性能上,而不要过分注意一些与仿真器无关或关系不大的功能。
很多的仿真器虽然具备一些附加的功能,但是用户必须要注意到这些仿真器可能在一些最基本的仿真功能却做不好,这种现象在国产的仿真器中非常普遍!由于用户并不专业于仿真器的测试,因此在购买中不知道对这些仿真器的死点进行验证。等以后在学习特别是在开发设计中,这些设计中的死点可能给您带来莫名其妙的问题。您可能要花几倍的时间来寻找其中的原因,因为您首先怀疑是您系统的问题而不怀疑是仿真器的问题。所以选择一个性能可靠的仿真器是十分重要的,这需要非常专业化的测试程序来实现。
以下的测试程序由广州致远电子有限公司提供,经过长时间的使用证明能基本上反映出一个仿真器设计水平的高低。广州致远电子有限公司在提供这些测试程序时声明:这些测试程序只是指出仿真器设 计中容易出现的问题,但并不有意攻击任何含有上述问题的仿真器厂家。
1.单步性能的测试
测试说明:单步是仿真器设计中比较难实现的功能。照通常的理解,用户每执行一个单步应该准确实现理想运行的单步性能。例如,运行一个机器周期的指令,内部的所有时序应该都动作一个机器周 期而不能出现不动作或动作过度的现象。不过很遗憾的看到国内的仿真器多数不能达到这个指标。
测试程序:
ORG 0000H
SETB TR0 /* 打开定时器0 */
TestStart:
NOP /* 定时器0 运行1个机器周期, TL0 加1 */
MOV A,#0FFH /* 定时器0 运行1个机器周期, TL0 加1 */
MUL AB /* 定时器0 运行4 个机器周期, TL0 加4 */
LJMP TestStart /* 定时器0 运行2 个机器周期, TL0 加2 */
END
测试步骤
(1) 照您当前使用的仿真器要求测试上面的程序;
(2) 在运行前打开TL0 的显示,以便单步运行后能观察TL0 的变化;
(3) 使用当前仿真器环境提供的单步功能开始单步运行;
(4) 单步运行后检查TL0 变化的数值是否与指令的周期数相同。
测试结论:仿真器如果没有照严格正规的设计,程序的单步运行性能将不准确,一般会出现实际运行时间变长的现象,这在时间要求较高的单步运行将不能仿真程序的真正运行。
2.中断性能的测试
测试说明:中断是一种非正常的程序跳转,单步仿真有一定的难度,尤其在低档仿真器中。在当前采用Bondout 技术制作的仿真器中一般可以做到正确仿真,但是仍有一些仿真器不能正确单步仿真中断。
测试程序:
ORG 0000H
LJMP TestStart
ORG 000BH /* 定时器0 的中断服务程序 */
RETI
TestStart:
SETB EA /* 开放全局中断允许 */
SETB ET0 /* 开放T0 中断允许 */
TestLoop:
SETB TF0 /* 设置T0 的中断标志 */
INC A /* A 数值加一,以便观察程序持续运行 */
LJMP TestLoop /* 连续运行 */
END
测试步骤
(1) 照您当前使用的仿真器要求测试上面的程序。
(2) 每次SETB TF0 后程序将进入T0 的中断服务程序,执行完毕后返回主程序继续运行。
(3) 主程序能在TestLoop 中连续运行,因此A 能连续加一,但是每循环一次就进入一次中断。
测试结论:仿真器如果没有照严格正规设计,程序的中断性能将不准确。可能出现程序不能跳转到中断服务程序,或没有返回到正确的主程序,或A 不能每次循环连续的加1。
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码