标签:单元 address 比较 启动 大小 引脚 指令 特殊 命令
首先来分析下操作GPIO控制器和操作UART控制器两者的区别
如图是S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚),有串口控制器 (接有TXD RXD引脚)
配置GPIO控制器相应的寄存器,即可让引脚输出高低电平;配置UART控制器相应的寄存器,即可让引脚输出波形。前者相对简单,类似门电路,后者相对复杂,属于协议类接口。类似的协议类接口还有iic、iis、spi等。 对于CPU是不管什么接口的,它只写相应的寄存器,由控制器根据寄存器的配置去控制具体的引脚。
那么CPU是如何访问各个不同的寄存器的呢?
CPU只管发出一个地址,内存控制器根据该地址选择不同的模块,然后从模块中得到数据或者发送数据到模块中。
前面的GPIO/门电路接口、协议类接口,都不会把地址输出到外部,接下来的内存类接口,会把地址输出到外部,比如Nor Flash、网卡、SDRAM。
如图,SDRAM、DM9000网卡、Nor Flash都接在JZ2440的数据总线和地址总线上,CPU把数据和地址发送出去,然后内存控制器根据片选信号选择相应的设备接收地址和数据信号,互不干扰。
片选信号和地址的关系怎么确定?
这个是由2440芯片特性决定的。
内存控制器根据不同的地址地址范围,发出不同的片选引脚,只有被片选引脚选中的芯片才能正常工作,不被选中的芯片就像不存在一样,不工作。
GPIO/门电路接口、协议类接口、内存类接口都属于CPU的统一编址。对于Nand Flash,在原理图上它的地址线并没有连接到CPU,因此它不参与CPU的统一编址。但它的数据线也接到了数据总线上,为了防止干扰,它也有一个片选信号(CE)。当CPU访问Nand Flash时,Nand Flash控制器才会片选Nand Flash,让其接收数据总线上的数据。
再来看下Nor Flash的空间,0x00000000 * 0x08000000,为128M,即每一个片选信号可以选择的空间是128M=2^27,也就需要A0、A1……A26,共27根地址线。CPU发出的32位地址线,内存控制器根据地址范围,片选上相应的bank,并将地址转化为27位。
参考2440芯片手册,可以看到内存接口与8-bit ROM连接时,2440的A0与外部芯片的A0相连。
当与两个8-bit ROM拼接成的一个16-bit ROM连接时,2440的A1与外部芯片的A0相连。
当与四个8-bit ROM拼接成的一个32-bit ROM连接时,2440的A2与外部芯片的A0相连。
当与一个16-bit ROM连接时,2440的A1与外部芯片的A0相连。
可以看出外接芯片的位宽有变化时,地址线的接法也会有变化。那这个变化有什么规律呢?
假设CUP执行:
MOV R0, #3 @去地址为3的内存上 LDRB R1, [R0] @ 从内存为3的地址上,读出一个字节
如图有8bitROM、16bitROM、32bitROM。
8个bit组成一个字节,字节是计算机的最小的存储单位,因此我们读取数据肯定都是8bit的倍数。
ROM/bit | CPU发出地址 | ROM收到地址 | ROM返回数据 | 内存控制器挑选出数据给CPU |
---|---|---|---|---|
8bit(ROM) | 000011 | 000011 | 编号3的存储单元中的8数据 | 编号3的存储单元中的8bit数据 |
16bit(ROM) | 000011 | 000001 | 编号1的存储单元中的16数据 | 根据”A0=1”,挑出低8bit数据 |
32bit(ROM) | 000011 | 000000 | 编号0的存储单元中的32数据 | 根据“A0A1=11”,挑出最低8bit数据 |
接到芯片上的引脚用来确定读取芯片上的哪一个单元的数据,把这个单元的数据返回给内存控制器,内存控制器会根据没有连接芯片的引脚,来确定返回哪一个单元的数据给CPU,
再举一个例子: 假如传递一个32位的数据时
MOV R0, #4 LDR R1, [R0] @去地址4,读取4字节数据
执行过程如下:
怎样确定芯片的访问地址: 1. 根据片选信号确定基地址, 2. 根据芯片所接地址线确定范围
实例: Nor Flash 使用的是片选0(nGCS0),基地址为0,用到A20,A19......A1,A0共21条地址线,所以地址范围为0x00000000 ~ 0x1FFFFF也就是2M的空间大小。
- | Nor Flash | Net | |
---|---|---|---|
基地址(base) | 0x00000000 | 0x20000000 | 0x30000000 |
取址范围 | 0x00000000~0x1FFFFF | 0x20000000~0x20000005 | 比较特殊,后面讲解 |
这节我们分析一下我们了解时序图,信号之间是怎样一起工作的,以Nor Flash 为例。
440和Nor Flash 之间有地址线,数据线,还有各种数据线连接。
以Nor Flash为例,分析下如何设置它的时序。
如图是S3C2440的Nor Flash控制器的读时序图,里面很多参数都需要根据外接芯片的性能进行设置,有的芯片性能好、响应时间快,就可以把参数时间设置小一点,释放更好的性能。
如图是Nor Flash芯片的读时序。
我们需要做的就是设置S3C2440的Nor Flash控制器时序去满足Nor Flash芯片的时序。每个参数的参考范围可以通过AC CHARACTERISTICS得到。
结合Nor Flash芯片的两张图,可以得到如下信息:
为了简单我们把地址数据(Addresses),片选信号(CE#),读信号(OE#),同时发出,然后让它们都等待70ns(等待信号有效)。对应S3C2440的Nor Flash控制器的读时序图,需要让地址信号A[24:0]、片选信号nGCS、读信号nOE同时发出,保持Tacc大于等于70ns。
标签:单元 address 比较 启动 大小 引脚 指令 特殊 命令
原文地址:https://www.cnblogs.com/yekongdebeijixing/p/10485221.html