zoukankan      html  css  js  c++  java
  • 如何在Qsys 中定制Nand_Flash软核(学习)

      一、Nand_Flash工作原理

           Nand flash芯片型号为Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理。8个I/O
    引脚充当数据、地址、命令的复用端口。
        芯片内部存储布局及存储操作特点:
        一片Nand flash为一个设备(device), 其数据存储分层为:
        1 (Device) = 4096 (Blocks)
        1 (Block) -= 32   (Pages/Rows) 页与行是相同的意思,叫法不一样
        1 (Page)   = 528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)
          在每一页中,最后16个字节(又称OOB)用于Nand Flash命令执行完后设置状态用,剩余512个字节又
    分为前半部分和后半部分。可以通过Nand Flash命令00h/01h/50h分别对前半部、后半部、OOB进行定位通过
    Nand Flash内置的指针指向各自的首地址。
        存储操作特点:
        1. 擦除操作的最小单位是块。
        2. Nand Flash芯片每一位(bit)只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前要一定将相应块擦除(擦除即将相应块得位全部变为1).
        3. OOB部分的第六字节(即517字节)标志是否是坏块,如果不是坏块该值为FF,否则为坏块。(转载注:应该是每块的第一页的第六个字节。)
        4. 除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码

        NAND FLASH 是一种大容量、高速的存储技术。

    其接口较为简单,如果没有专门的nand flash控制器,甚至可以用io口与之对接。

    其编程也相对简单,只要了解如下关键概念就可以:

    1.nand flash内部有管理单元,管理单元负责对nand flash的实际单元的操作。

    2.我们使用nand flash其实只需要和管理单元通信即可,主要是发送相关的命令给管理单元。

    3.类似磁盘的管理制度,nand flash也是由若干bit构成一个page,若干page构成一个block,若干block构成一个plane,我们在操作的时候往往以page为基本的操作对象。

    4.nand flashpage单元有可能是有错误的,因此需要对存入的数据加上错误识别,以辨别某个page单元是坏的。请注意,一个page单元往往最多仅有两个bit错误,所以对于错误识别算法要求不是很高,只要能识别12bit的算法即可。使用阵列奇偶校验很容易实现此算法。nand flash控制器其实只是集成了相关的控制时序,在使用时通过操作nand flash控制器的相关寄存器就可以实现相应的时序,但很多芯片本身不带nand flash控制器,此时可以用io口与之对接,用软件来模拟硬件时序也可以操作nand flash。此处的关键是从nand flash的数据手册上得到时序图。进而确定软件的设计。在此, 以Samsung公司的K9F1208 为例来探讨。K9F1208 是以page()为基本的操作单位的,一个page包含512 byte. 16byte的校验码。32page构成一个block1kblock构成一个plane.整个K9F1208 包含4plane,每个plane可以支持1个读写操作,因此最多可以有4个并发的读写操作.

  • 相关阅读:
    JavaScript跨域总结与解决办法
    css IFC 与 BFC分析
    JavaScript Note
    Knowledge Architecture
    BSP
    Olympiad
    Software Engineering
    Assembly Language
    Algorithm
    Data Structure
  • 原文地址:https://www.cnblogs.com/haimeng2010/p/2609713.html
Copyright © 2011-2022 走看看