Proteus在微机原理课程教学中的应用
2011-08-09田社平俞水锋方向忠茅旭初
田社平,俞水锋,方向忠,茅旭初
(上海交通大学电子信息与电气工程学院,上海 200240)
0 引言
“微机原理与接口技术”是电类专业的一门必修专业基础课程[1]。其主要任务是通过课堂教学和实验环节,结合Intel 80x86系列CPU,使学生掌握计算机组成、CPU内部结构、存储器、常用的I/O接口、指令系统、汇编语言等基本原理,培养学生应用计算机硬件和软件基础知识的能力,达到能够利用外围芯片设计开发小规模的计算机应用系统的目的,为将计算机运用到现代通讯、信息处理、自动控制与检测等领域打下坚实的基础。
在该课程的教学过程中,学生对8086系统中内存与I/O编址、内存扩展、IO接口芯片与CPU的连接、可编程接口芯片复杂的工作方式等内容普遍感觉比较难以掌握,而在微机原理实验课程中,采用的微机原理试验箱由于其内部线路已经连好,没有给学生实际设计微机系统的机会,实验效果不是很理想。尤其是在教学实践中,往往先进行理论课教学,然后再开展实验教学,使课程的理论部分和实验部分存在脱节的现象。本文基于笔者的教学实践,讨论仿真软件Proteus在微机原理与接口技术课程教学的应用。
Proteus是由英国Labcenter公司开发的一款电路与嵌入式系统设计与仿真平台,它由ISIS和ARES 2个软件包构成,ISIS是原理图编辑与仿真软件包,ARES 是布线编辑软件包[2,3]。ISIS 软件可以仿真、分析各种模拟器件和集成电路,支持许多型号的单片机仿真。特别地,从Proteus 7.5 SP3版本开始,Proteus对8086CPU及相关接口芯片提供了支持。
1 采用Proteus仿真8086微机系统
1.1 Proteus虚拟仿真模块的特性
Proteus虚拟仿真模块(VSM)包含了基于传统8086处理器的开发、测试和虚拟系统建模的几乎全部功能。所支持的可编程接口芯片包括:可编程外围接口芯片8255A、可编程计数器/定时器8253、可编程串行接口芯片8250A和8251A等。该软件支持全部8086CPU指令集和寄存器,支持8086CPU所有总线、内存和其它I/O引脚操作,还支持8086系统的所有中断模式。目前Proteus的最新版本仅支持8086最小系统模式,不支持8086最大系统模式。
1.2 仿真方法
Proteus能够完全模拟实际微机系统的设计和调试过程,利用该软件进行8086微机系统仿真采用如下步骤。
(1)硬件系统的设计与输入—根据设计要求,设计的8086微机硬件系统利用Proteus的ISIS模块进行原理图输入和编辑。图1所示为可编程芯片8251A、8253A 与8086接口的仿真电路图[4]。
图1 8086微机系统仿真电路
(2)程序的编写和编译—选择任一支持8086汇编语言的编译器,编写汇编源程序,然后进行编译、链接生成可执行的COM或EXE格式的程序文件。
(3)系统调试—Proteus支持多种程序调试方式,Proteus中的8086模型能直接加载BIN、COM和EXE格式的文件到内部RAM中去,而不需要DOS,并且允许对Microsoft(Codeview)和Borland格式中包含了调试信息的程序可以进行源和/或反汇编级别的调试。一种简单的程序调试方法为:进入Proteus软件的ISIS环境,将程序文件加载到8086模型中;点击运行键,仿真电路开始运行,通过观察运行效果判断硬、软件设计的正确性。
2 仿真实例
Proteus几乎支持“微机原理与接口技术”课程的全部教学内容(8086最大系统模式目前不支持)。下面以8086串行通信电路(图1)为例介绍Proteus的应用方法。
2.1 串行通信电路设计
采用可编程串行通信接口芯片8251A和8086CPU进行电路设计给出了如下说明。
(1)8086CPU的时钟频率取8MHz,8251A的发送时钟信号和接收时钟信号由可编程计数器/定时器芯片8253A提供。8253A的输入时钟由系统时钟(8MHz)经过4分频后提供,即8253A的输入时钟频率为2MHz,该频率为8253A所能接受的最高频率。
(2)I/O端口地址采用3-8译码器74LS138实现。为简化设计,只有低8位地址参与译码,由图1可知,I/O芯片的地址分配可取为:8253A计数器0的地址为80H,控制口地址为86H;8251A的数据口地址为88H,控制口地址为8AH。
(3)串行通信格式为:9600kps波特率,8位数据,偶校验,1个停止位。取波特率因子为16,则8253A计数器0的初始值为2M/(9600×16)=13。
(4)采用Proteus提供的虚拟终端VT与8251A的串行接收数据端RxD和串行发送数据端TxD互联,便于程序运行结果的观察。
2.2 程序编写和编译
采用EMU8086软件提供的编译环境进行程序的编写和编译。EMU8086是一款基于Windows的8086汇编语言编译、调试和仿真软件,其界面友好、操作简单,得到了较为广泛的应用。程序编译正确后,将生成COM格式的可执行文件。
2.3 仿真效果
启动Proteus软件的ISIS环境,调入图1电路,双击8086模型(U1),在弹出的“Edit Component”对话框中,输入COM格式的可执行文件名及其文件路径,同时输入时钟频率为8MHz。双击虚拟终端VT,在弹出的“Edit Component”对话框中,设置串行通讯格式:9600kps波特率,8位数据,偶校验,1个停止位。
点击运行键或按F12键,打开虚拟终端的输出窗口,显示结果如图2所示,串行运行结果和设计要求一致。
2.4 进一步的讨论
Proteus除了可以进行虚拟电路仿真外,还提供了物理接口模型(Physical Interface Model),利用物理接口模型可建立虚拟电路与外部通信的桥梁,其中与实际外部串行接口通信的模型为COMPIM,如图3所示。借助于COMPIM,仿真电路可通过本机的RS232接口与外部通信。
2 程序运行结果
图3 串口物理接口模型
由于电路是以仿真模型的方式运行,其运行的实时性受到运行Proteus软件的计算机性能的限制。如果在仿真过程中,电路运行的实时性得不到保证,Proteus会给出“Simulation is not running in real timedue to excessive CPU load.”的提示信息。对串行通信而言,如果通过COMPIM和外部的实际串行接口电路进行通信,则必须保证时序的实时性要求,否则将得不到预期的结果。一种解决办法是尽量降低仿真电路中8086CPU的工作频率,同时选用较低的波特率。
3 结语
在“微机原理与接口技术”课程教学中,我们利用Proteus软件,完全可以仿真8086系统中内存与I/O编址、内存扩展、IO接口芯片与CPU的连接、可编程接口芯片编程等内容,但Proteus不包括8237A的仿真模型,因此无法仿真8237A DMA控制器的接口与编程。
我们可以在课堂教学中直接引入Proteus软件,通过边讲授微机原理与接口技术的理论知识,边借助Proteus软件验证、演示微机系统的运行结果,有利于发挥教师的教学想象力。也可以在学生课外学习中使用Proteus软件,由于软件操作的简单性和低成本性,在学生的课前预习和课后复习中可非常方便地运用Proteus来加深对微机原理与接口技术知识点的理解。
[1] 吉向东,李新鄂.基于Proteus的微机原理实验仿真[J].信息技术.2010,No2:36-39
[2] www.labcenter.com/
[3] 周润景,张丽娜.基于PROTEUS的电路及单片机设计与仿真[M].北京:北京航空航天大学出版社.2006
[4] 周荷琴,吴秀清.微型计算机原理与接口技术[M].合肥:中国科学技术大学出版社.2008