新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 大容量NAND FALSH的原理及應用

        大容量NAND FALSH的原理及應用

        作者: 時間:2018-07-25 來源:網絡 收藏

        1. 引言

        本文引用地址:http://www.104case.com/article/201807/383930.htm

        NAND FLASH被廣泛應用于電子系統中作為數據存儲。在各種高端電子系統中現場可編程門陣列(FPGA)已被廣泛應用。FPGA靈活的硬件邏輯能實現對NAND FLASH的讀寫操作。本文中闡述了一種基于NIOS II 軟核的NAND FLASH的驅動方法。

        2. VDNF2T16VP193EE4V25簡介

        歐比特公司的VDNF2T16VP193EE4V25是一款容量為2Tb、位寬為16位的NAND FLASH,其內部由8片基片拓撲而成,其拓撲結構如下:

        圖1 VD1D8G08VS66EE8T7B拓撲結構

        其主要特性如下:

        總容量2Tb;

        位寬:16位;

        SLC;

        兼容ONFI2.2;

        封裝:PGA193;

        電源:+3.3V(VCC)、+1.8V(VCCQ)。

        3. VDNF2T16VP193EE4V25的控制器設計

        大容量NAND FLASH控制器設計包括一個IP核設計。其基于NIOS II 的AVALON總線。AVALON總線能兼容大部分存儲器接口,IP核將AVALON總線時序轉接至NAND FLASH,從而對NAND FLASH進行讀寫操作。

        IP邏輯主要有片選信號產生、ALE、CLE、RE、WE等控制信號的轉接。其中RE、WE信號可采用AVALON總線的RE、WE信號;CLE、ALE采用總線地址的低2位進行控制;片選數量較多可依據AVALON總線的byteen信號進行譯碼產生。

        圖2 控制器功能框圖

        //寫信號

        assign nand_wr_n = {avalon_wr_n,avalon_wr_n,avalon_wr_n,avalon_wr_n};

        //讀信號

        assign nand_rd_n = {avalon_rd_n,avalon_rd_n,avalon_rd_n,avalon_rd_n};

        //ALE信號,采用地址0

        assign nand_ale = {avalon_add[0],avalon_add[0]};

        //CLE信號,采用地址1

        assign nand_cle = {avalon_add[1],avalon_add[1]};

        //片選信號

        assign nand_cs_n[0] = temcs[0]|avalon_byteen_n[0];

        assign nand_cs_n[1] = temcs[0]|avalon_byteen_n[1];

        ……

        IP核設計完成后采用QSYS進行硬件平臺搭建,QSYS系統軟核對外引出信號有EPCS、UART、NAND FLASH接口,在Quartus II建立原理圖塊進行編譯產生硬件信息。

        采用Nios II Software Build Tools for Eclipse 對QSYS進行軟件編程可實現對NAND FLASH的驅動。

        //NAND FLASH數據寄存器地址定義

        #define NandFlashDataReg0 (VDNF2T16_V1_0_BASE)

        //NAND FLASH ALE寄存器地址定義

        #define NandFlashAddReg0 (VDNF2T16_V1_0_BASE+4)

        //NAND FLASH CLE寄存器地址定義

        #define NandFlashCmdReg0 (VDNF2T16_V1_0_BASE+8)

        ……

        以下為讀取ID及壞塊的信息:

        ******************************************************************

        The cs=0 NAND_FLASH's ID is Right ,The ID is=0x2c881a7a9000

        ***********************************************************************

        This cs=0 FLASH's Bank=0 have 5 BadBlocks:

        The num=0 Bank LUN1's num=90 is BadBlock.

        The num=0 Bank LUN1's num=91 is BadBlock.

        The num=0 Bank LUN1's num=1738 is BadBlock.

        The num=0 Bank LUN2's num=90 is BadBlock.

        The num=0 Bank LUN2's num=91 is BadBlock.

        The Number of Bank's Valid Block is Right.

        ……

        4. 結論

        本文闡述了一種通過FPGA實現對歐比特公司的大容量NAND FLASH芯片VDNF2T16VP193EE4V25的操作方法。設計中采用ALTERA公司FPGA芯片,利用自建IP搭建硬件平臺實現NAND FLASH的驅動。該設計也可移植到其他FPGA上,可以很好地應用在各嵌入式電子系統中。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 洞口县| 和硕县| 个旧市| 环江| 杨浦区| 乾安县| 汉寿县| 松滋市| 罗城| 阿荣旗| 商城县| 柳州市| 嘉义县| 鄂尔多斯市| 淳化县| 庄浪县| 隆子县| 通江县| 大冶市| 扬中市| 江阴市| 莎车县| 叶城县| 湖南省| 泰州市| 天柱县| 阳东县| 正镶白旗| 水城县| 梁山县| 女性| 花垣县| 四平市| 彰化县| 瑞丽市| 晋州市| 南通市| 浙江省| 德安县| 荥经县| 岚皋县|