存储器系统译码与的存储器系统.PPT
文本预览下载声明
6.2.3 存储器地址译码 存储器芯片与处理器的连接 存储器芯片有数据、地址、读写控制引脚 处理器总线有数据、地址、读写控制信号 功能上多数可以直接相连 但是,地址信号需要译码 处理器地址总线个数多于存储器地址引脚个数 多个存储器芯片组成一定容量的存储系统 需要利用地址总线控制存储器片选信号 1. 地址译码 译码(Decode) 将某个特定的编码输入翻译为有效输出的过程 存储器译码电路 可编程逻辑器件PLD 译码器 门电路组合 举例:多输入或门实现译码 64K×8结构的SRAM,地址引脚16个A15~A0,构成8086系统的16位字长存储器系统——2片,一片接高8位,一片接低8位。 8086处理器: 20个地址总线A19~A0 16位数据总线 低8位数据总线——A0=0 访问 高8位数据总线——BHE=0 访问 8086执行不同操作指令时的A0和BHE信号 简单的门电路译码 地址: 地址: 2. 译码器 3-8译码器:138译码器 3个控制输入引脚: G1,G2A*和G2B* 有些资料上 E3, E2* E1* (我们的教材这样表示) 都有效,才能实现译码功能 3个编码输入引脚:C,B和A 8种编码各对应一个译码输出引脚 C B A=000编码使Y0*低有效,其他高电平无效 C B A=001编码使Y1*低有效,其他高电平无效 …… C B A=111编码使Y7*低有效,其它高电平无效E3 译码器74LS138 译码器译码 对于存储器访问,M/IO* =1,将该信号接到3-8译码器的G1(E3)引脚,则只有执行存储器访问指令(存储器读或写指令) MOV mem, src MOV src, mem 时,存储器的地址译码器才有效。 在执行 端口访问指令 IN OUT 时,M/IO*=0,存储器译码器输出Y7*~Y0*全部无效(为1),这样就将存储器地址与I/O端口地址区分开来。 一个例子如下: 地址: 这种将高位地址全部送译码器进行译码的方式——全译码方式。 译码方式 全译码 ——全部高位地址进行译码 部分译码 ——部分高位地址进行译码 线选方式 ——直接用高位地址信号做片选信号 部分译码电路 例如:上述存储器电路使用2—4译码器时,A17不参与译码时 A17不参与译码 在A17=0时 地址:00000H~1FFFFH 在A17=1时 地址:20000H~3FFFFH A19不参与译码的部分译码电路 在A19=0时 地址:00000H~1FFFFH 在A19=1时 地址:80000H~9FFFFH 译码方式 全译码方式 使用全部微处理器地址总线 片内寻址:低位地址与存储器芯片地址引脚相连 片选寻址:高位地址经译码与存储器芯片片选引脚相连 部分译码方式 只使用部分微处理器地址总线进行译码 没有使用的地址信号对存储器芯片的工作不产生影响 线选方式 将存储器芯片没有用到的高位地址信号中的某一根直接作为存储器芯片的片选控制信号。 当该地址信号=0时,选中该存储器芯片。 注意:连接到其他存储器芯片的用于片选信号的高位地址应该都处于高电平(无效片选信号)状态。 应当注意: 当使用线选方式时,只要用于作为片选信号的地址信号=0,就选中存储器, 例如上图,A19=0, A18,A17为任意值都可以选中图中的存储器芯片。这样,他的地址空间范围: A18=0,A17=0: 00000H~1FFFFH A18=0,A17=1: 20000H~3FFFFH A18=1,A17=0: 40000H~5FFFFH A18=1,A17=1: 60000H~7FFFFH 在程序设计中,应该避免使A18 =0,A 17=0的情况出现——原因是线选方式,A18,A17一般用于选择其他的存储器芯片,这样会造成多个芯片同时被选中的错误。 故编写程序,应该使用60000H~7FFFFH地址空间。 3. 8086的16位存储结构 对称的两个存储体(Bank)所构成 偶存储体(A0=0) 对应所有的偶地址单元 (0、2、4、……FFFEH) 接处理器低8位数据总线D7~D0 奇存储体(BHE*=0) 对应所有的奇地址单元 (1、3、5、……FFFFH) 接处理器高8位数据总线D15~D8 两个存储器芯片的片选端连接在一起 8086的16位存储结构 地址对齐(Align) 高位地址A19~A17=111,片选信号有效 低位地址A16~A1=0...0,那么: A0=0(地址E0000H),BHE*=0,访问16位数据 A0=0(地址E0000H),BHE*=1,访问低8位数据 A0=1(地址E0001H),BHE*=0,访问高8位数据 A0=1,BHE*=1,无效的数据访问组合 80
显示全部