精华内容
下载资源
问答
  • 行业分类-设备装置-相变存储器结构和写入相变存储器结构的方法.zip
  • 8086存储器结构

    千次阅读 2020-09-15 19:46:45
    8086存储器结构笔记

    8086系统中的存储器是一个最多 1MB(220B) 的序列,即可寻址的存储空间为 1MB ,系统为每字节分配一个20位的物理地址,对应的十六进制数地址范围为 00000H~FFFFFH
    在这里插入图片描述

    字:一个字 = 两字节 = 16bit,在存储器中任何两个相邻的字节被定义为一个字。
    在一个字中,每字节都有地址,两个字节地址中较小的被用来作为该字的地址。

    较高存储器地址的字节存放该字的高8位,较低存储器的字节存放该字的低8位。
    在这里插入图片描述

    存储器的组成

    8086系统中,存储器采用分体结构,1MB 的存储空间被分成两个 512KB 的存储体,一个存储体中包含偶数地址,一个存储体中包含奇数地址,两个存储体采用字节交叉编址方式:
    在这里插入图片描述
    对于任何一个存储体,只需要A19 ~ A1 即可。
    地址A0 用以区分当前访问的是哪一个存储体:

    • A0 = 0,表示访问偶地址存储体;
    • A0 = 1,表示访问奇地址存储体。

    但是访问一个字节时,需要同时访问两个存储体,各取出 1 字节的信息。此时A0 控制读写操作就不行了。

    8086系统新增了一个总线高位有效控制信息 BHE ‾ \overline{\text{BHE}} BHE BHE ‾ \overline{\text{BHE}} BHE作奇地址存储体片选信号。

    • BHE ‾ \overline{\text{BHE}} BHE = 1,选中奇
    • BHE ‾ \overline{\text{BHE}} BHE = -,补选中奇

    偶地址存储体固定与低8位数据总线(D7 ~ D0)相连,称为低字节存储体

    奇地址存储体固定与高8位数据总线(D15 ~ D8)相连,称为高字节存储体

    在这里插入图片描述

    存储器的分段

    8086CPU中所有的寄存器都是16位寄存器,如果仅仅是一个16位寄存器,只能寻址64KB。

    而8086CPU的寻址空间为1MB,是怎么做到的呢?
    8086系统采用分段并附以地址偏移量的办法形成20位的物理地址,得到对1MB的内存空间的寻址。
    在这里插入图片描述
    逻辑段:被划分的存储器段称为逻辑段。
    各个逻辑段之间可以紧密相连,可以中间有间隔,也可以相互重叠(部分重叠甚至完全重叠)。

    逻辑地址与物理地址

    采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是无符号的 16 位二进制数,程序设计时采用逻辑地址。
    物理地址指存储器的绝对地址(00000H ~ FFFFFH),是CPU访问存储器的实际寻址地址,即一个存储单元对应一个20位的物理地址。
    16位的段基址左移4位(相当于在段基址最低位后加“0000”),然后与偏移地址相加得物理地址:

    物理地址 = 段基址 + 偏移地址
    

    在这里插入图片描述

    • 取指令时,CPU选择代码段寄存器CS,在和指令指针IP形成指令所在的20位物理地址
    • 进行堆栈操作时,SS + SP/BP =》20位堆栈指针
    • 往内存中写一个数据或从内存中读一个数据时,DS + SI/DI/BX = 20位物理地址
      在这里插入图片描述

    堆栈段的使用

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 半导体存储器结构及版图(ROM) 本篇主要涉及有关半导体存储器的存取方式及相应版图结构分析。 首先我们来看看一个最基本的ROM存储器的结构及其工作方式。 假设2根地址线,4根数据位,即A[1:0], D[3:0]。A0,A1可以...
  • 第五讲AT89C51单片机存储器结构一半导体存储器二存储器空间划分方法三数据存储器(RAM)四程序存储器(ROM)五MCS-51片外总线构 一半导体存储器一功能存放程序和数据二结构由若干存储单元组成每个存储单元存放若干位4816...
  • AT89S52存储器结构

    2018-04-20 16:32:20
    3.1存储器概述 3.2 AT89S52单片机的存储器结构 3.3 外部存储器及其访问 3.4 片内FLASH存储器操作
  • STM32存储器结构

    2017-12-04 20:21:40
    Notes Introduction 本连载笔记,记录了在STM32学习中对存储器的理解;描述了STM32存储器的结构划分,以及STM32存储器相关知识,能够获得对存储器的整体性...能够了解STM32的存储器结构,及其结构设计由来; 能

    Notes Introduction

    本连载笔记,记录了在STM32学习中对存储器的理解;描述了STM32存储器的结构划分,以及STM32存储器相关知识,能够获得对存储器的整体性认识;并能够顺利的付诸实践,达到真正的对存储器的认识+应用。

     

    本连载共有三篇笔记,分别是:

    《关于STM32的存储器》

    能够了解STM32的存储器结构,及其结构设计由来;

    能够明确自己所写的程序是放在什么地方,并且可以合法的随意放置;

    能够知道STM32系统的启动相关;

    STM32存储器知识的相关应用(IAPBit Banding)》

    能够理解Bit-banding

    一个简单IAP功能的整体设计;

    能够IAPIn Application Programmable);

    STM32实现IAP(上位机和IAP程序设计)》

    上位机和IAP程序的通讯协议;

    能够通过自制上位机(C#)进行IAP

     

     

    <关于STM32的存储器>

    If an error, please contact author, to be corrected.

    For other uses, indicate the source, to express my recognition of the results.

    Thank you.

     

     

    当我们在完成某一个实验,当我们正庆幸的时候,我们不由得产生一种不安的想法——我们是否已经少许明白其中的种种细节?

    尤其,当我们所有的事情都依赖于编译环境或Firmware,抑或他人的程序,而自己仅仅是CopyModify,以致Using。当你还是一个初学者的时候,或许不会太过于关注于此,但是要想提高自己对单片机、处理器原理的理解,并且希望走得更远的时候,您就需要关注更为详细的内部知识,您需要明白编译环境、Firmware为你的默默贡献。

     

     

    1 STM32系统结构

        要想深刻理解STM32的存储器,需要首先知道STM32的系统结构。

    Figure 1,是STM32系统结构框图。

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

    根据STM32 Reference manual (RM0008)中的描述,如图:

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    可以得知STM32系统结构的组成,每一个模块更为详细的内容,请参考相关文档。

    RM0008文档中可以看出,STM32采用的是Cortex-M3内核,因此,有必要了解Cortex-M3的存储器结构。

    图中还可以看出,Cortex-M3是通过各个总线和FlashSROM相连接的。

    2 STM32内核(Cortex-M3)的结构

    以下是Cortex-M3模块框图:

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    Cortex-M3内核通过I-CodeD-CodeSystem总线与STM32内部的FlashSROM相连接的,该种连接情况直接关系到STM32存储器的结构组织;也就是说,Cortex-M3的存储器结构决定了STM32的存储器结构。

    这里可能说的比较笼统,可以这样理解:Cortex-M3是一个内核,自身定义了一个存储器结构,ST公司按照Cortex-M3的这个存储器定义,设计出了自己的存储器结构;但是ST公司的STM32的存储器结构必须按照Cortex-M3这个定义的存储器结构来进行设计。

    举个例子:

    我买了一个做饭的调料盒子,有三块区域(假设存储器分为3块),上面分别标有盐(Flash)、糖(SROM)、味精(Peripheral);此时,该调料盒子并没有任何意义(对应Cortex-M3内核);我按照标签放入特定品牌、特定分量的盐(Flash)、糖(SROM)、味精(Peripheral),产生一个有实际意义的调料盒(各类Cortex-M3内核的芯片,如STM32)。

    期间,调料位置不能放错,但可以不放。由上面的例子可以看出,空的调料盒子决定了有意义的调料盒子存放调料的结构。因此,只要了解空盒子的存储结构,就可以很清楚的明白当有调料时的用法了。

    3 STM32内核(Cortex-M3)的存储器映射

    存储器映射是指把芯片中或芯片外的FLASHRAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAMFLASH的情况下可进行自定义。

    如图,是Cortex-M3存储器映射结构图。

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    Cortex-M332位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。

    好,根据图中描述,Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。导致了,使用该内核的芯片厂家必须按照这个进行各自芯片的存储器结构设计。

    这就可以去了解STM32的存储器结构,以及为什么这样设计STM32存储器的结构了。

    4 STM32存储器结构

    首先,我们对比一下Cortex-M3存储器结构和STM32存储器结构:

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    图中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似,不同的是,STM32加入了很多实际的东西,如:FlashSRAM等。只有加入了这些东西,才能成为一个拥有实际意义的、可以工作的处理芯片——STM32

    STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB

    STM32存储器知识的掌握,实际上就是对FlashSRAM这两个区域知识的掌握。因此,下面将重点描述FlashSRAM的知识。

    5 STM32SRAM

    以下是STM32参考手册RM0008中的一段原话:

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    不同类型的STM32单片机的SRAM大小是不一样的,但是他们的起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。

    SRAM的理解比较简单,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,SRAM中存储的数据就会丢失。

    6 STM32Flash

    STM32Flash,严格说,应该是Flash模块。

    Flash模块包括:Flash主存储区(Main memory)、Flash信息区(Information block),以及Flash存储接口寄存器区(Flash memory interface)。

    三个组成部分分别在0x0000 0000——0xFFFF FFFF不同的区域,如图(小密度的STM32)所示:

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    图中完全可以看出Flash模块中的三个组成部分在整个存储器中的位置。

    具体的内部区域的意义及功能请参见编程手册PM0042,里面很详细。

    7 STM32存储器结构总结

    STM32存储器 <wbr>— <wbr><1> <wbr>关于STM32的存储器

     

    图中淡蓝色就是你需要知道的。

    Peripherals:外设的存储器映射,对该区域操作,就是对相应的外设进行操作;

    SRAM:运行时临时存放代码的地方;

    Flash:存放代码的地方;

    System MemorySTM32出厂时自带的你只能使用,不能写或擦除;

    Option Bytes:可以按照用户的需要进行配置(如配置看门狗为硬件实现还是软件实现);

    今后,你的编写代码、程序运行、寄存器设置、ICPIAP都依靠这些东西。

     

    以上描述的是STM32存储器的结构相关,其具体存储器的应用在我的下一篇笔记《STM32存储器知识的相关应用(IAPBit Banding》中详细描述。

     

     

    至此,关于《STM32存储器》知识已经结束.

    完成STM32存储器知识过程中,一共参考了以下官方文档:

    RM0008 Reference manual

    Cortex-M3技术参考手册》

    PM0042 Programming manualSTM32F10xxx Flash programming

    AN2557 Application noteSTM32F10x in-application programming using the USART

    等等;

    另外也参考了很多无私网友的奉献,在此感谢。


    展开全文
  • 51单片机存储器结构

    千次阅读 2020-02-14 10:34:19
    存储器结构 从用户的角度上,8051单片机有三个存储空间: 1. 片内外统一编址的64K的程序存储器地址空间(MOVC) 2. 256B的片内数据存储器的地址空间(MOV) 3. 以及64K片外数据存储器的地址空间(MOVX) 在访问三个...

    存储器结构

    从用户的角度上,8051单片机有三个存储空间:

    1. 片内外统一编址的64K的程序存储器地址空间(MOVC)
    2. 256B的片内数据存储器的地址空间(MOV)
    3. 以及64K片外数据存储器的地址空间(MOVX)

    在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同的存储器空间的选通信号。
    在这里插入图片描述

    程序内存ROM

    寻址范围:0000H ~ FFFFH 容量64KB
    EA = 1,寻址内部ROM;
    EA = 0,寻址外部ROM
    地址长度:16位
    作用:存放程序及程序运行时所需的常数。

    编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。

    MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。(对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地。强制CPU从外部程序存储器读取程序。)

    对于内部有ROM的8051等单片机,正常运行时, 则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。

    当 EA=1时,程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部ROM空间。
    当 EA=0时,程序从外部存储器开始执行,例如前面提到的片内无ROM的8031单片机,在实际应用中就要把8031的EA引脚接为低电平。

    8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:

    其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。

    另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:

    • 0003H—000AH 外部中断0中断地址区。
    • 000BH—0012H 定时/计数器0中断地址区。
    • 0013H—001AH 外部中断1中断地址区。
    • 001BH—0022H 定时/计数器1中断地址区。
    • 0023H—002AH 串行中断地址区。

    可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。
    通常情况下,在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行

    ROM的地址分配图:
    ROM分布图

    内部数据存储器RAM

    物理上分为两大区:00H ~ 7FH(低128单元用户RAM 和 高128单元SFR区)
    作用:作数据缓冲器用。

    数据存储器也称为随机存取数据存储器。数据存储器分为内部数据存储和外部数据存储。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),片外最多可扩展64KB的RAM,构成两个地址空间.

    访问片内RAM用“MOV”指令,访问片外RAM用“MOVX”指令。它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。

    MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:

    • 数据存储器空间(低128单元);
    • 特殊功能寄存器空间(高128单元);

    这两个空间是相连的,从用户角度而言,低128单元才是真正的数据存储器。

    低128单元

    片内数据存储器为8位地址,所以最大可寻址的范围为256个单元地址,对片外数据存储器采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。也就是说在寻址片外数据存储器时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。

    从图中可以看到,8051单片机片内RAM共有256个单元(00H-FFH),这256个单元共分为两部分。

    • 从00H—7FH单元(共128个字节)为用户数据RAM。
    • 从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。

    在这里插入图片描述

    通用寄存器区(00H-1FH)

    在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。

    这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的D3和D4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如下表所示。惹程序中并不需要用4组,那么其余的可用做一般的数据缓冲器,CPU在复位后,选中第0组工作寄存器。
    在这里插入图片描述

    位寻址区(20H-2FH)

    内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。
    在这里插入图片描述

    用户RAM区(30H-7FH)

    在片内RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下的80个单元就是供用户使用的一般RAM区了,地址单元为30H-7FH。对这部份区域的使用不作任何规定和限制,但应说明的是,堆栈一般开辟在这个区域。

    高128单元

    特殊功能寄存器

    特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。

    MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。
    在这里插入图片描述

    程序计数器PC(program Counter)

    程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。

    累加器ACC(Accumulator)

    累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。大部分的数据操作都会通过累加器A进行,它形象于一个交通要道,在程序比较复杂的运算中,累加器成了制约软件效率的“瓶颈”,它的功能较多,地位也十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。

    寄存器B

    在乘除法指令中,乘法指令中的两个操作数分别取自累加器A和寄存器B,其结果存放于AB寄存器对中。除法指令中,被除数取自累加器A,除数取自寄存器B,结果商存放于累加器A,余数存放于寄存器B中。

    程序状态字(Program Status Word)

    程序状态字是一个8位寄存器,用于存放程序运行的状态信息,这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置的。寄存器的各位定义如下,其中PSW.1是保留位,未使用。下表是它的功能说明,并对各个位的定义介绍如下:
    在这里插入图片描述

    • PSW.7(CY) 进位标志位,此位有两个功能:一是存放执行某写算数运算时,存放进位标志,可被硬件或软件置位或清零。二是在位操作中作累加位使用。
    • PSW.6(AC) 辅助进位标志位,当进行加、减运算时当有低4位向高4位进位或借位时,AC置位,否则被清零。AC辅助进位位也常用于十进制调整。
    • PSW.5(F0) 用户标志位,供用户设置的标志位。
    • PSW.4、PSW.3(RS1和 RS0) 寄存器组选择位。可参见本章的图2定义。
    • PSW.2(OV) 溢出标志。带符号加减运算中,超出了累加器A所能表示的符号数有效范围(-128—+127)时,即产生溢出,OV=1。表明运算运算结果错误。如果OV=0,表明运算结果正确。执行加法指令ADD时,当位6向位7进位,而位7不向C进位时,OV=1。或者位6不向位7进位,而位7向C进位时,同样OV=1。除法指令,乘积超过255时,OV=1。表面乘积在AB寄存器对中。若OV=0,则说明乘积没有超过255,乘积只在累加器A中。除法指令,OV=1,表示除数为0,运算不被执行。否则OV=0。
    • PSW.0(P) 奇偶校验位。声明累加器A的奇偶性,每个指令周期都由硬件来置位或清零,若值为1的位数奇数,则P置位,否则清零。
    数据指针(DPTR)

    数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用,即高位字节寄存器DPH和低位字节DPL。

    DPTR主要是用来保存16位地址,当对64kB外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令:

    MOVX    A, @DPTR
    MOVX    @DPTR, A
    

    在访问程序存储器时,DPTR可用来作基址寄存器,采用基址+变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。

    MOVC    A, @A+@DPTR
    
    堆栈指针SP(Stack Pointer)

    堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置。系统复位后,SP的初始值为07H,使得堆栈实际上是从08H开始的。但我们从RAM的结构分布中可知,08H—1FH隶属1—3工作寄存器区,若编程时需要用到这些数据单元,必须对堆栈指针SP进行初始化,原则上设在任何一个区域均可,但一般设在30H—1FH之间较为适宜。

    堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给PC,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为PUSH指令,在中断服务程序或子程序调用时作为现场保护。出栈操作POP指令,用于子程序完成时,为主程序恢复现场。

    I/O口专用寄存器(P0、P1、P2、P3)

    I/O口寄存器P0、P1、P2和P3分别是MCS-51单片机的四组I/O口锁存器。MCS-51单片机并没有专门的I/O口操作指令,而是把I/O口也当作一般的寄存器来使用,数据传送都统一使用MOV指令来进行,这样的好处在于,四组I/O口还可以当作寄存器直接寻址方式参与其他操作。

    定时/计数器(TL0、TH0、TL1和TH1)

    MCS-51单片机中有两个16位的定时/计数器T0和T1,它们由四个8位寄存器组成的,两个16位定时/计数器却是完全独立的。我们可以单独对这四个寄存器进行寻址,但不能把T0和T1当作16位寄存来使用。

    定时/计数器方式选择寄存器(TMOD)

    TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,TMOD可以用字节传送指令设置其内容,但不能位寻址。
    在这里插入图片描述

    串行数据缓冲器(SBUF)

    串行数据缓冲器SBUF用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行。

    其他控制寄存器(TMOD)

    除了以上我们简述的几个专用寄存外,还有IP、IE、TCON、SCON和PCON等几个寄存器,这几个控制寄存器主要用于中断和定时的。

    展开全文
  • MCS-51单片机存储器结构 MCS-51单片机存储器结构
  •  §1.4.1 程序存储器结构  PIC16C5X程序存储器结构如图1.3所示:    从上图可看出,PIC程序存储器采用分页结构,每页长0.5K。因此对于PIC16C52程序存储器在1页之内,而对于PIC16C54和PIC15C55程序...
  • 西门子SINAMICS S120的存储器结构及相关操作pdf,西门子SINAMICS S120的存储器结构及相关操作:介绍SINAMICS S120变频调速存储器的结构的和相关操作。
  • 单片机原理及应用 M C S - 5 1 系列单片机的存储器结构 MCS-51 ROM RAM M C S - 5 1 系列单片机的存储器结构 ROM ROM MCS51 16 ( PC ) CPU ROM PC 16 51 64kB 0000-FFFFH M C S - 5 1 系列单片机的存储器结构 MCS-51...
  • 第3章 80C51单片机的存储器结构;
  • MCS-51系列单片机存储器结构

    千次阅读 2020-10-07 17:58:44
    四、51单片机存储器结构 1.存储器总体结构概述 一般微机通常是程序和数据共用一个存储空间,即ROM和RAM统一编址,属于“冯 诺依曼”结构。而单片机的存储器结构则把存储空间和数据存储空间严格区分开来,即程序...


    前言

    昨天下午把MCS-51系列单片机的硬件结构,包括51单片机的基本结构、51单片机的引脚描述、51单片机的中央处理器(CPU)等部分给梳理了一下,但昨天时间不太够加上我想单独的整理一下存储器结构这部分昨天就没整,来了今天就把存储器结构给整明明白白。


    一、存储器总体结构概述

    关系: 一般微机通常是程序和数据共用一个存储空间,即ROM和RAM统一编址,属于“冯 诺依曼”结构。而单片机的存储器结构则把存储空间和数据存储空间严格区分开来,即程序存储器ROM和数据存储器RAM分开编址,属于“哈佛”结构。

    用途:
    程序存储器ROM用于固化程序,常数和数据表。
    数据存储器RAM用于存放程序运行中产生的各种数据并用于堆栈。

    51单片机存储器结构如图所示:

    在这里插入图片描述
    储存空间的划分:
    (1)51单片机存储器在物理结构上分成四个空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。(2)逻辑考虑,则有三个存储空间:片内外统一编址的64KB程序存储器地址空间(0000H ~FFFFH)、256B的片内数据存储器地址空间(00H ~FFH)及片外数据存储器地址空间(0000H ~FFFFH)。

    CPU访问指令:
    CPU在访问三个不同的逻辑空间时,通过采用不同形式的指令,来产生相应的存储器选通信号,访问程序存储器使用MOVC指令、访问片内数据存储器使用MOV指令、访问片外数据存储器使用MOVX指令。

    二、程序存储器ROM

    (1)51单片机程序存储器ROM

    它用于存放编好的程序、常数或表格。在正常工作时只可读不可写,掉电后数据不丢失。
    (1)片内具有4KB的Flash结构的电可擦除只读存储器。
    (2)外部可扩展64KB的ROM,建议不用,只有当程序特别大、内部空间无法满足要求时才选择扩展外部ROM。
    (3)程序内存最低端的地址可以在片内Flash中或在外部ROM中,可以通过单片机/EA的引脚的电平来选择。
    例如:在带有4KB片内Flash的51单片机中,如果把/EA引脚接到VCC,当地址为0000H~0FFFH,则访问内部Flash;地址为1000H ~FFFFH时,将自动转向外部程序内存。
    如果/EA端接地,则只访问外部程序内存,不管是否存在内部Flash内存。

    (2)51单片机程序存储器管理

    (1)每个ROM单元(Byte)对应一个唯一的16bit的地址编码(Address)
    (2)CPU要到某个ROM单元去取指令,是通过把地址编码写入16位的程序计数器PC来实现的,因此AT89系列单片机地址的编码范围(通常称为寻址范围)为:

    在这里插入图片描述
    (3)系统复位后,PC的初始值为0000H,以后的取值是CPU根据用户程序的运行流程自动装载的(程序顺序执行时,PC值自动加1;执行转移指令、子程序调用和中断服务程序时,PC值分别等于转移的目标地址,子程序或中断服务程序的入口地址)

    (3)51单片机程序存储器的分配

    程序内存的某些单元是保留给系统使用的,这几个单元的配置如图所示:单片机复位后,程序计数器PC的内容为0000H,所以CPU总是从0000H单元开始执行程序。

    在这里插入图片描述
    从地址0003H开始,系统每隔8个单元为6个中断服务子程序分配有一个固定的入口地址。
    如外部中断0的入口地址为0003H;
    定时器0的入口地址为000BH;
    外部中断1的入口地址为0013H;
    定时器的入口地址为001B;以此类推
    中断响应后,程序指针PC将自动根据中断类型指向这些入口地址的某一个,CPU就从这里开始执行中断服务子程序。
    因此从0003H单元开始的这段区域应该保留给中断使用,所以程序设计时在000H~0002H单元放值一条转移指令,跳过这段区域,直接转到系统主程序,除非系统不使用中断,主程序才可以覆盖这段区域。

    三、片内数据存储器

    片内数据存储器地址范围是00H~FFH,只有256B,这里仅介绍低128字节区,高128字节区被特殊功能寄存器占有。
    低128字节区主要分为三个区域:工作寄存器组区、位寻址区、用户RAM区。
    单片机的片内数据存储器结构如图所示:

    在这里插入图片描述

    (1)工作寄存器区

    最低32个单元(地址为00H~1FH)为4个通用工作寄存器组。每个寄存器组含有8个8位寄存器,编号为R0 ~R7。
    程序状态字PSW中的2位RS0、RS1用来确定当前采用哪一个工作寄存器组,对应关系昨天单片机的硬件结构整理的有专有图表。
    在某一时刻只能选用其中的一组寄存器工作,系统复位后,指向工作寄存器组0.如果用户程序不需要4个工作寄存器区,则不用工作寄存器单元可以作一般的RAM使用

    (2)位寻址区

    内部RAM区中的20H~2FH单元(16B)可供位寻址,这16个单元共有128位,每位均可直接寻址,其位地址范围为00H ~7FH,具体情况见下表:

    在这里插入图片描述
    在这里插入图片描述
    两种寻址方式:
    1、位地址形式,即00H~7FH
    2、单元地址(20H~2FH).位数方式 表示,即20H.0 ~20H.7

    (3)用户RAM区

    30H~7FH共有80个字节单元,为字节寻址的内部RAM区,可供用户作为数据存储区。

    堆栈: 按先进先出或后进先出原则进行读/写的特殊RAM区域。51单片机的堆栈区是不固定的,原则上可设置在内部RAM的任意区域内,实际根据片内RAM各功能区的使用情况确定,避开工作寄存区、位寻址区、用户实际使用数据区,一般在2FH地址单元以后的区域。

    堆栈作用: 主要用在子程序调试或中断处理过程中,用于保护断点和现场,实现子程序或中断的多级嵌套处理。还可以保护其他一些重要信息。也可作为数据交换区使用。

    确定堆栈的位置: 栈顶的位置由专门设置的堆栈指针SP指出。

    (4)特殊功能寄存器

    内部RAM的高128字节区是给特殊寄存器使用的,也称为专用寄存器区,单元地址位为80H~FFH。寄存器的功能已专门规定,也称为专用寄存器或特殊功能寄存器,简称SFR。51单片机SFR总数为26个,占80H ~0FFH中很小一部分,是单片机内的指挥单元。
    51系列单片机内I/O锁存器、定时器、串行口数据缓冲区以及各种控制寄存器和状态寄存器都以特殊功能寄存器的形式出现。他们离散地分布在80H~0FFH的地址空间范围内,具体如下表所示:
    在这里插入图片描述
    图中列出了所有特殊功能寄存器及其地址和初始值。
    SFR的使用方法如下:
    1)除了SFR之外剩余的空闲单元,用户不得使用。读这些地址,一般将得到一个随机数据,写入的数据将会无效。

    2)必须使用直接寻址方式对SFR进行访问,可使用寄存器名称(是它的符号地址)或地址。例如:
    0EOH——累加器的地址
    ACC——累加器名称

    3)具有位地址和位名称的SFR才可以进行位寻址,位地址有以下4种表示形式:
    ①直接使用位地址表示:0D7H——PSW最高位的位地址
    ②使用位名称表示:CY——PSW最高位的名称
    ③使用SFR字节地址和位形式表示:0D7H.7——PSW字节地址.最高位
    ④使用SFR名称和位形式表示:PSW.7——PSW名称.最高位

    四、片外数据存储器

    片外数据存储器的P0端口作为RAM的地址/数据总线,当外部地址空间小于FFH时,只需P0口作为地址总线即可,P2口可作为一般的I/O口使用。

    当外部地址空间大于FFH时,则由P2端口传送高8位地址。对片外数据存储器的访问,使用MOVX的间接寻址指令,以区别对内部RAM(片内用MOV)的访问,同时自动产生读/写控制信号RD和WR。

    片外RAM做通用RAM使用,主要存放大量采集的或接收的数据、运算的中间数据、最后结构和堆栈数据等。

    五、地址空间

    (1)片外总线结构

    1)地址总线(AB)。地址总线的宽度是16位,因此可以寻址的范围是64KB。采用分时复用技术,可以对外部64KB的数据存储器或程序存储器直接寻址。它由P0口提供16位地址总线的低8位(A0~A7),由P2口提供地址总线的高8位(A8 ~A15)

    2)数据总线(DB)。数据总线的宽度是8位,它由P0口提供

    3)控制总线(CB)。控制总线由P3口的第二功能(RXD、TXD、INT0、INT1、T0、T1、RD、WR)和4根独立的控制线(RST、EA、ALE、PSEN)组成

    (2)程序存储器地址空间

    程序存储器通过16位程序计数器寻址,寻址能力为64KB,可使指令能在64KB空间内任意跳转。51单片机ROM的地址范围为0000H~0FFFH。
    在这里插入图片描述

    (3)数据存储地址空间

    1)片内RAM
    ①工作寄存区:51单片机的前32个单元(地址00H~1FH)称为寄存器区。通过对特殊功能寄存器PSW中RS1、RS0两位的编程设置,可选择任一寄存器组为工作寄存器组。
    ②位寻址区:字节地址20H到2FH称为位地址区,共16B,计128位,每位都有相应的位地址,位地址范围00H~7FH。
    ③便笺j(ian)区:30H~7FH,便笺区共有80个RAM单元,用于存放用户数据或作堆栈区使用。51单片机对便笺区中每个RAM单元是按字节存取的。
    ④特殊功能寄存器(26个):51单片机片内高128B RAM中,有26个特殊功能寄存器(SFR),他们离散地分布在80H~FFH地RAM空间中。访问特殊功能寄存器只允许使用直接寻址方式。特殊功能寄存器见下表:
    在这里插入图片描述
    在这里插入图片描述
    2)片外RAM
    51单片机构成的应用系统当片内RAM不够用时,可在片外部扩充数据存储器。51单片机给用户提供了可寻址64KB(0000H~FFFFH)的外部扩充RAM的能力,扩充RAM的多少,根据用户实际需要来定。


    总结

    哇,终于给写完了,这部分的知识真的是太琐碎了,从存储器总体结构概述说起,还有51单片机程序存储器ROM,又包括51单片机程序存储器管理和51单片机程序存储器的分配。
    再到片内数据存储器,工作寄存器区,位寻址区,用户RAM区,特殊功能寄存器等
    还有片外数据存储器和地址空间这些知识学起来简单,但真正学完让我去用,我觉得还有很长的路,不管了,就当是回忆簿等忘记了再来找吧/(ㄒoㄒ)/~~。继续加油!

    展开全文
  • 西门子SIMOTION D存储器结构及相关数据操作pdf,西门子SIMOTION D存储器结构及相关数据操作:介绍了SIMOTIONe存储器的基本概念以及相关的数据操作方法。
  • 我们这节课的主要内容有: ·存储器结构 ·片内ROM组织 ·RAM和外围模块组织 ·FLASH存储器 ·FLASH操作程序设计
  • 单片机存储器结构

    2020-08-02 09:55:18
    单片机的储存器结构是单片机比较简单的知识,下面通过对此知识的介绍,希望对大家的学习有所帮助。
  • 哈佛结构是将程序中的数据和指令分开来存储,这样数据和指令可以有不同的位宽 冯诺依曼结构是将程序中数据和指令存储在同一个存储器的不同物理地址中,这样数据和指令必须保持一致的位宽...
  • 存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低。
  • 行业-电子政务-用于交叉点存储器结构的电压控制.zip
  • 存储器是单片机的又一个重要组成部分,其中每个存储单元对应一个地址,256个单元共有256个地址,用两位16进制数表示,即存储器的地址(00H~FFH)。本文主要介绍的就是其结构原理。
  • 操作系统原理:第12章 大容量存储器结构.ppt
  • 80X86寄存器及存储器结构介绍 讲的很清晰
  • 第2章 AT89C51单片机结构和原理 第五讲AT89C51单片机存储器结构 一半导体存储器 二存储器空间划分方法 三数据存储器(RAM) 四程序存储器(ROM) 五MCS-51片外总线构 一半导体存储器 一功能存放程序和数据 二结构由若干...
  • 行业-电子政务-存储器结构单元的操作方法、数据读取方法及集成电路.zip
  • 现代操作系统的存储器结构

    千次阅读 2020-04-24 21:02:41
    存储器结构 超线程:一个ALU对关闭 所谓的四核八线程在观看直播 CPU 读取数据 按块读取 程序局部性原理,可以提高效率 充分发挥总线CPU针脚等一次性读取更多 数据的能力 缓存行(cache line): 缓存行越大,局部性...
  • 存储器结构 硬件基础知识 可用于课上使用 PPT
  • 半导体行业研究:存储器结构性分道篇_重内存.rar

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,741
精华内容 60,296
关键字:

存储器结构