电子说
这种方法主要是使用计算机软件来模拟运行,实际的单片机运行因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最终的设计。
使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步,全速,查看资源断点等。硬件仿真是开发过程中所必须的。
1)商用CPU这是一种最简单的实现方式,直接采用最普通的商用CPU去设计仿真器。一般来说,CPU都有一些资源,如非屏蔽中断,NMI,TRAP指令,Ready信号等等。在用商用CPU去设计仿真器时,基本上都会采用这些指令式信号,以达到单步Step,全速运行Go,断点Breakpoint的功能。用商用CPU去设计仿真器,一般来说其CPU的速度不能很快,
如像8051,196等是可以采用这种方式的。若CPU的速度很快,则无法去实现。因为仿真器要在CPU的地址,数据总线上截取或插入某些资讯。CPU的速度太快,则根本无法在时序上去做截取或插入资讯的动作。用商用CPU去做仿真CPU,一般来说会碰到I/O管脚重整的困难,就像最简单的8051或83C196,其A/D总线都可复用成I/O。而仿真器是要提供所有有关CPU的资料给用户。所以,实际上CPU是以地址/数据总线的方式在运行。如用户的设计是用I/O方式的话,仿真器就一定要重新整合一套I/O线路出来。这一点是最麻烦的地方,往往有些简单的仿真器就不能做到这一点。
2)采用特殊的仿真模式有的商用CPU会提供一些特殊的仿真模式,其CPU还是采用商用CPU。但当CPU在上电或复位时,如果在CPU的某些管脚上灌一些特殊的电平或序列,则CPU就会进入一种特殊的仿真模式,如Philips的8051CPU,就是有一种叫“Hooks”的模式。进入这种模式之后,CPU会在地址数据总线上分时地提供一些用于I/O重建的信息。有了这种特殊的仿真模式,仿真器进行I/O重建相对来说比较简单一些,但往往会存在着一些时序方面的问题。毕竟进入仿真模式之后的CPU的时序与普通CPU是有所不同的。如果用户的设计非常苛刻的话,有时会存在连不上目标板的问题,并且,这时的CPU在跑很高的时钟频率会遇到困难。
3)使用专用仿真CPU–BondoutSilicon一般来说,当CPU的速度很快时,往往就需要专用的仿真CPU了。这时仿真器在控制方面,相对来说设计起来就比较简单。但此时仿真器的性能,已在很大程度上取决于仿真CPU了。仿真CPU设计得好,则相对来说仿真器的功能及稳定度都会比较好。但是,由于仿真CPU是一款专用的CPU,对于芯片厂商来说生产的数量非常少,往往其测试程度不会很高,专用的仿真CPU或多或少都会有些问题,就像目前国内仿真器普遍采用的W78958仿真CPU。这是Winbond为8051做的一种仿真CPU,其在中断,I/O的驱动能力等存在着问题。
4)利用BDM,JTAG方式当CPU越来越复杂,速度越变越快时,以上方式都已不能满足要求了。像PowerPC或Pentium,其内部有MMU,Cache,并且可乱序执行,以往传统的总线方式都不可行了。JTAG的提出,最初是给测试用的,主要目的是为了测试器件是否焊好,是否存在短路或断路。后来,一些CPU的厂商把这一概念引进到了用于CPU内部。把JTAG的移位寄存器全部连到CPU内部的控制状态寄存器,并增加一些仿真器专用的寄存器,如控制Memory的读写等。这时,仿真器在硬件上面已变得很简单了,用户设计目标板时,只要把几个控制管脚电平设计正确,就可以实现在线实时控制。
全部0条评论
快来发表一下你的评论吧 !