




已阅读5页,还剩59页未读, 继续免费阅读
(计算机系统结构专业论文)固态硬盘闪存控制设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 摘 要 固态硬盘中闪存控制器扮演着重要的角色。闪存控制器是闪存芯片与主机接 口间的关键部件,它的性能将直接影响到固态硬盘的整体性能。 通过对闪存逻辑结构、存储单元组织结构的分析,提出闪存控制器的结构。 考虑到单颗闪存芯片在容量及访问速率方面的限制,必须通过闪存阵列构建高速大 容量存储设备。通过对当前高速大容量闪存控制器主流设计方法中闪存阵列构建 方式的分析,指出其中存在的不足,并提出高性价比的闪存阵列结构。根据闪存 读、编程及擦除等操作的时序要求,提炼出各个操作的状态机。为便于闪存控制 逻辑的同步,在闪存控制逻辑内部引入同步单元。结合自顶向下模块化设计的思 想, 提出闪存控制器各个功能模块的设计方法, 并采用 fpga (现场可编程门阵列) 予以实现。考虑到系统集成的需要,将实现的闪存控制器封装成符合处理器本地 总线(processor local bus,plb)接口标准的 ip 核,并根据 ip 核实现底层驱动程 序。 将闪存控制器的 ip 核应用于测试系统中进行了板级测试及系统级测试, 测试 结果表明闪存控制器已基本能够完成对闪存读、编程及擦除等操作的控制。 关键词关键词:固态硬盘,闪存控制器,知识产权核,现场可编程门阵列,底层驱动 ii 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 abstract flash memory controller plays an important role in solid-state disk.its the key component between flash memory chips and the host interface, and its performance will directly affect the overall performance of solid-state disk. according to the analysis of the flash memory logic structure and the memory cell structure,a structure of flash memory controller is introduced.taking into account of the limitations about capacity and access speed of single flash memory chip,we must build a flash memory array in order to design a high-speed and large-capacity storage device.by analysing current means of building flash memory array of high-speed and large-capacity flash memory controller,the deficiencies are pointed out and a better flash memory array structure is introduced.according to the timing requirements of flash memory operations,such as reading,programming and erasing etc,the state machines of all operations are extracted.in order to facilitate synchronous flash memory control logic, a synchronous unit is introduced into the flash memory controller. combination of modular design,approach about how to design each functional module of flash memory controller is introduced.and each module is implemented using fgpa(field programmable gate array). considering the needs of system integration, the flash memory controller is packaged as ip core,which accords with the processor local bus interface standard. and the low-level driver is realized based on the ip core. through board-level testing and system-level testing, it has been proved that the flash memory controller is able to control the basic operations of the flash memory such as reading,programming,erasing and etc. keywords:solid state disk,flash memory controller, intellectual property core,field programmable gate array,low-level driver 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的 研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个 人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有 权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密,在_年解密后适用本授权书。 不保密。 (请在以上方框内打“”) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1 绪论绪论 1.1 课题背景课题背景 随着半导体工艺的日益成熟,在高速大容量存储领域采用半导体技术进行非 易失性存储逐渐成为现实1,2。其中典型的代表是闪存,以闪存作为存储介质的固 态硬盘(solid state drive,ssd)由于相对于传统的机电混合式硬盘(hard disk drive,hdd)具备访问时延低、功耗小、重量轻及抗震性强等优点,很快成为业 界的一个研究热点3,4。 固态硬盘外形上看起来跟传统的机电式硬盘一样, 而且访问方式也完全一样, 但它的存储介质却是半导体5。准确地讲,存在两种形式的固态硬盘,一种是以闪 存作为存储介质,它可以完全用来代替传统的机电式硬盘,主要应用于笔记本电 脑、便捷式音乐播放器等领域;另一种则是以 dram(dynamic random access memory,动态随机存储器)为存储介质,它由于低延迟、高带宽等特点主要应用 于对存储性能要求很高的领域6,7。 基于 dram 的固态硬盘虽然具备很高的性能,但性价比过低。而相对来说, 基于闪存的固态硬盘性价比更容易让用户接受8。日前,根据对性能要求的不同或 应用领域的不同,基于闪存的固态硬盘又可细分为基于 slc(single-level cell) 类型闪存的固态硬盘和基于 mlc(multi-level cell)类型闪存的固态硬盘9,10。就 设计方面而言,slc 类型的闪存和 mlc 类型的闪存类似,但 mlc 类型的闪存具 备更高的存储密度,而 slc 类型的闪存具备更佳的写性能及更高的可靠性。基于 以上原因,相对于 slc 类型的闪存来说,mlc 类型的闪存成本更低,存储空间更 大,更适合于中低端的数据存储11。 目前,固态硬盘正在以强劲的势头向航天、军事、精密工业及终端移动 pc 机等领域渗透12。全球几大笔记本电脑的厂商如惠普、ibm、戴尔、三星等公司 都在不断地推出配备固态硬盘的笔记本电脑,而在航天、军事等领域也在不断投 入固态硬盘的研发与应用之中。此外,固态硬盘还在不断地向服务器领域渗透, 2 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 如 emc 也正在企业级的高端存储阵列中引入固态硬盘的概念13。 就业界推出的固态硬盘产品来看,大部分固态硬盘所选择的存储介质都是 mlc 类型的闪存, 这是因为基于 mlc 类型的固态硬盘具备相对较高的性价比14。 但由于 mlc 类型的闪存本身在执行写操作时速率限制, 业界的研究方向也在不断 转向混合存储的方向15。 如在 mlc 类型的闪存阵列中加入若干片具备相对较高写 性能及稳定性的 slc 类型闪存, 或是在闪存阵列中加入若干片具备更高 io 速率的 dram,用来改善写操作的性能16。在需要处理批量数据,而且对性能的要求较 高的场合下,还可以结合交叉存储、多通道等技术来提升固态硬盘的整体性能17。 总体来看,目前的固态硬盘产品主要由主机接口、存储单元和控制单元等三 大部分构成18。根据不同的应用场合和应用需求,主机接口可以有不同的选择, 如 pata 接口、sata 接口、pci-e 接口或 ddr 接口等19。在某些特殊的应用场 合或针对某些特殊的应用需求,甚至可以设计个性化的接口协议。存储单元主要 由闪存阵列构成,根据需求的不同,阵列的组织方式也有多种,如采用位扩展方 式构建高速存储阵列、采用字扩展方式构建大容量存储阵列、采用位扩展与字扩 展相结合方式构建高速大容量存储阵列20。另外,如前所述,如果考虑到闪存芯 片本身在 io 性能方面的一些不足,还可以在阵列中加入其它类型的存储芯片,用 于构建更加稳定的存储阵列,如在 mlc 阵列中加入若干片 slc,这样构建一个访 问速度近似于 slc, 但价格却近似于 mlc 的存储阵列21。 对于这样的混合存储阵 列,在进行数据写入时需要考虑到两种闪存的物理特性。对于那些小文件或是需 要频繁更新写入的数据,可以考虑先写入到 slc 中,然后在适当的时机再写入到 mlc 中,而那些比较大的文件,且不需要频繁写入的数据则可以考虑直接写入到 mlc 中22,23。控制单元可细分为两个部分,一部分是需要嵌入式处理器参与的主 控制逻辑,另一部分是用来直接控制闪存芯片的控制逻辑闪存控制器。主控制 逻辑负责从主机接口接收地址、数据和命令,然后结合损耗均衡、交叉存储及多 通道等技术对接收到的地址、数据及命令作相应处理后发送给闪存控制器。而闪 存控制器接收从主控制逻辑发送来的命令,结合闪存对应命令的时序要求控制该 命令的执行24。 闪存控制器在固态硬盘中占据着相当重要的地位,这也决定了研究它的重要 3 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 性25。闪存控制器的性能直接影响到固态硬盘的整体性能,如何设计出低功耗、 大容量及高性能的、易于扩展的闪存控制器成为了不可回避的问题26。鉴于此, 本课题对闪存控制器进行研究,并采用 fpga 予以实现。 1.2 国内外概况国内外概况 随着固态存储的概念在存储领域的不断渗透,固态存储逐渐成为许多公司振 兴业务的代名词 27。其中固态硬盘作为固态存储的典型代表,更是风靡全球28。 国外几家著名 it 公司,如三星、东芝、美光等都正在致力于固态硬盘的研发,而 且像 ibm、英特尔、emc 等这样的 it 行业巨头也开始投入到固态硬盘的开发或应 用中 29。在国内也已经有不少公司及科研机构正致力于固态硬盘的研发,部分公 司也已经推出了自己的固态硬盘,如忆正、华赛、固捷等。 但从整个行业形势来看,固态硬盘的关键技术依旧主要掌握在国外几家大公 司手里,国内尚处于起步阶段 30,31。国内的 it 公司要想在固态硬盘市场中真正占 有一席之地,还有很长的路要走 32。 作为固态硬盘关键技术之一的闪存控制器是研究的一个重点,闪存控制器的 性能将直接影响到固态硬盘的整体性能 33。除了目前正在研发固态硬盘的厂家在 研究闪存控制器外,也有几家公司正专门致力于闪存控制器的研发,如 cast、 denali、marvell、quicklogic 等 34。 在学术界,也有不少科研机构正在致力于闪存控制器的研究,只是他们的研 究方向都主要集中在闪存存储管理方面,如损耗均衡、空间管理等问题。虽然损 耗均衡及空间管理等问题是闪存控制器必须考虑的问题,但这些问题基本上仅停 留在软件层面上。闪存控制器作为软件与硬件的结合体,仅仅考虑软件层面的问 题显然不够。尤其对于国内的 it 企业及科研机构,要想真正在固态存储存储领域 有所建树,必须全面掌握闪存控制器的设计技术,既包括理想的存储管理方案, 也包括高性能的闪存控制逻辑。 4 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1.3 课题主要研究工作课题主要研究工作 本课题主要研究闪存控制器,根据闪存的特性,运用 fpga 硬件设计方法实 现闪存控制器。具体工作内容如下: 1闪存控制器的设计 根据闪存特性分析的结果,将闪存控制器划分为多个功能模块并提出各个功 能模块的设计方法。 2闪存控制器的实现 根据对闪存控制器的功能划分,通过对各个模块的进一步分析,采用 fpga 技术实现各个功能模块。 3闪存控制器的测试与分析 将闪存控制器封装成 ip 核,并将该 ip 核应用于系统中,在完成驱动程序编 制后,把硬件及测试软件文件下载到评估板上,通过串口查看测试结果。根据调 试的需要,在设计中加入 chipscope 核,进行板级的验证。 上述的具体工作细节将在之后的章节中叙述。 1.4 本文组织结构本文组织结构 第一章主要介绍课题背景、固态硬盘及闪存控制器的研究现状、课题的主要 研究工作; 第二章从对闪存特性分析出发,提出闪存控制器的结构及闪存控制器内各个 功能模块的设计方法; 第三章对闪存控制器的各个功能模块采用 fpga 设计方法予以实现,并将实 现的闪存控制器封装成 ip 核,最后根据 ip 核实现底层驱动程序; 第四章提出闪存控制器的测试方法,根据测试方法完成对闪存控制器的测试, 并对测试的结果进行分析。 5 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 2 固态硬盘闪存控制器设计固态硬盘闪存控制器设计 本章首先对闪存芯片内部的逻辑结构、存储单元组织结构及时序等方面的特 征进行简要的分析,然后引入闪存控制器的总体结构及各功能模块的具体设计方 法。 2.1 闪存芯片特征分析闪存芯片特征分析 虽然大部分闪存生产厂家都遵从开放 nand 闪存接口(open nand flash interface,onfi)进行闪存芯片的设计,但各个厂家所推出的闪存还是存在一定的 差异,即便同一厂家的闪存,不同型号间也存在一定的差异35。本节以三星公司 的闪存芯片 k9lbg08u0m 为例对闪存芯片的特征进行分析。 2.1.1 k9lbg08u0m 芯片内部的逻辑结构芯片内部的逻辑结构 nand存储阵列 页寄存器 列地址buffer 锁存及译码 行地址buffer 锁存及译码 命令寄存器 内部控制逻辑re# ce# we# ale cle wp# 全局buffer i/o buffer i/o 锁存 输 出 驱 动 i/o07 a13a32 a0a12 命令 图 2.1 闪存内部逻辑结构36 k9lbg08u0m 闪存芯片在存储阵列的外部加入了必要的外围电路,如地址译 码电路、命令解析电路、信号驱动电路、内部控制电路以及相应的寄存器,如命 6 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 令寄存器、地址寄存器、数据寄存器(页寄存器)等,具体结构如图 2.1 所示。 2.1.2 k9lbg08u0m 芯片管脚介绍芯片管脚介绍 k9lbg08u0m 芯片虽然采用的是 tsop-48 标准封装, 但由于采用了总线复用 方式,所以实际使用的管脚数目比较少,这样可以方便将来芯片集成度的提升。 表 2.1 k9lbg08u0m 芯片管脚描述 k9lbg08u0m 芯片除了 8 根数据、命令、地址复用总线(i/o7:0) ,还有 5 根命令管脚(cle、ale、ce#、re#、we#) ,这 5 个管脚用来实现闪存内部操 作的控制。另外还有一个用于写保护的管脚 wp#和一个反馈芯片内部状态的 rb# 管脚,具体描述如表 2.1 所示。 2.1.3 k9lbg08u0m 芯片存储单元结构芯片存储单元结构 k9lbg08u0m 芯片内部包含 33,792mbit 的存储阵列, 按 1,048,576 行和 4,224 7 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 8 列进行排列。其中 128 列的备用空间从第 4,096 列开始,一直到第 4,223 列。 为了方便 i/o 缓冲与存储元间数据的传输,在芯片的内部设置有 4,224 字节大小的 数据寄存器(也称页寄存器) ,该数据寄存器跟存储元阵列相连接,在进行编程操 作时,先将数据写入到该寄存器内,然后再写入存储元,读操作也一样,先把从 存储元中读出的数据保存在该数据寄存器中,然后再发往芯片外部。闪存的存储 单元结构如图 2.2 所示。 数据区备用区 数据区备用区 数据区备用区 . 数据区备用区 2i个页 数据区备用区 数据区备用区 数据区备用区 . 数据区备用区 . 数据区备用区 数据区备用区 数据区备用区 . 数据区备用区 2j个块 图 2.2 闪存存储单元结构12 闪存的读操作和编程操作以页为单位, 一个页包含 4k 字节的数据区和 128 字 节的备用区,而擦除操作则以块为单位,一个块包含 128 个页。在对某个页进行 编程之前,必须先对该页所在的块进行擦除操作,且编程只能从低地址页向高地 址页顺序进行,不允许随机编程。 由于闪存的命令、数据和地址都通过 i/o 口输入到芯片内部,而 i/o 口只有一 个字节的宽度,一个字节宽度的地址显然无法作为存储单元的地址,所以闪存采 用串行输入的方式,即一次输入一个字节,连续输入多次。如读操作与编程操作 需要连接输入 5 个总线周期的地址。由于擦除操作是以块为单位的,所以只用输 入 3 个周期的地址。闪存的存储单元结构决定了它的地址包含列地址和行地址, 其中列地址是页内的偏移,而行地址则用来确定页的基地址,页基地址可以进一 步分为块基地址及块内偏移,具体结构如表 2.2 所示。 其中 c0c12 为页内偏移,p0p6 为块内偏移,b0b12 为块基地址,low 表 示必须为低电平。 存储阵列由 32 个存储元组成,这些存储元串联起来形成一个结构。这 32 个 8 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 存储元分别驻留在不同的页面中。一个块包含有两个结构,一个结构包含 32 个存 储元,每个存储元可以存储 2 个 bit 位。在一个块中总共有 2,162,688 个存储元。 编程和读操作以页为单位,而擦除操作则以块为单位。存储阵列包含有 4096 个独 立的 512kb 的可擦除块。 表 2.2 闪存存储单元地址结构36 i/o 0 i/o 1i/o 2i/o 3i/o 4i/o 5i/o 6 i/o 7 第一个总线周期 c0 c1 c2 c3 c4 c5 c6 c7 第二个总线周期 c8 c9 c10 c11 c12 low low low 第三个总线周期 p0 p1 p2 p3 p4 p5 p6 b0 第四个总线周期 b1 b2 b3 b4 b5 b6 b7 b8 第五个总线周期 b9 b10 b11 b12 low low low low 另外存储阵列被分配在 4 个 8gb 的存储平面上,每个平面包含 2,048 个块和 一个 4224 字节的页寄存器。这样做的目的是为了实现在不同平面上同时进行页面 编程或是擦除操作。 2.1.4 k9lbg08u0m 芯片基本操作芯片基本操作 表 2.3 k9lbg08u0m 基本操作命令 k9lbg08u0m 芯片可接受的基本操作命令有 6 个,包括页面读,页面编程, 块擦除,读 id 号,读状态及复位等。其中部分操作只需要一个总线周期的命令, 如读 id 号,复位及读状态等操作,而有些操作则需要两个总线周期的命令,这两 个总线周期的命令分别是操作建立命令和操作确认执行命令,如页面读,页面编 功能 建立命令 确认命令 芯片处于忙状态下是否可接受 页面读 00h 30h 否 读 id 号 90h 否 复位 ffh 是 页面编程 80h 10h 否 块擦除 60h d0h 否 读状态 70h 是 9 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 程及块擦除等,具体操作命令如表 2.3 所示。 1页面读操作 页面读操作先向芯片内部写入页面读建立命令 00h, 然后跟随 5 个总线周期的 地址(包括 2 个周期的列地址和 3 个周期的行地址) ,接着再跟一个总线周期的页 面读确认命令 30h。 图 2.3 页面读操作时序35 系统一旦上电,命令 00h 就将被锁存到芯片内部的命令寄存器中。因此,系 统上电后,芯片只有在接收到 5 个总线周期的地址及页面读确认命令 30h 后,由 5 个总线周期地址所确定的那个页中 4224 个字节的数据才会被传输到芯片内部的数 据寄存器中。在芯片外部通过探测 r/b#信号是否有效来确定该操作是否完成。由 于当芯片接收到页面读确认命令 30h 后,它会把 r/b#信号置为低电平,所以一旦 探测到 r/b#信号为高,则表明数据已经完全传送到数据寄存器中了,这时就可以 在 re#信号下降沿把芯片内部页寄存器的数据连续地读出,具体时序关系如图 2.3 所示。 2页面编程 闪存的编程操作以页为单位,在对某个页进行编程时,该页所在的块必须已 经执行擦除操作,且擦除后没有被使用过。闪存中,一个块内包含若干个页,在 对一个块内的页执行编程操作时,必须顺序地执行,具体时序关系如图 2.4 所示。 10 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 图 2.4 页面编程操作时序35 页面编程操作先向芯片内部写入页面编程初始化命令 80h, 然后跟随 5 个总线 周期的地址,之后就可以连续地写入若干个字节的数据到闪存内部的页寄存器中, 具体写入字节的多少由闪存页的大小决定。数据写入完成后,再写一个总线周期 的页面编程确认命令 10h。之后闪存便进入编程状态,即将页寄存器内的数据写入 到指定的存储单元。在此期间,r/b#信号会持续一段时间的低电平,当 r/b#信号 恢复到高电平后,即表明此次编程操作已经完成,之后通过执行读状态来判断此 次的编程操作是否成功。 3块擦除 闪存的擦除操作以块为单位,执行块擦除操作时先向芯片内部写入块擦除建 立命令 60h,然后跟随 3 个总线周期的地址(行地址) ,接着再跟一个总线周期的 块擦除确认命令 d0h。由于擦除操作以块为单位,所以它只需要块地址,即行地 址。闪存在接收到块擦除确认命令 d0h 后,开始执行擦除操作。在此期间 r/b#信 号会持续一段时间的低电平,当 r/b#信号恢复为高电平后,即此次的擦除操作已 经完成,之后通过执行读状态来判断此次的擦除操作是否成功,具体时序关系如 图 2.5 所示。 11 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 图 2.5 块擦除操作时序35 4读 id 号 图 2.6 读 id 号操作时序35 读 id 号先向芯片内部写入命令 90h,然后再写入一个总线周期的地址 00h, 之后在第一个总线周期读出一个厂商代号(三星公司的代号为 ech) ,在第二、第 三、 第四及第五个总线周期连续地读出 4 个 id 数据。 id 号分别是 d7h、 55h、 b6h、 78h(不同型号及不同厂家的 id 数据不完全一样) 。这 4 个总线周期的 id 数据都 代表特定的意义,其中第二个总线周期的 id 数据表示设备码(在此,表明 12 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 k9lbg08u0m 的设备码为 d7h) , 第三个总线周期的 id 数据表示芯片内部的特征, 第四总线周期的 id 数据表示存储单元页的大小及块的大小等特征,第五个总线周 期的 id 数据表示平面号及平面大小等特征,具体时序关系如图 2.6 所示。 5复位 复位操作先向芯片内部写入命令 ffh, 当芯片处于忙状态时, 如芯片正在执行 随机读,编程或是擦除等操作时,复位操作将中断这些操作,具体时序关系如图 2.7 所示。 图 2.7 复位操作时序35 如果在执行编程时接收到复位命令,则部分已经写入存储单元的数据将成为 无效数据,同样,如果在执行擦除操作时接收到复位命令,则此次的擦除操作也 将无效,下次在向相应块写入数据前还必须重新擦除一次。复位操作执行后,会 将芯片内部的命令寄存器清零,以便接收下一个命令。如果写保护信号 wp#为高 的话,状态寄存器也被置为 c0h。如果芯片正在执行复位操作,这时再来一个复位 命令的话,芯片会接受此命令。芯片在接收到复位命令后,r/b#会持续一段低电 平,表示芯片正在进行复位操作。 6读状态 闪存内部包含一个状态寄存器,通过读出它的内容来判断页面编程或块擦除 操作是否已经完成或是否成功完成。读状态操作先向芯片内部写入命令 70h,延迟 一段时间后就可以在读使能信号 re#的下降沿将状态信息读出来,具体时序关系 如图 2.8 所示。 13 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 图 2.8 读状态操作时序35 状态寄存器是一个 8bit 的寄存器,不同厂家的闪存芯片,状态寄存器内的各 个 bit 位代表的含义存在一定的差别。三星公司的闪存芯片的状态寄存器只用了其 中的 3 个 bit 位。第一个 bit 位表示页面编程或是块擦操作是否完成或是否成功完 成,为 0 表示已经完成或是成功完成,为 1 表示还没完成或是没能成功完成;第 7 个 bit 位表示闪存芯片是否正处于忙状态,如是否正在执行页面读、页面编程或是 块擦除操作,为 0 表示正处于忙状态,为 1 表示处于准备好状态;第 8bit 位表示 是否使用了写保护,为 0 表示没有使用写保护,为 1 表示使用了写保护。 2.2 闪存控制器结构闪存控制器结构 从结构上细分,闪存控制器包括闪存控制器接口、闪存控制逻辑、闪存阵列 接口及必要的寄存器和缓冲区。其中闪存控制逻辑又可细分为命令控制逻辑和同 步逻辑。命令控制逻辑主要处理闪存可接受的各种命令,根据各种命令的时序特 征,参照同步逻辑指导各种命令的执行。同步逻辑根据命令控制逻辑中设置的控 制向量寄存器的内容,参照主时钟驱动闪存所需要的控制信号,总体结构如图 2.8 所示。 14 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 nand闪存控制逻辑 命令控制逻辑 同步逻辑 缓冲区a缓冲区b 寄存器组 clk addrin datain ce# we# oe# reset# r/b# dataout ip核接口(ipif) 嵌入式处理器本地总线 nand闪存控制器接口 nand闪存阵列接口 nand闪存阵列 r/b# i/o总线 控制信号 r/b# i/o总线 控制信号 r/b# i/o总线 控制信号 图 2.8 闪存控制器结构 2.3 闪存阵列设计闪存阵列设计 考虑到单颗闪存芯片在容量及访问速率方面的限制,要构建高速大容量的存 储设备,必须构建闪存阵列。根据需求的不同,阵列的构建方式可以有多种,如 采用位扩展方式、字扩展方式或是字位扩展方式。另外,如果考虑到闪存芯片本 身存在的一些不足,还可以在阵列中加入其它类型的存储芯片,用于构建更加稳 定、性能更高的存储阵列。如 mlc 类型的闪存虽然拥有低廉的价格,较高的存储 密度,但它相对 slc 类型的闪存来说,存在写入速度慢、耗电多、寿命短等缺点, 所以可以考虑在 mlc 类型的闪存阵列中加入一片 slc 类型的闪存芯片,这样只 要采用合适的管理,就可以构建一个访问速度近似于 slc 类型的闪存阵列,但价 格却近似于 mlc 类型的闪存阵列。 对于这样的混合存储阵列,在进行数据写入时需要考虑到两种闪存的物理特 性。对于小文件或是需要频繁更新写入的数据,可以考虑先写入到 slc 类型的闪 存中,然后在适当的时机再写入到 mlc 类型的闪存中,而那些比较大的文件,且 不需要频繁写入的数据则可以考虑直接写入到 mlc 类型的闪存中14。 本设计采用 字位方式构建闪存阵列,在阵列中加入若干片 slc 类型的闪存以提高闪存阵列的 整体性能,阵列的构建如图 2.9 所示。 15 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 闪 存 阵 列 接 口 slcslcslcslc 24:3116:238:150:732 i/o总线 片选信号 地址、命令锁存信号 及读/写使能信号 准备好/忙状态信号 mlcmlcmlcmlc 24:3116:238:150:732 i/o总线 片选信号 地址、命令锁存信号 及读/写使能信号 准备好/忙状态信号 mlcmlcmlcmlc 24:3116:238:150:732 i/o总线 片选信号 地址、命令锁存信号 及读/写使能信号 准备好/忙状态信号 mlcmlcmlcmlc 24:3116:238:150:732 i/o总线 片选信号 地址、命令锁存信号 及读/写使能信号 准备好/忙状态信号 通 道 0 通 道 1 通 道 2 通 道 3 图 2.9 闪存阵列 闪存阵列由行和列构成,同一行上所有的闪存芯片共用控制信号线(地址锁 存信号 ale、命令锁存信号 cle、读使能信号 re#、写使能信号 we#、片选信号 ce#)及状态反馈线 r/b#。而 32 位的数据线则以字节为单位分配给同一行的 4 颗 闪存芯片。闪存阵列的第一行全为 slc 闪存芯片,从第二行开始全部为 mlc 闪 存芯片。 这样构建的闪存阵列的好处是,一方面把原本 8 位的闪存接口扩展为 32 位的 阵列接口,在访问闪存时,可以同时对一行上的 4 颗闪存芯片进行访问,从而提 升闪存的访问速率;另一方面,由于各行上的闪存是独立的,因此可以多通道技 16 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 术,实现对各行闪存芯片的同时访问。 选择将第一行的闪存全部换为 slc,而不是在整个闪存阵列中只加入一片 slc,这是考虑到在进行了位扩展以后,每次同时对一行上的 4 颗闪存进行访问, 如果只用一颗 slc,那么该行上既有 slc,也有 mlc,这就给该行上的访问增加 了难度。 2.4 同步逻辑设计同步逻辑设计 为了便于驱动闪存芯片内部所需要的控制信号,在闪存控制器内部加入了一 个同步单元。该单元有一个周期为 10ns 的时钟输入,每 6 个时钟周期为一个总线 周期,即总线周期为 60ns,不同的芯片总线周期可以不一样。 wait switch2switch1 done enableswitch=0 enableswitch=1 delaycnt3 delaycnt3 repcntrepsum delaycnt5 delaycntrepsum delaycnt5 enableswitch=0 enableswitch=1 图 2.10 同步逻辑状态迁移图 一个总线周期分为 40ns 和 20ns 两个部分, 在这两部分内部分别用不同的控制 向量寄存器(control vector register,ctrlvecreg)来驱动闪存芯片内部所需要的 控制信号,包括芯片使能信号 ce#、读使能信号 re#、写使能信号 we#、命令锁 存信号 cle 及地址锁存信号 ale。 为了设计的方便,在同步逻辑中引入一个状态机,状态迁移图如图 2.10 所示。 17 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 状态迁移图包含 4 个状态,包括等待状态向前推进条件 enableswitch 的等待状态 wait,维持用控制向量寄存器 1(ctrlvecreg1)来驱动闪存所需控制信号的状态 switch1,维持用控制向量寄存器 2(ctrlvecreg2)来驱动闪存所需控制信号的状 态 switch2 以及状态完成并打算回到等待状态 wait 的状态 done。 状态迁移图中 的迁移条件 delaycnt 由一个专门的延时计数器产生。 在 wait 状态下对该计数器 进行复位,在 enableswitch 条件有效时进入 switch1 状态,等待 delaycnt 计数到 3 后进入 switch2 状态,到此状态迁移图已经经历了 4 个时钟周期,在这 4 个时钟 周期内都用 ctrlvecreg1 来驱动闪存所需的控制信号。在进入 switch2 状态后,决 定该状态迁移的条件除了 delaycnt 外, 还加入 repcnt 条件, repcnt 条件由重 复计数器产生,它的目的是对地址、数据周期进行计数,而具体需要执行的周期 数 repsum 在命令控制逻辑内部进行设置。最后在进入 done 状态后,就表示状 态机一次运行结束。 2.5 命令控制逻辑设计命令控制逻辑设计 idle page read block erase page program readid read status reset 接收到页 面读命令 页面读 结束 接收到页面 编程命令 块擦除 结束 接收到块 擦命令 页面编 程结束 读id结束 接收到读 id命令 接收到读 状态命令 读状态 结束 接收到 复位命令 复位结束 图 2.11 命令状态迁移图 闪存可接受的基本操作有页面读(readpage) ,页面编程(pageprogram) ,块 擦除(blockerase) ,复位闪存(reset) ,读 id(readid) ,读状态(readstatus) 。 18 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 在控制逻辑内部引入一个状态机来控制这些操作的执行,状态迁移图如图 2.11 所 示,系统启动后状态机处于 idle 状态,然后根据接收到的不同命令进入不同的状 态,命令执行完成后又回到 idle 状态,等待接收处理其它的命令。 2.5.12.5.1 页面读逻辑设计 页面读逻辑设计 pageread enablesw pageread addr2 pageread addr3 pageread cmd30h waitrb tolow waitrb tohigh pageread data 页面读建立命 令发送完成 正在发送页面 读建立命令 准备发送页面 读列地址 正在发送页 面读列地址 页面读列地 址发送完成 准备发送页面 读行地址 页面读行地 址发送完成 正在发送页 面读行地址 准备发送页面 读确认命令 页面读确认命 令发送完成 正在发送页面 读确认命令 rb#信号尚 处于高电平 rb#信号变 为低电平 rb#信号尚处 于低电平 rb#信号变 为高电平 正在从页寄存 器中读数据 图 2.12 页面读操作状态迁移图 当系统接收到读命令,且没有其它命令正在执行时,系统将从 idle 状态进入页面读状态 (pageread) ,具体操作过程如图 2.12 所示的状态迁移图。在 pageread 状态下,向闪存发送 页面读建立命令 00h,在完成此命令的锁存后进入页面读列地址状态(pagereadaddr2) 。在 pagereadaddr2 状态下,连续向闪存发送两个总线周期的列地址,在分别完成两个总线周期列 地址的锁存后进入页面读行地址状态(pagereadaddr3) 。在 pagereadaddr3 状态下,连续向 19 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 闪存发送三个总线周期的行地址,在分别完成三个总线周期行地址的锁存后进入页面读确认 状态(pagereadcmd30h) 。在 pagereadcmd30h 状态下,向闪存发送页面读确认命令 30h, 在完成该命令锁存后等待闪存将数据从指定的存储单元取到页寄存器中。在此期间,r/b#信 号会持续一段时间的低电平。当 r/b#信号恢复为高电平后,即表明指定存储单元的数据已经 全部放到页寄存器中,此时控制逻辑自动进入页面读数据状态(pagereaddata) 。在 pagereaddata 状态下,连续地从页寄存器中取数据放到缓冲区中,取数据的总线周期数由闪 存页面大小决定(缓冲区的大小和闪存页面大小一致) ,在完成所有数据的取操作后,即表明 此次读操作完成。 2.5.22.5.2 页面编程逻辑设计 页面编程逻辑设计 page program enablesw pageprogram addr2 pageprogram addr3 pageprogram data waitrb tolow waitrb tohigh 页面编程建立 命令发送完成 正在发送页面 编程建立命令 准备发送页面 编程列地址 正在发送页面 编程列地址 页面编程列地 址发送完成 准备发送页面 编程行地址 页面编程行地 址发送完成 正在发送页 面读行地址 准备发送页面 编程确认命令 正在发送页面 编程确认命令 rb#信号尚处 于高电平 rb#信号变 为低电平 rb#信号尚 处于低电平 rb#信号变 为高电平 pageprogram cmd10h 准备发 送数据 数据发 送完成 正在发 送数据 read status 页面编程确认 命令发送完成 图 2.13 页面编程操作状态迁移图 当控制逻辑接收到页面编程命令,且没有其它命令正在执行时,控制逻辑将 20 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 自动进入页面编程开始状态(pageprogram) ,具体操作过程如图 2.13 所示的状态 迁移图。在 pageprogram 状态下,向闪存发送页面编程开始命令 80h,在完成此命 令的锁存后进入页面编程列地址状态(pageprogramaddr2) 。在 pageprogramaddr2 状态下,连续向闪存发送两个总线周期的列地址,在分别完成两个总线周期列地 址的锁存后进入页面编程行地址状态(pageprogramaddr3) 。在 pageprogramaddr3 状态下,连续向闪存发送三个总线周期的行地址,在分别完成三个总线周期行地 址的锁存后进入页面编程写数据状态(pageprogramdata) 。在 pageprogramdata 状态下,连续地从缓冲区中取数据并发送到闪存,发送的总线周期数由闪存页面 大小决定(缓冲区的大小和闪存页面大小一致) ,在完成所有数据的锁存后进入页 面编程确认状态(pageprogramcmd10h) 。在 pageprogramcmd10h 状态下,向闪 存发送页面编程确认命令 10h, 在完成该命令锁存后等待闪存将数据从页寄存器写 到指定的存储单元。在此期间,r/b#信号有持续一段时间的低电平。当 r/b#信号 恢复为高电平后,即表明此次编程操作已经完成。最后还要执行读状态操作,通 过得到的状态信息可以判断此次编程操作是否成功执行。 2.5.32.5.3 块擦除逻辑设计 块擦除逻辑设计 当控制逻辑接收到块擦除命令,且没有其它命令正在执行时,控制逻辑将自 动进入块擦除开始状态 (blockerase) , 具体操作过程如图 2.14 所示的状态迁移图。 在 blockerase 状态下, 向闪存发送块擦除开始命令 60h, 在完成此命令的锁存后进 入块擦除行地址状态(blockeraseaddr3) 。在 blockeraseaddr3 状态下,连续向闪 存发送三个总线周期的行地址,在分别完成三个总线周期行地址的锁存后进入块 擦除确认状态(blockerasecmdd0h) 。在 blockerasecmdd0h 状态下,向闪存发送 块擦除确认命令 d0h,在完成该命令锁存后等待闪存执行块擦操作。在此期间, r/b#信号有持续一段时间的低电平。当 r/b#信号恢复为高电平后,即表明此次擦 除操作已经完成。最后还要执行读状态操作,通过得到的状态信息可以判断此次 擦除操作是否成功执行。 21 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 block erase enablesw blockerase addr3 blockerase cmdd0 waitrb tolow waitrb tohigh 块擦除命令发 送完成 正在发送块擦 除命令 准备发送块擦 除行地址 正在发送块擦 除行地址 块擦除行地址 发送完成 准备发送块擦 除确认命令 rb#信号尚处 于低电平 rb#信号变 为低电平 rb#信号尚 处于高电平 rb#信号变 为高电平 read status 正在发送块擦 除确认命令 块擦除确认命 令发送完成 图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育的培训反思课件
- 废弃房屋改造工程方案(3篇)
- 2025年度医护人员针对性普法知识考试题库及答案(共十套)
- 冬泳基地修缮工程方案(3篇)
- 牧场疫情防疫安全培训课件
- 农业产业强镇资金申请政策与农业产业链延伸报告
- 2025年工业互联网平台数据备份恢复策略的产业链创新驱动模式
- 高考加油信范本
- 社交媒体营销协议分享
- 社区预算推广方案设计
- 2025年《临床输血技术规范》
- 2024年内蒙古中国神华煤制油化工有限公司招聘真题
- 减糖与健康口腔课件
- 新时代学校思想政治工作评价机制研究
- 2025秋统编版(2024)道德与法治二年级上册第四单元《第16课 祖国 我为您自豪》教学设计
- 消防维保质量管理及保证措施
- 2025年上海市(秋季)高考语文真题详解
- 品牌沙龙活动策划方案
- 子宫肌瘤的治疗与护理
- 传统文化公司管理制度
- 小学生钻石画社团课件
评论
0/150
提交评论