深入分析存储器的位宽及与C的关系

发布者:快乐旅途最新更新时间:2018-06-07 来源: eefocus关键字:存储器  位宽 手机看文章 扫描二维码
随时随地手机看文章

 一、硬件参数

1、CPU:s3c44b0x

字长32位;以字节为单位编址;数据处理支持三种数据类型:字节(8位)、半字(16位)、字(32位);存储方式有大小端之分;25根地址线。

 

 

2、存储器

Ⅰ   Flash ROM:  SST39VF1601

数据位宽为16位(16根数据线);20根地址线;2M(1M*16bit)。

 

Ⅱ   SDRAM:  HY57V641620HG

数据位宽为16位(16根数据线);12根地址线(行地址选择线有12根,列地址选择线有8根(12根的低8根)),2根bank选择线,总共有22根有效地址线;8M(4bank*1M*16bit)。

 

 

3、

CPU编址:以字节(8bit)为单位

存储器编址:以其位宽为单位,也就是说每个存储器地址下的数据位数为位宽。如

8K*12bit的存储器中的12就是存储器的位宽,指每个存储器地址下数据的位数。

这个12与地址线的多少无关,8K就是指有8K个不同的地址8K=8*1024=2^?   2的多少次方等于8*1024就有多少根地址线,8=2^3,  1024=2^10, 那么8K=2^13 ,存储器地址线就为13根。

 

 

 

二、存储器容量、位宽及其地址线根数三者之间的关系

1、存储容量计量单位的换算

1M(MB,mbyte)=2^10K(KB,kbyte)=2^20B(byte);

1Mb(Mbit)=2^10Kb(kbit)=2^20b(bit);

1字(Word)=2半字(half word)=4字节(B,byte)=4×8位(b,bit)。

 

 

2、关系的确立

以上面的SST39VF1601为例,

存储容量2M=16Mbit=16*2^20bit,

地址线寻址范围:2^20*16bit(地址线根数20,位宽16)。

 

 

以上面的HY57V641620HG为例,

存储容量8M=8*8Mbit=64*2^20bit,

地址线寻址范围:2^22*16bit=64*2^20bit(地址线根数22,位宽16)。

 

 

总结:

存储器位宽表示每个地址下有多少位数据,与它的数据线根数相等;

存储器的地址线根数(N)决定了它的地址编号范围(2^N);

存储器的位宽与它的地址线根数是没有联系的;

而存储器容量是位宽与2^N的乘积,此处单位为bit。

 

 

 

三、CPU的寻址

CPU编址:每个cpu地址编码中存放一个8位数据

CPU的字长为N

最大寻址范围为2^N

 

 

四、存储器位宽与CPU和存储器地址线连接方式之间的联系

1、详情可参见文章《外设位宽为8、16、32时,CPU与外设之间地址线的连接方法》。

CPU地址编号(每个地址存放8位数据)

存储器地址编号(每个地址存放16位数据)

00000(8位数据)

00001(8位数据)

00000(16位数据)

00010

00011

00001

00100

00101

00010

00110

00111

00011

01000

01001

00100

上表是CPU地址与存储器地址对应关系。

2、此步是在硬件层面实现的,软件层面不必再做考虑。

 

 

 

五、数据类型及其在内存中的存储形式

1、整型数据

类型

符号表示

内存中占用的位数

数值范围

无符号 基本整型

unsigned [int]

16(2字节)

-2^15 – (2^15-1)

有符号 基本整型

[signed] int

16(2字节)

0 – (2^16-1)

无符号 短整型

unsigned short [int]

16(2字节)

-2^15 – (2^15-1)

有符号 短整型

[signed] short [int]

16(2字节)

0 – (2^16-1)

无符号 长整型

unsigned long [int]

32(4字节)

-2^31 – (2^31-1)

有符号 长整型

[signed] long [int]

32(4字节)

0 – (2^32-1)

注:有符号整型数据的最高位为符号位。[]内的是可要可不要的

 

2、实型数据

类型

符号表示

内存中占用位数

有效位数

数值范围

单精度型

float

32(4字节)

6-7

-3.4*10^(-38)-3.4*10^38

双精度型

double

64(8字节)

15-16

-1.7*10^(-308)-1.7*10^308

长双精度型

long double

64(8字节)

18-19

-1.2*10^(-4932)-1.2*10^4932

3、字符型数据

类型

符号表示

内存中占用位数

数值范围

无符号字符型

unsigned char

8(1字节)

0 - 255

有符号字符型

signed char

8(1字节)

-128 - 127

注:字符型数据和整型数据是通用的,但是应注意字符型数据只占用一个字节,它只能存放0 – 255范围内的整型数据。

 

六、底层编程实现CPU对存储器进行不同类型数据的读写操作

 

#define INT32U unsigned int // 16位无符号基本整型

#define INT16U unsigned short //16位无符号短整型

#define S32 int // 16位有符号基本整型

#define S16 short int // 16位无符号短整型

#define U8  unsigned char //8位无符号字符型

#define   S8  char //8位有符号字符型,

 

1、接下来的这两个宏是对SST39VF1601 进行16位无符号短整型读写操作:

 

#define  Writeflash(addr,dat)    *((volatile INT16U *)(addr<<1))=(INT16U)dat

#define  Readflash(addr)          (*((volatile INT16U *)(addr<<1)))

 

解析:

addr<<1的主要目的就是使cpu的地址编号变化能跟上每存储一个单元数据地址编号的变化的步伐。这里的addr是CPU的地址编号,与存储器的地址编号无关。

第一个16位数据占据了CPU的两个地址编号00000和00001,因为CPU的每个地址编号只能存放8位的数据。第二个16位数据占据00010和00011两个CPU地址编号。

CPU地址编号左移1位目的是同步每存储一个单元数据所引起的CPU地址编号变化和CPU地址编号实际的变化,使CPU地址编号跨越1个编号正常进入下一个16位数据。

若不左移1位,当addr是00001时将取出00001和00010这两个CPU地址编号处的16位数据,这与前面数据所占得CPU的地址编号是不一致的。

 

 

2、接下来这两个宏是对HY57V641620HG进行8位字符型数据的读写操作:

 

#define  WriteSdram(address,data)       *((volatile U8 *)(address))=(U8)data

#define  ReadSdram(address)             *((volatile U8 *)(address))

 

解析:

第一个8位数据占据了CPU地址编号00000, 第二个8位数据占据了CPU地址编号00001。因此这里每8位数据占据的地址编号只有一个,CPU地址编号就不必如前面读写操作对address左移1位以适应每存储一个单元数据地址编号变化的步伐。

 

3、总结:

这里的左移与存储器和CPU地址线的错开一位接法方式是没有联系的,千万不要将两者混淆了。前者是在软件层面上实现的,后者是在硬件层面地址自动实现转换的。左移操作的起因:CPU每个地址编号只能存放8位数据,而对存储器存取数据类型占用字节数超过一个字节(8位数据)。


关键字:存储器  位宽 引用地址:深入分析存储器的位宽及与C的关系

上一篇:STM32的地址分配
下一篇:STM32F的几种串行通信总线总结

推荐阅读最新更新时间:2024-03-16 16:05

基于32高速处理器S3C44B0X实现水表智能抄表系统的设计
1 水表智能抄表系统简介 目前,自来水表都是机械式的,而且多数自来水表都装在户内,这给水表抄表员带来了很大的麻烦。当抄表员抄表时,必须挨家挨户用肉眼读取水表的读数,然后登记在随身携带的小本子上。回去以后,还要由专门的电脑输入员把水表读数输入到计算机中的数据库里,计算出本月的用水量,再打印出本月各用户应交的水费。这一过程不但工作量大,而且很容易出错。现在得理上海电子有限公司开发出了智能水表,对机械水表中的指针转过的圈数进行计数,通过串口 RS422 发送水表读数。这给自来水表的智能抄表系统奠定了基础。 自来水表的智能抄表系统框图如图1所示。 用户的机械式水表改装成智能水表后,连接到装在楼底下的汇集器上。汇集器每隔一定的时间(
[单片机]
基于32<font color='red'>位</font>高速处理器S3<font color='red'>C</font>44B0X实现水表智能抄表系统的设计
C51/C52的串口原理及参考代码
一、什么是串口(RS232 9针串口) 串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 二、串口通信原理 一条信息的各位数据按位依次顺序的通信方式称为串行通信,传信通信可以是串口也可以是
[单片机]
<font color='red'>C</font>51/<font color='red'>C</font>52的串口原理及参考代码
三星Galaxy Z Flip4/Fold 4通过3C认证:标配25W充电器
集微网消息,近日,三星两款折叠屏新机已经通过了工信部 3C 认证,型号分别为 SM-F9360 和 SM-F7210。 认证信息显示,SM-F7210或为三星Galaxy Z Flip4,电池容量为3400mAh,SM-F9360或为三星Galaxy Z Fold 4,电池容量为4400mAh,两款手机均最高支持 25W 充电。 综合此前爆料,三星Galaxy Z Flip 4继续主打小巧轻便的折叠屏方案,但外屏大小将增大至2英寸,共有金色、灰色、浅蓝色和浅紫色四种配色,三星Galaxy Z Fold 4 共有米色、黑色和灰色三种配色,两款折叠屏手机均搭载高通骁龙8 Gen 1 Plus芯片。
[手机便携]
三星Galaxy Z Flip4/Fold 4通过3<font color='red'>C</font>认证:标配25W充电器
长寿命,强动力,C&K 微型轻触开关问市
C&K 又一次做到了!暨推出了革命性的 KSC TE 超强耐用轻触开关(1.6N 起动力下的使用寿命为 1000 万次, 为业内最高水平)之后, 如今, 我们新推出的开关在更大的 2.8N 和 4N 起动力下使用寿命达到 500 万次 — 这些微型轻触开关的使用寿命再次成为业内最长, 而且尺寸仅有6mm × 6mm。 KSC TE 开关现在有三种起动力可以选择(1.6N、2.8N 和 4N), 拓展了 C&K 的长使用寿命微型轻触开关产品组合, 让设计工程师找到完美选择。另外, 通过显著延长使用寿命, KSC TE 开关有助于缩短设计周期, 凭借尺寸和作用力范围的优势战胜竞争对手。这些性能优良的轻触开关非常适合工业、电梯和游戏
[工业控制]
长寿命,强动力,<font color='red'>C</font>&K 微型轻触开关问市
单片机C语言的优越性
·不懂得单片机的指令集,也能够编写完美的单片机程序; ·无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序; ·不同函数的数据实行覆盖,有效利用片上有限的RAM空间; ·程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏; ·C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性; ·提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址; ·提供small、compact、large等编译模
[单片机]
Type-C商机旺 芯片商启动新一轮军备竞赛
Type-C商机诱人。 搭载Type-C的连接器可正反插,并具备数据传输、电力及影音数据传输多种功能,吸引各大芯片商纷纷加速布局;同时,周边制造商也相继投入此一市场,USB链接装置(Dongle)、扩充基座及集线器等周边产也相继出笼,市场竞争愈加激烈。 USB Type-C商机势不可挡。 搭载Type-C连接器的应用装置可同时支持高速数据数据、影音传输,以及提供最高达100W的电力,为USB传输接口开启一个新的里程碑。 继2015年苹果(Apple)、Google率先导入Type-C接口后,经过一年多的市场洗礼,近期搭载Type-C的新品纷纷出笼,市场前景大好,促使相关供应链厂商也相继发布新一代解决方案,以抢食市场大饼。 Typ
[半导体设计/制造]
基于3c2410的linux2.6.22移植(1)
经历近2周的时间,查阅大量的参考资料和贴子,终于成功将linux2.6.22移植到ARM2410上。中间走了不少弯路,不过走弯路也是一种收获,因为可以碰到和解决许多问题,增长知识。因为linux版本问题以及开发平台的不同,网上的很多文章并不完全适合自己的板子,需要自己摸索和修改。写这点东西算是对前一阶段工作的总结,以免将来忘记。 移植大体的步骤主要有: (1) 交叉编译环境的建立(我的主机系统是ubuntu7.04); (2) 开发板(我用的是博创的2410)NAND flash 分区管理; (3) LCD、网卡驱动的移植; (4) linux内核配置和编译; (5) ro
[单片机]
基于CY7C68013与GPIF模式的USB2.0数据传输系统的设计
1 引 言 USB支持主计算机与许多可同时访问的外设之间进行数据交换,使外设的连接具有单一化、即插即用、热插拔等特点,已成为个人笔记本电脑和台式机的标准配置接口。Cypress公司的EZ-USB FX2是一款集成 USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控 制器和可编程的外围接口。每条指令占四个时钟周期,在48M晶振下工作时,单指令周 期为83.3ns,执行速度远快于标准的8051单片机。本文的数据传输模块采用CY7C68013 高速芯片设计的USB接口可以实现外部的存储测试电路数据的快速下载,并且上传至计 算机保存,显示,处理。这里介绍CY7C68013的GPIF接口功能及其在
[单片机]
基于CY7<font color='red'>C</font>68013与GPIF模式的USB2.0数据传输系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved