s3c2440裸机-nandflash编程(二. nand控制器和nand访问时序)

发布时间:2023-08-02  

一.Steppingstone

我们知道nand没有独立地址线,cpu无法直接访问nand上的指令,所以nand不能片上执行。那么为何程序还能支持nand启动的呢?


为了支持NAND启动,S3C2440A配备了一个称为“ Steppingstone”的内部SRAM缓冲区,容量为4K。 开机时,Nandflash中的前4K数据将被加载到Steppingstone中,而引导代码将被加载到SRAM中将被执行,如下图所示:

我们知道s3c2440支持2种boot方式,nand或者nor,那么需要配置OM引脚来设置引导方式,如下图:


内存控制器的地址映射表如下:

我们得知OM1接地,OM0接了一个开关SW2,那么我们的OM0的电平状态由SW2开关决定:


当SW2闭合,OM0=1, OM[1:0]=01, 0地址对应nor,那么从nor启动。

当SW2断开,OM0=0, OM[1:0]=00, 0地址对应bootSRAM(4K),那么0地址对应该SRAM, 那么从nand启动。

二.引脚配置

当上电启动时,NAND Flash 控制器将通过下面的引脚配置来获取连接的 NAND Flash 的信息。


NCON:NAND Flash 存储器选择(普通/先进)


0:普通 NAND Flash(256 字或 512 字节页大小,3 或 4 个地址周期)

1:先进 NAND Flash(1K 字或 2K 字节页大小,4 或 5 个地址周期)

GPG13:NAND Flash 存储器page size选择


0:页=256 字(NCON=0)或页=1K 字(NCON=1)

1:页=512 字节(NCON=0)或页=2K 字节(NCON=1)

GPG14:NAND Flash 存储器地址周期选择


0:3 个地址周期(NCON=0)或 4 个地址周期(NCON=1)

1:4 个地址周期(NCON=0)或 5 个地址周期(NCON=1)

GPG15:NAND Flash 存储器总线宽度选择


0:8 位宽度

1:16 位宽度

如下表所示更直观:

三.nand控制器时序配置(nand访问原理)

nandflash访问时需要遵循一定的时序才能完成命令、地址、数据的发送。nandflash有8bit位宽数据总线,那么没有地址线它是怎么和cpu通信的呢?


  1.nandflash是DATA0~DATA7上既传输数据,又传输地址,又传输命令;

①当ALE为高电平时传输的是地址;

②当CLE为高电平时传输的是命令;

③当ALE,CLE都为低电平表示传输的是数据


  2. 先发送片选CS和WE/RE信号

  3. 再发送CLE

  4. 再发送ALE

  5. 最后发送数据


下面分别介绍命令、地址、数据的发送过程。

1.命令/地址锁存时序

1)首先看时钟,nand控制器的时钟源采用的是HCLK, 也就是AHB高速总线模式,可以参考s3c2440裸机-时钟编程(一、2440时钟体系介绍)那么HCLK=100Mhz, T=1/HCLK=10ns。

2)从上图可知命令、地址锁存的时序是一样的,复用一个时序图,当到达①的位置时,CLE/ALE=0;

3)当到达位置②时,CLE/ALE=1,表示命令/地址信号拉高,命令/地址开始使能,然后往数据总线DATA上放入命令或地址;

4)经过TACLS时间,到达位置③时,拉低nWE引脚,这时数据总线DATA上的命令/地址开始被锁存,锁存需要一定的时间,所以经过TWRPH0时间后,数据总线DATA上的命令/地址锁存完成;

5)到达位置④,此时释放nWE信号,nWE=1,这时还需要经过TWRPH1时间后,释放CLE/ALE,此时一个完整的命令/地址锁存过程完成。

上面分析了命令/地址的锁存时序过程,下面详细解释下上面几个时间参数的含义:

TACLS:CLE/ALE使能信号发送多久后才可以发送nWE信号
TWRPH0:nWE信号发送多久后数据(commamd/addr)才会被锁存成功
TWRPH1:nWE信号释放多久后才能释放CLE/ALE

那么这些时间参数要怎么配置呢?

这个需要根据我们实际使用的具体nandflash型号和性能来配置我们的nand控制器。我们以K9F2G08U0C这款nandflash为例进行讲解,手册上命令和地址锁存周期如下:

和nand控制器的命令/地址锁存时序图对比发现:

TACLS = max(tCLS,tALS) - tWP;TWRPH0 = tWP;TWRPH0 = max(tCLH,tALH);

我们知道2440 nand控制器把命令、地址锁存时序复用成了一个时序图,其实命令和地址锁存时序参数基本一致,只不过发命令只需要一个周期就OK了,发地址需要5个时钟周期,为什么?

你想,命令多简单,无非就是读写擦,像我们这款nand数据位宽8bit,一个周期绰绰有余。但地址就不一样了,比如此款nandflash容量256M = 2^28,那么需要28根数据线来传输才能一个周期传输完,但这款nandflash的数据总线位宽只有8bit, 只有8根数据线,所以需要把地址拆分成多次发送,先发送col地址,再发送row地址,此款nandflash是用了5个周期发送地址。

2.数据锁存时序(写数据)

从前面的命令地址锁存时序图中我们得知,CLE信号拉高,ALE信号拉低时,表示发送的命令;当CLE信号拉低,ALE信号拉高时,表示发送的地址;那么当CLE、ALE都拉低时,表示发送的数据,如下图,nCE, CLE, ALE都拉低了,表示传输的是数据。

1)当到达①时,nWE还是高电平,写使能没有开启;

2)当到达②,③时,那么经过了tWP时间(TDS时间),数据开始被锁存;

3)到达④,经过tDH时间,数据锁存完成;

4)到达⑤,也就是数据开始锁存后再过了tWH时间后释放nWE信号;

5)重复②③④⑤过程。

根据上面这三个图(手册上的命令、地址、数据锁存时序图),下面详细解释各个时间参数的含义:

3.顺序访问周期(读数据)

1)①处,表示要过tRR后才能发送读使能信号nRE进行访问(上一次的访问结束后,需要等待ready状态稳定后才可以进行下一次访问);

2)当到达②,需要经过rREA时间后nRE信号才有效(待nRE稳定);

3)当到达③,DATA总线上的读取被读取;

4)当到达④,nRE释放tREH时间后才允许下一次读使能

我们看到连续顺序访问时,单次访问的时间为tRC,那么这些时间参数的值也可以从K9F2G08U0C datasheet中找到:为25ns


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>