1、微机原理与接口技术 存储器与存储器扩展 存储器概述 半导体存储器 MCS-51单片机存储器扩展 存储器与存储器扩展 存储器定义 在微机系统中凡能存储程序和数据的部件统称为存储器。 存储器分类 微机系统中的存储器分为 内存 和 外存 两类。 存储器概述 存储容量大,存取速度慢;它不能直接与 CPU交换信息,必须经过内存实现;常用的有硬盘、软盘和光盘。 存储容量有限,存放将要运行的程序和数据,存取速度快,可以直接与 CPU交换信息。 内存储器的组成 微机系统中的存储器由 半导体存储器芯片 组成。 单片机内部有存储器,当单片机内部的存储器不够用时,可以外扩存储器。外扩的存储器就是由半导体存储器芯片组
2、成的。 当用半导体存储器芯片组成内存时必须满足: 每个存储单元一定要有 8个位。 存储单元的个数满足系统要求。 注意: 半导体存储器芯片的存储容量 是指其上所含的基本存储电路的个数,用 单元个数 位数 表示 (每个存储单元一般要有 8个位,可以存储 8位二进制信息) 存储器的容量 芯片容量 = 存储单元数 x 每单元位数 2K x 8的存储器 表示 它有 2K个单元,每单元有 8位 1K x 4的存储器 表示 它有 1K个单元,每单元有 4位。若要用它组成一个 1Kx8位的存储器,就需要两块这样的芯片。 ROM( Read Only Memory) 存放 固定程序 /数据 断电后不消失, 非易
3、失性 信息的写入通常在脱机状态下或计算机处于写 ROM状态下进行 分类: 掩膜 ROM( Read Only Memory) :出厂时已决定 一次可编程型 PROM( Programmable ROM): 熔断或保留熔丝,只可编程一次 可编程可擦除型 EPROM( Erasable Programmable ROM) :允许用户多次擦除其中信息,紫外线光源照射 电可改写型 EEPROM( Electrically Erasable Programmable ROM) :电气方法擦除信息 闪烁存储器 FLASH 只读存储器的结构 由地址译码器、存储矩阵、输出缓冲器 组成 译码器 n条地址输入线,
4、寻址 2n个存储器单元 存储矩阵 每个存储单元 m位,每一位可以是一个二极管,一个三极管,或者一个 MOS管 输出缓冲器 三态门, OE为控制信号, OE为 1时,输出呈高阻状态, OE为 0时,将存储单元的内容输出到数据总线 地 址 译 码 器 存储矩阵 2nXm 输 出 缓 冲 器 A0 A1 An-1 OE D0 D1 Dm-1 4x4ROM矩阵 每一位对应一个 MOS管, ROM中存储信息反映在各个 MOS管栅极的连接方式上 当某字线为 1时,相应单元的内容就从位线 D3D0读出 字地址译码器字线 1字线 2字线 3字线 4位线 1 位线 3 位线 4位线 2V c cA0A10001
5、1011Intel2764的容量为 8K 8, 有 28个引脚: Al2A0:地址信号输入引脚 , 可寻址芯片的 8K个存储单元 。 D7D0: 双向数据信号输入输出引脚 。 CE:片选信号输入引脚 , 低电平有效 , 只有当该引脚转入低电平时 ,才能对相应的芯片进行操作 。 OE:数据输出允许控制信号引脚 , 输入 , 低电平有效 , 用以允许数据输出 。 VPP: +25v电源 , 用于在专用装置上进行写操作 。 PGM:编程脉冲输入 。 低电平有效 Vcc: +5v电源 。 GND:地 。 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CE OE V
6、PP PGM D0 D1 D2 D3 D4 D5 D6 D7 2764 已知芯片容量求芯片数据线和地址线条数 。 若半导体存储器芯片的容量为 a b, 则其数据线条数为 b条 , 地址线条数满足如下关系: 2n=a 典型 EPROM芯片 2764 RAM是随机读写存储器 , 其中的信息由 CPU通过指令读写( MOVX DPTR, A; MOVX A, DPTR) 。 RAM特性: RAM具有易失性 , 即掉电后其上的信息消失 , 故用于存储临时性数据 。 RAM分类: RAM分为 2类: 双极型 和 MOS型 ( MOS型 RAM因其集成度高 ,功耗低 , 价格便宜而得到广泛应用 ) 。 M
7、OS型 RAM又分为 SRAM和 DRAM。 SRAM用 MOS型双稳态触发器存储信息,集成度低,接口简单。 DRAM用电容存储信息,集成度高,接口复杂,因为电容上的电荷容易泄漏,所以必须定时充电。 RAM( Random Access Memory) 随机存储器的结构框图 地 址 译 码 器 存储矩阵 2nXm 输 出 缓 冲 器 A0 A1 An-1 D0 D1 Dm-1 存储器 读写控制逻辑 R / W CE OE 先将地址码通过地址总线送到存储器的地址输入端 ; CPU通过控制总线向 RAM发出选通信号和读写控制信号 , 由选通信号 /CE=0选中芯片 , 根据 R/W信号的电平来确定
8、进行读操作还是写操作 。 静态随机存储器 Intel6264的容量为 8K 8 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 WE OE CS1 CS2 D0 D1 D2 D3 D4 D5 D6 D7 6264 典型 RAM芯片 Intel6264 /WE /CS1 /CS2 /OE 方式 D0D7 X H X X 未选中(掉电) 高阻 X X L X 未选中(掉电) 高阻 H L H H 输出禁止 高阻 H L H L 读 DOUT L L H H 写 DIN L L H L 写 DIN A0A12 地址线 D0D7 双向数据线 CS1 片选线 1 CS
9、2 片选线 2 WE 写允许线 OE 读允许线 MCS51系列单片机内部的存储器不够用时需要外扩半导体存储器芯片,外扩的半导体存储器芯片与 MCS51系列单片机通过 三总线 交换信息。二者连接时必须考虑如下问题: 1二者地址线、数据线、控制线的连接。 2工作速度的匹配。 CPU在取指令和存储器读或写操作时,是有固定时序的,用户要根据这些来确定对存储器存取速度的要求,或在存储器已经确定的情况下,考虑是否需要 Tw周期,以及如何实现。 3片选信号的产生。 目前生产的存储器芯片,单片的容量仍然是有限的,通常总是要由许多片才能组成一个存储器,这里就有一个如何产生片选信号的问题。 4 CPU的驱动能力
10、。 在设计 CPU芯片时,一般考虑其输出线的直流负载能力,为带一个 TTL负载。现在的存储器一般都为 MOS电路,直流负载很小,主要的负载是电容负载,故在小型系统中, CPU是可以直接与存储器相连的,而较大的系统中,若 CPU的负载能力不能满足要求,可以(就要考虑 CPU能否带得动,需要时就要加上缓冲器,)由缓冲器的输出再带负载。 MCS-51单片机存储器扩展 ROM芯片的扩展 在 MCS-51单片机应用系统中,如果单片机内部程序存储器不够用时,特别是对片内无 ROM的8031单片机,外扩程序存储器是必不可少的工作。 程序存储器容量的扩展可根据实际需要在 64KB范围内选择。 单片机扩展用程序
11、存储器有紫外光可擦除型( EPROM)、电擦除型( EEPROM)和闪速存储器 FLASH等。 EPROM价格低廉,性能稳定可靠,所以,一般程序存储器的扩展均采用之。 地址锁存器 MCS-51系列单片机的 P0口是数据总线和低 8位地址总线分时复用口, P0口输出的低 8位地址必须用地址锁存器进行锁存。 74LS373 8位 D锁存器电路,三态控制输出 D Q G 1D 2D 3D 4D 5D 6D 7D 8D G (选通 ) 1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q OE (输出允许 ) 当选通端 G为高电平,同时输出允许端 OE为低电平, 则输出 Q = 输入 D (输出 Q跟随输入
12、 D) 当选通端 G为低电平,同时输出允许端 OE为低电平, 则输出 Q = Q0 ( Q0为原状态) 当输出允许端 OE为高电平, 则输出 Q总为高阻态 存储器扩展的原则 1. 根据应用系统的要求,选择使用何种类型的芯片作程序存储器芯片; 2. 在存储器容量选择时,应尽量选择大容量的芯片,即用一片存储器芯片能够满足要求的,尽量不使用多片,从而减少芯片的组合数量 3. 当必须选用多芯片时,也应选择集成度相同的芯片,以便简化系统的应用电路 。 例 1 某微机系统只有一片 2764,试将其与 8051进行连接。 ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.
13、5 P0.6 P0.7 8051 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 将芯片的 13位地址线按引脚名称一一并联,然后按次序逐根接至系统地址总线的低 13位。 将芯片的 8位数据线依次接至系统数据总线的 O0-O7。 芯片的 OE端接至系统控制总线的存储器读信号( PSEN) 因为系统中只有 1片 276
14、4,所以 2764的 CE可以接地。 地址码的计算 VCC +5V ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 8051 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 地址码的计算 计算 2764每个单元的地址( 8051送出何种地址码时选中该单元
15、 ) P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 AB15AB14 AB13 AB12 AB11 AB10 AB9 AB8 AB7 AB6 AB5 AB4 AB3 AB2 AB1 AB0 * * * 0 0 0 0 0 0 0 0 0 0 0 0 0 * * * 1 1 1 1 1 1 1 1 1 1 1 1 1 0000H 1FFFH 89C51从 2764中读取信息的过程: 89C51发地址码 P0.0 P0.7 AB 2764的 A0 A7 ALE=1 P2.0 P2.7
16、AB 2764的 A8 A12 89C51发读 ROM信号 PSEN=0 CB 2764的 OE 2764将选中单元的内容送出 DB 8051的 P0.0 P0.7 VCC +5V ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 8051 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 A
17、B0 AB0 AB15 AB12 例 2 用 2764构成 16K的存储系统,试将它们与 8051进行连接。 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 1片 2764上有 8K个存储单元,为了满足内存的容量的要求,需要 2片 2764串联使用。 但 2片 2764不能同时被选中 ,因为 2片 2764的的数据线都接在 8位 DB上,当二者同时被选中时,会出现争占 DB的现象。这时,需要考虑 片选 问题。 VCC +5V VCC +5V ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 89C51
18、 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 片选信号的产生 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 片选信号的产生方法有 3种: 线选法 、部分译码法和 全译码法 。 ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6
19、P0.7 89C51 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 线选法 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 线选法就是 用剩余的高位地址线作片选信号 。 线选法有 2个缺点:其一是各芯片的地址不连续,其二是有一些地址不能使用,否则会造成片选的混乱(有地址重叠现象,
20、即一个存储单元有多个地址码)。 AB15 AB14 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 AB15 AB14 AB13 AB12 AB11 AB10 AB9 AB8 AB7 AB6 AB5 AB4 AB3 AB2 AB1 AB0 0 1 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 * 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 * 1 1 1 1 1 1 1 1 1 1 1
21、1 1 0400H-5FFFH 8000H-9FFFH ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 89C51 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 全译码法 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0
22、 全译码法就是 剩余的全部地址线都参与译码,译码器的输出作为片选信号。 因为译码器在某一时刻只有 1条输出线有效,保证了在某一时刻只有 1个芯片被选中的要求。 全译码法则没有地址重叠现象,即各存储单元的地址码唯一。 AB15 AB14 P27 P26 P25 P24 P23 P22 P21 P2 0 P07 P06 P05 P04 P03 P02 P01 P00 AB15AB14 AB13 AB12 AB11 AB10 AB9 AB8 AB7 AB6 AB5 AB4 AB3 AB2 AB1 AB0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
23、1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0000H-1FFFH 2000H-3FFFH 74LS138 74LS139 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A G1 G2A G2B C B 74LS138 AB13 +5V Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A G1 G2A G2B C B 74LS138 74LS138 74LSl38具有三个输入选择端,能够组合成 8种输入状态,对应 8种输出,可产生 8个片选信号,低电平有效。也就是说,每种输入状
24、态,仅允许一个输出端输出低电平,其余输出端全部为高电平。同时, 74LS138还具有 3个使能端 G1、 G2A、 G2B, 3个使能端必须同时输入有效电平,译码器才能正常工作,即仅当 G1、 G2A、 G2B 100时,才能选通译码器,否则译码器输出全无效。 73LS138译码器的逻辑功能真值表 输 入 输 出 使 能 选 择 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1
25、 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 X X X 1 X X X 1 X X X X X X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 RAM芯片的扩展 由于 8051单片机芯片内部仅有 128B的 RAM,需要作为工作寄存器、堆栈和数据缓冲器使用,当控制系统需要暂存的数据量较大时,片内 RAM往往不够用,因此需要进
26、行片外数据存储器的扩展。 MCS-51系列单片机数据存储器的扩展能力最大可达 64KB。 在一般的数据存储器扩展中,常选用静态数据存储器芯片( SRAM)作为外扩数据存储器使用,SRAM具有存取速度快、使用方便、不需要刷新电路,接口简单等特点,但系统一旦掉电,内部所存数据便会丢失。 例 1 某微机系统只有一片 6264,试将其与 8051进行连接。 ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 8051 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7
27、OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CS1 OE D0 D7 6264 AB12 AB0 AB0 AB15 AB12 将芯片的 13位地址线按引脚名称一一并联,然后按次序逐根接至系统地址总线的低 13位。 将芯片的 8位数据线依次接至系统数据总线的 D0-D7。 芯片的 OE端接至系统控制总线的存储器读信号( RD) 芯片的 WE端接至系统控制总线的存储器写信号( WR) 因为系统中只有 1片 6264,所以 6264的 CS1可以接地。 地址码的计算 CS2 +5V WE 计算 6264每个单元的地址( 8051送出何种
28、地址码时选中该单元) P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 AB15 AB14 AB13 AB12 AB11 AB10 AB9 AB8 AB7 AB6 AB5 AB4 AB3 AB2 AB1 AB0 * * * 0 0 0 0 0 0 0 0 0 0 0 0 0 * * * 1 1 1 1 1 1 1 1 1 1 1 1 1 89C51从 6264中读取信息的过程: 8051发地址码 P0.0 P0.7 AB 2764的 A0 A7 ALE=1 P2.0 P27 AB 27
29、64的 A8 A12 8051发读 RAM信号 RD=0 CB 6264的 OE 6264将选中单元的内容送出 DB 8051的 P0.0P0.7 8051向 6264中写入信息的过程: 8051发地址码 P0.0 P0.7 AB 2764的 A0 A7 ALE=1 P2.0 P27 AB 2764的 A8 A12 8051发写 RAM信号 WR=0 CB 6264的 WE 8051送出数据 DB 6264将选中单元 地址码的计算 ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 8051 P2.0 P2.1 P2.2 P2.3 P2
30、.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB AB12 AB0 AB0 AB15 AB12 例 2 用 6264构成 16K的存储系统,试将它们与 8051进行连接。 AB12 AB0 A0 A12 CS OE CS2 D0 D7 6264 A0 A12 CS OE CS2 D0 D7 6264 WE +5V WE +5V 1片 6264上有 8K个存储单元,为了满足内存的容量的要求,需要 2片 6264串联使用,即 2片 6264不能同时被选中 。因为 2片 6
31、264的的数据线都接在 8位DB上,当二者同时被选中时,会出现争占 DB的现象。这时,需要考虑 片选 问题。 ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 89C51 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB AB12 AB0 AB0 AB15 AB12 线选法 AB12 AB0 AB15 AB14 P2.7 P2.6 P2.5 P2.4 P2.3 P2
32、.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 AB15 AB14 AB13 AB12 AB11 AB10 AB9 AB8 AB7 AB6 AB5 AB4 AB3 AB2 AB1 AB0 0 1 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 * 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 * 1 1 1 1 1 1 1 1 1 1 1 1 1 0400H-5FFFH 8000H-9FFFH A0 A12 CS OE CS2 D0 D7 62
33、64 A0 A12 CS OE CS2 D0 D7 6264 WE +5V WE +5V ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 89C51 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB AB12 AB0 AB0 AB15 AB12 全译码法 AB12 AB0 AB15 AB14 P27 P26 P25 P24 P23 P22 P21 P20 P07
34、P06 P05 P04 P03 P02 P01 P00 AB15AB14 AB13 AB12 AB11 AB10 AB9 AB8 AB7 AB6 AB5 AB4 AB3 AB2 AB1 AB0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0000H-1FFFH 2000H-3FFFH Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A G1 G2A G2B C B 74LS138 AB
35、13 +5V A0 A12 CS OE CS2 D0 D7 6264 A0 A12 CS OE CS2 D0 D7 6264 WE +5V WE +5V ALE RD WR PSEN P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 89C51 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB AB12 AB0 AB0 AB15 AB12 AB12 AB0 A0 A12 CS OE CS2 D0 D7 6264 A0 A12 CE OE D0 D7 2764 WE +5V 因为 8051通过控制线区分 ROM和 RAM ,所以二者可以同时被选中,地址可以重叠。 该系统中的 2764和 6264的片选可以不受控,直接接地。 注意:在访问程序存储器时,所用的指令为MOVC,产生 PSEN信号。访问外扩数据存储器时,所用的指令为 MOVX,产生 WR或 RD信号! 例 3 某微机系统有一片 6264、一片 2764,试将它们与 8051进行连接。