AXI Quad SPI IP核将AXI4和AXI4-Lite接口连接到SPI从设备,用于支持标准、dual 或quad SPI协议指令集。该IP核提供了一个串行接口到SPI从设备的接口,例如来自Winbond、Micron、Spansion和Macronix的SPI串行闪存。dual/quad SPI是标准SPI协议的增强版本。
1 AXI4-Lite接口
如果选择AXI4-Lite接口,则包括SPI DTR(Data Transmit Register,数据发送寄存器)和SPI DRR(Data Receive Register,数据接收寄存器)在内的所有寄存器都是32位、单存取寄存器。在软件编程时,当写入SPI DTR寄存器时,通常只关心最低的8位,并且会将这些位设置为要发送的数据。读取SPI DRR寄存器时,也只会查看最低的8位来获取接收到的数据。而寄存器的高24位可以设置为任何值,因为它们对SPI通信没有影响。
2 AXI4 接口(增强模式)
当选择AXI4接口时,所有寄存器都必须是单长度访问的。这意味着每次只能访问一个数据字(通常是32位或64位,具体取决于AXI4接口的宽度配置)。如果尝试进行burst访问(除了SPI DTR或SPI DRR寄存器之外),该IP核的行为是不确定的。因为burst访问通常指的是连续访问多个数据字,而不是单个数据字。
SPI DTR和SPI DRR寄存器可以作为32位寄存器来访问。FIXED burst仅允许用于SPI DTR和SPI DRR寄存器。这种burst类型允许连续传输固定数量的数据字,但在这里,只有每个数据字的最后8位是实际的数据。
在启动递归的FIXED burst之前,应该读取占用寄存器(occupancy registers)。占位寄存器提供了将要执行的FIXED burst的长度。只有最后八个位应该被视为实际数据。
在对DTR寄存器执行写burst操作时,写选通(strobes)中不允许有空洞。这意味着在burst操作中,每个数据字的写选通都必须是连续的,不能跳过任何数据字。如果IP核检测到写burst操作中有空洞,它将认为这是非法的,并且IP核的行为在这种情况下是不确定的。
在对SPI闪存进行任何新事务时,DTR FIFO首先填充一个命令,然后是地址、dummy字节,然后是数据字节。这个序列应该由应用程序严格遵守。
读取或写入数据占用寄存器表示接收或发送FIFO中剩余的位置数量,这有助于确定下一个事务的burst长度。
这种模式最适合基于CDMA(Code Division Multiple Access,码分多址)的应用,因为它允许高效地管理和控制数据流的传输和接收。
总之,使用AXI4接口与SPI DTR和SPI DRR寄存器进行通信时,需要遵循特定的访问规则和序列,以确保正确的数据传输和IP核的稳定行为。
3 AXI4只读接口(XIP模式)
AXI4是一个高带宽、低延迟的片上总线接口,广泛用于高性能的SoC(System-on-Chip)设计中。AXI4接口定义了多种操作模式,包括只读模式,也称为XIP(Execute-In-Place)模式。
在AXI4的XIP模式下,接口仅允许读事务,而写事务是不被允许的,并且如果尝试进行写事务,IP核将视其为错误。这种设计是为了满足那些只需要从存储器中读取数据,而不需要写入数据的应用场景。
XIP寄存器通常可以通过AXI4-Lite接口进行访问。
XIP模式特别适用于基于ROM(Read-Only Memory)的应用,例如使用闪存(flash devices)作为程序存储器的嵌入式系统。在这些系统中,程序和数据通常存储在闪存中,并在运行时从闪存中直接读取执行,而不需要写入。使用AXI4的XIP模式可以确保对存储器的访问是安全的,并且符合ROM-based应用的需求。
总结来说,AXI4的XIP模式允许从AXI4接口进行只读事务,适用于需要从存储器中读取数据而不需要写入的ROM-based应用。