首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

跟我学单片机——第十一课 存储器的存储原理

跟我学单片机——第十一课 存储器的存储原理

在上课之前,我们先来复习一下《第三课:单片机常用名词解释》中有关存储器的内容。
存储器:用来存放计算机中的所有信息:包括程序、原始数据、运算的中间结果及最终结果等。只读存储器(ROM):只读存储器在使用时,只能读出而不能写入,断电后ROM中的信息不会丢失。因此一般用来存放一些固定程序,如监控程序、子程序、字库及数据表等。ROM按存储信息的方法又可分为以下几种:
1、掩膜ROM:掩膜ROM也称固定ROM,它是由厂家编好程序写入ROM(称固化)供用户使用,用户不能更改内部程序,其特点是价格便宜。
2、可编程的只读存储器(PROM):它的内容可由用户根据自已所编程序一次性写入,一旦写入,只能读出,而不能再进行更改,这类存储器现在也称为OTP(Only Time Programmable)。
3、可改写的只读存储器EPROM:前两种ROM只能进行一次性写入,因而用户较少使用,目前较为流行的ROM芯片为EPROM。因为它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。
4、可电改写只读存储器(EEPROM):
EEPROM可用电的方法写入和清除其内容,其编程电压和清除电压均与微机CPU的5V工作电压相同,不需另加电压。它既有与RAM一样读写操作简便,又有数据不会因掉电而丢失的优点,因而使用极为方便。现在这种存储器的使用最为广泛。随机存储器(RAM):这种存储器又叫读写存储器。它不仅能读取存放在存储单元中的数据,还能随时写入新的数据,写入后原来的数据就丢失了。断电后RAM中的信息全部丢失。因些,RAM常用于存放经常要改变的程序或中间计算结果等信息。
RAM按照存储信息的方式,又可分为静态和动态两种。
1、静态SRAM:其特点是只要有电源加于存储器,数据就能长期保存。
2、动态DRAM:写入的信息只能保存若干ms时间,因此,每隔一定时间必须重新写入一次,以保持原来的信息不变。可现场改写的非易失性存储器:这种存储器的特点是:从原理上看,它们属于ROM型存储器,从功能上看,它们又可以随时改写信息,作用又相当于RAM。所以,ROM、RAM的定义和划分已逐渐的失去意义。
1、快擦写存储器(FLASH)这种存储器是在EPROM和EEPROM的制造基础上产生的一种非易失性存储器。其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丢失信息的特点,所以发展迅速。
2、铁电存储器FRAM它是利用铁电材料极化方向来存储数据的。它的特点是集成度高,读写速度快,成本低,读写周期短。
    通过前面的学习,我们已知道存储器是计算机的重组成部份。存储器是由大量缓冲寄存器组成的,其用途是存放程序和数据,使计算机具有记忆功能。这些程序和数据在存储器中是以二进制代码表示的。根据计算机的命令,按照指定地址,可以把代码取出来或存入新代码。
在这节课,我们的学习重点就是来研究一下存储器的内部结构、工作原理及其存储器的主要的技术指标。
第一个要学习的问题:存储器单元和存储单元地址:   
存储器是由大量寄存器组成的,其中每一个寄存器就称为一个存储单元。它可存放一个有独立意义的二进制代码。一个代码由若干位(bit)组成,代码的位数称为位长,习惯上也称为字长。
   每个存储单元存放几位二进制数呢?一般情况下,计算机中一个代码的位数和它的算术运算单元的位数是相同的。例如,8051单片机中算术单元是8位,则字长就是8位。在计算机中把一个8位的二进制代码称为一个字节(Byte),常写为B。对于一个8位二进制代码的最低位称为第0位(位0),最高位称为第7位(位7)。

   在计算机中的存储器往往有成千上万个存储单元,为了使存入和取出不发生混淆,必须给每个存储单元一个唯一的固定编号,这个编号就称为存储单元的地址。因为存储单元的数量很大,我们不可能每个存储单元都把线引到外部,如果每个存储单元都引根线到外部,那一个8位的单片机就需外向外部引出65536根线了,这在现实中是不可能的。为了减少存储器向外引出的地址线,在存储器内部都带有译码器。根据二进制编码、译码的原理,除地线公用之外,n根导线可以译成2n个地址号。例如,当地址线为3根时,可以译成23=8个地址号;地址线为3根时,可以译成28=256个地址号。依此类推,在8051单片机中有16根地址线,也就是说在8051单片机中有216=65 536个地址号,地址号的多少就是我们寻址范围的大小,也就是前面我们提到过的8051单片机的寻址范围是64K。
    从上面的介绍可以看出,存储单元地址和这个存储单元的内容含义是不同的。存储单元如同一个旅馆的每个房间;存储单元地址则相当于每个房间的房间号;存储单元内容(二进制代码)就相当于这个房间的房客。
前面我们已讲过,8051的单片机有16根地址线,它的存储地址有216=65 536个,这么多的存储地址,而地址线却只有16根,我们怎么用16根地址线来控制这6万多个存储地址呢?接下来我们就这个问题与大家一起做个探讨:在上节课《第九课:51单片机CPU的结构》时我们已知道,在51单片机的内部有一个叫做译码器的部件。用16根地址线来控制65536个存储地址,就是用译码来实现的。
   我们知道,计算机可以进行数学运算,这可令我们非常的难以理解,计算机吗,里面只不过是一些电子元件组成的,怎能么可以进行数学运算呢?我们做数学题时如25+36是这样做的,先在纸上写25,然后在下面写36,然后大脑运算,最后写出结果,运算的原材料:25、36和结果61都是写在纸上的。计算机中又是怎样存放的呢?为了解决定个问题,我们先做一个实验:
   下面有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用“0”和“1”来代替这两种状态,规定亮为“1”,不亮为“0”。南以上两盏灯,一共有几种状态呢?

上面已例出,两盏灯可以表达成00  01  10  11四种状态,那么三盏灯呢?三盏灯应该就是可以表达成000 001 010 011 100 101 110 111八种状态。如果是八盏灯呢?那么其状就表达就是00000000 00000001 00000010。。。。。11111111 共256种状态。
我们来看,上面这些000 001 010。。。。等等这些数不就是我们学过的二进制数吗?本来灯的亮灭是一种物理现象,可当我们把它们按一定的顺序排列好后,灯的亮和灭就代表数字了。让我们再抽象一步,灯为什么会亮呢?是因为输出电路输出高电平,给灯通了电。因此,灯亮和灭就可以用电路的输出是高电平还是低电平来代替了。这样,数字就和电平的高、低联系上了。
位的含义:通过上面的实验我们已知道:一盏灯亮或者说一根线的电平的高低,可以代表两种状态:0和1。实际上这就是一个二进制位,困此我们把一根线(或者一盏灯)称为一“位”,用BIT表示。
字节的含义:一根线可以表示0和1,两根线可以表达00,01,10,11四种状态,也就是可以表示0到3,而三根给可以表达0至7,计算机中通常用8根线放在一起,同时计数,就可以表达到0~255共256种状态。这8根线或者8位就称之为一个字节(BYTE)。不要问我为什么是8根而不是其它数,因为我也不知道。(计算机是一个人造的世界,不是自然界,很多事情无法问为什么,只能说:字是一种规定,大家在以后的学习过程中也要注意这个问题)。
存储器是用来存放数据的地方。它是利用电平的高低来存放数据的。也就是说,它存放的实际上是电平的高、低,而不是我们习惯认为的1234这样的数字。下面我们就来看看,单片机内的存储器是怎样来寻址的,也就是怎么来找到我们存放在存储器内的数据。


呵呵谢谢
返回列表