1. <em id="3qmea"><ol id="3qmea"></ol></em>
    2. <em id="3qmea"></em>
      中国领先的单片机及嵌入式资讯¡¢教程¡¢开发工具提供者!
      当前位置£º单片机教程网 >> 基础教程 >> 浏览文章

      3课:单片机存储器结构

      作者:佚名   来源:本站原创   点击数:¡­  更新时间£º2007年08月16日   ¡¾字体£º ¡¿

      单片机内部存储结构分析
         我们?#27492;¼¿家?#20010;问题£¬当我们在编程器中把一条指令写进单片要内部£¬然后取下单片机£¬单片机就可以执行这条指令£¬那么这条指令一定保存在单片机的某个地方£¬并且这个地方在单片机掉电后依然可以保持这条指令不会丢失£¬这是个什么地方呢£¿这个地方就是单片机内部的只读存储器即ROM£¨READ ONLY MEMORY£©¡£为什么称它为只读存储器呢£¿刚才我们不是明明把两个数?#20013;?#36827;去了吗£¿原来在89C51中的ROM是一种电可擦除的ROM£¬称为FLASH ROM£¬刚才我们是用的编程器£¬在特殊的条件下由外部设备对ROM进行写的操作£¬在单片机正常工作条件下£¬只能从那面读£¬不能把数据写进去£¬所以我们还?#21069;?#23427;称为ROM¡£

         数的本质和物理现象£º我们知道£¬计算机能进行数学运算£¬这可令我们非常的难以理解£¬计算机吗£¬我们虽不了解它的组成£¬但它总只是一些电子元器件£¬怎么能进行数学运算呢?#35838;?#20204;做数学题如37+45是这样做的£¬先在纸上写37£¬然后在下面写45£¬然后大脑运算£¬最后写出结果£¬运算的原材料£º37¡¢45和结果£º82都是写在纸上的£¬计算机中又是放在什么地方呢?#35838;?#20102;解决这个问题£¬先让我们做一个实验£º这里有一盏灯£¬我们知道灯要么亮£¬要么不亮£¬就有两种状态£¬我们能用’0’和’1’来代替这两种状态£¬规定亮为’1’£¬不亮为’0’¡£现在放上两盏灯£¬一共有几种状态呢?#35838;?#20204;列表来看一下£º

      状态
      表达
      0 0
      0 1
      1 0
      1 1

        请大家自已写上3盏灯的情况000 001 010 011 100 101 110 111

        我们来看£¬这个000£¬001£¬101 不就是我们学过的的二进制数吗£¿本来£¬灯的亮和灭只是一种物理现象£¬可当我们把它们按一按的次序排更好后£¬灯的亮和灭就代表了数字了¡£让我们再抽象一步£¬灯为什么会亮呢£¿看电路1£¬?#19988;?#20026;输出电路输出高电平£¬给灯通了电¡£因此£¬灯亮和灭就能用电路的输出是高电平还是低电平来替代了¡£这样£¬数字就和电平的高¡¢低联系上了¡££¨请想一下£¬我们还看到过什么样的类似的例程呢£¿£¨海军之£©灯语¡¢旗语£¬电报£¬甚至红¡¢绿灯£©

      什么是位£º 
        通过上面的实验我们已经知道£º一盏灯亮或者说一根线的电平的高低£¬能代表两种状态£º0和1¡£?#23548;?#19978;这就是一个二进制位£¬因此我们就把一根线称之为一“位”£¬用BIT表示¡£

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

      存储器的工作原理£º

      1¡¢存储器构造

         存储器就是用来存放数据的地方¡£它是利用电平的高低来存放数据的£¬也就是说£¬它存放的?#23548;?#19978;是电平的高¡¢低£¬而不是我们所习惯认为的1234这样的数字£¬这样£¬我们的一个谜团就解开了£¬计算机也没什么神秘的吗¡£


      图2

      图3

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

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

      2¡¢存储器译码
        那么£¬我们怎样来控制各个单元的控制线呢£¿这个?#20849;?#31616;单£¬把每个单元元的控制线?#23478;?#21040;集成电路的外面不就行了吗£¿事情可没那么简单£¬一片27512存储器中有65536个单元£¬把每根线?#23478;?#20986;来£¬这个集成电路就得有6万多个脚£¿不行£¬怎么办£¿要想法减少线的数量¡£我们有一种办法称这为译码£¬简单介绍一下£º一根线能代表2种状态£¬2根线能代表4种状态£¬3根线能代表几种£¬256种状态?#20013;?#35201;几根线代表£¿8种£¬8根线£¬所以65536种状态我们只需要16根线就能代表了¡£

      (图4)

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

         ?#30001;?#38754;的介绍中我们已经看到£¬用来传递数据的八根线并不是专用的£¬而是很多器件大家共用的£¬所以我们称之为数据总线£¬总线英文名为BUS£¬总即公交车道£¬谁者能走¡£而十六根地址线也是连在一起的£¬称之为地址总线¡£

      半导体存储器的分类

        按功能能分为只读和随机存取存储器两大类¡£所谓只读£¬从字面上理解就是只能从里面读£¬不能写进去£¬它类似于我们的书本£¬发到我们?#21482;?#20043;后£¬我们只能读里面的内容£¬不能随意更改书本上的内容¡£只读存储器的英文缩写为ROM£¨READ ONLY MEMORY£©

      所谓随机存取存储器£¬?#27492;?#26102;能改写£¬也能读出里面的数据£¬它类似于我们的黑板£¬我能随时写东西?#20808;¥£?#20063;能用黑板擦擦掉重?#30784;?#38543;机存储器的英文缩写为RAM£¨Random Access Memory£©这两种存储器的英文缩写一定要记牢¡£

      注意£º所谓的只读和随机存取都是指在正常工作情况下而言£¬也就是在使用这块存储器的时候£¬而不是指制造这块芯片的时候¡£不然£¬只读存储器中的数据是怎么来的呢£¿其实这个?#35272;?#20063;很好理解£¬书本拿到我们手里是不能改了£¬能当它还是原材料——?#23383;?#30340;时候£¬当然能由印刷厂印?#20808;?#20102;¡£

      顺便解释一下其它几个常见的概念¡£

        PROM£¬称之为可编程存储器¡£这就象我们的练习本£¬买来的时候是空白的£¬能写东西?#20808;¥£?#21487;一旦写?#20808;¥£?#23601;擦不掉了£¬所以它只能用写一次£¬要是?#21019;?#20102;£¬就报销了¡££¨现在已经被淘汰£©

        EPROM£¬称之为紫外线擦除的可编程只读存储器¡£它里面的内容写?#20808;?#20043;后£¬如果觉得不满意£¬能用一种特殊的办法去掉后重写£¬这就是用紫外线照射£¬紫外线就象“消字灵”£¬能把字去掉£¬然后再重?#30784;?#24403;然消的次数多了£¬也就不灵光了£¬所以这?#20013;?#29255;能擦除的次数也是有限的——几百次吧¡££¨现在已经被淘汰£©

         EEPROM£¬?#27493;?nbsp;E2PROM称之为电可擦可编程只读存储器£¬它和EEPROM类似£¬写?#20808;?#30340;东西也能擦掉重写£¬但它要方便一些£¬不需要光照了£¬只要用电就能擦除或者重新改写数据£¬所以就方便许多£¬而且寿命也很长£¨几万到几十万次不等£©¡£

        FLASH£¬称之为?#20102;?#23384;储器£¬属于EEPROM的改进产品£¬它的最大特点是必须按块(Block)擦除(每个区块的大小不定£¬不同厂家的产品有不同的规格)£¬ 而EEPROM则可以一次只擦除一个字节(Byte)¡£FLASH现在常用于大容量存储,比如u盘

        再次强调£¬这里的所有的写都不是指在正常工作条件下¡£不管是PROM还是EPROM£¬它们的写?#23478;?#26377;特殊的条件£¬一般我们用一种称之为“编程器”的设备来做这项工作£¬一旦把它装到它的工作位置£¬就不能随便改写了¡£

      ¡¾发表评论¡¿¡¾告诉好友¡¿¡¾收藏此文¡¿¡¾关闭窗口¡¿

      文章评论

      Çຣ11Ñ¡5appÏÂÔØ

        
        
        1. <em id="3qmea"><ol id="3qmea"></ol></em>
        2. <em id="3qmea"></em>

            
            
            1. <em id="3qmea"><ol id="3qmea"></ol></em>
            2. <em id="3qmea"></em>