控制/MCU
MCS~51单片机对数据存储器的扩展通常采用数据总线和地址总线,即P0 13和P2 13来完成,最大寻址空间可达64KB.随着单片机应用领域的推广和不断扩大,特别是在GPS数据采集和传输。电力系统故障录波。瞬态过程研究以及智能家居测控系统等应用领域,需要传输的数据和图像信息远大于51单片机的寻址空间,甚至达到几MB.传统的单片机扩展板一般采用小容量的数据存储器,如32KB的62256芯片来完成数据存储空间的扩展。以51单片机为应用平台,扩展了3片62256,达到了96KB的存储空间,属于经典的扩展方案,但即使3-8译码器全译码,其存储空间也只能达到256KB,不能满足大型应用系统的指标要求。Flash存储器是20世纪80年代末逐渐发展起来的一种新型的半导体不挥发存储器,它兼有RAM和ROM的特点,既可在线擦除。改写,又能在掉电后保持数据不丢失。
F29C51004是5V CMOS Flash存储器,由SyncMOS公司生产,与其他种类的Flash存储器相比具有随机读取速度快。可单字编程。可靠性高等特点,在嵌入式开发系统中举足轻重。以往的数据存储器扩展板常借助单片机的P1做片选,使得I/O El被大量占用,不利于系统的升级和可持续利用。文献[2J提出了一种新颖的的大容量数据存储器的扩展方法,拿出地址为OFFFFH的存储单元作为片选地址寄存器,然后通过该寄存器的数据来译码,对Flash芯片进行片选。本文的基础之上做出了改进,既保留了其不占用任何I/O的优点,又达到了扩展更大容量数据存储空间的目的。以MCS-51单片机和大容量Flash芯片F29C51004为例,设计了8MB的数据存储器扩展板。
硬件电路设计的难点是如何进行存储芯片的片选,而又不占用;/O以及F29C51004与单片机地址线连接的问题。单片机的地址总线总共有16根,而F29C51004的存储容量已经超出了单片机的寻址范围,其19根地址线无法全部连接至单片机的地址总线上。数据存储器的扩展常利用单片机闲置的P1日I/0线来作为页面地址输出引脚,但在实际的应用中,P1 El常被大量占用。为了解决这个问题,可将页面地址提前从数据总线中输出并存放在锁存器中备用。将锁存器直接挂在数据总线上,并为其安排一个I/O地址,构成页面寄存器。在访问储器时,提前将页面地址作为数据写入页面寄存器中。
F29C51004的储存容量A4为512KB,其外部引脚分布图=如图1所示。其中A0-A18为19根地址线,I/00一I/07为数据线,CE为读信号,WE为写信号。
设计8MB的数据存储器扩展板需要16片F29C51004.为了方便单片机寻址,可将512KB的存储空间分为16页,每页大小为32KB.由16=24,32KB=215B可知,页面地址需要4位,页内偏移量需要15位。通过软件编程将页面地址提前输出到锁存器74LS373-3中,由锁存器将页面地址保持在F29C51004的地址引脚A15~A18上。页内偏移量可由存储器芯片的读写命令给出。P0输出的低八位地址在锁存器74LS373-2中保持,P2的引脚P2.0~P2.6输出地址A8一A14,P2.7和单片机的写信号WR作锁存器74LS373-3的片选信号,剩余的地址线A15显然无法对16片F29c51004进行片选。参照文献[2]提出的方法,即用0FFFFH对应的存储单元来存放片选地址,再用2片8输入与非门74LS30和1片2输入或非f1 74LS02来产生地址为0FFFFH时对锁存器74LS373-1的片选信号,如图2(a)所示。对图2a做出了改进。考虑到对锁存器74LS373-1的片选还要来自单片机引脚WR或ALE的控制,在两片74LS30和一片74LS02之间添加了一片2输人或f1 74F32,组成新的片选电路,如图2(b)所示:
图2(b)中,两片74LS30的输入端接51单片机的16根地址线A0~A15,锁存器74LS373-1的数据输入端D0-D7接单片机的P0.当单片机输出的地址为0FFFFH时,74F32输出低电平0,单片机写信号四耳在低电平时有效,74LS02输出高电平1,使能锁存器74LS373-1,然后将P0 El输出的片选地址锁存到74LS373-1中。
图2b中的锁存器74LS373-1的输出端连接着4-16译码器74LSl54的输入端,组成了扩展板内的译码电路,如图3所示。
4-16译码器74LSl54的工作原理与3-8译码器类似,有4个输入端和16个输出端。锁存器74LS373-1输出端QO~Q3的值决定着74LSl54对存储器芯片的选择。图3中,74LS373-1的Q0-Q3依次与74LSl54的输人端ABCD相连接,74LSl54的输出端YO~丫15则依次与16片F29C51004的片选端eE相连。
通过对地址为0FFFFH的存储单元写人数据(0-15)来选择16片F29C51004中其中的某一片,然后进行数据的读写及存储。
8MB数据存储器扩展板的整体电路图如图4所示。
软件编程中,对RAM的读写指令比较简单,通过MOV指令对RAM读取或送入数据即可。软件设计的任务主要包括单片机对存储器芯片的选择。访问锁存器74LS373-1.访问存储器F29C51004的存储单元和分页存储空间的程序设计。以上的程序设计测试代码分别如下:
本文设计的单片机数据存储器扩展板主要使用的扩展方法是向锁存器里存放数据存储器片选地址和存储单元块选地址。
为了扩展数据容量达8MB的数据存储器,采用了16片容量为512KB的Flash芯片F29C51004.锁存器的片选地址范围是00H-FFH,在图4所示的扩展板整体电路里锁存器74LS373-1和74LS373-3均只使用了四个输出端Q0~Q3.只要选取了适当的译码器和Flash芯片,本文设计的扩展系统最大可达到256x8MB,即2GB的存储容量,能够满足大多数嵌入式。数据采集等应用系统的性能要求。
本文的大容量数据存储器扩展板,其存储容量达到了8MB,而且未占用任何一个I/O.在扩展了大容量存储空间的同时节省了单片机的资源,使得该扩展系统易于升级和再研发。该扩展板不仅适用于小型公司的门禁系统,如指纹考勤系统等,还适用于卫星远程图像采集等信息量需求较大的场合。
全部0条评论
快来发表一下你的评论吧 !