29C系列存储器串行扩展接口的设计

更新时间:2024-03-01 10:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

内蒙古科技大学

本 科 毕 业 论 文

论文题目:29C系列存储器串行扩展接口的设计 院 系: 物理科学技术学院 专 业: 应用物理学 姓 名: 学 号: 0809810046 指导教师:

二 〇 一 二 年 五月

摘要

本文以三个CD4094的级联与29C系列芯片的软硬件接口设计作为例子,介绍了29C系列大容量快闪存储器串行扩展接口的硬件电路设计及其程序编写。此设计克服了传统存储器并行接口占用单片机I/O口过多的缺点,在实际系统中取得良好的效果。

关键字:29C040 CD4094 串行扩展接口 存储器与单片机接口

1

Abstract

This paper by three of the CD4094 cascade and 29 C series of software and hardware interface chip design as an example. Introduced the 29 C series large capacity flash memory expansion of the serial interface hardware circuit design and programming. This design overcome traditional memory parallel interface take microcontroller I/O mouth too many shortcomings, In the actual system has achieved good effect.

Key words:29C040; CD4094; Serial expand interface; Memory and single-chip

microcomputer interface

2

目 录

引言 .................................................... 4 1 芯片特性简介 ........................................... 5 1.1 29C系列存储器芯片简介及读写操作 ................... 5 1.2 CD4094芯片简介 .................................... 6 2 系统总体方案设计 ....................................... 7 3 硬件电路设计 ........................................... 8 4 软件程序设计 .......................................... 10 4.1 读操作 ........................................... 10 4.2写操作 ........................................... 11 5 结束语 ................................................ 11 参考文献 ................................................ 12 致 谢 .................................................. 13

3

引言

29C系列大容量快闪存储器只需要+5V电源并支持分页编程,此外,还具有硬件数据保护、软件数据保护、数据查询和自举模块和其他功能,在单片机系统中广泛应用。AT29系列的编程是一个简单的可重复的过程。将每种芯片的总存储量划分成为数个存储阵列(扇区),每次编程一个扇区,不同型号存储器的扇区容量和扇区数不相同,其标识也就不同。AT29C系列在单电源5V或3V时的编程时间分别为10ms或20ms。其中AT29C系列中的AT29C256共含有512个扇区,每个扇区为64字节;AT29C040含有1024个扇区,每个扇区各为512字节。如果在准备好数据和扇区号的情况下,所有AT29系列的编程可使用同一个算法,而仅需三条LOAD命令,称为“写保护数据”(SDP)。在三条命令之后是编程写入等待时间(Twc)。写数据保护手段可用于访问厂家标识、芯片标识、写数据和擦除数据等操作,而只有读数据操作不必事先进行“写数据保护”。三条LOAD命令按操作不同而略有区别。如访问芯片标识装入‘90H’和‘F0H’,写数据到指定扇区则为‘A0H’,而擦除操作则为‘80H’和‘10H’。三条LOAD命令的流程如图1所示。图中括号内为DATA总线上的数据,箭头右边是AT29的芯片地址。

三条LOAD命令系统

但是,29C系列快闪存储器采用并行接口。以29C040为例,除了电源与底线外,还有8条数据线(D0—D7)、19条地址线(A0—A18)、3条控制线(OE、

CE、WE),按常规与51单片机的连接需要占用单片机资源P0口用于数据传输,

占用P0、P2、P1等用于地址线及控制线。也就是说,单片机与29C040的接口被用了22个I/O口,大量占用单片机I/O口资源,限制了29C系列存储器在单片机中的应用。因此,有必要设计一种方案,是29C系列存储器与单片机连接时占用尽量少的I/O口资源。

4

1 芯片特性简介

1.1 29C系列存储器芯片简介及读写操作

29C系列存储器芯片存储容量分别为1M/2M/3M,内部128K/256K/521K 8

位的快速闪存。

29C系列存储器是一种采用CMOS工艺制成的快闪存储器。其读访问时间为9ns,可与一般高速微处理器匹配而不需等待;为了避免总线冲突,设有两个选通端:芯片允许CE和输出允许OE;采用页编程;单一+5V电源;三态输出,输入/输出与TTL电平兼容;可循环擦写一万次。

芯片的读操作SRAM一样,当CE和OE是低电平,WE是高电平时,读写指定地址单元的数据。它有8条数据线(D0~D7)、19条地址线(A0~A18)、3条控制线(/OE、/CE、/WE)以及电源、地线共32个引脚,具体引脚分布如图所示。

AT29C040引脚图

AT29C040闪速存储器有如下几个特点:

(1)用5V单一电源供电,读、写操作使用同一电源,省去了一个12V的编程电源VPP ;

(2)编程前不需要附加的擦除操作,在编程期间,擦除操作会在芯片内部自动进行;

(3)在单个编程周期内,每次写一个扇区的数据,大大缩短了编程时间。AT29C040的扇区编程时间为10ms,而其他扇区的编程时间为数百 ms; (4)扇区容量小,减少了写数据时对系统内存资源的要求;

(5)软件数据保护SDP(Software Data Protect)功能。为了避免人为疏忽

5

或者系统上电、掉电等因素引起对闪速存储器的误写操作, AT29C040设置了软件数据保护功能。其原理是对闪速存储器写操作前,必须按一定顺序送入三个字节的命令码,然后才能写入数据,否则数据不能被写入。 对AT29C040的读操作非常简单,类似于SRAM,不再赘述。这里主要讨论一下对它进行写操作的方法。首先在系统RAM区为AT29C040产生一个扇区的数据映像,即先将待写入的数据放入RAM中,接着送三字节的命令码到AT29C040中;然后将事先放在ram中的数据传送到AT29C040指定的扇区中;最后还要等待闪速存储器的写周期时间(10ms),以便将数据写入存储器中。其“写” 操作时序如图所示。

29C040写操作时序

1.2 CD4094芯片简介

CD4094 位移位存储总线寄存器: CD4094是带输出锁存和三态控制的串入/并出高速转换器,具有使用简单、功耗低、驱动能力强和控制灵活等优点。

CD4094的引脚定义如图1。其中(1)脚为锁存端,(2)脚为串行数据输入端,(3)脚为串行时钟端。(1)脚为高电平时,8位并行输出口Q1~Q8在时钟的上升沿随串行输入而变化;(1)脚为低电平时,输出锁定。利用锁存端可方便地进行片选和级联输出控制。(15)脚为并行输出状态控制端,(15)脚为低电平时,并行输出端处在高阻状态,在用CD4094作显示输出时,可使显示数码闪烁。(9)脚QS、(10)脚Q′S是串行数据输出端,用于级联。QS端在第9个串行时钟的上升沿开始输出,Q′S端在第9个串行时钟的下降沿开始输出。当CD4094电源为5V时,输出电流大于3.2MA,灌电流为1 MA。串行时钟频率可达2.5MHZ。

6

图一:

表1

注:↑表示上升沿;↓表示下降沿,L表示低电平,H表示高电平。

2 系统总体方案设计

通常29C040需要单片机19个I/O口来对应控制地址线A0-A18,本文设计方案利用三片CD4094来实现串行转并行控制,则只需要3个I/O口即可实现对19个地址线的控制。方案如图2所示。

7

图2 系统总体方案

3 硬件电路设计

硬件电路连接如图3所示。图中CD4094引脚OE是片选,接高电平,即CD4094的功能表的后四种状态。CD4094的特性是带锁存器(STR)的串行移位寄存器。特在移位时钟的作用下移位的时候不影响并行输出。

29C040的数据I/O的D0-D7与51单片机P0口相接,OE、CE、WE、STR、DATA、口相接即可。串行扩展后具有电路简单,占用单片机I/O口较少等优点。

8

图3 29C系列存储器串行扩展接口电路图 各引脚功能为: STR: 芯片锁存; DATA: 数据输入; CLK: 时钟信号输入.

单片机通过对这三个信号线的时序控制,当STR为高电平的时候,数据DATA在时钟CLK的上升沿串行移入移位寄存器,在时钟CLK的下降沿最后一个状态值移入QS,此时数据传输到下一片CD4094,即可指定三片CD4094并行输出端口的任意高低电平,也即可以随意指定29C040的读写地址线,从而实现对29C040的读取数据操作。

D0-D7: 数据输入/输出线,在写入周期时,片内数据锁存器锁存数据;在读周期时数据输出。

CE:芯片允许输入线(即片选),低电平有效;当为高电平时,芯片处于低功耗备用状态。

OE:输出允许输入线,低电平有效;在读周期时,控制芯片将数据缓冲器中的数据输出。

WE:写允许输入线,低电平有效;在写入周期,控制指令寄存器和存储单元陈列的写入。在下降沿锁存目标地址,在上升沿锁存数据。

9

4 软件程序设计

4.1 读操作

在29C040的读操作类似于SRAM。当CE和OE均为低电平,且WE为高电平时,由地址线指定的数据就输出到输入/输出端口(D0-D7)上,此时单片机读取D0-D7即可获取数据。在此过程中,关键问题在于如何通过三片CD4094指定地址。下面给出CD4094的C语言程序。

#include Sbit data_4094=P1^1; Sbit data_4094=P1^2; Sbit data_4094=P1^0;

void write_byte_4094(unsigned char byte) {

unsigned char i; For(i=0;i﹤8;i++) {

clk_4094=0;

data_4094=byte&0x08; Byte=byte﹤﹤1; clk_4094=1; } }

void out_4094(void) {

stb_4094=0; Delayus(5);

10

stb_4094=1; }

void main() {

Write_byte_4094(0xF4); Write_byte_4094(0xFF); Write_byte_4094(0x55); Out_4094(); }

4.2写操作

写入过程是按扇区重新写入的,即每次必须写入真个扇区的数据,如果一个

扇区内的一个字节数据改变,则整个扇区的数据都将被重新写入的。因此必须采用数据缓冲区来存放要写入的数据。

每个字节的写入时当OE为高电平,WE或CE为低电平在CE或WE的下降沿写入的,其中写入的地址由三片CD4094指定,CD4094的操作同读数据时的操作。

5 结束语

本文主要通过三个CD4094的级联,提出实现串行数据转换成并行数据,控制29C系

列存储器地址线的接口设计方法及应用,充分地发挥29C系列存储器的性能,同时又最大限度地节约占用单片机的I/O口(只占用14个I/O口,其中8个数据线还可以复用),灵活地拓展了29C系列存储器的应用范围。

11

参考文献

[1] 肖毅,朱绍文,张大斌.新一代大容量闪存AT29C040在单片机系统中的应用[J].微计算机信息,2001,17(11):32-33.

[2] 伍小芹,康耀红.利用CD4094芯片驱动点矩阵LED[J].现代计算机,2002,6:99-100 [3] 张晶,曾宪云.闪速存储器AT29C040与单片机的接口设计[J].工业控制计算机,2003,16

(1):58-60.

[4]阎石.数字电子电路.中央广播电视大学出版社.1993年

[5] 李士雄、丁康源.数字集成电子技术教程.高等教育出版社.2002年 [6] 唐志强.用4094实现LCD数码的交流驱动[J].电测与仪表,1999,2:53-54.

12

致 谢

我要感谢,非常感谢我的指导老师郭景老师。他为人随和热情,治学严谨细心。从选题、定题开始,一直到最后论文的反复修改、润色,郭老师始终认真负责地给予我深刻而细致地指导,帮助我开拓研究思路,精心点拨、热忱鼓励。正是郭老师的无私帮助与热忱鼓励,我的毕业论文才能够得以顺利完成,感谢郭景老师的关心、指导和教诲。

我在长达三个多月的毕业设计期间自始自终都是在郭景老师全面、具体的指导下进行的。郭景老师渊博的知识、敏锐的思维、民主而严谨的作风,使我受益匪浅,终生难忘。

同时也非常感谢我的同学和朋友们对我的关心和帮助。

13

本文来源:https://www.bwwdw.com/article/aaia.html

Top