满足ONFI2.1标准要求的NANDFlash控制器的设计及仿真研究

网友投稿 326 2022-11-20

满足ONFI2.1标准要求的NANDFlash控制器的设计及仿真研究

引言

由于其特殊的内部结构,NAND Flash的操作方式与NOR Flash不太一样,不支持随机字节访问,其读、写操作均要以页面(Page)为单位进行,同一页面在未擦除前不允许进行多次写操作;而擦除操作必须以块(Block)为单位进行。因此,需要针对这一特性设计专用的控制器来完成各种操作。

1 ONFI标准

2 控制器结构

3 同步模式设计

3.1 同步接口设计

DQ和DQS均为双向驱动信号,当进行写操作时,由控制器进行驱动,当进行读操作时,由Flash芯片内部进行驱动,本文双向信号采用图6方法实现,该结构需要置于整个设计的顶层,从而利于综合的进行。

DQ与DQS信号间的相位关系对DDR接口非常重要。当对NAND Flash进行写操作时,控制器必须产生一个与DQ数据信号中心对齐的DQS信号,所用发送端口电路如图7所示,CLKS为同步接口模式下系统的整体时钟。通过多路选择器实现16bit数据DATA_O转两组8bit数据DQ_O输出。CL-KS为高时对应DATA_O的高8bit数据,CLKS为低时对应DATA_O的低8bit数据,最后将CLKS进行移相作为DQS_O选通信号输出。

3.2 异步时钟域处理

4KB×(1-100MB/s÷200MB/s)=2KB (1)

这样大的FIFO将带来较大的硬件代价,考虑到NAND Flash的读写操作是可以暂停的,故本文将FIFO深度设为128,宽度为16bit。

如何判断异步FIFO的空满状态也是设计FIFO的难点。本文所使用的FIFO采用图10的结构,FIFO Memory模块采用寄存器组作为核心存储,这是由于本文应用环境下可能经常出现读空或写满的情况,这样会频繁遇到读写同一个地址,因此不适合用双端口SRAM作为FIFO的核心存储;Wptr&Full模块用于产生写指针和满标志;Rptr&Empty模块用于产生读指针和读标志;此外还有两组同步器分别将写指针同步到读时钟域和读指针同步到写时钟域。跨时钟传送的读写指针都事先转换成格雷码,以避免亚稳态问题及提高可靠性。

3.3 异步模式切换到同步模式

(1)发出SET FEATURES(EFh)命令;

(2)将地址设为01h;

(4)P2到P3均写入00h;

(6)当tITC结束后R/B#拉高,同步接口开启。在CE#使能之前,控制器需要给出CLK。

注意到异步接口转换到同步接口模式下,需要启动NAND Flash所需的CLK,因此本文将SET FEATURES操作拆分成两部分,以启动CLK为界进行分割,两部分操作中间需产生中断,并告诉CPU此时需要启动CLK。同步模式不同Timing Mode之间的切换操作和上述类似,只不过需要将启动CLK的操作改为转变CLK频率的操作。

4 仿真与综合

由综合结果可知,最高工作频率达到了118MHz,满足ONFI标准100MHz频率、200MB/s的最快数据传输速率的要求,并有超过15%的裕量。因此,本文设计的NANDFlash控制器具有一定的实用价值。

5 结束语

本文设计了一种满足ONFI2.1标准要求的NANDFlash控制器,并通过了功能仿真和综合。该控制器既可以在传统的异步模式下工作,也可以在同步模式下工作,并达到了ONFI标准要求的200MB/s的数据读写速率。达到了最初的设计目的,对其他的NAND Flash控制器设计具有参考意义。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hadoop:什么是Hadoop??
下一篇:Hadoop:Hadoop的安装
相关文章

 发表评论

暂时没有评论,来抢沙发吧~