当前位置:首页 » 服务存储 » 简述存储器的两种译码结构
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

简述存储器的两种译码结构

发布时间: 2022-06-07 00:15:31

1. 存储器芯片中地址译码的方式有几种,分别说明它们的特点

  1. 若CPU的寻址空间等于存储器芯片的寻址空间,可直接将高低位地址线相连即可,这种方式下,可用单条读写指令直接寻址,寻址地址与指令中的地址完全吻合。

  2. 若CPU的寻址空间大于存储器芯片的寻址空间,可直接将高低位地址线相连即可,CPU剩余部分高位地址线,这种方式下,可用单条读写指令直接寻址,未连接的地址线在指令中可以以0或1出现,即有多个地址对应每个存储器空间,可在指令中将这些位默认为零。

  3. 若CPU的寻址空间小于存储器芯片的寻址空间,可将其它IO口连接剩余存储器高位地址线,寻址前,需设置好这些IO口。

  4. 当存在多片存储器,且希望节省CPU的IO口时,需要外加译码电路。比如说,存储器地址线为13根,共8片存储器,可用74LS138连接CPU的高3位地址线,74LS38的8位输出分别连接8片存储器,读写时,寻址地址与指令中的地址完全吻合。

  5. 上一种情况中,若希望简化外围电路,也可用其余端口的8个IO分别连接8片存储的片选,其寻址方式与第三种情况类似。

2. 存储器由哪几部分组成,如何使用

存储器由存储体、地址译码器和控制电路组成。


1)存储体是存储数据信息的载体。由一系列存储单元组成,每个存储单元都有确定的地址。存储单元通常按字节编址,一个存储单元为一个字节,每个字节能存放一个8位二进制数。就像一个大仓库,分成许多房间,大仓库相当于存储体,房间相当于字节,房间都有编号,编号就是地址。

2)地址译码器将CPU发出的地址信号转换为对存储体中某一存储单元的选通信号。相当于CPU给出地址,地址译码器找出相应地址房间的钥匙。通常地址是8位或1 6位,输入到地址译码器,产生相应的选通线,8位地址能产生28=256根选通线,即能选通256字节。16位地址能产生216=65536=64K根选通线,即能选通64K字节。当然要产生65536根选通线是很难想象的,实际上它是分成256根行线和256根列线,256 X 256=65536,合起来能选通65536个存储单元。

3)存储器控制电路包括片选控制、读/写控制和带三态门的输入/输出缓冲电路。

①片选控制确定存储器芯片是否工作。

②读/写控制确定数据传输方向;若是读指令,则将已被选通的存储单元中的内容传送到数据总线上;若是写指令,则将数据总线上的数据传送到已被选通的存储单元中。

③带三态门的输入/输出缓冲电路用于数据缓冲和防止总线上数据竞争。数据总线相当于一条车流频繁的大马路,必须在绿灯条件下,车辆才能进入这条大马路,否则要撞车发生交通事故。同理,存储器的输出端是连接在数据总线上的,存储器中的数据是不能随意传送到数据总线上的。例如,若数据总线上的数据是“1”(高电平5V),存储器中的数据是“0”(低电平OV),两种数据若碰到一起就会发生短路而损坏单片机。因此,存储器输出端口不仅能呈现“1”和“O”两种状态,还应具有第三种状态“高阻"态。呈“高阻"态时,它们的输出端口相当于断开,对数据总线不起作用,此时数据总线可被其他器件占用。当其他器件呈“高阻"态时,存储器在片选允许和输出允许的条件下,才能将自己的数据输出到数据总线上。

单片机学习需要理论结合实际,最好有自己的单片机开发板辅助,看视频教程,目前主流的有吴鉴鹰单片机开发板

3. 在存储器的内部结构中,译码器的作用是

在存储器的内部结构中,译码器的作用是?简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
中文名
编译器
外文名
Compiler
别称
译码器
表达式
源代码→预处理器 → 编译器 → 目标代码
提出者
葛丽丝·霍普

4. 半导体存储器芯片的译码驱动方式有几种

两种:译码法,线选法。
其中,译码法,还可分成:全译码、部分译码。
他们回答的,都不对。

5. 在对存储器芯片进行片选时,全译码方式、部分译码方式和线选方式各有何特点

若cpu的寻址空间等于存储器芯片的寻址空间,可直接将高低位地址线相连即可,这种方式下,可用单条读写指令直接寻址,寻址地址与指令中的地址完全吻合。
若cpu的寻址空间大于存储器芯片的寻址空间,可直接将高低位地址线相连即可,cpu剩余部分高位地址线,这种方式下,可用单条读写指令直接寻址,未连接的地址线在指令中可以以0或1出现,即有多个地址对应每个存储器空间,可在指令中将这些位默认为零。
若cpu的寻址空间小于存储器芯片的寻址空间,可将其它io口连接剩余存储器高位地址线,寻址前,需设置好这些io口。
当存在多片存储器,且希望节省cpu的io口时,需要外加译码电路。比如说,存储器地址线为13根,共8片存储器,可用74ls138连接cpu的高3位地址线,74ls38的8位输出分别连接8片存储器,读写时,寻址地址与指令中的地址完全吻合。
上一种情况中,若希望简化外围电路,也可用其余端口的8个io分别连接8片存储的片选,其寻址方式与第三种情况类似。

6. 单片机的存储器结构

通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,能代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。

什么是字节:
  一根线能表于0和1,两根线能表达00,01,10,11四种状态,也就是能表于0到3,而三根能表达0-7,计算机中常常用8根线放在一起,同时计数,就能表过到0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。不要问我为什么是8根而不是其它数,因为我也不知道。(计算机世界是一本人造的世界,不是自然界,很多事情你无法问为什么,只能说:它是一种规定,大家在以后的学习过程中也要注意这个问题)

存储器的工作原理:

1、存储器构造

   存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。

 

 

 
图2

 
图3

  让我们看图2。单片机里面都有这样的存储器,这是一个存储器的示意图:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你能把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。

 

 

  有了这么一个构造,我们就能开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图3)。可是问题出来了,看图2,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看图2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就能自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不一样单元的控制线,就能向各单元写入不一样的数据了,同样,如果要某个单元中取数据,也只要打开对应的控制开关就行了。

2、存储器译码
  那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种办法称这为译码,简单介绍一下:一根线能代表2种状态,2根线能代表4种状态,3根线能代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就能代表了。

(图4)

3、存储器的选片及总线的概念
   至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图4所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的管脚进来后,不直接接到各单元去,中间再加一组开关(参考图4 )就行了。平时我们让开关关闭着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。注意图4,读和写信号同时还接入到另一个存储器,但是由于片选端不一样,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不一样时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。

7. 存储器的基本结构原理

存储器单元实际上是时序逻辑电路的一种。按存储器的使用类型可分为只读存储器(ROM)和随机存取存储器(RAM),两者的功能有较大的区别,因此在描述上也有所不同
存储器是许多存储单元的集合,按单元号顺序排列。每个单元由若干三进制位构成,以表示存储单元中存放的数值,这种结构和数组的结构非常相似,故在VHDL语言中,通常由数组描述存储器

结构
存储器结构在MCS - 51系列单片机中,程序存储器和数据存储器互相独立,物理结构也不相同。程序存储器为只读存储器,数据存储器为随机存取存储器。从物理地址空间看,共有4个存储地址空间,即片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器,I/O接口与外部数据存储器统一编址

存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和CPU直接交换信息的是主存。
主存的工作方式是按存储单元的地址存放或读取各类信息,统称访问存储器。主存中汇集存储单元的载体称为存储体,存储体中每个单元能够存放一串二进制码表示的信息,该信息的总位数称为一个存储单元的字长。存储单元的地址与存储在其中的信息是一一对应的,单元地址只有一个,固定不变,而存储在其中的信息是可以更换的。
指示每个单元的二进制编码称为地址码。寻找某个单元时,先要给出它的地址码。暂存这个地址码的寄存器叫存储器地址寄存器(MAR)。为可存放从主存的存储单元内取出的信息或准备存入某存储单元的信息,还要设置一个存储器数据寄存器(MDR)