历史上的今天
返回首页

历史上的今天

今天是:2025年02月13日(星期四)

正在发生

2019年02月13日 | S3C2440 FLASH 介绍

2019-02-13 来源:eefocus

S3C2440 有27 根地址线ADDR[26:0],8 根片选信号ngcs0-ngcs7,对应bank0-bank7.


     当访问BankN(N=0,1,2,...7) 的地址空间,ngcsN(N=0,1,2,...7)  引脚为低电平,选中外设。

每一个Bank容量:2^27=2^7 * 2^10 * 2^10 = 128Mbyte

总共有8个Bank,所以总寻址大小是:8*128Mbyte = 1Gbyte

所以S3C2440 总的寻址空间是1Gbyte。
     

市面上很少有32 位宽度的单片SDRAM,一般选择2 片16 位SDRAM 扩展得到32位SDRAM.

     

选择的SDARM 是HY57V561620F,4Mbit * 4bank *16,共32Mbyte。

     

首先了解下 SDRAM 的寻址原理。
     

SDRAM 内部是一个存储阵列。可以把它想象成一个表格。和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格称为逻辑BANK。目前的SDRAM 基本都是4 个BANK。寻址的流程就是先指定BANK 地址,再指定行地址,最后指定列地址。这就是SDRAM 的寻址原理。存储阵列示意图如下:


     


查看HY57V561620F 的规格书,这个SDRAM 有

13 根行地址线 RA0-RA12

9 根列地址线 CA0-CA8

2 根BANK 选择线 BA0-BA1


SDRAM 的地址引脚是复用的,在读写SDRAM 存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。


/RAS 是行地址锁存信号,该信号将行地址锁存在芯片内部的行地址锁存器中;

/CAS 是列地址锁存信号,该信号将列地址锁存在芯片内部的列地址锁存器中。


 


SDRAM 的A0 接S3C2440 的ADDR2,很多初学者都对这里又疑问。A0 为什么不接ADDR0?

要理解这种接法,首先要清楚在CPU 的寻址空间中,字节(8 位)是表示存储容量的唯一单位。

用 2 片HY57V561620F 扩展成32 位SDRAM,可以认为每个存储单元是4 个字节。因此当它的地址线A1:A0=01 时,处理器上对应的地址线应为ADDR3:ADDR2=01(因为CPU 的寻址空间是以Byte 为单位的)。所以SDRAM 的A0 引脚接到了S3C2440 的ADDR2 地址线上。同理,如果用 1 片HY57V561620F,数据线是16 位,因为一个存储单元是2 个字节,这时SDRAM 的A0 要接到S3C2440 的ADDR1 上。


也就是说 SDRAM 的A0 接S3C2440 的哪一根地址线是根据整个SDRAM 的数据位宽来决定的。
     

上面的接线图上,BA0,BA1 接ADDR24,ADDR25,为什么用这两根地址线呢?BA0~BA1 代表了SDRAM 的最高地址位。因为CPU 的寻址空间是以字节(Byte)为单位的,本系统SDRAM 容量为64MByte,那就需要A25~A0(64M=2^26)地址线来寻址,所以BA1~BA0 地址线应该接到2440 的ADDR25~ADDR24 引脚上。13 根行地址线+9 根列地址线 = 22 根。另外HY57V561620F 一个存储单元是2 个字节,相当于有了23 根地址线。BA0,BA1 是最高地址位,所以应该接在ADDR24,ADDR25 上。


也就是说 SDRAM 的BA0,BA1 接S3C2440 的哪几根地址线是根据整个SDRAM 的容量来决定的。

 

 

S3C2440 与NOR FLASH(AM29LV160DB)的接线分析
      

NOR FLASH 的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM 中。NOR 的传输效率很高,在1~4MB 的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

NOR FLASH 的地址线和数据线是分开的。

AM29LV160DB 是一个2Mbyte 的NOR FLASH,分区结构是:

1 个16Kbyte 扇区,2 个8Kbyte 扇区,1 个32Kbyte 扇区,31 个64Kbyte 扇区(字节模式)

1 个8Kbyte 扇区,2 个4Kbyte 扇区,1 个16Kbyte 扇区,31 个32Kbyte 扇区(半字模式)

共35 个扇区。

下图是TQ2440 开发板提供的NOR FLASH 部分接线图。




AM29LV160DB 第47 脚是BYTE#脚,BYTE#接高电平时,器件数据位是16 位,接低电平时,数据位是8 位。上图BYTE#接VCC,D0-D15 做为数据输入输出口。

A0-A19 是地址线,在半字模式下,D0-D15 做为数据输入输出口。因为数据位是16 位,A0-A19 可以选择2^20 = 1M *2BYTE = 2Mbyte。正好是AM29LV160DB 的容量。

S3C2440 的ADDR1 要接AM29LV160DB 的A0。上图中AM29LV160DB 的A20,A21 是空脚,分别接的是LADDR21,LADDR22。这应该是为了以后方便扩展NOR FLASH 的容量。LADDR21,LADDR22 对AM29LV160DB 是没用的。

当BYTE#接低电平时,D0-D7 做为8 位数据输入输出口,D15 做为地址线A-1。

相当于有了A-1,A0-A19 共21 根地址线。这个时候S3C2440 的ADDR0 应该接在D15(A-1)。。。。ADDR20 接A19。21 根地址线的寻址空间是2^21 = 2Mbyte。正好是AM29LV160DB 的容量。


S3C2440 与NAND FLASH(K9F1208)的接线分析

 

NAND FLASH 的接线方式和NOR FLASH,SDRAM 都不一样。以TQ2440 开发板用的K9F1208 为例,分析NAND FLASH 的接线方式。

K9F1208 结构如下图

 

 

K9F1208 位宽是8 位。

一页: 512byte + 16byte 最后16byte 是用于存储校验码和其他信息用的,不能
存放实际的数据。

一个块有32 page:(16k+512)byte 

K9F1208 有4096 个块:(64M+2M)byte,总共有64Mbyte 可操作的芯片容量NAND FLASH 以页为单位读写数据,以块为单位擦除数据。

S3C24440 和K9F1208 的接线图如下:


 

下图是S3C2440 的NAND FLASH 引脚配置:


 

当选定一个NAND FLASH 的型号后,要根据选定的NAND FLASH 来确定S3C2440 的NCON,GPG13,GPG14,GPG15 的状态。

下图是S3C2440 中4 个脚位状态的定义:


 

K9F1208 的一页是512byte,所以NCON 接低电平,GPG13 接高电平。


K9F1208 需要4 个寻址命令,所以GPG14 接高电平

K9F1208 的位宽是8,所以GPG15 接低电平。


NAND FLASH 寻址

对K9F1208 来说,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。

地址传递分为4 步,如下图:

  

 

第1 步发送列地址,既选中一页512BYTE 中的一个字节。512byte 需要9bit 来选择,这里只用了A0-A7,原因是把一页分成了2 部分,每部分256 字节。通过发送的读命令字来确定是读的前256 字节还是后256 字节。

当要读取的起始地址(Column Address)在0~255 内时我们用00h 命令,当读取
的起始地址是在256~511 时,则使用01h 命令。

一个块有32 页,用A9-A13 共5 位来选择一个块中的某个页。

总共有4096 个块,用A14-A25 共12 位来选择一个块。

K9F1208 总共有64Mbyte,需要A0-A25 共26 个地址位。

例如要读NAND FLASH 的第5000 字节开始的内容。把5000 分解成列地址和行地址。

Column_address = 5000%512 = 392

Page_address = (5000>>9) = 9

因为column_address>255,所以用01h 命令读

发送命令和参数的顺序是:

NFCMMD = 0x01;从后256 字节开始读

NFADDR = column_address & 0xff;取column_address 的低8 位送到数据线

NFADDR = page_address & 0xff;发送A9-A16

NFADDR = (page_address >>8) & 0xff; 发送A17-A24

NFADDR = (page_address >> 16) & 0xff;发送A25

上面的NFCMMD,NFADDR.是S3C2440 的NAND FLASH 控制寄存器。读取的数据会放在NFDATA 中。


推荐阅读

史海拾趣

Guerrilla RF公司的发展小趣事
如果电动机驱动电路损坏,可能导致硬盘无法接收到启动信号,从而无法正常工作。
APSA公司的发展小趣事

随着全球电子市场的不断扩大,APSA公司开始实施全球化战略。公司先后在多个国家设立分支机构,拓展国际业务。通过与全球客户的合作,公司的产品线不断丰富,市场份额也逐渐提升。

Astro Tool Corp公司的发展小趣事

在市场竞争日益激烈的背景下,Astro Tool Corp公司始终坚持以创新驱动发展。公司不断投入研发资金,引进先进技术和设备,推出了一系列具有创新性和竞争力的新产品。这些产品不仅满足了客户日益多样化的需求,也为公司带来了可观的利润。同时,公司还注重人才培养和团队建设,打造了一支高效、专业的研发团队,为公司的持续发展提供了有力保障。

EasySync公司的发展小趣事

经过几年的努力,EasySync公司在同步技术领域取得了重大突破,成功研发出一款高效、稳定的同步芯片。这款芯片不仅性能卓越,而且成本较低,受到了广大客户的青睐。随着产品销量的不断增加,公司开始拓展市场,将产品销售到全球各地,逐渐树立了品牌形象。

场效应半导体(Cmos)公司的发展小趣事

韩国三星电子(Samsung Electronics)在CMOS技术方面也取得了显著成就。作为一家综合性电子企业,三星电子在CMOS技术研发方面投入了大量资金和人力资源。通过不断的技术创新和生产优化,三星电子成功推出了多款高性能、低功耗的CMOS芯片产品,广泛应用于智能手机、平板电脑等电子产品中。这些产品以其卓越的性能和出色的品质赢得了市场的广泛认可,使三星电子在全球半导体市场上占据了一席之地。

Bytesonic Corporation公司的发展小趣事

为了进一步加强对大陆市场的投资和管控,Bytesonic Corporation在1998年5月在英属维尔京群岛成立了控股公司——剑桥电子有限公司。这一举措不仅提升了公司的资本运作能力,也为其在全球范围内的业务拓展提供了更多的便利。

问答坊 | AI 解惑

请问各位,这个应该怎么理解啊,谢谢!

describes the signals on the 280x devices. All digital inputs are TTL-compatible. All outputs are 3.3 V with CMOS levels. Inputs are not 5-V tolerant.…

查看全部问答>

调频发射和接收电路

高手们给我一个调频发射和接收电路,谢谢…

查看全部问答>

【藏书阁】电源设计讲座

[ 本帖最后由 wzt 于 2010-3-17 18:45 编辑 ]…

查看全部问答>

dsp 编程时能定义一个变量到程序存储区然后对这个变量进行读写操作么?

群里朋友的问题 dsp 编程时能定义一个变量到程序存储区  然后对这个变量进行读写操作么?…

查看全部问答>

vxworks6.6

为了营造一个良好的学习氛围,现分享vxworks6.6,有需要的可以与我联系,另赠送安装文档 我的邮箱是rubyworkers@163.com …

查看全部问答>

程序如何从FLASH搬运到SDRAM中?

程序是存放于FLASH中的,而运行于SDRAM中。 请问上电的时候程序是如何搬运过去的? 是软件方式? 采用汇编语言? …

查看全部问答>

模拟器问题

eMbedded Visual C++ 4.0 和 Platform Builder 5.0平台 当安装SDK后,用eMbedded Visual C++ 4.0打开,不能出现自己定制的wince界面,出现以下提示: The specified CE boot image could not be loaded. Your virtual machine may not have enou ...…

查看全部问答>

WINCE中有WINDOWS中HOSTS的功能么

我想在WINCE中做一个域名转向,将一个域名指向一个内网IP. 请问WINCE中有类似WINDOWS中的HOSTS文件直接配置么? 如果没有,则需要用SOCKET编程实现DNS欺骗....不知各位有没有相关的例程..或相关的HTTP协议.…

查看全部问答>

美女程序员的毕业设计^ ^

经常上eeworld   一直有个问题困扰。 比如: 我闲暇的时候逛eeworld,发现一些我感兴趣的帖子,浏览后想知道接下来新的回复(或者说自 己提问的帖子),        同时又要关掉浏览器做自己的事;无奈,只能隔段时 ...…

查看全部问答>