单片机的单CPU仿真器的设计
发布时间:2008/6/3 0:00:00 访问次数:587
    
     摘要:本文基于对8051单片机存储空间结构的深层次分析,提出了一种基于单片机的单cpu仿真器设计方案。该方案实用廉价,工程实践性强,可用于设计新的教学设备。
    引言
    单片机以它的廉价、体积小、可塑性强、稳定性高的特性,有着广阔的市场前景。 在用单片机开发产品时,虽然许多厂家设计了可编程isp单片机,但是从安全与便捷方面考虑,单片机仿真器仍然是开发人员不可或缺的工具。单片机仿真器在产品开发阶段可用来替代单片机进行软硬件调试,从而迅速发现、纠正程序中的错误,大大缩短单片机开发的周期。但实际中仿真器过于昂贵,因此,设计制作出一款廉价且实用的仿真器有着广泛的市场。
    传统的单片机仿真器硬件系统一般有三种实现方法。一、采用专用仿真的单片机。二、采用两套单片机,一个单片机用于仿真,并完成诸如通讯,中断等功能;另一个单片机则用于目标单片机,这样其资源不会被占用。三、用目标单片机作为仿真器,单片机即仿真器也作目标机的单片机用,其实质是一种rom监控器。第三种方法会占用单片机的部分资源,但结构简单,对于特定的开发者来说,实用性强,性价比高,且易于自行制作。本文开发设计的仿真器正是基于第三种原理,巧妙实现了数据空间与程序空间的互换,设计出一款实用廉价的仿真器,工程实践性强。
    原理及系统结构
    仿真器工作时,要把程序从pc机下载到仿真器的存储器中。在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。
    
    图1 存储空间分布
    51单片机存储器结构分析
    8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。这种程序存储和数据存储分开的结构形式被称为哈佛结构。但从用户的角度,8051存储器地址空间可分为3类:片内、片外统一编址0000h~ffffh的64kb程序存储器地址空间(用16位地址);64kb片外数据存储器地址空间,地址也从0000h~ffffh(用16位地址)编址;256b片内数据存储器地址空间(用8位地址)。
    上述4个存储空间地址是重叠的,如图1所示。8051的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:cpu访问片内、片外rom指令用movc,访问片外ram指令用movx,访问片内ram指令用mov。
    程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能力为64kb。这使得指令能在64kb的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。
    实际上,当引脚ea接高电平时,8051的程序计数器pc执行片内rom中的程序,当指令地址超过片内rom地址时,就自动转向片外rom中去取指令。当引脚ea接低电平(接地)时,8051片内rom不起作用,cpu只能从片外rom中取指令,地址可以从0000h开始编址。8051从片内程序存储器和片外程序存储器取指时的执行速度相同。
    存储器外扩
    用p0口作地址/数据复用总线,用p2口的口线作高位地址线,最多可以扩展64kb的存储器。控制信号线包括:使用ale作为地址锁存的选通信号,以实现低8位地址的锁存;以psen信号作为扩展程序存储器的读选通信号;以ea信号作为内、外程序存储器的选择信号;以ea和作为扩展数据存储器和i/o端口的读、写选通信号。执行movx指令时,rd和wr信号分别自动有效。片外数据存储器ram的读和写由8051的rd(p3.7)和wr(p3.6)信号控制,而片外程序存储器的输出允许(oe)由读选通psen信号控制。尽管片外数据存储器和片外程序存储器共处同一地址空间,但由于控制信号及使用的数据传送指令不同,故不会发生总线冲突。
    
    图2 仿真器原理图
    仿真器原理与结构
    由于现在以8051为内核的单片机几乎都带有内部的flash程序存储器。如本设计中要用到的at89c51或at89s51均自带4kb的flash程序存储器,有的单片机带有20kb甚至更大容量的程序存储器。因此在单片机开发中,很少用专门的程序存储器芯片来扩展外部程序存储器,通常也没有必要。基于以上这些因素,下面分析本文中的仿真器实现的原理。
    下载程序时,ea
    
     摘要:本文基于对8051单片机存储空间结构的深层次分析,提出了一种基于单片机的单cpu仿真器设计方案。该方案实用廉价,工程实践性强,可用于设计新的教学设备。
    引言
    单片机以它的廉价、体积小、可塑性强、稳定性高的特性,有着广阔的市场前景。 在用单片机开发产品时,虽然许多厂家设计了可编程isp单片机,但是从安全与便捷方面考虑,单片机仿真器仍然是开发人员不可或缺的工具。单片机仿真器在产品开发阶段可用来替代单片机进行软硬件调试,从而迅速发现、纠正程序中的错误,大大缩短单片机开发的周期。但实际中仿真器过于昂贵,因此,设计制作出一款廉价且实用的仿真器有着广泛的市场。
    传统的单片机仿真器硬件系统一般有三种实现方法。一、采用专用仿真的单片机。二、采用两套单片机,一个单片机用于仿真,并完成诸如通讯,中断等功能;另一个单片机则用于目标单片机,这样其资源不会被占用。三、用目标单片机作为仿真器,单片机即仿真器也作目标机的单片机用,其实质是一种rom监控器。第三种方法会占用单片机的部分资源,但结构简单,对于特定的开发者来说,实用性强,性价比高,且易于自行制作。本文开发设计的仿真器正是基于第三种原理,巧妙实现了数据空间与程序空间的互换,设计出一款实用廉价的仿真器,工程实践性强。
    原理及系统结构
    仿真器工作时,要把程序从pc机下载到仿真器的存储器中。在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。
    
    图1 存储空间分布
    51单片机存储器结构分析
    8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。这种程序存储和数据存储分开的结构形式被称为哈佛结构。但从用户的角度,8051存储器地址空间可分为3类:片内、片外统一编址0000h~ffffh的64kb程序存储器地址空间(用16位地址);64kb片外数据存储器地址空间,地址也从0000h~ffffh(用16位地址)编址;256b片内数据存储器地址空间(用8位地址)。
    上述4个存储空间地址是重叠的,如图1所示。8051的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:cpu访问片内、片外rom指令用movc,访问片外ram指令用movx,访问片内ram指令用mov。
    程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能力为64kb。这使得指令能在64kb的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。
    实际上,当引脚ea接高电平时,8051的程序计数器pc执行片内rom中的程序,当指令地址超过片内rom地址时,就自动转向片外rom中去取指令。当引脚ea接低电平(接地)时,8051片内rom不起作用,cpu只能从片外rom中取指令,地址可以从0000h开始编址。8051从片内程序存储器和片外程序存储器取指时的执行速度相同。
    存储器外扩
    用p0口作地址/数据复用总线,用p2口的口线作高位地址线,最多可以扩展64kb的存储器。控制信号线包括:使用ale作为地址锁存的选通信号,以实现低8位地址的锁存;以psen信号作为扩展程序存储器的读选通信号;以ea信号作为内、外程序存储器的选择信号;以ea和作为扩展数据存储器和i/o端口的读、写选通信号。执行movx指令时,rd和wr信号分别自动有效。片外数据存储器ram的读和写由8051的rd(p3.7)和wr(p3.6)信号控制,而片外程序存储器的输出允许(oe)由读选通psen信号控制。尽管片外数据存储器和片外程序存储器共处同一地址空间,但由于控制信号及使用的数据传送指令不同,故不会发生总线冲突。
    
    图2 仿真器原理图
    仿真器原理与结构
    由于现在以8051为内核的单片机几乎都带有内部的flash程序存储器。如本设计中要用到的at89c51或at89s51均自带4kb的flash程序存储器,有的单片机带有20kb甚至更大容量的程序存储器。因此在单片机开发中,很少用专门的程序存储器芯片来扩展外部程序存储器,通常也没有必要。基于以上这些因素,下面分析本文中的仿真器实现的原理。
    下载程序时,ea