My Planet.
-
跨越异步时钟边界传输数据的解决方案
2009-04-08
简 介:现代的IC芯片包含丰富的触发器,不同电路的时钟驱动源存在频率和相位的差异,因而出现了跨不同时钟区域进行异步数据传输的要求。亚稳态问题是异步数据传输过程面临的主要问题,本文提出多种跨越异步时钟边界传输数据的方法,它们包括FIFO法和脉冲展宽处理等同步方法。数字电路设计工程师偏好稳定、易于设计及仿真的同步单一时钟系统,然而,有时也难免用到多时钟。在电信和数据通讯领域,将数据由一种时钟域传到另一种时钟域的情况很常见,这类设计要全面解决时序问题。
两种不相关时钟并不一定会造成时序关系的混乱,虽然出现时序冲突的情况肯定不止一次,因此,在这种情形下,在异步边界之间准确地传输数据至关重要。采用经验证的设计技术可将存在问题的仲裁电路大幅减少,并且设计出可靠工作的电路。
应遵循的设计原则
尽管设计工程师偏好同步电路,但如果一个系统中存在多个时钟,要确保时钟边界的设计成功,设计工程师就必须遵循若干重要原则:1. 不要同时对一个以上的并行触发器中的异步输入进行同步处理。由于在同步触发器窗口建立期间异步输入经常会改变,而且给定的两个触发器不可能完全一致(即便在同一芯片内的触发器)。这样迟早会出现这样的情况:当一个时钟沿来临时,一个触发器输入被当成“1”,而另一个触发器被当成“0”。这种反常的情形会引起很多麻烦,因而需要将设计改为只使用一个时钟同步触发器。
然而,即使采用单个同步触发器也会出现逻辑异常现象,出现这种情形的可能性很小,但的确存在,因为当触发器的主锁存器接收的信号进入平稳状态前,异步输入在极短的建立时间窗口内发生改变,这样触发器就会进入亚稳态。
触发器即使进入亚稳态状态,也会很快进入稳态。只要触发器有几纳秒的建立时间,设计工程师就能解决这个亚稳态问题。因为输入数据中时序不一致,所以采用何种方式让触发器稳定并不重要。亚稳态问题并非指输出结果数据的不确定性,而是指输出变化的时序不确定性。
握手通信方式
当并行数据通过时钟域边界时,采用什么办法能够解决稳定问题?传统的处理办法是生成一个标记,然后采用握手方式来处理(图1)。当发送电路要发送并行数据时,它会在READY信号上产生一个上升沿,即在触发器F上设立标记告诉接收电路发送数据已经准备就绪。接收电路将持续扫描触发器F,当检测到标记变为高电平时便接收稳定的并行数据,然后产生用于设置触发器A的ACK上升沿。它使触发器F复位,然后触发器F使触发器 A复位。这种独特的设计不考虑传输和接收之间任意相位及频率的关系,这通常要求在两个触发器之间的设计采用合理的约束竞争条件。在触发器F和触发器A复位期间,可以把一个合理的环路延迟插入。在某些特殊设计中,这种延迟可在发送期间,也可以在接收期间插入。
这种传统的握手通讯方式要求通讯双方检测标记F的状态。发送电路只能在F为低电平时才改变并行数据,而接收电路只能在F为高电平时接收数据,这种方式虽然安全但数据传输率低。然而,还能找到在异步时钟边界更快地传输数据的其它方法。
当接收时钟比输入数据的变化快得多时,就要对带有接收时钟的异步字进行双倍缓存,并在两个寄存器中对数据进行识别校验(图2)。同样,如果在接收时钟之前或在接收时钟周期内,异步数据时序未发生变化,则两个寄存器里都保存相同的有效数据。识别比较器也可用作跳变检测器,因为在异步数据发生变化时它会停止工作。
如果异步数据是二进制计数器,这种双倍缓存电路甚至可用来处理与读时钟周期速度同样快的计数器的变化。要修正识别比较器使其能接受识别数据。如前所述这种电路能拒收计数器跳变时可能俘获的错误数据,但允许读取电路在一个计数器时钟周期后开始读操作,此外,改变比较器窗口也能增加这种容错性。
向FIFO输入数据
当接收时钟偶尔要读取比读取时钟周期变化更快的异步数据时,就必须插入一个异步先进先出(FIFO)存贮器作为一个弹性缓存,该FIFO存贮器由配备独立的读、写地址计数器的双口RAM和数据端口组成。双口RAM和FIFO存贮器的专用IC很多,在FPGA(如Xilinx的Virtex) 中也嵌入了双口RAM。FPGA双口RAM深度从16位(用查表逻辑实现)到256位甚至4096位(由片上BlockRAM实现),输入和输出的时钟频率远远大于100MHz。
真正双端口存贮器的每个端口的工作相互独立。写入端采用连续的写入时钟并通过激活WRITE ENABLE端来写入数据。读取端采用连续的读取时钟并通过激活READ ENABLE端来读取数据。为了避免出现解码差错,建议两个端口都采用格雷码寻址方式。在FIFO中,如果两个端口采用相同序列,那么地址代码序列是不相关的。因为在任意的跳变中只有一个位改变,格雷码特别适合于时钟域边界的数据传输。
空状态运行
在真实的双端口存贮器中,每个端口都在其各自的时钟域中同步工作。两个时钟域只有在FULL和EMPTY等极端状态下才进行相互通讯,因而需要特别注意这两种标记。更确切地说,因为前沿都是同步信号,难以控制的仅仅是这些信号的后沿。
写操作时FULL有效,这样信号前沿就与写入端口同步,这是唯一要用到标记的端口。读操作时EMPTY有效,这样信号前沿就与读端口同步,这也是唯一要用到标记的端口。只有这两个标记的后沿需要跨过两个时钟域。幸运的是,即使是高速系统也允许FULL和EMPTY的后沿存在一定的同步延迟,这种延迟仅会减慢特殊情况出现后系统重启动的速度。
通常,FULL和EMPTY的两种极端情形可通过相同的条件,即写入和读取地址的等价性来表示。区分两者的一个简单方法是通过比较两个计数器中最重要的两个地址位来设置或清零两者共用的一个锁存器。可以把地址计数顺序用环形图来表示,二进制及格雷码中的两个最大位(MSB)表明了每个计数器的地址象限。四个位解码构成两个查找表,根据两个计数器的两个MSB的16种不同的组合,可以确定两个计数器之间的象限距:
1、四位码代表写入计数器紧邻读取计数器后面的象限,解码为“可能将变为FULL”,并设置DIRECTION锁存器为“1”;
2、另外四位码代表写入计数器紧靠在读取计数器之前的象限,解码为“可能变为EMPTY”,将DIRECTION锁存器清零;
3、其他四位码代表读取和写入计数器位于同一象限,最后四位码则表明它们位于相反的象限。这八个代码不能为DIRECTION锁存器提供有用的信息,因而可以忽略。
脉冲前沿谁先出现?
在真正的FULL和EMPTY条件发生前,DIRECTION锁存器就已经稳定,因而DIRECTION锁存器的输出可用于把地址识别比较器输出变为FULL输出信号或EMPTY输出信号。如前所述,这些信号的前沿与利用这些前沿的时钟域本身是同步的。在写入时钟建立期间,不能出现经读取时钟初始化的FULL信号后沿,最容易的办法是在时钟上升沿展宽FULL信号使其在写入时钟的低电平期间不进入无效状态。
当锁存器在写入时钟的下降沿正好准备锁存时,如果FULL信号在极小时间窗口内终止,这时依然可能进入亚稳态。大部分情况下,亚稳态输出可在下一个写入时钟的上升沿来到之前变为稳态。如果用户仍然对这种混乱感到担心,FULL信号可展宽为大于整个写入时钟周期,从而完全消除亚稳态错误。也可以让触发器产生脉冲后沿与写入时钟同步的FULL信号(图3),EMPTY信号也是对称的,并且以类似的方式展宽或做同步处理。
这些设计假定读取和写入时钟处于自由运行状态,由各自的使能信号触发。如果没有自由运行的读时钟,该设计会通过一个有效的EMPTY- STRETCHED输出来锁定,EMPTY-STRETCHED输出要在读取时钟的高电平上结束。如果时钟不能自由运行,EMPTY-STRETCHED 输出就将中断外部决策逻辑电路以防止读取时钟变高。这样甚至在数据已写入到FIFO,EMPTY-STRETCHED仍保持有效状态,同样,如果没有自由运行的写入时钟,FULL-STRETCHED的行为也类似。由相应的使能信号激活的可自由运行的时钟就可以避免出现这些问题(图4)。小型FIFO可通过16位SelectRAM实现,更深的FIFO可用Virtex的BlockRAM实现。典型的深度为256位,n倍 16位宽FIFO只需n+1个BlockRAM加上三个逻辑电路模块(CLB)。n个BlockRAM可作为具有独立的读、写端口的双口256×16的 RAM,每个都配备自身的时钟和时钟使能信号。附加的一个BlockRAM作为双口ROM查找表用于格雷码地址序列的查找,因此,它可作为对数据 BlockRAM直接寻址的标志输出的读、写地址计数器。与传统逻辑电路相比,在ROM中生成格雷码地址速度更快,方法也更简单。
DIRECTION锁存器、地址识别比较器以及上述扩展电路可通过三个CLB来实现。FIFO可以跟时钟频率超过100MHz的两个异步端口协同工作。由于用作地址计数器的双口ROM每侧都还有另外8个输出可用,这些输出用做预查询地址,从而有可能提前一个时钟周期对FULL和 EMPTY解码,并对它们进行管线操作,这种方法使工作频率接近固有的200MHz BlockROM时钟频率。
本文总结
无论什么时候钟控触发器或锁存器对异步输入进行同步,输出都有可能出现有意外的延迟。这种延迟不仅可以在异步跳变与建立时间内发生冲突,也可以在主锁存器正在被禁止的时间窗口内发生,因此,会锁定输入数据。在这种情况下,触发器会进入一种对称平衡的瞬态亚稳态,此时,即使向完全平衡状态有极小的偏离都会造成输出向某个稳定状态回归,本文提供的解决方案可以有效地解决亚稳态问题。 -
SoC片上总线
2009-02-27
简 介:随着以IP核复用为基础的SoC设计技术的发展,工业界及研究组织积极从事相关IP互联标准方案的制定工作,从目前的研究和发展看,影响力较大的有IBM公司的CoreConnect、ARM公司的AMBA 和Silicore Corp公司的Wishbone。基于现有IP互联接口标准技术的发展现状,本文对这三种SoC总线技术进行了详细介绍。1 引言
传统的IC设计方法已无法适应新的SoC设计要求,需要根本的变革,即从以功能设计为基础的传统IC设计流程转变到以功能整合为基础的SoC设计全新流程。SoC设计以IP的设计复用和功能组装、整合来完成。SoC设计的重点为系统功能的分析与划分、软硬件功能的划分、IP的选择与使用、多层次验证环境和外界设计咨询服务等。
随着以IP核复用为基础的SoC设计技术的发展,如何有效地对众多IP供应商提供IP核,在实际设计时进行有效互联的问题日益受到重视。为了使IP核集成更快速、更方便,缩短进入市场的时间,迫切需要一种标准的互联方案。
在这一背景下产生的片上总线OCB(on-chip bus)技术,基于IP核互联标准技术的发展,目前已形成较有影响力的三种总线标准为:IBM公司的CoreConnect,ARM公司的AMBA(Advanced Microcontroller Bus Architecture)和Silicore Corp公司的Wishbone。本文对这三种总线标准进行了详细介绍。
2 CoreConnect总线
CoreConnect拥有完备的一整套技术文档,在技术上可行性较强。IBM 公司的CoreConnect连接总线还提供了三种基本类型连接功能块,即处理器内部总线PLB(Processor Local Bus)、片上外围总线OPB(On-ChipPeripheral Bus)和设备控制总线DCR(Device Control Register)。CoreConnect总线的逻辑结构如图1所示,它清楚地定义了所有的系统构成部件以及它们是如何连接的,下面分别介绍PLB、DCR和OPB的主要技术特征。
2.1 PLB
PLB标准是为总线传输的主要发出者和接受者之间提供高带宽、低延迟的连接。其主要特征为:
● 高性能处理器内部总线;
● 交叠的读和写功能(最快每周期两次传输);
● 支持分段传输;
● 地址流水(减少延迟);
● 读和写分开;
● 32~64位数据总线;
● 32位地址空间;
● 支持16~64字节突发传输模式;
● 支持字节使能(非对准和3字节传输);
● 支持仲裁、REQ、GNT和LOCK;
● 延迟和隐藏仲裁(减少延迟);
● 4级仲裁优先权;
● 特殊DMA(Direct Memory Access)模式,如快速的从内存到内存;
● 地址和数据状态扼制(Address and data phase throttling);
● 延迟计数器(保证保持延迟到预想的程度)。
2.2 OPB
OPB标准为连接具有不同的总线宽度及时序要求的外设和内存提供了一条途径,并尽量减小对PLB性能的影响。其主要特性如下:
● 片上外围总线;
● 多个主设备;
● 32位地址空间;
● 读和写数据总线分开;
● 8~32位数据总线;
● 动态总线宽度;
● 支持重试模式(如果主设备要求的从设备忙,主设备隔一段时间再次请求);
● 支持突发(burst)传输模式;
● 支持DMA;
● 设备可以是内存映射(支持DMA);
● 检测总线超时功能(在仲裁器中);
● 支持仲裁、REQ、GNT和LOCK。
2.3 DCR
设备控制寄存器总线DCR是用来规范CPU通用寄存器设备,控制寄存器之间传输数据。DCR总线在内存地址映射中取消了配置寄存器,减少取操作,增加处理器内部总线的带宽。其主要特征如下:
● 10位地址总线;
● 32位数据总线;
● 同步和异步的传输;
● 分布式结构。
CoreConnect是一套精心设计和构造完整、通用的解决方案,可以应用在类似于工作站这样的高性能系统的连接,对于简单的嵌入式应用来说可能有点太复杂,提供的许多特性无法用到,但可以适应于未来更庞大、更复杂的系统连接。
3 AMBA总线
先进的微控制器总线体系结构AMBA规范定义了三种总线:
(1)AHB(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿;
(2)ASB(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式;
(3)APB(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。
一个典型的基于AMBA的微控制器同时集成 AHB(或ASB)和APB接口,如图2所示。ASB总线是旧版的系统的总线,而新版的AHB总线增强了对性能、综合及时序验证的支持。APB总线通常用作的局部的第二总线,作为AHB或ASB上的单个从属模块。
根据AMBA的规范,连接AHB/ASP和APB的APB桥的唯一功能是提供更简单的接口。任何由低性能外围设备产生的延迟会由连接高性能(AHB/ASP)总线的桥反映出来。桥本身仿佛是一个简单APB总线的主设备,它访问与之相连的从设备,并且通过高性能总线上控制信号的子集控制它们。下面给出AHB、ASP和APB的主要特征。
3.1 AHB
AHB是先进的系统总线。它主要的目的就是连接共性能、高吞吐率的设备,例如CPU、DMA和DSP。它的主要特性:
● 高性能新一代总线;
● 多控制器;
● 分段传输;
● 单周期总线控制权移交;
● 没有三态实现方式;
● 32~128位总线宽;
● 包含一种访问保护机制,用来区别特权访问和无特权访问模式,或指令和数据提取等;
● 突发传输模式最大为16节;
● 访问空间限制在32位;
● 提供为较慢设备使用而扼制数据流的机制;
● 支持仲裁、REQ、GNT和LOCK;
● 支持字节、半字和字传输。
AHB总线和ASB总线有下列不同的特点:
● AHB总线支持分开处理。有很长响应延迟的从机在准备传输的数据时让出总线从事其它传送操作;
● 使用单一时钟沿控制所有操作,有利于综合和设计验证(通过使用静态时序分析和其他相似工具);
● 使用中心多路器总线方案而不是三态驱动的双向总线;
● 支持更宽的64位或128位数据总线配置。
3.2 ASP
ASP是通用系统总线,是一种微处理器和系统外设的高性能互连,主要特征如下:
● 多控制器;
● 突发数据传输方式;
● 流水线传送;
● 32-128位总线宽度;
● 包含一种访问保护机制,用来区别特权访问和无特权访问模式,或指令和数据提取等;
● 双向数据总线;
● 提供为较慢设备使用而扼制数据流的机制;
● 仲裁支持REQ、GNT和LOCK。
3.3 APB
APB是外围互联总线,重点是最小功耗和易于使用,主要特征如下:
● 低性能、低功率外围总线;
● 单控制器;
● 非常简单,只有4个控制信号(加上时钟和复位);
● 32位地址空间;
● 多达32位数据总线;
● 分开读和写数据总线。
AMBA是一种基本的SoC总线,它分成三种总线。根据需要,系统设计者必须选择对接三种总线中的哪一种。一个高性能设备可能选择AHB或 ASP总线,这将给IP核集成者带来困难,因为两种总线都试图访问同一类型的设备。还没有明确的办法将设备与AHB和ASP总线集成。APB桥似乎不但不会提供任何好处,而且会限制连接在上面的高性能总线。所有三种总线都包含一个地址状态和一个或多个数据状态。
4 Wishbone总线
Wishbone总线是Silicore公司推出的片上总线协议。它的结构极其简单、灵活,又完全公开、完全免费,获得众多支持。图3给出了Wishbone 总线的逻辑结构:
Wishbone总线的主要特征概括如下:
● 所有应用使用一个总线体系结构;
● 简单、紧凑的体系结构;
● 支持多控制器;
● 64位地址空间;
● 8~64位数据总线(可扩展);
● 单周期读和写;
● RMW(READ-MODIFY-WRITE)周期;
● 事件周期;
● 支持重试;
● 支持内存映射,FIFO(FISRT IN FIRST OUT)和十字互连接口;
● 提供为较慢设备使用而扼制数据流的机制;
● 使用者定义标志为,确定数据传输类型;
● 由终端用户定义仲裁方式。
Wishbone总线采用握手协议。当MASTER准备好传输数据时置STB_O为高,STB_O将保持高状态直到SLAVE将ACK_I、ERR_I或RTY_I之一置为高,数据传输周期结束。这种机制下,MASTER和SLAVE均可控制数据传输速率。其握手时序如图4。
Wishbone总线有四种将MASTER与SLAVE连接在一起方式,分别为点对点、数据流、共享总线和十字互连。其中点对点方式可以最简单地将一个MASTER与一个SLAVE相连;数据流方式可以实现数据传输的流水;共享总线方式将多个MAS TER和SLAVE相连,不过任何时刻只能有一个MASTER占据总线;十字互连则可实现多个MAS TER和多个SLAVE之间同时传输数据。图5给出了采用点对点互联方式的Wishbone总线主从接口。

Wishbone有三种数据传输方式,分别为单读写、块读写和RMW(READ-MODIFY-WRITE)。其中单读写为最简单。图6给出了单读周期的时序。
为了更直观地了解Wishbone总线接口连接如何简单、灵活,图7给出了8位SLAVE的输出端口图。
Wishbone只定义了一种高速总线,在既需要高速总线又需要低速总线的系统中,提供了两Wishbone接口,比起设计两个不同的接口要简单得多。
5 总结
在以上介绍的三种总线中,CoreConnect虽免费不过需要IBM公司许可,ARM没有明确的正式说法,可能也会免费,而Wishbone是绝对免费的。三种总线都是同步的总线,使用时钟上升沿驱动和采样信号。总线的基本操作几乎没有区别,最大的区别在于提供的特性和规范的完整性。
CoreConnect和AMBA都给设计者提供了一种系统总线的选择。系统集成设计者当试图连接为不同连接设计的设备时会遇到问题,在建立全面完整的系统时需要桥。而在Wishbone中,所有的IP核都连接在同一标准接口上。系统设计者可以选择在一个微处理器核上实现两个接口,一个给高速低延迟设备,一个给低速低性能设备。
综上所述,我们认为采取Wishbone作为IP核的基本互联的接口标准更便于设计,它的信号十分直接,如果需要可以很容易被其它接口所采用。 Wishbone总线完全公开、完全免费,易于推广,当然一个规范能否成为行业标准,除了本身的技术特性外,还要看是否被业界接受。
Wishbone已被OPENCORE联盟采用,并且有可能成为IEEE标准。因此,Wishbone总线从技术上讲简单、灵活、功能强大及易于移植,从经济角度考虑又全部免费,易于全面推广。我们认为它极有可能成为未来SoC片上总线的通用标准,其前景看好。 -
NAND和NOR flash详解
2009-02-11
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了20年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。
许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。
NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。
性能比较
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。
由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。
● NOR的读速度比NAND稍快一些。
● NAND的写入速度比NOR快很多。
● NAND的4ms擦除速度远比NOR的5s快。
● 大多数写入操作需要先进行擦除操作。
● NAND的擦除单元更小,相应的擦除电路更少。
接口差别
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。
NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。
容量和成本
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128M
B的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。
可靠性和耐用性
采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。
寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
位交换
所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。
一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。
当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。
这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。
坏块处理
NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。
NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
易于使用
可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。
由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。
在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。
软件支持
当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。
驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。






