Nand Flash 地址数据的确定
NAND Flash使用8位数据线,同时作为地址线,命令线,数据线复用。类似于平时使用的点阵液晶显示器的操作方式。这里作为学习的记录,说一下nand flash 的地址的确定方式。nand flash 的内部分为 Block(块)、Page(页). 其中 一块nand flash 包含若干 Block,每个Block里包含若干Page.页是nand 的最小操作单元。 一下图片显示的是三星16Gbit的Nand Flash ?K9GAG08U0E 的结构图: 如图中所示,这款flash 共有2076个block(块),每个block有128个Page(页),每个页包含(8k+436)Bytes的数据,其中8k是数据区,436B是用作保存效验等一些特定用途的数据。由图中表格可以看出定位nand中的一个位置的时候需要知道是在哪个block,哪个page中的哪个字节就可以了。 首先我们把图中的数据列一下: ?1 Page ?= (8K +436) Bytes = 8628 Byte = 0x21B4 Bytes = ?PS ?// 这个用PS代指页的字节大小 1 Block ?= 128 Pages = (1M + 54.5K) Bytes = 128 PS 假如我们需要访问第 5 Block ,第2页的第1077个字节。 ? ? ?(这里的block 、page 和页内地址均为从0开始计数) 当前如果我们知道具体的Block、Page 和页内位置, ?我们可以直接将 block page 和页中的位置 三个参数组织后,分别传递给页地址 A14-A20,A21-A32,A0-A13. 同时我们也可以根据给出的地址的绝对值计算出相应的block page 和页内的位置。 上述的绝对位置用如果公式计算: ? ? ? 绝对地址 SUM = ?块大小 * 块 + 页大小 * 页 + 页中的位置 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 128PS*5 + PS *2 + 1077 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= (128*5 + 2)PS + 1077 ?= ?5540253 = 0x 所以绝对地址必定为页大小的整数倍 + 在页内的位置大小。 确定 Column Address :页大小为0x21B4 (14位),即绝对地址 低14位为Column Address ?A0-A13。 A0-A13 = SUM%PS = ?1077 = 0x435 ? ?A0-A7 = 0x35 ?, A8-A13 = 0x4 & (0x3f) = 0x4 低8位为第一个发送周期发送,剩余6位作为第二周期的高六位发送,另外高两位为低电平0。 确定Page Address: 每个Block 有128(0x80)个页。即值为 0-0x7F,占7个bit位。即 A14 - A20. A14-A20 = (SUM / PS )%128 = 2 即SUm 的除去 上面的0x21B3所占用的bit位,接着的7个bit位应该表示的就是 Page Address 。 A21 - A32 = (SUM /PS ) /128 = 5. 所以第三周期发送的值为 ?(2 &0x7F)| ((5&0x1)<<7) 第四周期发送( 5>>1) & 0xFF 第五周期发送 ? (5 >>8) &0x7 ? ?| ?( A33<<3) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |