RDA8810 nand flash && sdram config

RDA8810 nand flash && sdram config
RDA8810 nand flash && sdram config

NAND FLASH && SDRAM CONFIG

Version 1.0

Change History

Version Date Author Description V1.0 2013-10-31 YanshengZhang New Version.

Version 1.0 (1)

Change History (2)

1Nand flash config (4)

1.1RDA chip 支持的Nand flash 类型 (4)

1.2Nand flash HW config (4)

1.3Nand flash SW config (5)

1.4如何新增加一个flash支持 (6)

2DDR sdram config (7)

2.1Sdram config (7)

2.2如何新增一颗sdram的支持 (8)

3常见问题 (8)

1Nand flash config

1.1R DA chip 支持的Nand flash 类型

RDA chip 支持以下nand flash:ONFI(Open Nand Flash Interface)nand (包括MLC SLC 类型)、spi nand、eMMC以及T-card。

具体支持哪些厂家芯片,请参考RDA发布的验证list。

1.2Nand flash HW config

RDA chip ROM中,对以上几种接口类型的flash都做了兼容,但具体是哪种flash,ROM

Note:

(1)0:低电平1:高电平x:no care

(2)上电之前请确认flash 电压正确。

具体电路图请参考RDA发布的模板电路图。

1.3Nand flash SW config

硬件管脚配置正确后,软件上需要做以下配置:

Flash clock 配置

ONFI Flash clock 配置:(其中XXX表示项目配置模板,YYY表示具体项目TARGET)

1、device\rda\XXX\YYY\include\ tgt_ap_clock_config.h

ONFI flash是挂在APB2总线上的,这个文件中,对APB2从PLL_BUS上进行分频:

#define _TGT_AP_PLL_BUS_FREQ (800) //PLL BUS 800MHz

#define _TGT_AP_CLK_APB2 (0x001A) // 4分频

APB2上时钟是200MHz。

2、device\rda\XXX\YYY\include\ tgt_ap_board_config.h

ONFI flash controller 对APB2时钟进行2次分频:

/* NAND clock in Hz */

#define _TGT_AP_NAND_CLOCK (20000000)

目前,nand flash driver中对时钟2次分频进行了自适应处理,user只需要对_TGT_AP_NAND_CLOCK 进行设置即可,软件自动进行计算,设置到controller 寄存器中(有兴趣可以参考文件rda_nand.c)。

SPI Flash clock配置:(其中XXX表示项目配置模板,YYY表示具体项目TARGET)

1、device\rda\XXX\YYY\include\ tgt_ap_clock_config.h

SPI flash 有自己的单独时钟分频CLK_SFLSH,这个文件中,对CLK_SFLSH从PLL_BUS上进行分频:

#define _TGT_AP_PLL_BUS_FREQ (800) //PLL BUS 800MHz

#define _TGT_AP_CLK_SFLSH (0x001D)//2.5分频

CLK_SFLSH上时钟是320MHz。

另外:spi controller中read flash的delay timing计算也是基于CLK_SFLSH时钟的,例如,320MHz时,read delay应该是4,就代表是4个CLK_SFLSH cycle;这个值目前是自适应计算的,当_TGT_AP_CLK_SFLSH改变时,driver中会根据CLK_SFLSH进行更新(有兴趣可以参考文件rda_spi_nand.c)。

2、device\rda\XXX\YYY\include\ tgt_ap_board_config.h

spi controller对CLK_SFLSH进行2次分频:

/* SPI NAND clock in Hz: 64000000/80000000/108000000*/

#define _TGT_AP_SPI_NAND_CLOCK (108000000)

目前,spi nand flash driver中对时钟2次分频进行了自适应处理,user只需要对_TGT_AP_SPI_NAND_CLOCK 进行设置即可,软件自动进行计算,设置到controller寄存器中(有兴趣可以参考文件rda_spi_nand.c)。

Flash 分区设置(其中XXX表示项目配置模板,YYY表示具体项目TARGET) device\rda\XXX\YYY\include\tgt_ap_flash_parts.h

这个文件中,对系统进行了文件分区,例如:

#ifndef __TGT_AP_FLASH_PARTS_H__

#define __TGT_AP_FLASH_PARTS_H__

#define MTDPARTS_DEF \

"2M@0(bootloader)," \

"2M(factorydata)," \

"4M(modem)," \

"8M(boot)," \

"8M(recovery)," \

"8M(customer)," \

"128M(system)," \

"4M(kpanic)," \

"8M(cache)," \

"-(userdata)"

#endif

其中,system的size 与使用的文件系统类型紧密相关。如果使用yaffs2文件系统,system size就会比较大,如果是squash,system size就会比较小。

1.4如何新增加一个flash支持

当要使用一颗系统还未支持的flash时,除需要确认1.2和1.3所需要的信息外,还需要

将flash的device ID加入支持列表nand_flash_dev nand_flash_ids[](nand_ids.c),否则系统将不识别这颗flash。

struct nand_flash_dev {

char *name;

int id;

unsigned long pagesize;

unsigned long chipsize;

unsigned long erasesize;

unsigned long options;

};

例如:

/* 4 Gigabit spi nand*/

{"NAND 512MiB 1,8V 4-bit", 0xe4, 2048, 512, 0x20000, LP_OPTIONS}, 其中,0xe4是device ID,2048是pagesize,512是chipsize,0x20000是erase block size,LP_OPTIONS是flash option,如果是16bit,需要换为LP_OPTIONS16。

2DDR sdram config

RDA chip 支持LPDDR、LPDDR2和DDR3 sdram。

2.1Sdram config

device\rda\XXX\YYY\include\tgt_ap_clock_config.h (其中XXX表示项目配置模板,YYY表示具体项目TARGET)

#define _TGT_AP_PLL_MEM_FREQ (260) //设置SDRAM 运行时钟。260MHz

支持50/100/156/200/260/312/351/400 MHz。

/*

* DDR settings

*/

/* DDR clock rate (data rate double this number) */

#define _TGT_AP_DDR_TYPE 3 //DDR type,1:LPDDR 2:LPDDR2 3:DDR3 #define _TGT_AP_DDR_ODT (2)

#define _TGT_AP_DDR_RON (0)

#define _TGT_AP_DDR_CHIP_BITS (0)

/* DDR bus width, valid value are 8, 16 or 32 */

#define _TGT_AP_DDR_WIDTH (16) //DDR DATA BITS

#define _TGT_AP_DDR_BANK_BITS (3)

#define _TGT_AP_DDR_ROW_BITS (4)

#define _TGT_AP_DDR_COL_BITS (2)

/* DDR timing */

#include "ddr_timing/micron_16x1_260m_metal7.h"

micron_16x1_260m_metal7.h 是DDR timing,在ddr_timing 文件夹中。

2.2如何新增一颗sdram的支持

当要使用一颗系统还未支持的sdram时,除需要确认2.1所需要的信息外,还需要校准一组要运行的timing 参数,形成一个文件,加入到ddr_timing文件夹中。

具体步骤如下:

1、在目标板上运行ddr timing 校准程序,具体使用方法参考DDR校准工具使用文档。

2、把校准出来的参数形成头文件,加入到ddr_timing文件夹中。

3、修改tgt_ap_clock_config.h中

/* DDR timing */

#include "ddr_timing/micron_16x1_260m_metal7.h"

为生成的文件名。

4、编译bootloader即可。必要时重新编译boot_spl。

3常见问题

1、flash 读不到ID?

检查硬件,

(1)电压是否正确

(2)flash HWconfig 是否正确

(3)焊接问题

软件方面检查clock配置是否正确。

此现象一般是硬件原因。

2、flash 不识别?

检查nand device ID 是否在flash配置表中。

3、下载img时报exceed partition size?

检查编译出来的img 是否超出了mtd partition 中的相应分区大小。

4、kernal 解压时报 uncompress error?

Sdram timing 不准,使用timing校准工具校准一组新参数试试。

5、Kernel 解压完后系统起不来?

Sdram timing 不准,使用timing校准工具校准一组新参数试试。

NAND Flash中文版资料

NAND Flash 存储器 和 使用ELNEC编程器烧录NAND Flash 技术应用文档 Summer 翻译整理 深圳市浦洛电子科技有限公司 August 2006

目录 一. 简介 ----------------------------------------------------------------------------------- 1 二. NAND Flash与NOR Flash的区别 -------------------------------------------- 1 三. NAND Flash存储器结构描叙 --------------------------------------------------- 4 四. 备用单元结构描叙 ---------------------------------------------------------------- 6 五. Skip Block method(跳过坏块方式) ------------------------------------------ 8 六. Reserved Block Area method(保留块区域方式)----------------------------- 9 七. Error Checking and Correction(错误检测和纠正)-------------------------- 10 八. 文件系统 ------------------------------------------------------------------------------10 九. 使用ELNEC系列编程器烧录NAND Flash -------------------------------- 10 十. Invalid Block Management drop-down menu -------------------------------- 12 十一. User Area Settings3 -------------------------------------------------------- 13 十二. Solid Area Settings --------------------------------------------------------- 15 十三. Quick Program Check-box ---------------------------------------------- 16 十四. Reserved Block Area Options --------------------------------------------17 十五. Spare Area Usage drop-down menu ------------------------------------18

linux下的fpga驱动

#ifndef _FPGA_H_ #define _FPGA_H_ #define INTMSK (0x4A000008) #define EINTMASK (0x560000A4) #define S3C2410_ENABLE_EINT8_23 (~(1<<5)) #define S3C2410_ENABLE_EINT18 (~(1<<18)) #undef PDEBUG /* undef it, just in case */ #define DEBUG //调试时添加此行程序,实际产品中需要注释掉 #ifdef DEBUG # define PDEBUG(fmt, args...) printk( KERN_WARNING "fpga: " fmt, ## args) #else # define PDEBUG(fmt, args...) /* not debugging: nothing */ #endif #define DEVICE_NAME "FPGA" #ifndef FPGA_NR_DEVS #define FPGA_NR_DEVS 1 /*设备数*/ #endif #define FPGAMEM_SIZE 1024/*FPGA每次产生中断可以读取到缓存的数据大小*/ #define FPGACMD_SIZE 3 /*FPGA每次产生中断可以读取到缓存的数据大小*/ #define FPGA_ADDR_START (0x08000000) //nGCS1地址 #define FPGA_ADDR_SIZE 0x30 //申请IO内存的大小 #define FPGA_ADDR_DATA 0x10 //FPGA数据寄存器偏移地址 #define FPGA_ADDR_CMD 0x14 //FPGA命令寄存器偏移地址 /* 定义幻数,定义一个字符,8位,用于检测是否是这类设备,ioctl-number.txt中给出了已经使用的幻数,定义的时候注意避免冲突*/ #define FPGA_IOC 'k' /* 定义命令,这里的命令都是unsigned int类型*/ #define FPGA_IOC_ALLON _IO(FPGA_IOC, 0) // #define FPGA_IOC_ALLDOWN _IO(FPGA_IOC, 1) // #define FPGA_IOC_SET _IOW(FPGA_IOC, 2, int) // #define FPGA_IOC_CLEAR _IOW(FPGA_IOC, 3, int)// #define FPGA_IOC_MAXNR 4 //定义命令的最大序列号

基于FPGA直流电动机驱动的设计

河南大学2014届本科毕业论文 论文题目 基于FPGA直流电动机驱动的设计 论文作者姓名:______________ 作者学号:___1003618004_______ 所在学院:民生学院 所学专业:_电子信息科学与技术_ 导师姓名职称:___ _______ 论文完成时间: 2014年04月24日 _ I

河南大学民生学院本科毕业论文 目录 摘要: ..................................................................................... 错误!未定义书签。 0 前言 (2) 1 绪论 (2) 1.1 课题的来源 (2) 1.2 课题研究的目的及意义 (3) 1.3 课题国内外研究现状 (4) 1.4 课题实质性展现 (4) 2直流电动机的概括 (4) 2.1 直流电动机的基本构成 (4) 2.2 直流电动机的工作原理 (5) 2.3 直流电动机的性能 (6) 3 直流电动机的控制及PWM(脉宽调制) (7) 3.1 控制器的控制电路 (7) 3.2 转子位置传感器 (8) 3.3 直流电动机的控制原理详解 (9) 3.4 直流电机转速控制与PWM脉宽调制 (11) 4 FPGA及其组成的控制器 (12) 4.1 FPGA芯片 (13) 4.2 VHDL硬件描述语言 (14) 4.3 运用FPGA来实现对直流电动机的控制 (15) 4.4 PWM(脉宽调制信号) (16) 4.5速度检测 (19) 5 结论 (20) 参考文献 (20) II

基于FPGA的直流电机驱动的设计 电子信息技术在如今的社会中已然达到迅猛发展阶段,国家也在大力加强电子商务领域的引导性投资,可见其在当今社会中的重要性。 电子技术的发展方向。可以说模拟电子技术是电子技术的根本,在调制解调,功率放大,信号放大、整流稳压等电路方面具有非常重要作用,移动通信等领域都不可或缺。电子技术的另外一个重要组成部分数字电子技术同等重要的,和模拟电子技术相对比,数字电子技术具有稳定性好,精度高,抗干扰性强的优势。也正是因为数字电子的这些优势使得它在一些领域的发展更胜于模拟电子,数字滤波器就是一个很好的证明。 数字电子技术目前也在向两个截然相反的方向发展,一是基于通用处理器的软件开发技术,如单片机、bps等技术,它们是在一个通用处理器的基础上结合少量的硬件电路设计来完成系统的硬件电路,而将主要精力集中在算法、数据处理等软件层次上的系统方法。另一个方向是基于CPLD/FPGA的可编程逻辑器件的系统开发,其特点是将算法、数据加工等工作全部融入系统的硬件设计当中,在“线与线的互联”当中完成对数据的加工。 单片机微处理器作为核心来实现直流电机的控制已然跟不上时代发展的需求。由此电机控制器也由模拟分立原件构成的电路向数模混合、全数字方向发展。此文章主要研究了FPGA芯片在直流电机控制器中的作用。文章详细的介绍了直流电机的类型、结构、工作原理、PWM调速原理和FPGA集成芯片。后对所需应用的硬件语言VHDL方面知识也进行了介绍。从而为论文的具体设计部分提供了理论基础。FPGA的电机控制中,最基本的作用有三:组合逻辑、计数器、状态机。 关键词: FPGA芯片;直流电机;硬件描述语言(VHDL);PWM;现场可编程门阵列 DC motor driven FPGA-based design Electronic information technology in today's society has already reached the rapid development stage, countries are vigorously strengthen the field of electronic commerce to guide investment, and its importance in today's society . Direction of development of electronic technology. It can be said analog electronics technology is the fundamental electronic technology, the modem, power amplification, signal amplification, rectification regulators and other aspects of the circuit has a very important role in areas such as mobile communications are indispensable. Another important part of the digital electronic technology as important as electronic technology, and the relative ratio of analog electronics, digital electronics technology has good stability, high accuracy, strong anti-interference advantages. It is also because of these advantages make it the development of digital electronics in some areas more than analog electronics, digital filter is a good proof. Digital electronic technology is also currently the two diametrically opposite 1

NOR-FLASH驱动文档(SST39VF1601)

NOR-FLASH驱动文档(SST39VF1601)2012-03-30 00:57:33 NOR-FLASH是最早出现的Flash Memory,目前仍是多数供应商支持的技术架 构.NOR-FLASH在擦除和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用,但是由于NOR-FLASH只支持块擦除,其擦除和编程速度较慢,而块尺寸又较大,导致擦除和编程操作所花费的时间很长,所以在纯数据存储和文件存储的应用中显得力不从心. NOR-FLASH的特点是: 1. 程序和数据可存放在同一芯片上,FLASH芯片拥有独立的数据总线和地址总线,能快速随 机读取,并且允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行; 2. 可以单字节或单字读取,但不能单字节擦除,必须以部分或块为单位或对整片执行擦除操 作,在执行写操作之前,必需先根据需要对部分,块或整片进行擦除,然后才能写入数据。 以SST系列NOR-FLASH芯片为例介绍FLASH的使用方法及驱动. 首先,在驱动的头文件中,要根据芯片的具体情况和项目的要求作如下定义: 1. 定义操作的单位,如 typedef unsigned char BYTE; // BYTE is 8-bit in length typedef unsigned short int WORD; // WORD is 16-bit in length typedef unsigned long int Uint32; // Uint32 is 32-bit in length 在这里地址多是32位的,芯片写操作的最小数据单位为WORD,定义为16位,芯片读操作的最小数据单位是BYTE,定义为8位. 2. 因为芯片分为16位和32位的,所以对芯片的命令操作也分为16位操作和32位操作(命令 操作在介绍具体的读写过程中将详细介绍). #ifdef GE01 /*宏NorFlash_32Bit,若定义了为32位NorFlash,否则为16位NorFlash*/ #define NorFlash_32Bit #endif 3. 根据芯片的情况,定义部分(段)和块的大小. #define SECTOR_SIZE 2048 // Must be 2048 words for 39VF160X #define BLOCK_SIZE 32768 // Must be 32K words for 39VF160X

浅谈NorFlash的原理及其应用

浅谈NorFlash的原理及其应用 NOR Flash NOR Flash是现在市场上两种主要的非易失闪存技术之一。Intel 于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理需要特殊的系统接口。性能比较 flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash 器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NAND之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。 l 、NOR的读速度比NAND稍快一些。 2、NAND的写入速度比NOR快很多。 3 、NAND的4ms擦除速度远比NOR的5s快。 4 、大多数写入操作需要先进行擦除操作。 5 、NAND的擦除单元更小,相应的擦除电路更少。此外,NAND 的实际应用方式要比NOR复杂的多。NOR可以直接使用,并可在上面直接运行代码;而NAND需要I/O接口,因此使用时需要驱动程序。不过当今流行的操作系统对NAND结构的Flash都有支持。此外,Linux内核也提供了对NAND结构的Flash的支持。详解 NOR

总结NAND FLASH控制器的操作

NAND FLASH相对于NOR FLASH而言,其容量大,价格低廉,读写速度都比较快,因而得到广泛应用。NOR FLASH的特点是XIP,可直接执行应用程序, 1~4MB时应用具有很高的成本效益。但是其写入和擦除的速度很低直接影响了其性能。 NAND FLASH不能直接执行程序,用于存储数据。在嵌入式ARM应用中,存储在其中的数据通常是读取到SDROM中执行。因为NAND FLASH主要接口包括 几个I/O口,对其中的数据都是串行访问,无法实现随机访问,故而没有执行程序。 NAND FLASH接口电路是通过NAND FLAH控制器与ARM处理器相接的,许多ARM处理器都提供NAND FLASH控制器,为使用NAND FLASH带来巨大方便。 K9F2G08U0B是三星公司的一款NAND FLASH产品。 K9F2G08U0B包含8个I/O,Vss、Vcc、以及控制端口(CLE、ALE、CE、RE、WE、WP、R/B)。其存储结构分块。 共2K 块 每块大小16 页 每页大小2K + 64BYTE 即容量=块数×页数×每页大小=2K×16×(2K + 64BYTE)=256M BYTE + 8M BYTE NAND FLASH控制器提供了OM[1:0]、NCON、GPG13、GPG14、GPG15共5个信号来选择NAND FLASH启动。 OM[1:0]=0b00时,选择从NAND FLASH启动。 NCON:NAND FLASH类型选择信号。 GPG13:NAND FLASH页容量选择信号。 GPG14:NAND FLASH地址周期选择信号。 GPG15:NAND FLASH接口线宽选择。0:8bit总线宽度;1:16bit总线宽度。 访问NAND FLASH 1)发生命令:读、写、还是擦除 2)发生地址:选择哪一页进行上述操作 3)发生数据:需要检测NAND FLASH内部忙状态 NAND FLASH支持的命令: #define CMD_READ1 0x00 //页读命令周期1 #define CMD_READ2 0x30 //页读命令周期2 #define CMD_READID 0x90 //读ID 命令 #define CMD_WRITE1 0x80 //页写命令周期1 #define CMD_WRITE2 0x10 //页写命令周期2 #define CMD_ERASE1 0x60 //块擦除命令周期1 #define CMD_ERASE2 0xd0 //块擦除命令周期2 #define CMD_STATUS 0x70 //读状态命令 #define CMD_RESET 0xff //复位 #define CMD_RANDOMREAD1 0x05 //随意读命令周期1

Xilinx FPGA PCIE Linux驱动程序

// (c) Copyright 2009 聳2009 Xilinx, Inc. All rights reserved. // // This file contains confidential and proprietary information // of Xilinx, Inc. and is protected under U.S. and // international copyright and other intellectual property // laws. // // DISCLAIMER // This disclaimer is not a license and does not grant any // rights to the materials distributed herewith. Except as // otherwise provided in a valid license issued to you by // Xilinx, and to the maximum extent permitted by applicable // law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND // WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES // AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING // BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- // INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and // (2) Xilinx shall not be liable (whether in contract or tort, // including negligence, or under any other theory of // liability) for any loss or damage of any kind or nature // related to, arising under or in connection with these // materials, including for any direct, or any indirect, // special, incidental, or consequential loss or damage // (including loss of data, profits, goodwill, or any type of // loss or damage suffered as a result of any action brought // by a third party) even if such damage or loss was // reasonably foreseeable or Xilinx had been advised of the // possibility of the same. // // CRITICAL APPLICATIONS // Xilinx products are not designed or intended to be fail- // safe, or for use in any application requiring fail-safe // performance, such as life-support or safety devices or // systems, Class III medical devices, nuclear facilities, // applications related to the deployment of airbags, or any // other applications that could lead to death, personal // injury, or severe property or environmental damage // (individually and collectively, "Critical // Applications"). Customer assumes the sole risk and // liability of any use of Xilinx products in Critical // Applications, subject only to applicable laws and // regulations governing limitations on product liability. // // THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS // PART OF THIS FILE AT ALL TIMES. //-------------------------------------------------------------------------------- //-- Filename: xbmd.c //-- //-- Description: XBMD device driver. //-- //-- XBMD is an example Red Hat device driver which exercises XBMD design //-- Device driver has been tested on Red Hat Fedora FC9 2.6.15. //--------------------------------------------------------------------------------

STM32使用FSMC控制NAND flash 例程概要

本文原创于观海听涛,原作者版权所有,转载请注明出处。 近几天开发项目需要用到STM32驱动NAND FLASH,但由于开发板例程以及固件库是用于小页(512B,我要用到的FLASH为1G bit的大页(2K,多走了两天弯路。以下笔记将说明如何将默认固件库修改为大页模式以驱动大容量NAND,并作驱动。 本文硬件:控制器:STM32F103ZET6,存储器:HY27UF081G2A 首先说一下NOR与NAND存储器的区别,此类区别网上有很多,在此仅大致说明: 1、Nor读取速度比NAND稍快 2、Nand写入速度比Nor快很多 3、NAND擦除速度(4ms远快于Nor(5s 4、Nor 带有SRAM接口,有足够的地址引脚来寻址,可以很轻松的挂接到CPU 地址和数据总线上,对CPU要求低 5、NAND用八个(或十六个引脚串行读取数据,数据总线地址总线复用,通常需要CPU支持驱动,且较为复杂 6、Nor主要占据1-16M容量市场,并且可以片内执行,适合代码存储 7、NAND占据8-128M及以上市场,通常用来作数据存储 8、NAND便宜一些 9、NAND寿命比Nor长 10、NAND会产生坏块,需要做坏块处理和ECC 更详细区别请继续百度,以上内容部分摘自神舟三号开发板手册

下面是NAND的存储结构: 由此图可看出NAND存储结构为立体式 正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块nand flash也分为若干block,每个block分为如干page。一般而言,block、page之间的关系随着芯片的不同而不同。 需要注意的是,对于flash的读写都是以一个page开始的,但是在读写之前必须进行flash 的擦写,而擦写则是以一个block为单位的。 我们这次使用的HY27UF081G2A其PDF介绍: Memory Cell Array = (2K+64 Bytes x 64 Pages x 1,024 Blocks 由此可见,该NAND每页2K,共64页,1024块。其中:每页中的2K为主容量Data Field, 64bit为额外容量Spare Field。Spare Field用于存贮检验码和其他信息用的,并不能存放实际的数据。由此可算出系统总容量为2K*64*1024=134217728个byte,即1Gbit。NAND闪存颗粒硬件接口: 由此图可见,此颗粒为八位总线,地址数据复用,芯片为SOP48封装。 软件驱动:(此部分写的是伪码,仅用于解释含义,可用代码参见附件 主程序: 1. #define BUFFER_SIZE 0x2000 //此部分定义缓冲区大小,即一次写入的数据 2. #define NAND_HY_MakerID 0xAD //NAND厂商号 3. #define NAND_HY_DeviceID 0xF1 //NAND器件号 4. /*配置与SRAM连接的FSMC BANK2 NAND*/

NAND FLASH在储存测试中的应用

NAND FLASH在储存测试系统中的应用(3) 2009-11-09 22:35:43 来源:王文杰马游春李锦明 关键字:NAND FLASH 储存测试K9K8G08UOM 2 NAND FLASkI Memory的硬件部分 本设计当中,FLASH的数据输入输出口、控制端口通过调理电路与FPGA的端口相连,图4所示是其硬件连接电路。 从图4中可知,FLASH的数据输入输出端口I/00~7、控制端口/CE、是通过芯片SN54LV245与FPGA相连;FLASH的控制端口cLE、ALE、/WE、/RE通过芯片SN54LV245和芯片74HCl4与ITGA相连。其中F-CLE、F-ALE、F—WE、F-RE、F—CE、F- R/Bur是FPGA的I/O口,是FPGA逻辑的输入输出口。CLE、ALE信号是FLASH存储器命令、地址锁存使能信号,/WE是保证命令、地址、数据能否及时正确的写入FLASH 的信号,/RE信号控制着数据的读取,这些信号的精确度关系着FLASH存储、读数功能的实现。所以,这些信号的好坏直接关系着FLASH的正常工作。经实践的电路调试,这些信号在传输过程中受到了其它因素的干扰,信号明显失真,在电路中加入74HCl4(非门)以后,信号会变得光滑,准确。 芯片SN54LV245是八进制三态总线收发器,DIR=1时,总线传输方向从A→B;DIR=0时,总线传输方向从B→A。/OE是片选信号。/0E,DIR信号是由FPGA内部编程逻辑控制的。 FL,ASH接口中,为了保证/wE、/RE、/CE、R/B控制信号初始状态无效,由硬件电路实现端口值拉高。本设计中不使用写保护功能,所以/WP端口也接上了上拉电阻。 3 结束语 基于闪存技术的固态存储器存储密度大,功耗小,可靠性高,体积小重量轻且成本也在不断降f氐,在航空应用中有良好的应用前景。在设计储存测试系统时选用大容量的NAIXD FLASH存储器大大提高了储存、读取速度,并且设计电路结构简单,易于修改。 (本文转自电子工程世界:http://www.eewo

(硬件实现代图)FPGA驱动LCD1602

作者:Lumin QQ:474062042(有改进的地方,希望大家告诉我一下) 于成都理工大学 说明:该驱动只是用来练习状态机,所以没有追求高速度,时钟是分频到毫秒级处理 实际效果: 显示我的英文名Lumin 引脚定义: 大家需要关心的是三个控制线RS,RW,EN 数据总线DATA

驱动的顶层模块及其端口定义 设计思路: 1.该设计使用了一个状态机,实现LCD1602显示字符功能 2. 时序图 关于r/w: 因为液晶只需要写不需要读,所以RW=0,表示液晶一直处于写状态 写命令时: 首先RS=0,E=0同时数据出线在总线上面,延时一段时间,等待数据稳定然后E一个上升沿并保持一段时间,然后拉低为下一次写准备写数据时: 首先RS=1,E=0同时数据出线在总线上面,延时一段时间,等待数据稳定然后E一个上升沿并保持一段时间,然后拉低为下一次写准备 3. 状态机设计状态机设计方法 我在很多书上看了状态机什么经典的三段式,两段式状态机写法。实践来都不好用,可能自己学的不好(知道问题的给我说下)。后面自己发明了一种,现在写了好几驱动,都正确的。模板下面。 TYPE STATE IS(s0,s1,s2,s3);-- 举例只用4个状态 SIGNAL Current_State :STATE:=s0;-- 模板不要NEXT_STATA,我实践来要NEXT_STATA的不好用SIGNAL s0_delay:INTEGER RANGE 1 TO 1000;-- 有多少状态就多少个状态延时信号,如果该状

态不延时,最后不要就 SIGNAL s1_delay:INTEGER RANGE 1 TO 1000; SIGNAL s2_delay:INTEGER RANGE 1 TO 1000; SIGNAL s3_delay:INTEGER RANGE 1 TO 1000; process(Temp_1ms,Current_State) begin if(rising_edge(Temp_1ms)) then case Current_State when s0 =>Lcd_rs<='0'; Lcd_en<='0';data <=x"00" if( s0_delay=100) then Current_State<=s1;--靠颜色的这段话来控制每个状态延时多久怎么走。 s0_delay<=0; else s0_delay<=s0_delay+1; end if; end case; end if; end process; 4. 状态机设计

nandflash用法

6 NAND FLASH CONTORLLER OVERVIEW In recent times, NOR flash memory gets high in price while an SDRAM and a NAND flash memory is comparatively economical , motivating some users to execute the boot code on a NAND flash and execute the main code on an SDRAM. S3C2440A boot code can be executed on an external NAND flash memory. In order to support NAND flash boot loader, the S3C2440A is equipped with an internal SRAM buffer called ‘Steppingstone’. When booting, the first 4K Bytes of the NAND flash memory will be loaded into Steppingstone and the boot code loaded into Steppingstone will be executed. Generally, the boot code will copy NAND flash content to SDRAM. Using hardware ECC, the NAND flash data validity will be checked. Upon the completion of the copy, the main program will be executed on the SDRAM. comparatively 比较地、相当地 motivating v. 激励;刺激;调动…的积极性(motivate的ing形式) execute vt. 实行;执行;处死 internal n. 内脏;本质adj. 内部的;里面的;体内的;(机构)内部的 Steppingstone n. 踏脚石;进身之阶;达到目的的手段 validity n. [计] 有效性;正确;正确性 content n. 内容,目录;满足;容量adj. 满意的;vt. 使满足 FEATURES 1. Auto boot: The boot code is transferred into 4-kbytes Steppingstone during reset. After the transfer, the boot code will be executed on the Steppingstone. 2. NAND Flash memory I/F: Support 256Words, 512Bytes, 1KWords and 2KBytes Page. 3. Software mode: User can directly access NAND flash memory, for example this feature can be used in read/erase/program NAND flash memory. 4. Interface: 8 / 16-bit NAND flash memory interface bus. 5. Hardware ECC generation, detection and indication (Software correction). 6. SFR I/F: Support Little Endian Mode, Byte/half word/word access to Data and ECC Data register, and Word access to other registers 7. SteppingStone I/F: Support Little/Big Endian, Byte/half word/word access. 8. The Steppingstone 4-KB internal SRAM buffer can be used for another purpose after NAND flash booting. 特性 1。自动引导:在复位时,引导代码写入4-k字节的中转区,在转移后启动 代码将在中转区上执行。 2。NAND闪存接口:支持256字,512字节,1k字和2KB字节页。 3。软件模式:用户可以直接访问NAND闪存,例如这个特性可以用于 读/写/擦除NAND闪存。

基于FPGA的CMOS摄像驱动设计

基于FPGA的CMOS摄像驱动设计

目录第1章绪论4 1.1FPGA国内外现状及发展趋势 (4) 1.2 FPGA的原理以及与单片机相比的优点 (5) 1.3 FPGA作为RAM (6) 第2章系统方案 (7) 2.1 FPGA开发环境 (7) 2.2 图像采集 (7) 2.2.1 图像传感器 (8) 2.2.3 图像采集系统 (8) 2.3 数据接口设计 (9) 第3章系统硬件设计 (10) 3.1 图像传感器 (10) 3.1.1 CCD与CMOS (10) 3.1.2 CCD/CMOS工作原理 (12) 3.1.3 CMOS集成电路特点 (13) 3.1.4 通过SCCB 总线设置OV7670 的帧频 (15) 3.1.5 图像数据的采集 (16) 3.2 OV7670 (17) 3.3 OV7670与FPGA的接口电路 (19) 3.4 SCCB总线 (19) 3.5 SRAM与FPGA的接口电路 (21) 第4章系统软件设计 (23) 4.1 现场可编程门阵列器件 (23) 4.2 CMOS寄存器配置时序的VHDL描述 (23) 4.3 系统软件 (23) 4.3.1 初始化 (23) 4.3.2 接收数据 (24)

第1章绪论 视频图像采集是视频信号处理系统的前端部分,正在向高速、高分辨率、高集成化、高可靠性方向发展。图像采集系统在当今工业、军事、医学各个领域都有着极其广泛的应用,如使用在远程监控、安防、远程抄表、可视电话、工业控制、图像模式识别、医疗器械等各个领域都有着广泛的应用。本文介绍了一种基于FPGA 的图像采集系统,用户可以根据需要对FPGA 内部的逻辑模块和I/O模块重新配置,以实现系统的重构;而且采用这种设计方案,便于及时地发现设计中的错误,能够有效地缩短研发时间,提高工作效率。 1.1FPGA国内外现状及发展趋势 经过70年的不断发展,FPGA已由当初的1200门发展成为今天的百万门级。通过不断更新优化产品架构和生产工艺,实现了更多的逻辑单元、更高的性能、更低的单位成本和功耗。FPGA(现场可编程逻辑器件)产品的应用领域已经从原来的通信扩展到消费电子、汽车电子、工业控制、测试测量等广泛的领域。而应用的变化也使FPGA产品近几年的演进趋势越来越明显:一方面,FPGA供应商致力于采用当前最先进的工艺来提升产品的性能,降低产品的成本;另一方面,越来越多的通用IP(知识产权)或客户定制IP被引入FPGA中,以满足客户产品快速上市的要求。此外,FPGA企业都在大力降低产品的功耗,满足业界越来越苛刻的低功耗需求。 第一时间采用新工艺提升性能降低成本:半导体产品的集成度和成本一直在按照摩尔定律演进。在这方面,作为半导体产品的重要一支——可编程逻辑器件也不例外。最先进的半导体工艺几乎都会在第一时间被应用在FPGA产品上。而每一次工艺升级带来的优势,都会在产品的功耗、最高运行频率、容量以及成本上得到体现。 引入更多通用和定制IP向解决方案供应商转变:近5年来,FPGA的应用已经从过去通信基础设备这一非常窄的领域迅速扩展到了今天非常广泛的应用领域。在许多新兴和快速成长的市场上,FPGA作为核心器件而被广泛采用。无线通信、工业、科学及测量、医疗设备、音视频广播、汽车、计算、存储应用和快速发展的消费品市场,都成为FPGA业务发展的重点领域。在这种情况下,FPGA企业也开始了相应的转型,以适应新的发展需求。

NAND Flash原理和使用

目录 1.概述 (2) 2.功能框图 (3) 3.管脚 (3) 4.寻址 (4) 5.总线操作 (5) 6.命令表 (6) 7.PAGE READ,0x00-0x30 (7) 8.RANDOM DATA READ,0x05-0xE0 (7) 9.PAGE READ CACHE MODE START,0x31;PAGE READ CACHE MODE START LAST,0x3F (8) 10.READ ID,0x90 (8) 11.READ STATUS,0x70 (9) 12.编程操作 (9) 13.内部数据搬移 (11) 14.块擦除操作,0x60-0xD0 (12) 15.复位操作,0xFF (13) 16.写保护操作 (13) 17.错误管理 (14)

以Micron公司的MT29F2G08为例介绍NAND Flash原理和使用。 1.概述 MT29F2G08使用一个高度复用的8-bit总线(I/O[7:0])来传输数据、地址、指令。5个命令脚(CLE、ALE、CE#、WE#)实现NAND命令总线接口规程。3个附加的脚用作: 控制硬件写保护(WP#)、监视芯片状态(R/B#),和发起上电自动读特征(PRE-仅3V芯片支持)。注意, PRE功能不支持宽温芯片。 MT29F2G08内部有2048个可擦除的块,每个块分为64个可编程的页,每个页包含2112字节(2048个字节作为数据存储区,64个备用字节一般作为错误管理使用)。 每个2112个字节的页可以在300us内编程,每个块(64x2112=132K)可以在2ms内被擦除。片上控制逻辑自动进行PROGRAM和ERASE操作。 NAND的内部存储阵列是以页为基本单位进行存取的。读的时候,一页数据从内部存储阵列copy到数据寄存器,之后从数据寄存器按字节依次输出。写(编程)的时候,也是以页为基本单位的:起始地址装载到内部地址寄存器之后,数据被依次写入到内部数据寄存器,在页数据写入之后,阵列编程过程启动。 为了增加编程的速度,芯片有一个CACHE寄存器。在CACHE编程模式,数据先写入到CACHE寄存器,然后再写入到数据寄存器,一旦数据copy进数据寄存器后,编程就开始。在数据寄存器被装载及编程开始之后,CACHE寄存器变为空,可以继续装载下一个数据,这样内部的编程和数据的装载并行进行,提高了编程速度。 内部数据搬移命令(INTERNAL DATA MOVE)也使用内部CAHCE寄存器,通常搬移数据需要很长时间,通过使用内部CACHE寄存器和数据寄存器,数据的搬移速度大大增加,且不需要使用外部内存。

相关文档
最新文档