首页 > 其他分享 >AXI Quad SPI IP核基于AXI-Lite接口的标准SPI设计指南

AXI Quad SPI IP核基于AXI-Lite接口的标准SPI设计指南

时间:2024-06-08 09:00:01浏览次数:27  
标签:SS IP 配置 时钟 SPI 寄存器 AXI 设备

在标准SPI配置下,SPI设备除了包含基本的SPI特性外,还具备以下一些标准功能,这些功能如下所示:

  • 支持FPGA内部的多主设备配置,其中使用单独的_I(输入)、_O(输出)、_T(三态)表示三态端口。这种配置允许在FPGA内部有多个主设备共享SPI总线,通过三态驱动器来实现。
  • 在默认配置下支持N次8位数据字符的传输。默认的SPI模式实现了通过写入SPI SSR(SPI状态/控制寄存器)来手动控制SS(从设备选择)输出的功能。

       此模式只能与外部从属设备一起使用。

       在SPI通信中,当FIFO被禁用时,可以选择一个可选操作,使得主设备在每次传输8位字符时         自动切换SS(从设备选择)输出。这是通过SPI控制寄存器(SPICR)中的某个特定位来实           现。

       当主设备需要向特定的从设备发送数据时,它会将相应的SS线拉低(通常表示选中该从设            备)。然后,在每个8位字符传输完成后,主设备会自动切换SS线,以便选择下一个从设备            或继续与当前从设备通信。

  • 支持多主设备环境,这通常是通过三态驱动器来实现。在多主设备环境中,可能存在多个主设备试图同时访问同一从设备的情况,因此需要软件仲裁来解决可能的冲突。
  • 支持多从设备环境,能够自动生成额外的从设备选择输出信号,以便主设备可以选择性地与不同的从设备进行通信。
  • 在主模式下,SPI控制器支持的最大时钟速率可达AXI时钟速率的一半。
  • 在从模式下,由于AXI和SPI时钟之间的同步方法,最大时钟速率降至AXI时钟速率的四分之一。注意,在从模式下不支持C_SCK_RATIO = 2的配置。当配置为从模式时,需要确保AXI和外部时钟信号是对齐的。
  • 具有一个可配置的波特率生成器,用于生成SPI时钟信号。这允许用户根据应用需求调整SPI通信的速率。
  • 不支持WCOL(写冲突)标志,因此WCOL不能用作写冲突错误指示。在SPI数据传输进行中时,不应向发送寄存器写入数据。
  • 支持背靠背(back-to-back)事务,即在不中断的情况下进行多个字节、半字或字的传输。这要求发送FIFO在传输过程中始终不为空,接收FIFO始终不为满。
  • 所有SPI传输都是全双工的,意味着主设备向从设备发送一个8位数据字符的同时,从设备也在向主设备发送一个独立的8位数据字符。这可以视为一个循环的16位移位寄存器,其中SPI主设备中的8位移位寄存器与SPI从设备中的另一个8位移位寄存器相连。

在SPI多主设备配置中,连接到给定从设备(第N个设备)的SPI总线通常由以下四根线组成:

  • Serial Clock (SCK): 串行时钟线,用于同步主设备和从设备之间的数据传输。所有连接到SPI总线的从设备和主设备都共享这根线。

  • IO0 (Master Out, Slave In (MOSI)): 主设备数据输出,从设备数据输入线。主设备通过这根线发送数据到从设备,而从设备通过监听这根线来接收数据。同样,这根线也是所有连接到SPI总线的设备所共享的。

  • IO1 (Master In, Slave Out (MISO)): 主设备数据输入,从设备数据输出线。从设备通过这根线发送数据到主设备,主设备通过监听这根线来接收数据。这根线也是共享的。

  • Slave Select (SS(N)): 从设备选择线,也称为片选线或NSS(Negative Slave Select)。在SPI多主配置中,每个从设备都有一个独特的SS线,用于标识和选择该从设备以进行通信。当主设备需要与某个特定的从设备通信时,它会将对应从设备的SS线拉低(激活状态),而保持其他从设备的SS线为高电平(非激活状态)。这样,只有被选中的从设备会响应主设备的通信请求。

虽然SCK、IO0(MOSI)和IO1(MISO)这三根线是共享的,但每个从设备都有一个独特的SS线,用于在多主配置中区分和选择从设备,如下图所示。此外,任何连接到SPI总线的设备(无论是主设备还是从设备)都可以根据配置(例如通过寄存器设置)在运行时动态地切换其角色(从主设备变为从设备,或从从设备变为主设备)。

注:当IP核在主机模式下生成,但通过寄存器配置(60h)将其配置为从机时,SPISEL(Slave Select)信号应由SPI主机驱动到该IP核。这意味着,尽管该IP核可能是在主机模式下创建的,但通过特定的配置,它可以作为从机工作,并从主机接收选择信号。

每个SPI主机设备都可以生成一个低电平有效、一位热编码(one-hot encoded)的SS(N)向量。在这个向量中,每一位都被分配了一个SS信号,用于控制每个SPI从机设备。这意味着主机可以同时管理多个从机,通过不同的SS信号来激活和与特定的从机通信。

SPI主机和从机设备可以都是FPGA内部的,也可以有外部的从机设备。当与外部SPI从机设备接口时,Vivado Design Suite会自动生成必要的SPI引脚。这提供了与外部硬件通信的接口。

图3-1展示了多个SPI主机和从机设备的配置。这种配置同样适用于dual 模式。

标签:SS,IP,配置,时钟,SPI,寄存器,AXI,设备
From: https://blog.csdn.net/u011565038/article/details/139521686

相关文章

  • IPC——管道+命名管道
    IPC(进程间通信方式)进程间通信(IPC,InterProcessCommunication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中Socket和Streams支持不同主机上的两个进程IPC。管道(无名)管道,通常指无名......
  • IP和域名 关联关系系统设计
    0x01数据库表实现IP域名关系系统包括域名库检索和whois库检索,详情如下。域名库检索域名库检索支持以下5项功能:1.通过过滤器检索筛选条件包含IP地址、口令、工具名称、可利用的漏洞编号、创建时间;2.通过关键字检索在查询框中输入域名库名称的部分关键词,支持模糊查找和精确......
  • JavaScript中的async/await
    async/await是什么?async是一个修饰符,async定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数。await也是一个修饰符,await关键字只能放在async函数内部,await关键字的作用就是获取Promise中返回......
  • Codeforces Round 949 (Div. 2)D. Turtle and Multiplication(欧拉路径、线性筛、思维
    Problem-D-Codeforces  按照官方正解做即可,顺带存个jiangly板子。1#include<bits/stdc++.h>23usingi64=longlong;4std::vector<int>minp,primes;56voidsieve(intn){7minp.assign(n+1,0);8primes.clear();910......
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
    .netcore使用js,.netcore使用javascript,在.netcore项目中怎么使用javascript我项目里需要用到“文字编码”,为了保证前端和后端的编码解码不处bug,所以,我在项目中用了这个下面推荐之前在.netF4.0时的方法文章一:c#解码js的escape_c#escape-CSDN博客文章二:c#对js......
  • CSP历年复赛题-P3956 [NOIP2017 普及组] 棋盘
    原题链接:https://www.luogu.com.cn/problem/P3956题意解读:计算从(1,1)走到(m,m)的最小花费,有几个限定:同色格子可以走,花费为0;不同色格子可以走,花费为1;有色格子可以走到无色格子,花费为2,且用将无色格子临时染色;无色格子不能走到无色格子。解题思路:可以采用DFS来暴搜所有路径,需......
  • vue3+TypeScript
    1.Vue3简介2020年9月18日,Vue.js发布版3.0版本,代号:OnePiece(n经历了:4800+次提交、40+个RFC、600+次PR、300+贡献者官方发版地址:Releasev3.0.0OnePiece·vuejs/core截止2023年10月,最新的公开版本为:3.3.41.1.【性能的提升】打包大小减少41%。初次渲染快......
  • Diffusers代码学习: IP-Adapter(续)
    但是IP-Adapter不仅可以通过文生图的方式,也可以通过图生图的方式生成目标图片,就无需使用提示词。只不过同上一篇所述,底层的逻辑和图生图是完全不同的。# 以下代码为程序运行进行设置,使用图生图的自动管道,importosos.environ["HF_ENDPOINT"]="https://hf-mirror.com" ......
  • 螺旋转动,矩阵的舞蹈:JavaScript中实现螺旋矩阵遍历算法
    螺旋转动,矩阵的舞蹈:JavaScript中实现螺旋矩阵遍历算法基础概念:什么是螺旋矩阵?核心算法解析示例一:基础螺旋矩阵遍历算法解析进阶技巧示例二:动态生成螺旋矩阵技巧点实战与性能优化问题与解决:大矩阵处理结语与讨论在编程的奇幻世界里,数组与矩阵是构筑数字城堡的基石......
  • 数组大扫雷行动:JavaScript中的高效移除指定元素
    数组大扫雷行动:JavaScript中的高效移除指定元素基本概念:移除元素,何为?方法一:splice()大法方法二:filter()轻功功能使用角度与技巧案例一:简单移除案例二:条件移除实战分析遇到的坑与对策结语与讨论在JavaScript编程的征途中,数组是我们的常伴,而“移除元素”这一任务,则像......