码迷,mamicode.com
首页 > 其他好文 > 详细

Flash的不同位宽与CPU地址线的接线问题?

时间:2016-05-08 18:05:32      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

一般Flash都有8、16、32等这些不同的位宽,当然说白了就是Flash的数据线位数。

在Flash与CPU的地址线的连接问题时:不同位宽的有不同的连接方法:

一般是:位宽为8时CPU的ADDR0与Flash的A0相连,其他的按顺序依次往下连接;

           位宽为16时CPU的ADDR1与Flash的A0相连,其他的按顺序依次往下连接;

           位宽为32时CPU的ADDR2与Flash的A0相连,其他的按顺序依次往下连接;

 

怎么对应起来的呢?    参考博客:http://blog.csdn.net/linweig/article/details/5556819

以位宽为16的Flash为例:

所以此时的连线是:CPU的ADDR1与Flash的A0相连,其他的按顺序依次往下连接;

以CPU读操作为例:

CPU想进行8位操作时,它将16位数据中的高8位或者低八位返给CPU;
CPU想进行16位操作时,它直接把这16位数据返给CPU;
CPU想进行32位操作时,它发起2次读操作,把结果组合成32位返回给CPU。

当然有人会问:他怎么知道把低八位或者高八位数据返给CPU,怎么把两个16位数据组成32位数据给CPU呢?

因为有个中间层被称为“Memory Controller”,CPU要进行读写操作时,“Memory Controller”根据NOR FLASH的位宽和CPU读写操作的位数

来进行上面的操作。

“Memory Controller”会帮助我们做这些事情,举例为证:
1. 软件要读取地址0上的8位数据时,硬件是这样进行的:
  ① “Memory Controller”发出0b000000000000000000000的地址信号,NOR FLASH的A0-A19线上的信号是:0b00000000000000000000
  ② NOR FLASH在数据总线D0~D15上提供一个16位的数据,这是NOR FLASH中的第1个“最小数据单元” 
  ③ “Memory Controller”读入这个16位数据
  ④ “Memory Controller”把这个16位数据的低8位返回给CPU,这就是一个8位数据。

2. 软件要读取地址1上的8位数据时,硬件是这样进行的:
  ① “Memory Controller”发出0b000000000000000000001的地址信号,NOR FLASH的A0-A19线上的信号是:0b00000000000000000000
  ② NOR FLASH在数据总线D0~D15上提供一个16位的数据,这是NOR FLASH中的第1个“最小数据单元” 
  ③ “Memory Controller”读入这个16位数据
  ④ “Memory Controller”把这个16位数据的高8位(注意,前面的低8位)返回给CPU,这就是一个8位数据。

3. 软件要读取地址2上的8位数据时,硬件是这样进行的:
  ① “Memory Controller”发出0b000000000000000000010的地址信号,NOR FLASH的A0-A19线上的信号是:0b00000000000000000001
  ② NOR FLASH在数据总线D0~D15上提供一个16位的数据,这是NOR FLASH中的第2个“最小数据单元” 
  ③ “Memory Controller”读入这个16位数据
  ④ “Memory Controller”把这个16位数据的低8位返回给CPU,这就是一个8位数据。

 

对于操作其他的位数,大致与上面是一样的。

 

Flash的不同位宽与CPU地址线的接线问题?

标签:

原文地址:http://www.cnblogs.com/deng-tao/p/5470896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!