DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 302|回复: 0
打印 上一主题 下一主题

MCS96系列单片机的一种大容量的外部RAM扩展技术

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:46:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
     摘要:在MCS96系列单片机的应用开发中,我们经常会遇到需要大容量的外部RAM的情况, 本文针对MCS96系列单片机的内存体系结构特点介绍了的一种段式管理的大容量的外部RAM扩展技术,此技术由于使用方便具有很高的实用性。
    关键词:单片机 段 物理地址 逻辑地址
1 引言

    MCS96系列单片机是一种16位字长的比MCS51系列单片机功能更全,性能更高的单片机,它在仪器仪表,过程控制等若干领域应用极为广泛。在采用MCS96系列单片机的应用开发中我们碰到一个难题,当需要大容量的数据存储时,外部数据存储器的扩展如采用与MCS51系列单片机同样的方法则无法工作,因为其内存体系结构采用ROM与RAM统一编址的普林斯顿结构,ROM的地址与RAM的地址不能相同;而MCS51系列单片机采用ROM与RAM分开编址的哈佛结构,ROM的地址与RAM的地址不冲突,可以相同,因而其外部RAM扩展容易,而且整个RAM地址空间连续。而MCS96系列单片机的普林斯顿内存体系结构决定了不能简单采用与MCS51系列单片机相同的外部RAM扩展技术,本文针对MCS96系列单片机的内存体系结构特点给出了一种段式管理的大容量的外部RAM扩展技术。

2 段式管理的大容量的外部RAM扩展技术

    设计思想概述:针对MCS96系列单片机的存储结构特点,可看出外部扩展的RAM的低16位地址不能与ROM的地址相同,因此就必须从MCS96系列单片机的内存体系结构中找出一个专门的区域,本文将此区域定义为段,对其进行扩展,通过各段的高地址来区分不同段,由于各段的实际物理地址是不相连的,从用户的角度看,直接使用物理地址编程很麻烦,因此设计一个逻辑段表来管理,并且设计一个简单的子程序来完成逻辑地址与物理地址的转换,从而便于用户编程。具体过程如下:

2.1 段的设置区域



    根据MCS96系列单片机的内存体系结构分配图(见图1)分析可以看出,0100H-1FFDH,4000H-0FFFFH两个区域可以给外部存储器及I/O口使用。0100H-1FFDH的区域较小,考虑到一般应用系统的程序较短,只有几K,I/O口地址更少,因而可以将此区域分配给外部ROM与I/O口。4000H-0FFFFH区域分配给外部RAM。由于一般RAM芯片的存储地址容量为2NK(N为大于零的整数),因此这48K的区域可以用32K与16K的RAM芯片组成。如要求有大容量存储地址空间,则可以把以上48K的区域整个看成一个段,或者将此区域的一部分看成一个段,多设置几个这样的段就可以解决。

2.2 段的存储空间的最佳设置

    由于段的空间的设置区域在从4000H-0FFFFH的48K的存储地址空间,因而有三种段的存储地址空间大小的设置方案:

    1.每段设为起始地址相同的32K,这样每段只由32K的芯片组成。

    2.每段都设为48K,这样每段可以由32K的芯片与16K 的芯片组成。

    3.一些段设为48K,这些段可以由32K的芯片与16K 的芯片组成;一些段设为32K,这些段只由32K的芯片组成。



    方案2与3由于采用32K的芯片与16K 的芯片组成段,因而在硬件设计方面使地址译码器与存储器的连接复杂,更不便于对各段存取管理;而方案1则只采用32K的芯片组成段,而且起始地址相同,在硬件设计方面简单,也便于用逻辑段表进行存取管理。因而采用方案1,即段的存储空间大小的最佳设置为32K。

2.3 段的存取控制

    2.3.1 存储器逻辑段与物理段的关系

    由于段的存储地址空间大小的最佳设置为32K,各段的实际物理地址为物理段号加上物理段内地址,可设物理段号的存储单元为8个bit,这样整个外扩RAM容量为256*32K,即8M。对于一般的单片机应用系统已经远远满足了。由于各物理段之间地址不连续, 用户直接使用物理地址编程不方便,因而要采用连续的逻辑地址供用户使用,来对各物理段访问。逻辑地址分为逻辑段号与逻辑偏移地址两部分,逻辑段号的存储单元也为8个bit,但由于逻辑偏移地址为16个bit,因而一个逻辑段的大小为64K,地址从0000H-0FFFFH,即1个逻辑段与2个物理段相对应。所以逻辑段的个数为实际物理段的个数的一半。我们对物理段与逻辑段进行编号,设逻辑段的个数为N个,编号为0,1,2.....N-1,可以用图2来表示二者的对应关系。

    2.3.2 逻辑段表设计与段的存取管理

    为了便于对段的存取管理控制,设计一个逻辑段表,表的内容为逻辑段号,因为一个逻辑段为64K,它与2个物理段(每段32K)相对应,因而逻辑段表的长度为实际物理段总数的一半。设有N个段,逻辑段表如图3。例如:有8个32K的物理段,逻辑段表的长度为4个字节,逻辑段表的内容为:0,1,2,3。实际的物理段号为:0,1,2,3,4,5,6,7。每个逻辑段号与2个物理段号相对应。



    另外,为了便于存取控制,设计一个将逻辑地址自动转换成物理地址的子程序,子程序必须简单;经过分析,把每个32K的物理段的起始地址都设为8000H,既每个32K的物理段的段内地址都是从8000H-0FFFFH,根据逻辑地址与物理地址的对应关系,笔者设计了一个子程序,由于结构简单,只给出了具体流程图, 见图4。子程序的入口参数为逻辑段号与逻辑偏移地址,返回结果为物理段号与物理段内地址。这样,对段的存取访问可先查逻辑段表取出逻辑段号,再调用该子程序实现。

3 设计举例:8096外扩128K的RAM



    分析:由于地址空间为128K,因此可以设置4个大小同为32K的段,每段选用1个62256芯片;电路原理分析:8096的P3口输出直接作为数据总线使用,同时外接74LS373的输出作为低地址总线A0-A7,P4口的P4.0-P4.6作为高地址总线A8-A14使用。P4.7经过一反相器连接74LS139(双2-4译码器)的 (使能端),P1.1 P1.0分别与74LS139译码器的两个输入端1A1 1A0相接, P1.1 P1.0 P4.7分别作为高地址总线A17A16A15使用。译码器的输出 3 2 1 0 分别与4个存储器62256的片选信号相接,这样我们得出:段0存储器的物理地址为08000H-0FFFFH, 段1存储器的物理地址为18000H-1FFFFH,段2存储器的物理地址为28000H-2FFFFH,段3存储器的物理地址为38000H-3FFFFH。而逻辑地址为00000H-1FFFFH。逻辑段表的内容为0,1。具体电路图见图5。

4 总结



    这种段式管理的外部RAM扩展技术简单方便,具有很大的优越性,具体体现在以下几方面:从应用角度看,此技术能够实现大容量的外部RAM的扩展。最大的扩展RAM容量为8M,远远超出了一般应用系统的RAM扩展需求。从用户角度看,用户在编程时不必考虑实际物理RAM的地址空间是否连续,通过段式管理,用户使用连续的逻辑地址来编程,克服了不连续物理地址空间的缺陷,而且,对各段存储的数据提供了保护,在一般的大数据量的单路信号检测与处理系统中,此技术使得用户对连续采集的数据的存取是透明的,不受硬件的局限,便于用高级语言开发设计。从硬件角度看,各存储段相互独立,互不影响,从系统的可靠性分析,各段的存储器芯片的故障也不会对整个系统造成很大影响,在一般的多路大数据量的信号检测与处理系统以及由单片机组成的集散式控制系统中,可以为每路采集的数据分配不同的段来存储,这样对各段存储的数据提供了保护,提高了整个系统的可靠性,应用效果是非常理想的。

         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-29 21:33 , 耗时 0.084058 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表