网站公告列表     本站开通全国范围代收货款业务,详情请点击  [dycxin  2008年5月14日]        
加入收藏
设为首页
联系站长
您现在的位置: EDA加油站 >> 51单片机 >> 51入门 >> 开发环境 >> 正文
  [推荐]80C51系列单片机仿真器选购指南(下)           ★★★ 【字体:
80C51系列单片机仿真器选购指南(下)
80C51系列单片机仿真器选购指南(下)
作者:未知    51单片机来源:网络    点击数:    更新时间:2007-11-25    
第六章 如何测试通用仿真器  原文位置
原文位置
        在选择了仿真器生产厂商后,用户还需要对仿真器的性能做仔细的测试,保证您选择的仿真器能够达到该仿真器保证的性能以及作为仿真器应该达到的性能。  原文位置
原文位置
       在选择一种仿真器前,通过该仿真器的广告和销售人员的介绍,用户能基本上了解该仿真器的突出性能。这些突出性能应该是该仿真器确实存在的功能,虽然可能有被夸大但一般都不会有欺骗的成分。这些性能好不好需要有针对性的一一验证,这里只能建议用户将目光注意在实际仿真性能上,而不要过分注意一些与仿真器无关或关系不大的功能。  原文位置
原文位置
       很多的仿真器虽然具备一些附加的功能,但是用户必须要注意到这些仿真器可能在一些最基本的仿真功能却做不好,这种现象在国产的仿真器中非常普遍!由于用户并不专业于仿真器的测试,因此在购买中不知道对这些仿真器的死点进行验证。等以后在学习特别是在开发设计中,这些设计中的死点可能给您带来莫名其妙的问题。您可能要花几倍的时间来寻找其中的原因,因为您首先怀疑是您系统的问题而不怀疑是仿真器的问题。所以选择一个性能可靠的仿真器是十分重要的,这需要非常专业化的测试程序来实现。  原文位置
原文位置
       以下的测试程序由广州致远电子有限公司提供,经过长时间的使用证明能基本上反映出一个仿真器设计水平的高低。广州致远电子有限公司在提供这些测试程序时声明:这些测试程序只是指出仿真器设 计中容易出现的问题,但并不有意攻击任何含有上述问题的仿真器厂家。  原文位置
原文位置
      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。  原文位置
原文位置
       3.连续中断性能的测试  原文位置
原文位置
       测试说明:在80C51 的中断系统中,串口中断比较特殊。进入串口中断服务程序后中断标志TI或RI不会自动清除,如果用户程序不对TI 或RI进行清除操作则可能会出现连续进入中断服务程序的情况。根据80C51 的中断处理,在退出中断后必须执行完一条指令后才能重新进入中断服务程序,因此即使连续中断的情况下主程序也能得到连续执行。  原文位置
原文位置
       测试程序:  原文位置
原文位置
                ORG       0000H  原文位置
原文位置
                LJMP      TestStart  原文位置
原文位置
                ORG        0023H                     /*  定时器0 的中断服务程序 */  原文位置
原文位置
                RETI  原文位置
原文位置
    TestStart:  原文位置
原文位置
                SETB      EA                         /* 开放全局中断允许 */  原文位置
原文位置
                SETB      ES                         /* 开放串口中断允许 */  原文位置
原文位置
                SETB      TI  原文位置
原文位置
TestLoop:  原文位置
原文位置
                NOP  原文位置
原文位置
                NOP  原文位置
原文位置
                INC        A                         /* A 数值加一,以便观察程序持续运行 */  原文位置
原文位置
                LJMP      TestLoop                   /* 连续运行 */  原文位置
原文位置
                END  原文位置
原文位置
      测试步骤  原文位置
原文位置
     (1)   照您当前使用的仿真器要求测试上面的程序。  原文位置
原文位置
     (2)   进入TestLoop 后,每次单步运行完一条程序都会进入串口中断,退出后继续运行一条下面的程序,然后又进入中断服务程序,A 的数值可以得到递增。  原文位置
原文位置
     (3)   主程序能在TestLoop 中连续运行,因此A 能连续加一,但是每循环一次就进入一次中断。  原文位置
原文位置
       测试结论:仿真器如果没有照严格正规设计,程序连续运行中断程序性能将不准确。可能出现程序不能跳转到中断服务程序,或没有返回到正确的主程序,或A 不能每次循环连续的加1。  原文位置
原文位置
       测试小结  原文位置
原文位置
       上述的几个测试程序对仿真器的性能要求很高,如果仿真器通过测试说明被测试的仿真器仿真性能指标较高;如果仿真器没有通过测试只能判断仿真器性能不是最好,具体的综合性能要有待其它检验。  原文位置
原文位置
       第七章    如何挑选测试HOOKS 技术仿真器  原文位置
原文位置
        HOOKS 技术是国外普遍采用的一种仿真技术,同Bondout 技术相比较,仿真器的适用范围可以更广。HOOKS 技术在10年前已经被国内引进,并被当时的仿真器厂家试图采用。但是由于HOOKS 技术本身的复杂性,当时国内众仿真器厂家竟无法设计出可以使用的仿真器,致使国内的仿真技术远远落后于国外。  原文位置
原文位置
        2002年,周立功旗下的广州致远电子有限公司推出了研制多年的TKS 系列HOOKS 仿真器,并在性能上全面超过国外同类型的HOOKS 仿真器,国内的用户能以低廉的价格购买到技术先进的HOOKS技术仿真器。在TKS 系列HOOKS 仿真器面市以后,国内的仿真器厂商纷纷加强研发力量研制HOOKS技术,经过了一段时间后也宣布供应采用HOOKS 技术的仿真器。用户需要注意的是:HOOKS 技术只是一个基本的仿真技术,要最终作成仿真器还必须依靠设计工程师精心的设计,因此市场上HOOKS 技术的仿真器性能指标可能有很大的差别,有的不占用用户资源,有的就做不到;有的仿真频率可以到很高,但是有的不行。因此用户应仔细加以挑选和鉴别。  原文位置
原文位置
       根据HOOKS 技术本身的特点,用户应该对以下的几个方面加以注意和测试。  原文位置
原文位置
       能否运行外部用户目标板上的程序  原文位置
原文位置
       由于HOOKS 技术中P0/P2 口是重新构造的,因此P0/P2 口上的时序处理是整个设计中的难点。P0/P2 的I/O 特性和数据总线特性相对容易实现一点,但是程序总线很难正确实现,这是由于HOOKS的技术结构决定的。一般HOOKS 仿真器在实现仿真内部64K 代码空间比较容易,但是仿真内部4K (类似89C51)/8K (类似89C54)/16K (类似89C54)/32K (类似89C58)等能外扩ROM 空间的MCU类型则无法实现。在国内外所有的HOOKS 技术的仿真器中,只有广州致远公司的TKS 仿真器B 系列能真正做到稳定运行外部用户目标板上的程序。运行外部用户目标板上的程序是非常必要的,因为用户可能在外部扩充了一般的用户程序,需要实际仿真一下来验证整个系统的正确性;也可能在外部放置了大容量的(可能超过64K 的物理地址限制)分组字库,而这种特性是仿真器内部无法实现的;也可能是外部有分组的BANK 方式的运行代码,这种方式要求仿真器必须有运行外部程序代码的能力。  原文位置
原文位置
        P0/P2 口能否同时用作总线和I/O  原文位置
原文位置
        这种特性是芯片本来的性能,但是由于HOOKS 技术的难度,有很多HOOKS 仿真器不能做到这一点,导致用户在使用时无法全面满足要求。该性能一般不需要测试,可以直接阅读仿真器的性能说明或向生产厂商或代理商询问。作者检测过国内外知名仿真器厂家的多种HOOKS 仿真器,几乎都没有完美做到P0/P2 口的准确仿真。  原文位置
原文位置
        P0/P2 口的直流参数  原文位置
原文位置
       如果需要检测的仿真器根本做不到同时仿真I/O 和总线方式,则没有必要检测P0/P2 的直流参数。如果要检测的仿真器宣称能够同时仿真I/O 和总线方式,用户还必须分别在I/O 和总线两种方式下对直流参数进行测试。根据作者的HOOKS 仿真器测试经验,有的仿真器虽然宣称能够同时仿真I/O 和总线方式,但是根本不区分这两种方式驱动能力,采用的是一种平均方式,这样在作为I/O 时高电平驱动能力过大,而作为总线时驱动能力过小。用户在使用这类仿真器作为输入时,必须加大外部信号的驱动能力,这跟实际芯片的驱动能力相差太远;在作为总线使用时,如果外部的总线(包括地址总线和数据总线)个数稍多,总线电平将严重下降而无法工作。用户可以使用下面的测试程序配合示波器检查。  原文位置
原文位置
       测试程序:  原文位置
原文位置
                ORG         0000H  原文位置
原文位置
LJMP      TestStart  原文位置
原文位置
TestStart:       MOV      P0,#0FFH  原文位置
原文位置
TestLoop:       MOV       P0,#00H  原文位置
原文位置
                NOP  原文位置
原文位置
                MOV       A,#0FFH  原文位置
原文位置
                MOV       DPTR,#0FFFFH  原文位置
原文位置
                MOVX      @DPTR,A  原文位置
原文位置
                NOP  原文位置
原文位置
                MOV       P0,#00H  原文位置
原文位置
                SJMP      TestLoop  原文位置
原文位置
                END  原文位置
原文位置
       测试步骤  原文位置
原文位置
        (1)  照您当前使用的仿真器要求测试上面的程序,仿真器不接任何用户设备。  原文位置
原文位置
       (2)  单步运行完TestStart 的程序行,P0 的数值设置为0FFH。这时使用电压表测量一下P0的任意一个管脚(例如P0.0)的电压,记录为V1,V1 的数值一般小于当前的电源电压。然后使用一个2K 电阻,一端接仿真器提供的地,另一端接P0.0,使用电压表测量一下P0.0 的电压,记录为V2,V2的电压越接近与0 说明该仿真器P0 在I/O 口方式下的特性越好(接近于开漏)。如果V2 大于1伏说明P0 口的输入电阻在10K 以下,该仿真器P0 口在I/O 下性能较差。  原文位置
原文位置
       (3)  在TestLoop 中连续全速运行,仍保持2K 电阻接在P0.0。使用示波器观察P0.0 引脚,可以看到占空比较小的正电平脉冲,该正电平脉冲是有P0 输出的低8 位地址和数据输出引起的,因为处于总线方式,P0 口的驱动能力应该较强。保持示波器的正常显示,然后将2K 电阻不断的接触/脱离P0.0 引脚,观察P0.0 脚脉冲信号幅度的变化。如果该信号在2K 电阻接入后幅度降低很大,例如1V 以上,说明该仿真器P0 口驱动能力不足,无法满足用户的正常的需要。  原文位置
原文位置
       测试结论:HOOKS 仿真器要同时仿真I/O 口和总线模式而且保持良好的驱动特性是比较困难的,但是可以作到的。一般的HOOKS 仿真器一般不敢宣称同时仿真I/O 口和总线方式,但是用户需要注意即使宣称可以同时仿真I/O 和总线,用户也需要照上述的方法进行测试,防止厂家采取驱动折中的方法掩盖。根据作者的测试结果,国内所有的HOOKS 仿真器只有TKS 系列可以作到真正同时仿真I/O 口和总线方式,重要的是仍保持了良好的驱动特性。  原文位置
原文位置
       是否占用用户资源  原文位置
原文位置
       设计优良的HOOKS 仿真器不会占用任何用户资源,但是由于设计技术的差别,有一些采用HOOKS技术的仿真器不能达到这样的性能,一般会占用部分资源。占用资源将在使用中限制用户的使用,用户可能无法通过该仿真器实现正常程序的功能。该性能一般不需要测试,可以直接阅读仿真器的性能说明或向生产厂商或代理商询问。  原文位置
原文位置
       ALE 信号的关闭/开启  原文位置
原文位置
       HOOKS 技术的一个突出优点是能支持增强性能的仿真,而ALE 信号的关闭/开启是增强性能的一个典型范例。由于在HOOKS 技术中,依赖ALE 信号能大大简化信号的处理,因此一般采用HOOKS 技术的仿真器都不能关闭ALE 信号,否则会引起仿真时序的全面紊乱。该性能一般在仿真器的性能说明中没有详细说明,因此需要用户自己进行测试。  原文位置
原文位置
      下面的测试程序以PHILIPS 的P89C52X2 仿真芯片为例。  原文位置
原文位置
      测试程序:  原文位置
原文位置
               ORG        0000H  原文位置
原文位置
               LJMP      TestStart  原文位置
原文位置
TestStart:  MOV         P2,#55H                     /* 先对P1 进行设置 */  原文位置
原文位置
TestLoop:  ORL          AUXR,#01H                   /*  关闭ALE 信号 */  原文位置
原文位置
               NOP  原文位置
原文位置
               MOV       P2,#55H  原文位置
原文位置
               NOP  原文位置
原文位置
               ANL       AUXR,#0FEH                 /* 开启ALE 信号 */  原文位置
原文位置
               NOP  原文位置
原文位置
               MOV       P2,#0AAH  原文位置
原文位置
               NOP  原文位置
原文位置
               LJMP      TestLoop                     /* 连续运行 */  原文位置
原文位置
               END  原文位置
原文位置
     测试步骤  原文位置
原文位置
     (1)  照您当前使用的仿真器要求测试上面的程序。  原文位置
原文位置
     (2)  进入TestLoop 后,连续单步运行,程序应该能照正确的程序流程运行,而且对P2 的操作能正确在P2 口反映出来。  原文位置
原文位置
     (3)  在TestLoop 中连续全速运行,然后停止程序运行,观察当前程序位置是否是在TestLoop 内的有效位置,P2 是否是前一个对P2 操作的数值。  原文位置
原文位置
     测试结论:仿真器如果不能支持ALE 的关闭将无法通过上面的测试程序。  原文位置
原文位置
     双倍速时钟的动态/静态切换  原文位置
原文位置
       PHILIPS、SST 等一些MCU 厂商在自己的增强型51 产品中增加了双倍速时钟的功能,使51 内核的速度提高了两倍。而且在有的型号中同时具有6/12Clock 时钟切换的功能,用户在使用中有了更多的灵活性。因此,这种变化要求HOOKS 仿真器必须同时满足6/12Clock 两种方式之一的仿真(静态切换),更高的要求则是能在用户程序运行中变换6/12Clock 模式(动态切换)。能同时满足动态/静态切换的仿真器难度很大,在国内除TKS 宣布掌握这一技术外,没有见到其它厂家有类似的报道。时钟的静态切换功能可以直接查阅仿真器的性能说明或向生产厂商/代理商询问,也可以用下面的程序进行测试:  原文位置
原文位置
      下面的测试程序以PHILIPS 的P89C52X2 仿真芯片为例。  原文位置
原文位置
      测试程序:  原文位置
原文位置
               ORG       0000H  原文位置
原文位置
               LJMP      TestStart  原文位置
原文位置
TestStart:  MOV         P2,#55H                          /* 先对P2 进行设置 */  原文位置
原文位置
TestLoop:  ORL          CKCON,#01H                       /*  切换为6Clock 模式 */  原文位置
原文位置
               NOP  原文位置
原文位置
               MOV       P2,#55H  原文位置
原文位置
               NOP  原文位置
原文位置
               ANL       CKCON,#0FEH                      /* 切换为6Clock 模式*/  原文位置
原文位置
               NOP  原文位置
原文位置
               MOV        P2,#0AAH  原文位置
原文位置
NOP  原文位置
原文位置
                LJMP      TestLoop                             /* 连续运行 */  原文位置
原文位置
                END  原文位置
原文位置
     测试步骤  原文位置
原文位置
     (1)   照您当前使用的仿真器要求测试上面的程序。  原文位置
原文位置
     (2)  进入TestLoop 后,连续单步运行,程序应该能照正确的程序流程运行,而且对P2 的操作能正确在P2 口反映出来。  原文位置
原文位置
     (3) 在TestLoop 中连续全速运行,然后停止程序运行,观察当前程序位置是否是在TestLoop 内的有效位置,P2 是否是前一个对P2 操作的数值。  原文位置
原文位置
       测试结论:仿真器如果不能支持6/12Clock 的切换将无法通过上面的测试程序。  原文位置
51单片机录入:dycxin    责任编辑:dycxin 
  • 上一个51单片机:

  • 下一个51单片机: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    MCS-51单片机与PLD 可编程器…
    用单片机控制红外编码探测障…
    单片机休眠-复位运行方式提高…
    公交车线路微机监控系统的设…
    用单片机控制红外编码探测障…
    单片机与步进电机细分控制
    基于单片机控制的数字气压计…
    用C51系列单片机设计物体分级…
    能防止多次试探密码的单片机…
    MCS51系列单片机双机并行互连…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    EDA加油站|我要EDA网|山东电子网--东营市荣燕商贸有限公司版权所有! 站长:阿荣
    联系电话:0546-7870320,13371507828 电邮:51edacn@163.com
    山东东营西城济南路百祥电脑商城B302室 邮编:257000 鲁ICP备07018763号  鲁ICP备07000091号 鲁ICP备05003434号
    公司帐号:1615011209000037682 户名:东营市荣燕商贸有限公司 开户行:工行西城支行石油大学分理处