新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 80C196单片机仿真软件的设计与实现

80C196单片机仿真软件的设计与实现

作者:时间:2013-09-11来源:网络收藏


  CRunCode类封装所有的操作模块,仿真中的指令执行部件,完成单步运行、一次运行和连续运行3种指令的执行方式。C196Chip类仿真整个模块,除了指令执行部件外,还包括各种外设模块,完成中断、串口等功能。对外提供统一的控制接口,完成的初始化、启停、访问存储器、访问外设、访问特殊功能寄存器。

CPU模块中各个类的描述及其继承关系。

2.3指令的仿真运行

  指令系统中有104种指令,按照操作码和功能的不同,将指令划分为13类,每个类模块实现1类指令的功能。

  CRunCode类封装了13类指令的各个模块,提供了统一的接口,以地址寄存器值作为输入输出。进入CRuncode-类的为地址寄存器值,根据此值取得指令,依指令操作码的不同进入各个操作模块。各个操作模块完成指令的功能,并计算出下一条指令的地址值返回给CRunCode-类,CRunCode类再将此值写入CPU的地址寄存器中。其执行过程如图3所示。

  对于每一条指令的仿真,包括操作过程,操作结果与程序状态字的改变力求做到与指令集相一致。以两个操作数的加法指令ADD Al,BL为例,其实现过程如下:


2.4编译模块设计

  编译模块将用户编写的源程序编译成CPU能识别的二进制机器语言的形式。为了降低系统的设计难度,采用了已经具有的外部程序对源程序进行处理。编译模块读取由外部程序生成的列表文件,将程序信息转化为本系统能处理的数据结构,并将生成的二进制操作码装入CPU的存储器。

2.5程序仿真与控制的实现

  程序运行有3种方式,即单步运行,运行一次和连续运行。程序的主要控制功能有复位、设置/清除中断点、查看寄存器、查看程序状态字等。编译模块对源程序进行预处理,将源程序转化为二进制操作码。CPU模块将操作码装入存储器成功后,初始化CPU的各种信号,并将程序地址寄存器的值置Ox2080,这是80C196汇编程序的起始地址。然后CPU模块依据地址寄存器的值取操作码,按照取址、译码、执行的过程执行每一条指令。在一条指令执行完毕后,执行中断处理,刷新显示结果以及检查中断点等操作。

3软件运行结果

  本的关键技术在于CPU模块的设计。这个模块要完成80C196所有指令的功能,要分配存储器资源,要控制软件仿真过程中程序状态字、特殊功能寄存器以及其他CPU信号的变化。采用面向对象编程方法和分层设计的思路,通过对指令的合理划分,降低了指令系统的复杂度,通过对实际器件的抽象与封装,实现了与实际硬件器件的功能等价,使得仿真结果与真实执行情况相一致。

  至此,该的基本功能已经实现,为仿真平台的设计打下了基础,接下来的工作是以为基础,完成仿真平台的开发与调试,主要包括各种外设的实现,测试用例生成工具以及驱动测试的外部激励产生模块,以此搭建一个具有良好人机界面的测试环境,提高应用软件的质量与可靠性。按照软件要求计划采用dll文件的方式将各个模块生成库文件,并在仿真软件中预留各个库文件的接口,在程序需要时调用相应的库文件即可,简化了设计的难度,同时增加了仿真平台的灵活性和通用型。

4结 语

  本文提出一种采用VC++面向对象技术设计80C196单片机应用软件仿真环境的方法。据此方法研制的仿真软件可仿真80C196指令集的全部指令,并可对80C196单片机嵌入式控制软件进行仿真与运行。该项技术为全软件测试平台的开发奠定了基础,也可供相关领域的应用参考。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭