QSPI Flash存储控制器(AHB从设备接口)

QSPI Flash存储控制器(AHB从设备接口)

        AHB从设备控制器,响应来自AHB总线主设备的访问请求,执行字节和半字的排序,在直接模式下阻塞对写保护区的写请求,给直接访问控制器或间接访问控制器转发传输请求。

1. AHB接口

        AHB接口遵循AMBA 3 AHB-Lite规范,但不支持HMASTLOCK(传输锁定)和HPROT(保护控制信号)。AHB接口的位宽度为32位,因此只允许字节,半字和字的访问。仅仅支持递增突发写(地址依次递增),绕回突发写(可以绕回到低地址)会触发一个错误。例如,从设备的信号hresp来描述访问完成情况,非零表示出错。而INCR16,INCR8,INCR4,INCR和SINGLE类型的突发是正常的。对于读操作而言,支持所有类型的突发类型,包括绕回类型WRAP。

2.AHB地址重映射

        QSPI Flash控制器实现了AHB地址解码,但对超出Flash存储范围的地址错误没有实现专门的地址解码。如果AHB地址解码使能,QSPI Flash控制器就可以检测每个设备地址范围,并自动实现跨设备寻址。来自AHB总线上的地址默认直接映射到串行发送到Flash设备上的地址。如果Flash设备是24位地址,那么来自AHB总线上的地址的低24位转发。

        重映射特性用于将来自AHB总线地址重新映射到ADDRESS+N上,其中N是重映射地址寄存器RAR(偏移量0x24)的值,这里的ADDRESS就是来自AHB总线的地址。该寄存器通过QSPI配置寄存器(偏移量0x00)的第16位来使能。

我的理解:如果AHB地址没有重映射,AHB总线地址就直接发送到SPI串行总线上,因此SPI Flash占CPU物理地址空间的起始地址必须为0;重映射后,这个起始地址才为N。

3.写保护

        为了保护Flash设备,硬件实现了写保护机制,软件可以进行相关设置。直接访问控制器DAC检测到来自AHB总线的写操作,如果目的地址是Flash被保护的区域,就会产生错误,信号hresp就会拉高。

        Flash设备的可编程范围(从一个特定的块号开始的几个数据块)可以被设置为写保护。提供了三个可编程寄存器:写保护范围的低地址块号寄存器(偏移量0x50),写保护范围的高地址块号寄存器(偏移量0x54),写保护寄存器(偏移量0x58)。前两个寄存器定义范围,后一个寄存器定义了使能和功能反转。

协助理解:

  1. 设备长度长度配置寄存器(偏移量0x14)的[20:16],定义了块长度。因此块号的定义与这个值有关。
  2. 在这个范围内块被定义为写保护,范围之外的块就没有写保护;功能反转后,在这个范围内的块没有写保护,范围之外的块反而有写保护。

4. 访问转发

        针对传统访问,AHB控制器会向直接访问控制器或间接访问控制器转发所有AHB访问。QSPI配置寄存器(偏移量0x00)的第23位被设置为1时,片选信号的设置位可以忽略,用设备地址寄存器来区分设备;默认,所有AHB访问都转发给直接访问控制器。如果需要将AHB访问转发给间接访问控制器,软件要重新配置。如果直接访问控制器DAC去能,不能转给间接访问控制器的AHB访问就会触发hresp错误信号。

5. 顺序访问检测和突发长度

为了提高性能,AHB总线的htrans信号可以不用,该信号是AHB传输类型信号用于指示传输的类型:空闲、忙、非顺序和顺序。如果访问方向(读/写)发生变化,那么访问很可能就是非顺序的;如果读访问长度(字节/半字/字)发生变化,那么访问也不是顺序的。在AHB地址解码器使能条件下,如果检测到跨设备的地址访问,就会产生一个新的SPI传输,因为当前选择的设备需要初始化。这种情况也被认为是非顺序访问,即是地址是连续的。

为了提高性能,AHB总线的hburst信号可以不用,该信号用于指示突发长度。如果发生非顺序访问,突发就会中断。

6. AHB地址解码器

        QSPI Flash控制器可以外接四个设备。外接Flash的累积内存长度可达2Gb,还可以比2Gb更大。为了提高Gb数据的顺序传输性能,AHB地址解码器要使能。从AHB总线角度看,这些地址全部是连续的。这样一来,软件驱动就不需要额外检测设备的地址边界,简化了访问管理。在跨Flash设备访问时,控制器会自动切换执行。硬件会基于设备长度配置寄存器(偏移量0x14)来计算Flash设备的地址边界。在该寄存器中,每一个Flash都有配置的长度范围,长度从512Mb到4Gb。AHB地址解码器只能用于直接读传输。为了保证所读的数据具有稳定性,要避免了跨设备边界的写访问导致的轮训设备操作。为了保证所读的数据具有稳定性,还是建议在对每个设备重新启动读操作,而不用AHB地址解码器。

猜你喜欢

转载自blog.csdn.net/lsshao/article/details/119755406