I/O 0 I/O 1 I/O 2 I/O 3 I/O 4 I/O 5 I/O 6 I/O 7
1st Cycle A0 A1 A2 A3 A4 A5 A6 A7
2nd Cycle A9 A10 A11 A12 A13 A14 A15 A16
3rd Cycle A17 A18 A19 A20 A21 A22 A23 A24
4th Cycle A25 * * * * * * *
NOTE : Column Address : Starting Address of the Register.
00h Command(Read) : Defines the starting address of the 1st half of the register.
01h Command(Read) : Defines the starting address of the 2nd half of the register.
* A8 is set to "Low" or "High" by the 00h or 01h Command.
* L must be set to "Low".
* The device ignores any additional input of address cycles than reguired.
寻址需要9位的列地址(512=2^9,页内的偏移量)5位页地址(32=2^5)和12位的块地址(4096=2^12)共26位地址线(64=2^26). 通过8位的I/O端口传送地址
前辈们说说1st Cycle 2nd Cycle 3nd Cycle 4nd Cycle这四个周期怎么寻得址??
有没什么问题吗, 25位的地址经过四次送给FALSH,然后再拼起来(其实不是,但你可以这么想)。
在写地址期间,每个#WE代表写一次(8位),NAND从数据线(8位)获得一个字节。
1st-4th,4个周期,就是4次#WE,nand获得4个字节,32bit,最高位为0,其余25位有效。
NandFlash有大Block和小Block之分,从楼主列出的寻址方式应该是小block的Nand,即1Block = 32Page = 32 * 512 = 16K,一个Page512Byte(大Block的Nand是1Block = 64Page = 64 * 2K = 128K),Nand的寻址方式通常是通过Row地址(Page)和Column地址(offset in one Page)方式来寻址的,这样就很明了,1st:A0 -- A7(+ Command 00 or 01)表示Page内的偏移地址,2st-4st:A9 -- A25(2^17,再根据512Bytes/Page,该NandFlash的大小应该是2^17 * 512 = 64M)表示操作的地址在哪个Page内,作为访问NandFlash的高位地址。因为该NandFlash采用Byte操作,所以要分成4个cycle来寻址:-)
明白了
跟Block没关
Nand的寻址方式通常是通过Row地址(Page)和Column地址(offset in one Page)方式来寻址的
谢谢!!