AXI Quad SPI IP核AXI4-Lite接口的部分操作指南

2024-06-09 20:04

本文主要是介绍AXI Quad SPI IP核AXI4-Lite接口的部分操作指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 AXI4-Lite接口标准SPI模式——传统模式下可选FIFO的使用

当AXI Quad SPI IP核配置为标准SPI模式时,可以选择在设计中包含16或256深度的可选FIFOs。由于AXI Quad SPI是全双工的,所以发送和接收FIFOs都作为一对被实例化,并且可以包含在IP核中。

当实现FIFO时,要求所有的从选择地址都相同缓冲在FIFO中的数据。这是必要的,因为从机选择地址没有FIFO。发送和接收FIFO都有16(或256)个元素深度,并且可以使用单个AXI事务访问,因为不支持突发模式。

发送FIFO是只写的。当有数据写入FIFO时,占用数增加;当SPI传输完成时,数量减少。由于这种操作,中止的SPI传输仍然有数据可用于传输重试。传输只能在主模式下通过设置SPICR的第8位为1来中止。在slave模式下设置此位对slave的操作没有影响。这些中止的传输在SPI接口上。占用数包含在一个只读寄存器中。

如果在FIFO已满时尝试写入,将给出确认信号并生成错误信号。

与发送FIFO相关的中断包括:

  • 发送数据FIFO为空
  • 发送FIFO半空
  • 发送FIFO下溢

接收FIFO是只读的。当从FIFO中读取数据时,占用数会减少;当SPI传输完成时,该数字会增加。这是因为FIFO是一个存储数据的队列,它按照数据进入的顺序来读取数据。当数据被读取时,表示队列中的元素数量减少;当SPI完成一次数据传输(可能是从外部设备到内部FIFO),队列中的元素数量会增加。

如果尝试在FIFO为空时读取数据,会给出确认信号,并生成一个错误信号。当接收FIFO变满时,会生成接收FIFO满中断。数据在SPI传输完成后会自动从SPI模块的移位寄存器写入FIFO。如果接收FIFO已满且接收到更多数据,会发出接收FIFO溢出中断。当这种情况发生时,SPI模块尝试写入已满接收FIFO的所有数据都会丢失。

AXI Quad SPI IP核配置有FIFO时,SPI传输的启动方式可以根据SPICR(SPI控制寄存器)中使能位的设置分为两种不同的情况。如果在FIFO中加载第一个数据之前设置使能位,则在写入主发送FIFO后立即开始SPI传输。如果在向发送FIFO写入更多元素之前,通过SPI传输清空了FIFO,则会触发一个中断。当AXI到SPI SCK的频率比足够小时,这种情况非常可能发生。

SPI传输的启动还可以采用另一种方式:先将FIFO加载至多16个或256个元素,然后设置使能位来启动SPI传输。在这种情况下,当所有元素都被传输完成后,会触发一个中断。在所有情况下,都可以在清空FIFO之前向发送FIFO写入更多数据,以增加传输的元素数量。

2 AXI4-Lite接口Dual/Quad SPI模式——可选FIFO深度

当该IP核配置为Dual/Quad SPI模式时,FIFO始终存在,并且可以选择其深度。该FIFO的深度可以是16或256。在这种模式下,FIFO的宽度总是8位。

3 AXI4-Lite接口SPI主回环(loopback)操作

SPI主环回操作是一种用于加速测试的技术。通过在SPICR(SPICR(0))中设置回环位来选择该操作,从而实现从发送器输出到接收器输入的内部连接。在此操作中,接收器和发送器会按正常方式工作,但接收到的数据(来自远程从设备)会被忽略。

主回环操作仅在SPI设备被配置为主设备,并运行在标准SPI事务模式下时有效。当该IP核被配置为Dual/Quad SPI模式时,不支持主回环操作。

在执行此操作时,SPI主设备发送的数据会直接从发送器输出循环回到接收器输入,而不需要经过外部从设备。这一特性使得测试过程更加便捷,因为可以快速地验证SPI主设备的发送和接收功能是否正常,而无需连接实际的从设备。

4 AXI4-Lite接口硬件错误检测

SPI架构在多主配置中依赖于软件控制的总线仲裁来避免冲突和错误,但SPI硬件实现的错误检测功能是有限的。以下是关于SPI错误检测机制的内容,特别是内容争用错误检测(Contention Error Detection)的详细解释:

内容争用错误检测

当一个SPI设备被配置为主设备时,如果被另一个同时被配置为主设备的SPI设备选中(即其SS位被断言),内容争用错误检测机制会被触发。在这种场景下,被选中作为从设备的主设备会立即驱动其输出,以避免由于同时驱动争用导致的硬件损坏。

同时,主设备还会在SPISR(SPI状态寄存器)中设置模式故障错误(MODF)位。这个位可以通过读取SPISR来自动清除。

在发生MODF错误后,主设备必须被禁用并重新启用,同时确保数据正确。如果系统配置了FIFO,则可能需要清除FIFO中的数据。

SPI从设备错误检测

当一个SPI设备被配置为从设备但未启用时,如果被另一个SPI设备选中(即其SS位被断言),类似的错误检测机制会被触发。在这种场景下,IPISR通过选通将位1设置到IPISR寄存器。

SPI通信中提供了对Underrun(下溢)和Overrun(上溢)条件错误的检测机制。以下是这两种错误检测机制的详细解释:

Underrun条件错误检测

Underrun条件仅在从设备模式下发生。当主设备命令进行数据传输,但从设备的发送寄存器或FIFO中没有数据可供传输时,会发生Underrun条件。

当Underrun条件发生时,从设备的Underrun中断会被触发。从设备的移位寄存器会被加载为全零状态,以便进行传输。这意味着在通信过程中,主设备会接收到全零的数据。

Overrun条件错误检测

Overrun条件既可以发生在主设备也可以发生在从设备上。当接收寄存器或FIFO已满时,如果继续发生数据传输,则会发生Overrun条件。

在Overrun条件下,该次传输中接收到的数据不会被存入寄存器(即数据丢失),且IPISR寄存器的Overrun中断位(位5)会被触发。

5 设置Frequency Ratio参数

在设置AXI Quad SPI IP核的Frequency Ratio参数时,需要考虑多个因素以确保与连接的SPI从设备(如Micron、Winbond、Macronix和Spansion Flash存储器)之间的正确通信。可以使用Winbond、Micron、Spansion和Macronix SPI闪存来测试标准、双线模式和四线模式。

首先,需要读取目标SPI从设备(如SPI flash存储器或EEPROM)的数据手册,以了解其最大操作速度。Frequency Ratio参数决定了AXI Quad SPI IP核SCK引脚上的时钟频率。这个参数应该根据SPI从设备的最大时钟频率和AXI时钟来设置。不同的SPI从设备可能支持不同的最大时钟频率,因此,在设置Frequency Ratio参数时,需要考虑到所有连接到AXI Quad SPI IP核的从设备的最大时钟频率。

6 AXI4-Lite接口 SPI从设备模式——传统模式下的标准SPI配置

AXI Quad SPI IP核可以通过将外部主设备的从选择线连接到SPISEL并将SPI控制寄存器(SPICR)的第2位设置为0来配置为从模式。只有在标准SPI模式下才允许使用从模式。在双线或四线SPI模式下,IP核仅支持主模式。

当“Frequency Ratio”参数大于4时,所有传入的信号都会与AXI时钟同步。这意味着传入的信号会被调整或缓冲以匹配AXI时钟的频率和相位。

当“Frequency Ratio”参数设置为4时,由于严格的时序要求,传入的SCK时钟信号及其同步信号将直接在内部逻辑中使用。因此,在这种情况下,外部时钟必须与AXI时钟同步。

对于其他“Frequency Ratio”参数值,虽然同步是首选的,但可能不是必需的。

在从模式操作中,通过将FIFO深度设置为标准的16或256来使用FIFO SPI模式。

在AXI Quad SPI IP核的从模式下,除了IPISR中的其他中断外,还有两个特定的中断可用。这些中断与从模式的数据传输和配置相关。

  • DRR_Not_Empty(位8)
  • Slave_Mode_Select(位7)

在其他SPI主设备开始通信之前,必须将IP核的发送FIFO填充所需的数据块,数据块是SPI通信中传输的数据单元,通常包含多个字节或位。用所需的数据节拍填充从IP核传输FIFO是必要的。当主设备开始通信时,IP核配置在从设备模式,IP核一直传输数据直到数据在其传输FIFO中可用。

当AXI Quad SPI IP核被配置为从模式时,它是强制性的要求,即必须在开始通信之前将从IP核的发送FIFO填充所需的数据块。数据块是SPI通信中传输的数据单元,它们包含了要在主设备和从设备之间交换的信息。

当主设备开始通信,并且IP核已配置为从模式时,IP核将持续传输数据,直到其发送FIFO中的数据可用为止。换句话说,从设备会按照FIFO中数据的顺序将其发送给主设备。

在AXI Quad SPI通信中,当从设备的FIFO发送完最后一个数据块(data beat)后,它会生成一个DTR空信号,用于通知主设备或系统控制器,从设备的发送FIFO已经空了,需要填充新的数据块以便进行后续的通信。

这篇关于AXI Quad SPI IP核AXI4-Lite接口的部分操作指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046162

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

SpringBoot整合OpenFeign的完整指南

《SpringBoot整合OpenFeign的完整指南》OpenFeign是由Netflix开发的一个声明式Web服务客户端,它使得编写HTTP客户端变得更加简单,本文为大家介绍了SpringBoot... 目录什么是OpenFeign环境准备创建 Spring Boot 项目添加依赖启用 OpenFeig

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自