存储器讲座(以29C040为例)
顶风:今天我们讲存储器。
顶风:我们知道,计算机的主要功能就是处理数据,而数据最终是要放在存储器里面的。存储器的分类方法很多,从大的方面分就是2类:程序存储器和数据存储器。(有些分类方法将CPU中的寄存器和高速缓存单独分出来)。这里我们就不细分了。
顶风:数据存储器,用于存储程序运行中的中间结果、采集的数据等等。我们叫做:RAM(Radom Access Memory),随机存储器。因为它存储的数据的大小和位置通常是不可预测的。这个东西在我们微机中称作内存。可以反复改写入、读出,一旦掉电,数据将消失。
顶风:程序是指挥计算机运行的指令,这个是不能被更改的,要存储在程序存储器中(其实也是以数的方式存储的),我们叫做ROM(Read Only Memory),只读存储器。一次写入,可无数次读出,掉电后数据不消失。微机中用硬盘做为程序存储器,这和单片机系统有很大不同。
顶风:ROM的种类很多,如掩膜ROM,PROM,EPROM,EEPROM,FLASH等,其中前两种国内极少使用。下面对后三种做一下简单的介绍。
顶风:EPROM是紫外线擦除电可编程的,上面有个玻璃窗,用紫外线照射一段时间(通常15分钟)即可擦除其中的数据。编程完毕后用不干胶纸贴好,以防阳光照射损坏程序。这种ROM价格低廉,但使用不方便,特别是擦除程序很麻烦,时间长,擦不干净就没法写入,如果遇到需要改写程序的情况,就很费事。
顶风:EPROM以27做为本类芯片的题头。如果看到芯片上写着27×××,就知道是EPROM了。后面的数据是以“位(bit)”为单位来标明芯片的存储量,比如说27265,就是32K×8的芯片。与我们通常以字节为单位计算存储量不一样,需要注意。27C040的容量是512K×8的芯片,读取时间是90~150ns。
顶风:EEPROM是电擦除可编程只读存储器。看看,电擦除,方便多了。我刚刚搞单片机的时候,买不起仿真器,只好买了台很便宜的编程器,用不断重新改写ROM中程序的方法调试系统,还算方便,要是用EPROM,那可遭罪了,等着去吧。
顶风:EEPROM以28做为本类芯片的题头,如果看到芯片上写着28×××,就知道是EEPROM了。后面数字的表示方法与EPROM相同,不在赘述。这种芯片有点很多,特别是可以在线改写,能够保存那些需要掉电不消失的数据,但价格高。28C040读取时间200ns,写入周期10ms,可擦写10000次,掉电后数据可保持10年。
顶风:FLASH大家很熟悉了,我们用的U盘啊,数码相机的存储卡啊,HOLTER中的记录卡啊,都是这种东西做的。它的价格低廉,写入速度和可擦写次数不及EEPROM,其他与EEPROM基本相同,应用非常广泛。FLASH以以29做为本类芯片的题头,如果看到芯片上写着29×××,就知道是FLASH了。后面数字的表示方法与EPROM相同,不在赘述。29C040读取时间90ns,写入时间10ms,可擦写10000次。
顶风:下面我们比较一下27040、28040、29040的差别(都是4M位的芯片)看下图: 顶风:下面我们比较一下27040、28040、29040的差别(都是4M位的芯片)看下图: 我们可以看到,三种芯片大致相同,28C040和29C040管脚完全相同,27C040的地址线和前二者有细微的差别。
顶风:大致解释以下管脚吧 27C040 A0~A18:地址线;O0~O7:数据输出线;VPP:写数据时接编程电源(写入时需要接12.75V的电源);CE/PGM:片选和编程脉冲输入(写数据时使用);OE:数据输出选通。上面的横线表示:低电平有效。 28C040、29C040:A0~A18:地址线;DQ0~DQ7:数据输入输出线;WE:写数据选通。
顶风:下面是我曾经设计的一个单片机项目的程序存储器电路。用的是29C010,和今天讲的29C040大致相同,容量小,地址线少2根。51系统最大寻址能力64KB,而这个是128KB的,用在这里也是浪费,但价格相差很少,就用了这个。看图: 局部: 此芯片在这里只作程序存储器使用,不在线改写,所以将WE端时钟置于高电平,防止意外改写;OE端时钟置于低电平,使数据永远可读出,CE接于8031的PSEN脚(外部程序存储器选通线)。
顶风:电脑主板上的BIOS现在一般都用29系列。有的计算机病毒会改写BIOS里面的数据造成计算机瘫痪,CIH病毒就是一例。怎么办?可以把计算机主板上的BIOS的WE脚从集成电路座中掰出来,用个10K电阻上拉到5V电源上,BIOS中的数据绝对不会再被改写了。
顶风:只做程序存储器使用时,一般情况下,27、28、29系列只要管脚兼容,就可以直接代换,但同时还应当注意系统对读取速度的要求。检验设备属于高精度低速度的检测设备,对读取速度要求不高,通常可直接代换。
顶风:这类芯片一般厂方都提供时序图资料和专用的编程器,但现在专用编程器已经很少见了,通常使用通用编程器。现在这种编程器已经很便宜了,1000块钱左右能买很不错的了。各种编程器的用法大致相同,一般读数据时将芯片卡在编程器上,选择好相应的芯片型号,直接读出即可。保存的数据格式比较多,Intel HEX、Motorola HEX等,建议选用BIN格式,方便交流。写芯片也差不多,读出数据文件中的数据,安好芯片,选好类型,直接写就可以了,写入之后,机器一般自动完成校验工作。有的芯片带有加密功能,编程器会在写入校验完毕后封住加密位,保护加密信息。
顶风:下面讲一下数据存储器,数据存储器就是我们常说的内存,其读取和写入的速度都非常快(60~200ns),仪器中常用的是静态随机存储器61系列,和动态随机存储器21系列。掉电以后数据消失。如果我们即需要快速存取,又要掉电以后保持数据怎么办?现在有NOVRAM(NOVolatile RAM)来解决这个问题,这种RAM是将后备锂电池、RAM、电源管理芯片等集成在一个芯片上。这种芯片比较厚,大约10mm左右,就是由于里面有电池的原因。NOVRAM掉电后自动启动电池保持其中的数据,一般可保持10年以上,上电后自动对电池充电。NOVRAM一般和同样容量的RAM管脚兼容,可直接代换。我院一台程控交换机,用RAM+电池的方式保存每个用户的权限信息,总出问题。后来我拆掉了电池和RAM,用个相同容量的NOVRAM替换了原来的6264,再也不出问题了。
顶风:下面的图是我的一个设计中的一部分,包括RAM和NOVRAM,大家请看图:
RAM用的是62256,管脚不外乎数据线、地址线、片选线、写选通线、读选通线。按照手册的推荐电路接就可以了,没有太多可说的。 NOVRAM用的是DS12887,现在有的计算机主板也用这个,这个不是纯粹的RAM,还包括实时时钟等功能,使用和编程都比较繁琐,这里就不细讲了,如果设计中需要用,那么得查阅相应的资料了。
顶风:通常情况下,ROM和RAM损坏的可能性很小,ROM中程序损坏的倒是偶有发生。要是有远见的话建议将设备中的ROM里面的程序代码读出来,做个备份,以防不测。一般ROM都是装在集成电路座上的,厂家也需要不断更改程序吗,所以拆卸还是很方便的。1000块钱左右的编程器对DIP封装的ROM基本都支持,对PLCC封装的就差多了。那种编程器通常得在4000块以上,一般人是不需要买的。可以讲芯片取出,到电子市场卖编程器的地方复制,一片几块钱,很方便的。RAM一般是焊在板子上的,拆卸不便,就不要打它的主意了。
顶风:对于ROM和RAM故障的判断方法我没有什么高招,一般就是替换。用万用表基本上量不出什么,用示波器、逻辑分析仪也看不出什么,因为一旦开机,CPU会不断和ROM和RAM通信,无论是地址线、信号线、片选线、读写线等,上面的信号波形都很复杂。你的表笔往上面一接触,有个小干扰,往往会让程序跑飞,更是无从查起。我一般就不查了,其他人要是有什么高招,还请赐教。
|