《存储技术基础》课件第2章_第1页
《存储技术基础》课件第2章_第2页
《存储技术基础》课件第2章_第3页
《存储技术基础》课件第2章_第4页
《存储技术基础》课件第2章_第5页
已阅读5页,还剩238页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章半导体存储器2.1半导体存储技术基本原理

2.2静态随机读/写存储器

2.3动态随机读/写存储器

2.4只读存储器

2.5其他类型的半导体存储器

小结

2.1半导体存储技术基本原理

2.1.1半导体存储器概述

半导体存储器具有十分丰富的形式和特点。针对特定应用而言,存储器呈现出的特征主要包括存储器的容量、读/写速度以及相应的读/写模式。对于容量指标,电路设计者关注存储器总容量,即存储器提供的位数或者触发器(寄存器)的个数;芯片设计者则使用字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)等单位描述存储容量;系统设计者则关心存储器提供的可处理单元数目(字),如32位处理器中每个字可以认为是32位宽。图2.1描述了存储器读/写的基本时序。读时间定义为读请求与有效数据稳定读出之间的延迟时间,而写时间则是写请求与输入数据最终写入到存储的时间间隔。存储器的读/写周期则是连续两次进行读或写操作的最短时间间隔,通常读/写周期要大于读时间或写时间。一般的存储器读/写时间可以相同也可以不同,简单起见,我们认为读/写时间一致。

从存储器的基本功能、读/写模式以及存储机制角度看,存储器可以分为不同的类型。其中最典型的分类是:读/写存储器(Read-WriteMemory,RWM)和只读存储器(Read-OnlyMemory,ROM)。图2.1存储器读/写的基本时序

RWM能够提供不同的操作类型,数据以触发器形式存储或者以电容上的电荷形式存储,而触发器形式的单元称做静态存储,只要有相应电源供电就能保存内部的数据信息。与之对应的电荷形式存储单元则称做动态存储,为了防止漏电流导致的电荷损失,动态存储必须定期进行刷新操作以维持数据信息。由于RWM必须维持供电保持存储信息,故这类存储可以归为易失型半导体存储器。

ROM利用半导体电路拓扑结构进行信息编码存储,比如通过添加或删除二极管(晶体管)进行信息的存储。由于拓扑结构是由内部硬连线确定的,存储数据只能读出不能修改,因此ROM属于非易失型半导体存储器,即外部电压的去除不会引起数据丢失。另外还有一类重要的非易失型半导体存储器可以提供读功能和写功能,如可擦除的可编程只读存储器(EPROM)、电可擦除的可编程只读存储器(E2PROM)以及闪速存储器(FLASH),可以称为非易失型读/写存储器(NonvolatileRead-WriteMemory,NVRWM),其主要特点就是掉电信息不丢失以及写操作时间比读操作时间长。存储器按数据获取方式不同可以分为随机获取存储器(RandomAccessMemory,RAM)和顺序获取存储器(SequenceAccessMemory,SAM)。目前大多数存储器均属于随机获取存储器,即数据存储的位置与相应的读/写方式无关。这里需要说明的是,大多数ROM和NVRWM同样可以进行数据的随机存取操作,而一般采用RAM表示RWM型存储器。相应的顺序获取存储器则对数据的读/写方式与存取位置进行约束,用以获得速度、面积或者特殊功能方面的性能。这类存储器主要有:先入先出存储器(First-InFirst-Out,FIFO)、后入先出存储器(Last-InFirst-Out,LIFO)、移位寄存器(ShiftRegister)和内容寻址存储器(Contents-AddressableMemory,CAM)。表2.1给出了半导体存储器的分类。在接下来的部分,我们将选择典型的存储器说明其内部基本单元和相应外部电路的构造。

最后一种对半导体存储器分类的方式是根据数据输入和输出端口的数目进行的,如将常用的存储器输入和输出共享单一的端口称做单端口存储器。而为了提高存储器读/写的吞吐率,有时会使用具有多个端口的存储器,如FIFO存储器内部就是双端口存储器,而精简指令集计算机(ReducedInstructionSetComputer,RISC)处理器中的寄存器文件则提供了更多的端口进行读/写操作。表2.1半导体存储器的分类2.1.2半导体存储器基本结构

对于一个N字、每字长为M位的存储器,一种简单直观的组织方式如图2.2(a)所示。图2.2具有N个字且每个字长为M位的存储结构这种组织情况下,每个存储字以顺序的方式线性排列,对存储字的读/写则通过N个选择信号S0~SN-1进行,这样同一时刻只能有一个选择信号有效以确保读/写正确。那么这种方式可以等效为每一个存储字由M个D触发器组成,而选择信号S0~SN-1为对应D触发器的时钟端。随着存储容量的不断增长,这种方式会造成选择信号急剧增长而无法适应读/写要求。通过译码器方式可以有效地解决输入引脚的问题,但是如果仅采用一维方式组织存储器,则会引入存储形状和读/写速度问题。在一维方式情况下,存储器组织为狭长线性形状将不利于在晶圆上进行布局安排,如果在存储容量较大情况下,甚至无法生产具体的芯片。另外一个重要问题就是读/写速度无法得到提高,造成与输入/输出端口处距离较远的存储单元存取连线变长而增加了延迟,降低了读/写速度。为了解决上述问题,存储单元阵列通常以二维形式出现,使得长宽比接近1∶1。这种情况下,存储阵列具有行列结构,由行地址译码器选择阵列中的某一行进行读/写操作(激活该行),该行中按列形式存放了多个数据字单元,因此还需要列地址译码器以决定具体进行读写的存储字单元。如图2.3所示,相应的行译码器输入构成行地址(Ak~AL-1),列译码器的输入构成列地址(A0~Ak-1),存储器容量为2L×M位。通常称行译码的输出为字选择线,而列译码的输出为位选择线。为了节省存储器的面积(这一点对存储芯片设计非常关键),在构成存储单元时一般不会选择采用寄存器方式实现(寄存器单元通常需要10个以上的晶体管),而会采用特定的存储单元方式实现基本存储位。这种特定的存储单元必然在其他性能方面进行折中,如噪声容限(NoiseMargin)、逻辑摆率(LogicSwing)、输入/输出隔离(Input/OutputIsolation)、扇出(Fan-Out)及速度。对性能上的折中,虽然存储单元核可以承受,但是对外部电路接口则无法辨识。图2.3给出的存储规模一般不超过256KB,对于更大容量的存储器,则因为线长、电容、电阻等的增大使得读/写速度急剧下降。由此必须采用更新的组织方式构建大容量的存储器,即分层结构存储组织,如图2.4所示。从图中可见,相应的存储由P个较小的块构成。其中每一个单独的存储块结构与图2.3相同。在这种情况下,行列地址分别连接到每一个单独的存储块上,然后通过新增的块地址选择要访问的存储块,对需要的存储字进行读/写操作。图2.4分层结构存储组织2.1.3静态随机读/写存储

通用的静态随机读/写存储器(SRAM)内部结构如图2.5所示,每一位存储需要6个晶体管构成。对存储单元的操作通过字线控制称为导通管的M5和M6进行选择。两个位线用于传输存储的位信息,且互相极性相反。

由图2.5可见,SRAM单元读操作性能取决于对位线负载电容的充(放)电过程,而写操作性能则取决于内部交叉耦合反相器的传播延迟。图2.5六管SRAM存储单元[7]

SRAM的写操作过程如下:

为了确保正确进行写操作,假设存储单元保存位信息为1,然后通过设置BL = 0及=1产生类似于D触发器的复位信号对存储单元写入0信息。在写操作的开始阶段,SRAM存储单元可简化为图2.6。图2.6SRAM写模型[7]对于大容量存储阵列,则从不同方面提出了对SRAM单元结构的改进,如晶体管的拓扑结构、特殊器件和更复杂的工艺等。例如,图2.7给出了一种四管结构的SRAM单元,该结构采用一对阻型负载的NMOS反相器替代原有交叉耦合的CMOS反相器,同时用电阻替代PMOS构成的负载管M2和M4。这种结构不仅简化了内部连线,还有效缩小了存储单元的面积,据估算,面积下降约1/3。但是具体电阻值的选择方法将直接影响存储单元的功耗和存取速度。另外,采用薄膜工艺的晶体管存储单元(Thin-FilmTransistors,TFTs)也具有面积小等特点,成为SRAM存储单元的主要实现方式。图2.7四管SRAM存储单元[7]对于高速应用,如Cache或控制存储,其读/写速度在5ns以内,相应的存储单元则通常采用双极性SRAM单元。这种类型的存储结构采用正反馈方式进行数据信息的存取操作。图2.8(a)说明了广泛采用的一种双极性SRAM单元结构,即SBD(Schottky-BarrierDiode)负载单元。SBD存储单元内含一对交叉耦合的双极性反相器,位线则通过电阻与供电电源

1.5V连接。SBD存储单元的工作原理可以简单描述如下:当存储单元没有被选中时工作在等待模式(见图2.8(b)),通过WL1和WL2分别连接到1.3V和0.3V使该存储单元操作于1V左右的低电压环境中。图2.8SBD型SRAM结构及工作模式2.1.4动态随机读/写存储

从上述对静态SRAM结构的描述可见,负载管的作用仅仅是补充漏电流损失的电荷。为了减少面积降低成本,我们可以将SRAM中的负载管去掉,而定期地对存储单元内容进行重写,以保持相应的信息。这种重写操作通常称为刷新,每次刷新实际上包括对存储单元的读操作并紧接着进行写操作。具有刷新功能的随机读/写存储器信息保存在存储单元分布电容上,并且其内容将会以动态形式维持,这一类半导体存储器则称为动态随机读/写存储器(DRAM)。需要说明的是,刷新操作既不能过于频繁,也不能过于缓慢。如果频繁进行刷新操作,虽然能够较好地保存信息,但是将减少可以正常读/写的工作时间,且降低了读/写速率。如果长时间不能刷新,存储的信息就有可能丢失。为此,刷新的频率必须适当选择,确保在存储单元分布电容上的电荷没有丧失分辨率的临界时间以便及时刷新。对于一般的动态随机读/写存储器,存储单元的刷新间隔时间在1~4ms以内。具体型号的DRAM将会在数据手册中明确刷新间隔时间。下面从两种不同类型的DRAM结构出发,对DRAM存储单元进行详细说明。

1.三管动态存储单元

最早的动态存储单元由三个晶体管构成,其结构见图2.9。这种类型的存储单元在四管静态存储单元的基础上去掉了用于负载的电阻,并且将用于表示信息的互补的两个晶体管减少到了一个,因此仅需三个晶体管即可实现对信息的存储。这种类型的存储单元由于具有相对简单的结构,在当前某些专用集成电路场合仍在使用。图2.9三管动态存储单元三管动态存储器的主要特点如下:

(1)与SRAM存储单元相比而言,三管动态存储单元器件没有方向比方面的约束。也就是说,器件尺寸仅考虑性能和可靠性方面的因素。而这一点通常在SRAM存储单元是较难做到的。

(2)与其他DRAM存储单元相比而言,读三管动态存储单元对存储信息没有破坏,即存储的数据信息不受读操作的影响。

2.单管动态存储单元

我们可以通过牺牲某些特性而进一步减少动态存储单元的面积及操作复杂度。其中,在商业存储领域应用最成功的当属单管动态存储单元。图2.10是对应单管动态存储单元的电路。单管动态存储单元原理非常简单,在写操作过程中,位线BL放置具体的数据,而字线WL被升高。图2.10单管动态存储单元2.1.5只读存储器

对于只读类型存储器,我们将分为不可修改ROM和可修改ROM分别进行介绍。

1.不可修改ROM

不可修改ROM通常在生产过程中就确定其内部的信息,而使用过程中则不允许进行修改。在诸如家电控制、计算器和游戏机等信息固定的应用场合经常会使用这种类型的存储器。由于单一的读出功能,因此设计具体存储单元的时候将相对简单,只要确保当存储器的字线选通后在位线上给出固定的信息位即可。图2.11给出了三种常用的实现0、1信息存储的方法。图2.11不同工艺下的ROM存储单元[7]图2.11(b)所示的双极性ROM单元则通过双极性器件替代二极管实现减少WL驱动能力的目的。与二极管方式的区别就在于存储单元是通过双极性晶体管的集电极向BL上的分布电容充电。这种独立供电的方式虽然减少了WL的压力,但是会带来复杂度和面积的问题。图2.12给出了4 × 4双极性ROM阵列的实例,由图可见,为了给每一个存储1数据的单元供电,需要增加额外的供电线路使得存储单元面积有所增加。图2.12双极性ROM阵列[7]图2.11(c)所示的ROM存储单元方式为MOS管方式,这种方式能够提供相对更低的功耗以及更高的集成度。在MOS管型ROM中,BL则通过电阻性器件上拉到供电电压VDD,因此默认输出为高电平,即在WL与BL间没有MOS管的情况下存储数据1。当WL与BL间通过MOS管连接后,则一旦WL打开,MOS管BL将和地连通,因此表示0数据。图2.13给出了具体MOS型ROM的实例,其中存储阵列为4×4。图2.13MOS型ROM阵列[7]

2.可修改ROM

对于可修改ROM结构,同样可以看做由放置在字线和位线上的晶体管组成的阵列构成。通常编程修改ROM的内容采用外加电压的方式改变内部晶体管的阈值而实现。在进行新的编程之前,需要对ROM内容进行擦除,擦除方式的不同则是不同种类可编程非易失存储器的主要区别所在。一般情况下,ROM的编程速度比正常的读操作慢一个数量级。下面我们首先给出可编程存储器核心部件浮栅晶体管的基本情况,然后具体介绍三种常见类型的可编程存储器。多年来,采用电可修改并且能够可靠读/写的非易失型存储器件一直是研究的重点。在这一过程中,有些器件没有获得成功,如MNOS型晶体管。但是浮栅晶体管的出现则成为解决非易失性半导体存储技术的关键器件,成为目前可编程ROM器件的核心,其结构和逻辑符号见图2.14。浮栅晶体管结构与MOS器件相似,但是在栅极和沟道之间增加了额外的多晶硅带。由于该多晶硅带没有与任何部分相连,通常称为浮栅。增加浮栅的作用在于使得栅氧化层厚度加倍以减少器件跨导,从而增加阈值电压。通常情况下,浮栅晶体管可以与普通晶体管一样工作。图2.14浮栅晶体管[7]浮栅晶体管因为具有可调阈值电压的特点,所以在可编程ROM存储器中得到了广泛使用。对阈值电压的编程通过在源极与栅漏间加15~20V电压实现。该高电压将产生强电场从而引起雪崩注入使得电子获得能量从而穿过第一层氧化绝缘隔离后被浮栅捕获。浮栅捕获的电子将使得浮栅电压下降,如图2.15(a)所示。随着浮栅电压的下降,相应电子的能量也将减弱而不能穿越氧化绝缘隔离,因此使得浮栅减少对应捕获的电子数。当去除外加电压,浮栅电子将留在其内使栅极中间形成负电压(见图2.15(b)),这样相当于增加了阈值电压,即当外加电压为5V时已经无法打开相应的浮栅晶体管,为了克服中间的负电压,必须在栅极加7V左右的电压才可以打开该晶体管(见图2.15(c))。由于采用二氧化硅作为绝缘隔离,当编程高电压去除后,浮栅上的电子很难泄漏(一般可保存数十年)。因此可以用浮栅晶体管实现非易失型半导体存储器。图2.15对浮栅晶体管的编程过程[7]根据擦除方式的不同,将可编程ROM分为以下三种类型:可擦除编程只读存储器(EPROM)、电可擦除可编程只读存储器(E2PROM)以及闪速电可擦除编程只读存储器(FLASH)。

1)可擦除编程只读存储器(EPROM)

EPROM的擦除功能是通过芯片封装透明窗口照射强紫外线实现的。紫外线放射源将在半导体材料上直接产生电子空穴而使得浮栅之间的氧化物层逐渐具有可导性,以使浮栅的电子能够去除以达到擦除的目的。根据紫外线的强度,擦除的时间从数秒到数分钟不等。而对于编程过程,平均而言能够实现每单位字需要5~10μs。对于EPROM而言,由于紫外线原因,编程和擦除次数是有限的,一般最多可达一千次。重复编程还会使得器件的阈值电压发生变化以至于影响EPROM的可靠性。为此,大多数EPROM均会在芯片内部设计电路以控制阈值电压在特定范围之内。EPROM的存储单元构造简单,而且整体集成度高,因此适合进行大批量的低成本生产以应用于不需要过多进行编程操作的场合。

2)电可擦除可编程只读存储器(E2PROM)

EPROM器件需要进行离线的擦除操作,使得应用受到了限制。而E2PROM则可以在线方式进行编程及擦除时避免繁杂的工作。E2PROM采用了改进的浮栅晶体管器件实现上述功能。这种器件称为浮栅隧道氧化物晶体管(FLOTOX)。FLOTOX晶体管结构如图2.16所示,用于将浮栅的通道与漏极分割的绝缘体的厚度减少到10nm甚至更小。当外加10V左右的电压于薄绝缘体后,浮栅上电子将通过Fowler-Nordheimtunneling机制进行流动实现对该单元的编程操作。图2.16FLOTOX晶体管[7]这种E2PROM编程方式的主要优点在于可逆性,即擦除操作只需在写过程中将外加电压反向即可完成。向浮栅注入电子将升高阈值电压,而反向操作会降低阈值电压,这样必然使得阈值电压的控制复杂。如果浮栅上泄漏过多的电子,那么将导致存储单元无法被字线选中而截至,使得器件损伤。为了解决这个问题,通常在浮栅晶体管上串联一个附加晶体管构成E2PROM的基本存储单元。图2.17为具体的逻辑结构。双晶体管的E2PROM结构造成了其存储单元面积比EPROM的大。在生产过程中,薄绝缘氧化物制造非常困难,因此E2PROM的单存储位成本远比EPROM高。但是另一方面,E2PROM却非常灵活。E2PROM具有较强的抗损耗特点,能够支持105次的擦除或编程操作。图2.17由FLOTOX构成的E2PROM存储单元

3)闪速电可擦除编程只读存储器(FLASH)

闪速E2PROM的概念早在1984年就已经提出,并且迅速得到发展,已经成为目前较为流行的半导体存储结构。FLASH结合了EPROM的集成度和E2PROM的灵活性特点,达到了成本和功能的折中。从结构上看,FLASH是EPROM和E2PROM的组合形式。大多数FLASH器件采用雪崩热电子注入方式进行编程,而采用类似E2PROM中Fowler-Nordheimtunneling机制进行擦除操作。在FLASH的擦除过程中,通常对整个芯片的大部分或者存储的子部分同时进行。这种擦除虽然显得不够灵活,但是却能够将E2PROM中额外添加的晶体管去除而且成批的擦除也能使得速度提高。以上对主要的非易失型读/写存储器进行了简单介绍。为了更全面地了解只读存储器,表2.2给出了三种类型ROM的主要技术指标。这些指标再次印证了由于E2PROM的灵活性造成了性能和集成度的损失,EPROM和FLASH在集成度和速度方面基本相当,而FLASH的灵活性却使得其应用更为广泛。另外需要注意的是,在对所给出的各种结构编程时要在字线和位线上加12~20V的电压,而进行读操作时仅需3~5V的标准电压即可。表2.2不同类型ROM特征[7]

2.2静态随机读/写存储器

2.2.1典型芯片

SRAM由于具有操作简单、可靠性高的特点,在实际应用系统中仍然得到广泛使用。目前,知名的存储器件生产厂商均有各自的SRAM产品系列,如Cypress、Infienon、IDT、White等.下面就以Cypress公司的SRAM芯片CY7C1061AV33为例来说明静态随机读/写存储器在应用系统中的使用方法。

CY7C1061AV33是一款高密度的CMOS静态随机读/写存储器,图2.18和图2.19给出了具体的逻辑结构和封装引脚(CY7C1061AV33的封装和逻辑见数据手册)。表2.3则给出了芯片管脚定义。图2.18CY7C1061AV33逻辑结构图2.19CY7C1061AV33管脚表2.3CY7C1061AV33的管脚定义

CY7C1061AV33的特点如下:

(1)高速读/写,其存储获取时间可为8ns、10ns或12ns,对应系统最高频率可达125MHz;

(2)动态功耗低,最大为1080mW;

(3)供电电压为(3.3 ± 0.3)V;

(4)管脚信号电平兼容TTL规范;

(5)单片容量1M × 16b;

(6)提供两种封装形式,54针TSOPⅡ和48球的微型BGA(MiniBGA);

(7)提供商业级和工业级芯片。下面具体说明CY7C1061AV33存储芯片的工作模式及时序特征。

1.写功能实现

当进行写操作时,芯片的两个片选使能和CE2分别接低电平和高电平,并且置写使能信号为低电平,则将数据写入对应地址位置。如果高字节有效信号为低电平,那么16位数据中高8位写入相应位置。对应地,如果低字节有效信号为低电平,那么16位数据中低8位写入相应位置。如果字节有效信号同时有效,那么可以实现16位字数据的写入。

2.读功能实现

当进行读操作时,芯片的两个片选使能和CE2分别接低电平和高电平,并且置输出使能信号为低电平,写使能信号为高电平,则从对应地址读出数据至总线。如果高字节有效信号为低电平,那么高8位数据有效读出。如果低字节有效信号为低电平,那么低8位数据有效读出;如果字节有效信号同时有效,那么可以实现16位字数据的读出。

3.高阻功能实现

当接口信号出现如下情况之一时,相应数据输出将呈现高阻状态:

(1)片选无效,即为高电平或者CE2为低电平;

(2)输出无效,即为低电平;

(3)字节使能无效,即当高字节有效信号为高电平时,I/O15~I/O8为高阻状态,当低字节有效信号为高电平时,I/O7~I/O0为高阻状态;

(4)写操作期间,即在写过程中,当有效数据出现之前,数据信号将呈现高阻状态,具体可见写时序图。

4.读操作时序

CY7C1061AV33支持两种形式的读操作,具体操作时序见图2.20。

在使用CY7C1061AV33进行读操作时,相应的时序变量必须结合不同速度等级要求以满足数据手册给出的限制。图2.20两种读操作时序

5.写操作时序

CY7C1061AV33支持三种形式的写操作,具体操作时序如图2.21所示。

同样,图中给出的时序变量也必须满足数据手册给出的约束。图2.21写操作时序

6.操作真值表

表2.4给出了CY7C1061AV33的操作真值表。表2.4CY7C1061AV33的操作真值表从以上给出的真值表可以看出,由于SRAM的异步特点相应控制信号非常简单,因此非常适合应用在微处理器、嵌入式和可编程逻辑等环境中。同时由于SRAM存储单元的可靠性较高和读/写周期较短的特点,也使SRAM在恶劣的高速环境(如航天/航空)中得到了广泛使用,为此我们所介绍的CY7C1061AV33有商业级芯片和工业级芯片两种。接下来,我们通过CY7C1061AV33在实际中的几个典型应用来进一步说明SRAM芯片的使用方法,以期加深理解。2.2.2应用实例分析

由于SRAM与微处理器系统总线(如80x86系列)连接方式已经在众多微处理器的资料中重点描述,我们在此主要针对SRAM与可编程逻辑器件(如FPGA/CPLD)相互连接使用的方法进行详细说明。首先给出系统逻辑结构,然后以硬件描述语言方式给出具体进行读/写的实例,最后结合SRAM系统可靠性在设计方面的应用给出采用前向纠错方式的存储器

读/写实现方法。

为了方便说明,我们选择Xilinx公司的FPGA器件XC4VLX80作为主控芯片,而两个CY7C1061AV33芯片构成独立的存储空间。这样我们可以实现的系统逻辑结构图如图2.22所示。图2.22FPGA与SRAM系统逻辑结构应用实例1:主控FPGA对SRAM单元进行读/写检测。具体实现过程如下所述,首先由FPGA发出对SRAM单元的写操作,并在下一时钟将该单元内容读出进行比较,如果相同,则进行下一个单元的读/写检测,否则置错误信号有效。

系统设计的实体名称为SRAM_VERIFACATION。

FPGA实体SRAM_VERIFICATION接口信号见表2.5。表2.5接口信号读/写检测有限状态机可见图2.23。由图可见,进行读/写过程分为四个状态:空闲(IDLE)、写(WRITE)、读(READ)和比较(COMP)。当复位后,系统进入空闲状态将内部信号(如地址信号、输出使能)清零,并发出写有效信号进入写状态;在写状态,保持当前地址不变发出输出使能信号进入读状态;在读状态,获得读入的数据,进入比较状态;在比较状态如果写入数据与读出数据一致并且没有到达最后一个单元时,那么地址递增并转换到写状态,否则,如果有错置相应错误信号后切换到空闲状态结束对整个芯片的检测。图2.23读写有限状态机图2.24给出了利用ModelSim进行仿真的波形图,由图中可见,系统能够正常对SRAM进行读/写,满足了预期的设计要求。图2.24SRAM检测仿真正常波形为了测试检测程序的检错功能,我们通过将某一数据位恒置1方式加入了错误比特信息,图2.25是相应的仿真波形。图2.25SRAM检测仿真检错波形在以上给出的例子中,我们对存储器进行单个地址的写操作并立即读出进行比对检测。从仿真波形看,写时序能够确保一个时钟周期的低脉冲满足芯片的要求使得数据可以正常写入。但是实际应用的读/写模式则是不确定的,也就是说很可能出现对不同单元的连续写操作,或者连续读操作。当出现连续读操作时,根据芯片的读时序,可以将输出使能OE保持在整个读操作周期内均为低电平,通过改变地址连续读多个操作数,相应的波形可参见图2.26。图2.26连续读操作时序一般的时序数字系统,如果写使能与时钟同步,那么其脉冲宽度最小也应为一个时钟周期。这样在一个时钟内产生小于周期的脉冲将很难实现。根据实际工程经验,写使能仍然由时钟信号给出,但是在连接到存储芯片写使能管脚时,将其与时钟逻辑运算,进而产生半个时钟周期的写低脉冲信号,实现对存储芯片的连续写功能。具体可见图2.27和图2.28给出的时序和逻辑结构。图2.27时钟与写使能运算进行连续写操作时序时钟与写使能运算进行连续写操作逻辑:

assignSRAMA_WE=(RamWe)?~CLOCK:1;

assignSRAMB_WE=(RamWe)?~CLOCK:1;

应用实例2:在特殊应用场合(如航天/航空、工业、高速处理等环境)中,SRAM存储单元有可能受到辐射影响而产生单粒子翻转效应而造成读/写错误。因此,在实际的SRAM应用中经常会通过采用纠错码方式增加冗余,达到消除单粒子翻转效应影响的目的。下面给出通过硬件描述语言代码方式实现汉明码进行读写SRAM的实例。

汉明码参数为:码长7位,信息位4位,校验3位,即用(7,4,3)表示。汉明码性能:由于码字间距离为3,根据相关理论,该码在一个码字内可以纠单比特错误。

汉明码的生成矩阵G和校验矩阵H分别为:

系统设计的实体名为:HAMMING_ENCODE(编码)、HAMMING_DECODE(解码)。

编码部分接口信号如表2.6所示。表2.6编码接口信号解码部分接口信号如表2.7所示。表2.7解码接口信号由纠错编码理论可知,编码过程可以看做信息位与生成矩阵的乘积,即C = mG。而解码过程则根据接收的码字与校验矩阵乘积的情况判断是否发生了错误以及错误的位置等信息。下面给出具体实现的硬件描述语言代码。

汉明码编码过程:具体到SRAM读/写控制时,一般会采用以下方式实现对存储数据的保护,如图2.28所示。首先,我们应结合汉明码和SRAM存储单元结构选择合适的保护方案,通常汉明码具有码长为2m-1,信息位长度为2m-1-m,然而单个存储单元地址的位数则为2的幂次,如8位、16位、32位等。对于这种长度的不一致的情况,一种简单的方法就是设置存储单元的某一位为无关位,即不参与实际存储系统的信息读/写,进而满足汉明码码长的要求。例如,上面给出的长度为7位的汉明码,如果用于对字节存储的保护,则可以设最高存储单元位为无关。图2.28采用汉明码进行SRAM读/写的结构 2.3动态随机读/写存储器

2.3.1典型芯片

动态随机读/写存储器由于内部采用较少的CMOS管,使得其集成度非常高且单位价格非常低。因此,在个人计算机领域,主存部件通常采用动态随机读/写存储器实现。目前较为流行的有DDR2(双倍速率DRAM)、DDR3等内存条。但是,由于动态读/写必须具有刷新操作的特征,也使得硬件设计人员较难掌握DRAM的读/写操作。为此,我们以工程实践中使用的同步动态随机读/写存储器SDRAM(Synchro-nousDRAM)为例来介绍SDRAM的基本参数,以及工程使用方法等方面的内容。以期通过这里的说明能够对动态存储器在具体工程使用中有所帮助。目前SDRAM型号较多,这里我们以Micron公司生产的MT48LC系列SDRAM为例来具体说明。MT48LC系列根据内部组织结构的不同包含三个主要的64MbSDRAM存储器,即MT48LC16M4A2、MT48LC8M8A2和MT48LC4M16A2。这三种SDRAM器件存储容量均是64Mb,表2.8给出了具体的内部结构安排。表2.8MT48LC系列SDRAM存储器结构

MT48LCSDRAM的基本特征如下:

(1)与PC系统总线PC66、PC100、PC133兼容,可以连接到计算机主板上;

(2)最高工作时钟为143MHz,存储规格可以调整;

(3)全同步存储,即所有信号在存储器时钟上升沿寄存;

(4)内部流水操作,列地址可以连续时钟切换;

(5)内部由不同体(BANK)构成,可以方便进行预充(Precharge)和行地址选择;

(6)突发读/写长度可以编程调整为1、2、4、8或整页面;

(7)自动预充功能,即可以进行并发预充和自刷新操作;

(8)自刷新模式,即标准模式和低功耗模式;

(9)刷新周期为64ms,4096个时钟;

(10)电平标准兼容LVTTL输入/输出;

(11)单供电模式,电压为(+3.3±0.3)V。

MT48LC系列存储器是具有64Mb的高速CMOS动态存储器,内部分为4个同步接口的存储体。在MT48LC16M4A2情况下,每一个16Mb体组织为4096行 × 1024列 × 4位的三维结构;MT48LC8M8A2中每一个16Mb体组织为4096行×512列×8位的三维结构;而MT48LC4M16A2的每一个16Mb体组织为4096行×256列×16位的三维结构。MT48LC具有突发的读/写方式,可以根据预先编程的突发模式进行对存储体的有效访问。读/写过程通过命令进行控制,首先由激活(ACTIVE)命令启动一次读/写过程并寄存访存行地址与体地址,然后由READ命令或者WRITE命令实现对存储单元的访问,同时寄存访存突发起始列地址用于定位具体的存储单元。MT48LC读/写突发长度可以编程设定为1、2、4、8或整页面,在突发过程中可以通过突发终止选择停止突发读/写。在每次突发结束后可以通过自动预充方式对存储体中的行进行自刷新。MT48LC内部采用流水方式处理,可以在对单体刷新的同时对其余三个体进行读/写操作,这样实现MT48LC的刷新隐藏使得读/写过程可以高速连续完成。在功耗方面,MT48LC采用3.3V供电方式并提供节能操作模式,输入/输出引脚兼容LVTTL电平。

图2.29给出了MT48LC引脚图,图2.30则为对应的内部结构图。图2.29MT48LC引脚图图2.30MT48LC16M4A2内部结构表2.9给出了MT48LC具体的管脚定义。表2.9MT48LC的管脚定义续表2.3.2SDRAM工作模式设定

在SDRAM正常工作前,SDRAM必须进行初始化操作使其工作在预定义模式。当SDRAM正常供电且时钟稳定后,除了命令禁止(COMMANDINHIBIT)和空操作(NOP)两个命令外,其余命令必须延迟100μs才可以执行,并且在这100μs延迟内必须能够执行命令禁止和空操作之一。当100μs延迟结束后,必须执行一次预充(PRECHARGE)命令使得所有存储体均得到预充并处于空闲状态(IDLE)。接着,在经过两个自动刷新(AutoRefresh)周期后,必须对在上电过程中处于不定状态的内部模式寄存器进行设置。该模式寄存器用于定义SDRAM当前工作模式,如突发长度、突发类型、列选通CAS延迟、操作模式以及写突发模式。模式寄存器由装载模式寄存器命令(LOADMODEREGISTER)实现对其写入。图2.31给出了具体模式寄存器格式定义。其中模式寄存器中每位的含义在表2.10~2.14中给出。当初始化过程结束后,SDRAM就可以进行正常的读/写操作。正如前面所述,MT48LC是采用面向突发的读/写方式,因此接下来给出有关突发的基本过程。图2.31模式寄存器格式表2.10突发长度列表表2.11突发类型表2.12CL延迟表2.13操作模式表2.14写突发模式

1)突发长度

突发长度决定了在进行读/写命令时可以获取的最大列地址长度。突发长度本身可以通过模式寄存器实现对其编程设定。根据突发类型不同,在顺序方式下,读/写的突发长度可以为1、2、4、8和整页,而交织方式下,读/写的突发长度可以为1、2、4、8。其中整页突发长度通常与突发终止命令(BURSTTERMINATE)实现任意长度的突发读/写操作。当进行读/写命令时,与突发长度相等的一部分列地址将被选中。所有的突发操作将以该部分列地址给出的存储单元为边界。对于突发长度为2,MT48LC16M4A2由地址A9~A1确定突发边界,MT48LC8M8A2由地址A8~A1确定突发边界,MT48LC4M16A2由地址A7~A1确定突发边界;对于突发长度为4,MT48LC16M4A2由地址A9~A2确定突发边界,MT48LC8M8A2由地址A8~A2确定突发边界,MT48LC4M16A2由地址A7~A2确定突发边界;对于突发长度为8,MT48LC16M4A2由地址A9~A3确定突发边界,MT48LC8M8A2由地址A8~A3确定突发边界,MT48LC4M16A2由地址A7~A3确定突发边界。整页突发则在整个存储体选定的整行内进行读/写操作。

2)突发类型

在确定了突发长度后,突发类型则明确了每次突发内部各个列地址的模式。MT48LC采用两种类型突发,即顺序和交织类型。而具体设置则由模式寄存器内部相关位进行说明。表2.15给出了在不同突发长度下,两种突发类型确定的地址模式。表2.15两种突发类型的地址模式

3)列选通CAS延迟

当读命令寄存后,第一有效的数据需经过几个时钟的延迟才能稳定出现在端口处,该延迟就是列选通CAS延迟(CASLatency,CL),通常采用时钟数进行标识,如CL=2,3。图2.32给出了两个时钟和三个时钟延迟的读波形。图2.32不同CAS延迟的读时序一般情况下,CL的确定直接影响着输入时钟频率,表2.16给出了不同速度等级MT48LC的CL与时钟频率关系。表2.16列选通延迟与时钟频率的关系

4) MT48LC操作命令

对MT48LC系列SDRAM的操作是通过命令字的形式来实现的,每个单独命令字则由不同存储器引脚的状态确定。

表2.17给出了MT48LC命令字真值表。表2.17操作命令字真值表2.3.3SDRAM的操作命令

接下来,对具体各个命令进行功能描述。

(1)命令禁止(COMMANDINHIBIT)。该命令使SDRAM无法执行任何新的操作命令,即SDRAM处于未选中状态。但是该命令不影响正在操作的功能。

(2)空操作(NOOPERATION)。空操作命令使得SDRAM执行一次空操作,即不做任何实质性动作。通常空操作避免SDRAM处于空闲或等待状态时执行一些不可预知的命令。同样,正在执行的操作不受该命令的影响。

(3)激活(ACTIVE)。激活命令用于对特定体中的行进行打开(激活),以方便后续读/写操作。用于读写的行保持打开状态直到执行了预充命令。需要注意的是,在激活同一体内其他行之前,必须执行一次预充命令。

(4)读命令(READ)。读命令用于启动对所激活行的一次突发读操作,相应地址根据存储结构不同表示突发读的初始列地址。A10的状态决定突发读操作结束后是否进行自动预充操作,如果选择了自动预充,那么将在读突发后进行一次对该行的预充操作。否则,所读取的行将保持激活状态准备后续操作。两个时钟前的数据掩码信号DQM状态决定了当前输出数据的有效位数,若DQM为高电平,那么输出数据呈现高阻状态,否则输出合法有效数据。

(5)写命令(WRITE)。写命令用于在当前激活行启动一次突发写操作,同样地址位给出了初始列地址。A10的状态决定突发写操作结束后是否进行自动预充操作,如果选择了自动预充,那么将在写突发后进行一次对该行的预充操作。否则,所写入的行将保持激活状态准备后续操作。写数据将同当前的数据掩码信号DQM一起确定真正要写入的数据位,如果相应位的DQM为高电平,写操作无效;否则,对应数据将写入SDRAM存储单元中。

(6)突发终止(BURSTTERMINATE)。突发终止命令实现对固定长度或整页长度突发的截断。在该命令之前最近的读写突发操作将被终止。

(7)预充命令(PRECHARGE)。预充命令使得特定体内激活的行或所有激活的行关闭。当预充命令结束后,对应的体必须经过一定延迟后方可继续进行操作。A10的状态决定是否进行一个体内激活行的预充或所有体内激活行的预充。一旦体内进行预充后就进入空闲状态,那么在进行所有后续的读写命令之前必须先激活该体。

(8)自动预充(AUTOPRECHARGE)。自动预充命令执行与上述预充命令相同的操作,但是并不需要显示说明。在进行读/写命令后,由A10的状态决定是否进行自动预充。对由读/写操作确定的体和行地址进行的预充在执行完突发操作后自动完成。在整页突发情况下,无法实现自动预充。由于预充操作伴随单独的读/写操作,自动预充呈现出非持续特性。

(9)自动刷新(AUTOREFRESH)或自我刷新(SELFREFRESH)。在正常的操作过程中,可以通过自动刷新命令实现对特定行的刷新操作。刷新行地址由内部的刷新控制器确定,因此外部行地址可以任意设定。MT48LCSDRAM要求在64ms内至少进行4096次刷新操作,这就意味着每隔15.625μs进行一次自动刷新即可满足刷新要求,确保每一行数据均保持。或者在64ms内集中4096次自动刷新也可以满足要求。自我刷新命令可以在其余系统部分掉电情况下实现对数据的维持。在自我刷新模式下,SDRAM可以在没有时钟的情况下维持内部数据。刷新操作命令执行时,CKE为低电平。当进入自我模式,则由SDRAM内部的时钟实现自动刷新操作。如果需要退出该刷新模式,首先在CKE变为高电平前,CLK时钟必须稳定。一旦CKE变为高电平后,还需要执行至少两个时钟的空操作以使内部的刷新完成。然后,切换至正常读写操作过程,并利用自动刷新命令实现数据刷新。

(10)装载模式寄存器(LOADMODEREGISTER)。该命令通过A0~A11将输入信号写入模式寄存器中,具体对应含义见前面的描述。需要说明的是,该命令必须当所有体(BANK)均处于空闲状态时才能执行,而且执行完必须经过一定时间的延迟方能执行下一条新的命令。

下面给出采用以上命令实现具体SDRAM操作的过程。2.3.4SDRAM的操作时序

1. SDRAM体/行选择激活操作

为了对SDRAM中存储单元进行读/写操作,该存储单元所在的体和行必须处于打开状态。也就是说,必须通过激活命令实现选择体和行处于打开状态。图2.33给出了激活操作的时序波形。在激活操作结束后,必须延迟TRCD/TCK个时钟后可以进行读/写操作,TCK表示SDRAM输入时钟周期。例如125MHz时钟输入情况下,如果TRCD=20ns,那么必须经过TRCD/TCK=3个(向上取整)时钟周期后进行读/写操作。图2.34给出了具体的时序图。图2.33激活操作时序图2.34激活后读/写时序

2.读突发操作

图2.35给出了由读命令触发的一次读突发操作时序。在突发读过程中,起始列和体地址由读命令给出,并且可以打开或关闭对突发读位置自动预充。如果打开自动预充功能,那么在读突发结束时对应的行将被自动预充。在读突发操作时,从起始列地址读出的有效数据将在读命令后延迟CAS时钟(即CL)得到。后续的数据将在紧接着时钟上升沿依次给出。当突发结束后,如果没有新的命令,那么数据输出接口DQ将处于高阻状态。如果当前突发没有结束且又进行了读命令,那么突发长度将被截断,新的读命令对应数据将出现在数据接口上。为了使新的读命令不至于覆盖当前的读命令,必须要求新的读命令在当前读操作最后一个数据之前CL-1个时钟给出。图2.35读命令时序图2.36给出了突发长度为4且CL=2、3的情况,从图可见,新的读命令在最后一个数据(n+3)前一两个时钟出现,使得输出的数据连续没有间断。由于SDRAM内部采用流水操作,读命令可以实现随机访问使得数据输出也呈现随机特性(即可在不同体进行切换)。读突发操作可以由写操作中断,或者由对相同体的预充命令中断。图2.37给出了读突发中跟随预充命令的时序。整页读突发可以由突发终止命令截断,而固定长度读突发只能在自动预充未激活情况下由突发终止命令截断。图2.38给出了突发终止命令的时序情况。图2.36读数据CL时序图2.37读到预充过程时序图2.38中断读突发

3.写突发操作

写突发操作由写命令启动,其工作过程与读过程基本类似。由于篇幅所限,这里不进行具体描述,感兴趣的读者可参见具体的数据手册。

4.预充操作

预充命令实现对特定体中激活的行进行关闭操作,或者对所有体中激活的行进行关闭操作。在实施了预充命令后,必须经过一段时间延迟(TRP)后才可以重新激活新的行。地址线A10确定单体或者所有体进行预充,而当进行单体预充时,由BA0、BA1确定具体操作的体。一旦经过预充后,该体便处于空闲状态,必须经过激活后才能进行读/写操作。

5.低功耗操作

当处于空操作或命令禁止时,如果CKE信号为低电平并且没有进行读/写,那么SDRAM进入了低功耗操作状态。进入低功耗模式后,输入和输出的缓冲将无效(除CKE信号的缓冲外),使得SDRAM功耗得以降低。低功耗状态时没有进行刷新操作,故SDRAM不能在此模式下超过64ms。当空操作或命令禁止时,CKE信号变为高电平,则退出该低功耗模式。

6.时钟挂起操作

时钟挂起模式发生在列突发正在进行中而CKE信号变为低电平的情况。在该模式下,内部时钟将不起作用,冻结所有同步逻辑。

当检测到CKE变为低电平后,内部下一个时钟上升沿开始进入挂起模式。只要时钟挂起,输入管脚上的命令和数据均不起作用,而保持输出DQ数据,内部的突发计数也保持不变。当CKE变为高电平后,SDRAM便退出时钟挂起模式,继续进行后续操作。2.3.5动态随机读/写存储器控制器设计

为了方便使用SDRAM,通常采用SDRAM控制器实现对内部细节的屏蔽。SDRAM控制器一方面的接口类似于SRAM,一方面则直接与SDRAM管脚相连,在其内部完成对SDRAM操作细节的控制,如刷新、预充、读/写操作等方面命令的实施。因此如何设计SDRAM控制器将成为高效使用动态存储器的关键所在。对于SDRAM控制器,可以采用微控制器完成或者采用可编程逻辑器件实现。

2.4只 读 存 储 器

2.4.1CF存储卡的基本情况

CF卡是目前较为广泛使用的一种消费类存储设备,由美国SanDisk公司于1994年研制成功,它是目前应用最为广泛的存储卡,有可永久保存数据、无需电源、速度快、价格低等特点。CF卡同时支持3.3V和5V的电压。它有两种接口标准:CFTypeⅠ和CFTypeⅡ。从物理结构上来看,CFTypeⅠ卡和CFTypeⅡ卡的每个插孔的间隔大小一样,而CFTypeⅡ卡比CFTypeⅠ卡厚一些。另外,TypeⅡ比TpyeⅠ插槽要宽,所以CFTypeⅡ卡不能在TypeⅠ卡插槽上使用。目前已经推出容量高达4GB的CF卡。2.4.2CF存储卡标准结构

CF联盟于1995年10月成立,负责制定相关CF卡技术标准规范。CF卡的出现使得对数据信息包括音频、视频以及文档获取保存更加方便快捷。CF卡标准的制定为存储厂商以及用户使用提供了统一规范,无论从硬件层面还是软件层面均使得CF卡容易开发应用,因此对CF卡的推广起了重要作用。从技术层面上,CF卡是一种提供大容量以及符合个人计算机存储卡国际联盟(PersonalComputerMemoryCardInternationalAssociation,PCMCIA)和ATA接口标准的存储设备。CF卡接口与PC机中ATA标准基本符合,因此可以运行在与IDE接口相同的TrueIDE模式下,简化了应用开发的工作。CF卡由内部的智能控制器负责管理I/O接口协议、数据存储、数据获取(包括内部的数据差错控制)、故障检测与处理、电源管理与时钟控制。作为主设备的CF卡可以看做标准ATA磁盘驱动器。

图2.39给出了CF卡的逻辑框图。CF存储卡内部由两部分组成:一部分是卡控制器,负责与CF卡外部数据交换,实现具体读/写功能,另一部分是闪速存储器(FLASH),负责信息数据存储。外部采用2排共50针(每排25针)的母座封装结构,其中针间距为1.27mm。如前所述,CF卡分为两种型号,即TypeⅠ和TypeⅡ。表2.18具体给出了这两种型号的标准物理尺寸。图2.39CF卡的逻辑结构表2.18CF卡物理尺寸

CF卡可以工作于三种不同的模式:PC卡输入/输出ATA模式,PC卡内存ATA模式,TrueIDE模式。各种模式配置由内部PCMCIA寄存器设定。不同模式情况下,CF管脚定义不同,表2.19具体给出了在三种模式下的管脚定义。其中由外部向CF卡传输的信号定义为输入,而由CF卡向外部传输的信号定义为输出。表2.19CF卡信号说明续表一续表二续表三2.4.3CF存储卡读/写时序

1.属性存储读时序

属性存储读周期为300ns,表2.20给出了具体的时序要求。图2.40为具体的读属性存储时序。表2.20属性存储读参数图2.40属性存储读时序

2.配置寄存器(属性存储)写时序

属性存储写周期为250ns,表2.21给出了具体的时序要求。图2.41为具体的写属性存储时序。表2.21属性存储写参数图2.41配置寄存器(属性存储)写时序

3.通用存储读时序

表2.22给出了具体的通用存储读时序要求。图2.42为具体的读存储时序。表2.22通用存储读参数图2.42通用存储读时序

4.通用存储写时序

表2.23给出了具体通用存储写时序要求。图2.43为具体的写存储时序。表2.23通用存储写参数图2.43存储写时序

5. I/O输入读时序

表2.24给出了具体的I/O输入读时序要求。图2.44为具体的读时序。表2.24I/O输入读参数图2.44I/O输入读时序

6. I/O输出写时序

表2.25给出了具体I/O输出写时序要求。图2.45为具体的写时序。表2.25I/O输出写参数图2.45I/O输出写时序

7. TrueIDEPIO模式读/写时序

表2.26给出了在TrueIDE模式下进行读/写的时序的要求。为了简单起见,我们仅给出PIO模式的情况,并且采用ATA-4接口形式表示信号。表2.26TrueIDEPIO模式读/写参数单位:ns图2.46给出了TrueIDEPIO模式的时序。图2.46TrueIDEPIO模式时序2.4.4CF存储卡的配置

1. CF存储卡配置寄存器

CF卡的配置信息存放在特定的数据结构中,即卡信息结构区(CardInformationStructure,CIS)。在对CF进行读/写操作前,应首先设定CIS内的配置寄存器。这些配置寄存器规定了CF卡工作的基本模式以及必要的设置,如I/O空间的定义、卡中断级等。同时,用户也可以通过这些寄存器中的状态位读取当前CF卡工作状态,并将状态信息提供给中断控制器进行仲裁

,或者提供给主机以确定下一步的动作。根据CF卡的功能区分,通常可分为单功能CF卡与多功能CF卡。对于单功能CF卡,在CIS结构中仅有一组可以配置的功能寄存器;而在多功能CF卡内,针对所有功能有一组通用的全局CIS信息以描述公共信息设置,而各个功能则具有独立的CIS信息。在全局CIS中,CISTPL_LONGLINK_MFC索引表记录每种功能CIS信息存储的位置。表2.27给出了CF卡与内存空间的设置。表2.28为配置寄存器的真值表。表2.27CF卡与内存空间的设置表2.28配置寄存器的真值表

2.属性内存功能

属性内存空间用于存放CF卡的标识和配置信息,对其的读/写操作限制在偶地址8位宽。各种配置寄存器同样存放在属性内存空间中,并且起始地址为200h。在进行属性内存读操作时,REG#和OE#信号有效,WE#信号无效。表2.29给出了属性内存空间读/写的真值表。表2.29属性内存功能

3.配置选择寄存器(属性内存地址:Base+00h)

配置选择寄存器用于配置CF卡接口、地址解码以及中断方式,同时可以产生对CF卡的软复位。图2.47给出了该寄存器的定义。图2.47配置选择寄存器

(1) SRESET:软复位。当该信号设置为1并持续最小复位时间后变为0时,将使CF卡处于复位状态。复位后,CF卡内部处于未配置情况。软复位与上电以及硬件复位效果一致。SRESET在上电和硬件复位后为0。

(2) LevIREQ:当该位设置为1时,CF卡处于电平中断模式;当设为0时,CF卡存储设备处于脉冲中断模式。复位后,该位置为0。

(3) Conf5~Conf0:为配置索引位。复位后,该位为0,这些索引用于选择CF卡的操作模式。表2.30给出了具体的定义。表2.30CF卡配置索引

4.配置与状态寄存器(属性内存地址:Base+02h)

配置与状态寄存器包含存储卡的工作条件,具体定义见图2.48。图2.48配置与状态寄存器

(1) Changed:用于表明管脚替换寄存器中CReady或CWProt位有一个或者全部被设置为1。当该位为1时,如果SigChg位也为1,那么STSCHG#管脚(46)将保持为低电平。CF卡配置为I/O接口。

(2) SigChg:由主机控制使能的状态改变信号。如果不需要状态改变信号,该位置为0且STSCHG#管脚将保持为高电平。

(3) IOis8:主机设置该位为1,表明CF卡配置为8位I/O模式。由于CF卡总配置为8位和16位I/O模式,该位通常可忽略。

(4) XE#:对于CF卡,该位设置为0,CF卡不支持相应功能。

(5) Audio:主机通过设置该位控制SPKR#管脚的音频信息。对CF卡该位通常为0。

(6) PwrDwn:该位表明主机是否要求CF卡处于低功耗或激活模式。当为1时,CF存储设备进入低功耗模式;当为0时,表明主机要求CF卡进入激活模式。

(7) Int:内部中断请求信号位。无论是否为I/O接口模式,该位均可读取。直到中断请求得到处理后,该信号变为无效。当通过设备控制寄存器中IEN#位屏蔽中断后,该位设置为0。

5.管脚替换寄存器(属性内存地址:Base+04h)

图2.49给出了该寄存器的定义。图2.49管脚替换寄存器

(1) CReady:该位为1表明RReady状态改变,可通过主机设置。

(2) CWProt:该位为1表明RWprot状态改变,可通过主机设置。

(3) RReady:该位表明内部READY信号状态。当READY管脚重新分配为中断请求信号时,该位可以表明内部READY的状态。当进行写操作时,该位作为对相应CReady的掩码操作信号MReady。

(4) WProt:如果CF卡没有写保护开关,该位为0。当进行写操作时,该位作为对相应CWProt的掩码操作信号MWProt。

6.管道与复制寄存器(属性内存地址:Base+06h)

该寄存器包含额外配置信息。在写CF卡配置索引寄存器之前,由主机完成对该寄存器进行写操作。该寄存器不是CF卡必须的寄存器。2.4.5I/O传输功能

通过I/O传输可以实现CF卡的8或16位数据读/写。当访问16位端口,IOIS16#管脚将由CF卡输出有效,否则该管脚无效。CF卡允许任意地址进行8或16位读/写,IOIS16#信号可以对所有地址及时响应。在进行输入操作时,CF卡可以通过WAIT#信号要求插入等待周期直到数据准备好。表2.31给出了具体功能的定义。表2.31PCMCIA模式I/O功能2.4.6通用内存传输功能

通用内存传输可以进行主机与CF卡8或16位的数据交换。CF卡允许对所有通用内存地址进行8位或16位操作,同样可以插入WAIT#信号使主机放慢写的速度。表2.32给出了具体功能定义。表2.32通用内存模式功能2.4.7TrueIDE模式I/O传输功能

在TrueIDE模式下,上电时由主机将OE#信号接地。在工作过程中,CF卡可以通过以下方式检测接口并确定其状态。

(1) CF卡可以检测OE#信号,当其变为高电平时,CF卡转换为PCMCIA模式。

(2)当CF卡复位后,CF卡可以重新判定接口模式。

(3)当CF卡检测到持续的OE#低电平后,CF卡可以切换至TrueIDE模式。对于CF系统设计者来讲,不能依靠上述的方式进行控制。在TrueIDE模式下,PCMCIA协议和配置将失效,只能对任务文件和数据寄存器进行读/写。主机无法看到通用存储和属性存储寄存器。而CF卡则可以在用户执行设置特征命令(SetFeatureCommand)后进入8位PIO模式读/写数据。具体TrueIDE模式的功能定义可以参考IDE功能定义相关资料。2.4.8典型芯片及应用实例分析

我们将以SanDisk公司生产的CF卡为例,详细介绍CF卡与微控制器互联的应用实例。SanDisk主要生产消费类存储设备,如CF卡、PC卡、IDE闪存驱动器、闪存芯片组以及多媒体卡(MMC)。除MMC设备外,其余存储设备均具有相同的物理存储基本单元以及满足ATA指令集的软件接口。下面将给出SanDisk提供的将CF存储设备与80C51微控制器连接应用的实例。

CF卡提供了多种操作模式,如标准ATA接口和PCMCIA接口。标准ATA接口规范就是我们熟悉的IDE接口,广泛应用于PC系统中硬盘接口和嵌入式系统中存储接口。标准ATA能够广泛使用的一个原因在于PC系统和工业主机系统的BIOS已经提供了丰富的接口函数支持。由于IDE接口采用16位数据传送,而80C51为8位微控制器,因此必须在上电后通过命令切换传输数据的通路宽度为8位。

PCMCIA提供I/O与内存影射两种方式的数据接口,以方便不同类型的处理器要求。例如,IntelX86系列处理器具有独立的I/O指令可以进入I/O影射方式读/写数据。而其他一些处理器则将内存与I/O统一编址进行读/写,那么就可以采用内存影射方式进行数据交换。无论采用哪种接口操作模式,CF控制器外部的接口都是一组ATA寄存器,或者称为任务文件,外部的主机则不能直接对CF卡存储单元直接进行操作。主机与存储设备间的数据传输以块或者扇区为基本单位。虽然支持虚拟的内存窗口进行存储块间的传送,但是对单字节的读写操作仍然不能在CF卡存储单元内进行。在与80C51微控制器连接的实例中,我们将选择简单而无需特别配置的缺省内存模式进行说明。对于与80C51微处理器连接的电路原理图可参见附录。在该例中,采用无ROM版本的80C51微控制器80C31作为主控器。由串行接口提供数据输入与输出操作,在实际应用中可以改变输入/输出接口的形式,如A/D变换接口、并行接口等。微控制器时钟由11.0592MHz晶振提供,外部EPROM(U5)作为其程序存储区。微控制器产生UART形式信号后由RS-232接收发送器(U6)调制连接到串口接口(J1)。 访存地址低8位由锁存器U2锁存后提供给存储器或者CF卡。访存地址高8位则由微控制器U1的端口2提供。U3负责对地址空间中非内存或CF卡地址设备进行解码。整个系统地址空间划分如下:

EPROM程序存储区:0000H~1FFFH;

内存区RAM(U4):2000H~3FFFH;

CF存储设备:E000H~FFFFH。

以上的空间分配除了EPROM必须从0地址开始外,其余均可以灵活指定。

表2.33给出了原理图中CF存储设备与80C31相连接的信号。表2.33CF存储设备与80C31连接信号列表在设计完原理图和完成制版工作后,就可以进行系统的调试。为了简单起见,我们这里仅给出部分常用的CF卡读/写寄存器列表,见表2.34。表2.34部分常用的CF卡读/写寄存器列表

2.5其他

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论