AXI Quad SPI IP核中的STARTUPEn原语参数

启动STARTUPEn Primitive (原语)参数在 FPGA的主 SPI模式下非常有用。当你启用这个参数时,对于 7 系列设备,STARTUPE2 原语会被包含在设计中;而对于 UltraScale™ 设备,则是 STARTUPE3 原语。这些原语在 FPGA 配置后成为IP核的一部分。

1 启用STARTUPEn 原语参数

STARTUPEn(如STARTUPE2STARTUPE3)原语在FPGA设计中起着关键的作用,特别是在与FPGA的SPI配置接口相关时。

FPGA内部的一个输出端口SCK_O(即SPI的时钟输出)会与STARTUPEn原语连接。这个连接允许FPGA在配置过程中与外部的SPI从设备(通常是配置存储器)进行通信。在FPGA配置之前,STARTUPEn也可以用于预配置过程,其中外部SPI从设备会被预先配置。这个过程确保了FPGA在上电时可以立即从已知的状态开始工作。

在FPGA配置完成后,SCK_O端口会驱动STARTUPEn原语的USRCCLK0端口。这个信号在FPGA IP核外部是不可见的,因为它是内部连接的一部分。

实例化STARTUPEn原语会影响ext_spi_clk(外部SPI时钟)的最大频率。这是因为STARTUPEn原语的性能会限制SPI接口可以支持的最大时钟速率。如下图所示:

注:对于xip和标准模式,ext_spi_clk可能被限制为60 MHz。

       UltraScale™设备的频率数字预计与7系列相似。

      上表中提到的频率特定于传统的SPI x 1模式。如果我们改变模式和其他设置,它们会发生变         化。 

2 使用双通道四通道模式

启用Dual Quad模式这个参数仅在UltraScale™及未来系列的设备中,在特定的IP核配置下才有效。

  1. Master mode:IP核工作在主模式下,即它是SPI通信的发起者和控制者。

  2. STARTUP enabled

  3. SPI mode is QUAD

  4. Number of slaves is 2:IP核配置为与两个SPI从设备通信。

当“Enable Dual Quad Mode”参数被启用时,IP核将拥有两个SPI接口。这意味着它可以同时与两个flash存储器或其他SPI从设备通信,如图3-2所示。这提高了数据传输的效率和灵活性,允许IP核在单个时钟周期内与两个从设备交换数据。

在SPI通信中,当涉及到多个从设备时,数据流量的控制是通过从设备选择寄存器(SPISSR)来控制实现的。

3 不启用STARTUPEn 原语参数

SCK_O 和 IO1_I 端口是IP核的一部分,但由于它们不是IP核内部实例化的原语,这些端口作为IP核的外部端口存在,并被放置在用户配置位置的输入输出块(IOB, Input/Output Block)中。

(1) 在传统和增强非XIP模式下

无论是否选择了Enable Performance Mode,都设置该模式。这时,不选择Enable XIP Mode。AXI Quad SPI IP核支持Winbond、Micron、Spansion和Macronix存储器。当使用AXI Quad SPI IP核测试不同的存储器时,确实需要检查不同存储器所需的命令是否相同。如果不同存储器的命令、地址和数据行为都相同,那么可以选择其中一个设备作为基准存储器来测试IP核。

IP核通过内部逻辑了解目标内存的命令及其预期行为。当IP核尝试执行一个不被存储器设备支持的命令时,它会设置一个命令错误标志。一旦命令错误被设置,IP核将不会执行与该命令相关的SPI事务,并生成一个命令错误中断。这允许系统识别并响应不支持的命令,从而避免潜在的错误或数据损坏。

在命令阶段之后,如果包含地址相位,则根据地址模式位定义的模式,在SPI事务中传输下一个DTR(数据/地址/寄存器传输)内容。地址相位通常用于指定存储器中要访问的具体位置(例如,读取或写入的起始地址)。

如果特定命令包含数据相位,则根据读或写操作以及数据模式位设置的模式来执行数据相位。数据相位涉及数据的实际传输,无论是从存储器读取数据还是向存储器写入数据。

dummy bytes(虚拟字节)是在与某些存储器通信时,特别是在执行某些指令时,为了符合特定时序要求而插入的额外字节。这些虚拟字节并不包含实际的数据或地址信息,但它们对于确保命令的正确执行至关重要。

在SPI通信中,DTR(Data/Address/Register Transfer)是数据传输的基本单元,它可能包含地址、数据、控制信号或其他信息。当执行某些指令时,除了需要传输的实际数据字节数外,还需要在DTR中包含一定数量的dummy bytes。

对于读取命令,在传输地址位之后,IP核立即切换到输入模式,并开始在DRR中存储数据。因此,请注意有多少虚拟字节在DRR中被忽略。例如,对于Winbond存储器中的快速读取双输出命令,DTR应填充一个命令字节加三个地址字节加上dummy cycle(虚拟周期的两个虚拟字节加上要从存储器中读取的虚拟字节数。命令和地址在标准SPI模式下传输,之后IP核切换到输入模式并开始存储数据。数据在IO0_I和IO_1线上传输,并存储在SPI DRR中,包括两个虚拟循环加上有效数据。因此,在读取SPI DRR时,忽略掉SPI DRR的前6个字节。FIFO中可用的有效数据从第七个字节开始。这也适用到其他双读取或四读取命令。

对于每个新事务,必须清除SPI DTR FIFO。SPI DTR中的第一个条目始终被视为命令条目,它与所选SPI模式的相应存储器的内置逻辑进行交叉检查。

(2)在XIP模式下

当“Enable Performance Mode”和“Enable XIP Mode”都被选中时,IP核将支持标准模式、双模式和四模式,具体设置和配置如下:

  • 标准模式(Standard mode):设置“Mode”为“Standard”,“Slave Device”设置为Winbond、Micron、Macronix或Spansion等支持的存储器设备。
  • 双通道模式(Dual mode):设置“Mode”为“Dual”,“Slave Device”同样需要设置为Winbond、Micron、Macronix或Spansion等支持的存储器设备。在双模式下,SPI通信将使用两条数据线(如IO0和IO1)同时进行数据传输。
  • 四通道模式(Quad mode):设置“Mode”为“Quad”,“Slave Device”也需要是Winbond、Micron、Macronix或Spansion等支持四模式的存储器设备。在四模式下,SPI通信将使用四条数据线(如IO0、IO1、IO2和IO3)同时进行数据传输。

此模式的假设为:

Winbond存储器
在每次上电复位状态后,会执行一个高性能模式命令,以确保Winbond存储器被配置在高性能模式下。随后,可能会执行DIOFR(0xBBh)或QIOFR(0xEBh)这样的命令来进一步操作该存储器。
当设置Quad模式时,对于Winbond存储器,确实需要预先通过向状态寄存器写入来设置QE(Quad Enable)位为1。
如果IP核不负责向状态寄存器写入任何内容来配置Quad模式,那么这项工作就需要由外部系统或初始化代码来完成。在XIP模式下,预配置存储器的责任在于系统设计者或初始化代码。

当IP核在执行DIOFR或QIOFR命令之前被配置为双模式或四模式时,IP核会在上电复位(POR)后在AXI4接口接收事务之前向存储器写入高性能模式(HPM)命令。这个HPM命令需要一个命令周期和三个dummySPI周期来完成。这个HPM命令在存储器中的写入仅在系统上电时执行一次。当HPM命令成功写入后,Winbond存储器就被配置为高性能模式(HPM — 0xA3h),并允许DIOFR或QIOFR命令在相应的模式下进行操作。

Micron Memory

在Micron存储器中,无论是易失性配置寄存器还是非易失性配置寄存器,其关于dummy周期的字段(VCR[7:4]和NVCR[15:12])在出厂时都被设置为默认值,即1111。IP核特征是基于这些dummy周期寄存器的默认设置(即1111)来设计的。这意味着,当这些寄存器保持默认设置时,IP核可以预期按照特定的行为模式来工作。

建议:不要更改默认的易失性配置寄存器(VCR)和非易失性配置寄存器(NVCR)配置。

在每个新事务开始时,IP核发送相应的命令、地址和所需要的dummy周期,然后接收数据。

Spansion 存储器

当IP核不直接写入状态寄存器,并假定在执行XIP模式之前已经完成这一配置时,这通常意味着系统设计师或开发者需要在系统启动或初始化阶段进行必要的配置。

当设置四通道模式时,Spansion内存必须预先通过写入配置寄存器来设置QUAD位为1。这一步骤是为了确保内存能够按照四通道模式进行工作,以提供更高的数据传输速率和吞吐量。

Macronix 存储器

在Macronix存储器中,配置寄存器负责处理虚拟周期的信息。虚拟周期的配置因配置寄存器中的bit6和bit7(DC0和DC1)的设置而异。默认情况下,bit6和bit7的值为00。

根据Macronix的数据手册,DC0和DC1的不同设置会对应不同的虚拟周期数量。

推荐:不要改变默认的配置寄存器配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/852120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS手工升级curl记

笔者一台服务器装有 CentOS 7.9 系统,运行 curl -V 查询 curl 的版本是 7.29,这个老版本的 curl 不支持 HTTP/2 协议。为了使 curl 能连接HTTP/2,curl 必须升级到至少7.46.0版本以上。查询 curl的官网得知当前最新版本是 8.8.0,然…

【ZZULIOJ】1104: 求因子和(函数专题)

题目描述 输入正整数n&#xff08;2<n<1000&#xff09;&#xff0c;计算并输出n的所有正因子(包括1&#xff0c;不包括自身)之和。要求程序定义一个FacSum ()函数和一个main()函数&#xff0c;FacSum ()函数计算并返回n的所有正因子之和&#xff0c;其余功能在main()函…

Kubernetes(K8s)从入门到精通系列之十九:Operator模式

Kubernetes K8s从入门到精通系列之十九&#xff1a;Operator模式 一、动机二、Operators in Kubernetes三、Operator示例四、部署Operator五、使用Operator六、编写自己的operator Operator 是 Kubernetes 的软件扩展&#xff0c;它利用自定义资源来管理应用程序及其组件。 Ope…

49. 简单数字加密

Description 实现一个加密函数&#xff0c;对输入的4位数字进行加密&#xff0c;并输出加密结果。加密规则如下&#xff1a; 对每一位数字都利用该数字对应的ASCII编码加上5&#xff0c;然后用除以10的余数代替该数字。将第一位和第四位交换&#xff0c;第二位和第三位交换。…

【智能算法应用】基于粒子群算法的多尺度Retinex图像去雾方法

目录 1.算法原理2.粒子群算法的多尺度Retinex图像去雾方法3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】粒子群算法&#xff08;PSO&#xff09;原理及实现 多尺度Retinex算法 在Retinex算法中&#xff0c;雾化图像的形成可以总结为入射光和反射光的乘积: I ( x…

第 3 章:Spring Framework 中的 AOP

第 3 章&#xff1a;Spring Framework 中的 AOP 讲完了 IoC&#xff0c;我们再来聊聊 Spring Framework 中的另一个重要内容——面向切面编程&#xff0c;即 AOP。它是框架中众多功能的基础&#xff0c;例如声明式事务就是依靠 AOP 来实现的。此外&#xff0c;Spring 还为我们…

代码详解工厂设计模式【2】

文章1暴露了简单工厂模式的一些局限性。为了解决这些问题&#xff0c;我们可以使用工厂方法模式&#xff0c;它更好地遵循了开闭原则&#xff08;对扩展开放&#xff0c;对修改封闭&#xff09;。在工厂方法模式中&#xff0c;我们为每种产品提供一个工厂类&#xff0c;这样就避…

创邻科技张晨:期待解锁图技术在供应链中的关联力

近日&#xff0c;创邻科技创始人兼CEO张晨博士受浙江省首席信息官协会邀请&#xff0c;参加数字化转型与企业出海研讨会。 此次研讨会旨在深入探讨数字经济时代下&#xff0c;企业如何有效应对成本提升与环境变化所带来的挑战&#xff0c;通过数字化转型实现提效增益&#xff…

4090显卡 安装cuda 11.3 版本

文章目录 cuda 安装安装过程中会要求选择安装的内容更改cuda地址到你安装的地方 cuda 安装 cuda官网寻找cuda11.3 版本 https://developer.nvidia.com/cuda-11.3.0-download-archive?target_osLinux&target_archx86_64&DistributionUbuntu&target_version20.04&…

yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(python版)

先贴出github地址&#xff0c;欢迎大家批评指正&#xff1a;https://github.com/taifyang/yolo-inference 不知不觉LZ已经快工作两年了&#xff0c;由于之前的工作内容主要和模型部署相关&#xff0c;想着利用闲暇时间写一些推理方面的经验总结&#xff0c;于是有了这个工程。其…

C语言从头学20——指针

概念&#xff1a;指针是一个整型值&#xff0c;这个值代表一个内存地址&#xff0c;可以理解为指针是内存地址的门牌号码。通过指针可以找到所代表的内存地址上储存的内容。 一、指针变量的声明 字符 * 放在两个变量之间表示乘号&#xff0c;放在类型后边就表示声明该类…

6-11 函数题:某范围中的最小值

6-11 函数题&#xff1a;某范围中的最小值 分数 5 全屏浏览 作者 雷丽兰 单位 宜春学院 有n(n<1000)个整数&#xff0c;从这n个整数中找到值落在&#xff08;60至100之间&#xff09;的最小整数。 函数接口定义&#xff1a; int min ( int arr[], int n); 说明&#xf…

mysql的主从同步

MySQL的主从同步是一种数据复制技术&#xff0c;它允许将一个MySQL数据库服务器上的数据变化自动复制到一个或多个MySQL数据库服务器上。主从同步广泛用于高可用性、负载均衡、读写分离和数据备份。下面详细介绍MySQL主从同步的原理、配置步骤、常见问题及解决方法。 一、基本…

Dijkstra算法的原理

Dijkstra算法的原理可以清晰地分为以下几个步骤和要点&#xff1a; 初始化&#xff1a; 引入一个辅助数组D&#xff0c;其中D[i]表示从起始点&#xff08;源点&#xff09;到顶点i的当前已知最短距离。如果起始点与顶点i之间没有直接连接&#xff0c;则D[i]被初始化为无穷大&a…

边缘计算网关在智慧厕所远程监测与管理的应用

随着智慧城市建设的不断深入&#xff0c;城市公共设施的智慧化管理成为了提升城市品质和居民生活质量的关键建设。公厕作为城市基础设施的重要组成部分&#xff0c;其管理效率和卫生状况直接影响着市民的日常生活体验。在公厕设施建设背景下&#xff0c;边缘计算网关技术的应用…

使用Python多线程批量压缩图片文件

在现代社会中&#xff0c;图片已经成为人们生活中不可或缺的一部分&#xff0c;在很多应用中&#xff0c;我们需要处理大量的图片文件&#xff0c;并且常常需要将它们进行压缩以减小文件大小&#xff0c;提高加载速度&#xff0c; 如何使用Python的多线程功能来批量压缩图片文…

高精度汽车衡的应用领域有哪些?一文说清楚

很多人不知道什么是高精度汽车衡&#xff0c;它其实是一种称重工具&#xff0c;属于称重技术的重要分支。高精度汽车衡具有精准、快速且稳定的特点&#xff0c;在各个领域发挥着越来越重要的作用。下面来了解一下高精度汽车衡常见的应用领域。   高精度汽车衡在工业生产中的应…

关于xilinx srio ip复位问题

关于xilinx srio ip复位问题 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a; Vivado 关于xilinx srio ip复位问题一、引言二、FPGA 之间 srio通信复位处理复位时序不同步&#xff1a;SRIO 模块未正确初始化&#xff1a;等待复位完成的时间不足&#xff1a;SRIO 配置…

【JS重点09】JS闭包(面试重点)

本文核心目标&#xff1a;阅读完本文能说出什么是闭包&#xff0c;闭包作用以及如何利用闭包 一&#xff1a;闭包概览 1 闭包是什么 闭包&#xff08;closure&#xff09;是一个函数以及其捆绑的周边环境状态&#xff08;lexical environment&#xff0c;词法环境&#xff09…

NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -1

概要 CAN测试源码&#xff1a; https://download.csdn.net/download/qq_35671135/89425377 根据fsl_flexcan.h文件从文件末尾往前面梳理&#xff0c;总共30个基础CAN函数&#xff1b; 该文章只梳理常规CAN&#xff0c;增强型CAN后面再单独梳理。 使用的是RT1064开发板进行测试…