Mailbox Client Intel® FPGA IP用户指南

ID 683290
日期 12/04/2023
Public
文档目录

1.5.1. 操作命令

复位Quad SPI Flash

重要: 对于 Intel® Stratix® 10器件,在quad SPI flash用作FPGA配置器件和数据储存器件时不要复位quad SPI flash。在FPGA配置和重新配置期间或者QSPI's READ/WRITE/ERASE操作中复位quad SPI flash,会导致quad SPI flash和FPGA出现未定义的行为。要从无响应的行为中恢复,您必须重新启动您的器件。通过外部host复位quad SPI flash,您必须首先完成FPGA配置和重新配置,或者quad SPI操作,然后才能切换复位。通过Mailbox Client Intel® FPGA IP发布的QSPI_CLOSE命令,或者通过Serial Flash Mailbox Client Intel® FPGA IP发布的CLOSE命令来结束对quad SPI flash的独占访问时,表示quad SPI操作完成。
重要: 对于 英特尔Agilex® 7器件,您必须将串行flash存储器或quad SPI flash复位管脚连接到AS_nRST管脚。SDM必须完全控制QSPI复位。请勿将quad SPI复位管脚连接到任何外部host。
表 11.  命令列表和描述
命令 代码(十六进制) 命令长度 7 响应长度7 描述
NOOP 0 0 0 发送OK状态响应。
GET_IDCODE 10 0 1 响应包含一个自变量,即器件的JTAG IDCODE
GET_CHIPID 12 0 2 响应包含64位CHIPID值,该值以最不重要的字为首。
GET_USERCODE 13 0 1 该响应包含一个自变量(即,32-bit JTAG USERCODE),配置比特流将该代码写入器件。
GET_VOLTAGE 18 1 n8 GET_VOLTAGE命令有一个信号自变量,它是指定要读取的通道的位掩码。Bit 0指定channel 0,bit 1指定channel 1,依此类推。

该响应包含位掩码中设置的每个位的one-word自变量。返回的电压是一个无符号定点数,二进制小数点以下16位。例如,a voltage of 0.75V的电压返回0x0000C000。9 10

GET_TEMPERATURE 19 1 n 11

GET_TEMPERATURE命令返回内核架构的温度或者您指定的收发器通道位置。

对于 Intel® Stratix® 10器件,请使用sensor_req自变量指定位置。sensor_req包含以下字段:
  • Bits[31:9]:保留
  • Bits[8:0]:Sensor mask。指定TSD位置。
通道返回以下位置的温度:
  • Channel 0:对内核架构温度进行采样Samples 。
  • Channels 1- 6:对指定收发器tile的温度进行采样。
  • Channels 7-8:对高带宽DRAM存储器(HBM2)堆栈的温度进行采样。
对于 英特尔Agilex® 7器件,使用sensor_req自变量指定位置。sensor_req包含以下字段:
  • Bits[31:28]:保留。
  • Bits[27:16]:Sensor Location。指定TSD位置。
  • Bits[15:0]:Sensor mask。指定传感器读取指定sensor location。该响应包含每个要求的温度的one word(一个字)。如果忽略,则命令读取channel 0。最低有效位(lsb)对应sensor 0。最高有效位(msb)对应channel 15。

返回温度是一个有符号的固定值,二进制小数点以下8位。例如,温度10°C返回0x00000A00。温度-1.5°C返回0xFFFFFE80。

如果位掩码指定了一个无效位置Location,则命令返回一个错误码,该代码是0x80000000 -0x800000FF范围中的任意值。

对于 Intel® Stratix® 10器件,请参阅 Intel® Stratix® 10模拟到数据转换器用户指南中的温度传感器通道和位置小节了解关于传感器位置的信息。

对于 英特尔Agilex® 7器件,请参阅 英特尔Agilex® 7电源管理用户指南了解有关局部内置式温度传感器的更多信息。

RSU_IMAGE_UPDATE 5C 2 0

从数据源(可以是工厂或者应用程序映像)出发重新配置。

该命令采用一个可选的64位自变量,并用其指定flash存储器中的重配置数据地址。将该自变量发送到IP时,您首先发送位[31:0],然后发送位[63:32]。如果您不提供此自变量,则假定其值为0。

  • Bit [31:0]:应用程序映像的起始地址。
  • Bit [63:32]:保留(写为0)。

一旦器件开始处理该命令,就会返回响应header以响应FIFO,然后再继续重新配置该器件。请确保host Pc或host控制器停止为其它中断服务,并专注于读取响应header,以指示命令成功完成。否则,一旦开始重新配置过程,host PC 或者host控制器可能无法接收到响应。

一旦器件继续重新配置,外部host和FPGA之间的连接会丢失。如果在设计中使用了PCIe,就需要重新枚举PCIe连接。

重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
RSU_GET_SPT 5A 0 4

RSU_GET_SPT为RSU使用的两个子分区列表(SPT0和SPT1)检索quad SPI flash位置。

4-word(四字)响应包含以下信息:

名称 描述
0 SPT0[63:32] quad SPI flash中的SPT0地址。
1 SPT0[31:0]
2 SPT1[63:32] quad SPI flash中的SPT1地址。
3 SPT1[31:0]
CONFIG_STATUS 4 0 6

报告上次重配置的状态。您可以使用此命令检查配置期间和配置后的配置状态。响应包含以下信息:

汇总 描述
0 状态 描述最近的配置相关的错误。如果没有配置错误时则返回0。
该错误字段有2个字段:
  • 高16位:主要错误代码。
  • 低16位:次要错误代码。

请参阅Mailbox Client Intel® FPGA IP用户指南中的Appendix: CONFIG_STATUS and RSU_STATUS Error Code Descriptions了解更多信息。

1 Quartus版本
对于 Intel® Stratix® 10器件 英特尔 Quartus Prime软件版本19.4或更新中适用,字段显示:
  • Bit [31:28]:最近使用的固件或决策固件副本的索引。可能的值为0,1,2和3。
  • Bit [27:24]:保留
  • Bit [23:0]:24'd0
对于 英特尔Agilex® 7器件英特尔 Quartus Prime软件版本19.4到21.2中适用,该字段显示:
  • 位[31:28]:最近使用的固件或决策固件副本的索引。可能的值为0、1、2和3。
  • 位[27:24]:保留
  • 位 [23:16]:Quartus主要发布版本号
  • 位[15:8]:Quartus小规模发布版本号
  • Bit [7:0]:Quartus更新版本号
适用于英特尔 Quartus Prime软件21.3或更新版本,Quartus版本显示:
  • Bit [31:28]:最近使用的固件或决策固件副本的索引。可能的值为0、1、2和3。
  • Bit [27:24]:保留
  • Bit [23:16]:Quartus主要发布版本号
  • Bit [15:8]:Quartus小规模发布版本号
  • Bit [7:0]:Quartus更新版本号
例如,在英特尔 Quartus Prime软件版本21.3.1中,以下值表示Quartus主要发布和小规模发布版本号,以及Quartus版本更新号:
  • Bit [23:16] = 8'd21 = 8'h15
  • Bit [15:8] = 8'd3 = 8'h3
  • Bit [7:0] = 8'd1 = 8'h1
2 管脚状态
  • Bit [31]:当前nSTATUS输出值(低电平有效)
  • Bit [30]:检测到nCONFIG输入值(低电平有效)
  • Bit [29:8]:保留
  • Bit [7:6]:配置时钟源
    • 01 =内部振荡器
    • 10 = OSC_CLK_1
    注: Bit [7:6]仅适用于 英特尔Agilex® 7器件
  • Bit [5:3]:保留
  • Bit [2:0]:上电时的MSEL
3 软核功能状态(soft function status) 包含每个软核功能的值,即便没有对SDM管脚分配功能。
  • Bit [31:6]: 保留
  • Bit [5]: HPS_WARMRESET
  • Bit [4]: HPS_COLDRESET
  • Bit [3]: SEU_ERROR
  • Bit [2]: CVP_DONE
  • Bit [1]: INIT_DONE
  • Bit [0]: CONF_DONE
4 错误位置 包含错误位置。如果没有错误则返回0。
5 错误详情 包含关于错误的详细信息。如果没有错误则返回0。
RSU_STATUS 5B 0 9 报告当前远程系统升级状态。您可以使用该命令来查看配置器件或者配置完成后的配置状态。该命令返回以下响应:
汇总 描述
0-1 当前映像 当前运行的应用程序映像的Flash存储器偏移量。
2-3 失败映像

最高优先权失败应用程序映像的Flash存储偏移量。如果flash存储器中有多个可用映像,则存储第一个失败映像的值。全0值(all 0s)表示无失败映像。如果没有失败的映像,则状态信息的其余字的remainder剩余部分不存储有效信息。

注: nCONFIG上的上升沿,用于从ASx4进行重新配置,不会清楚该字段。仅当Mailbox Client接收到新的RSU_IMAGE_UPDATE命令并从失败映射的更新映像成功配置后才会更新关于失败映像的信息。
4 状态 失败映像的错误代码。
该错误的字段有两个部分:
  • Bit [31:16]:主要错误代码
  • Bit [15:0]:次要错误代码

如果无错误则返回值0。请参阅Mailbox Client Intel® FPGA IP用户指南中的附录:CONFIG_STATUS和RSU_STATUS 错误代码描述了解更多信息。

5 版本

RSU接口版本和错误源。

请参阅硬核处理器系统远程系统更新用户指南中的RSU状态和错误代码部分了解更多信息。

6 错误位置 存储失败映像的错误位置。如果无错误则返回值0。
7 错误详情 存储失败映像的错误详情。如果无错误则返回值0。
8 当前映像重试计数器

针对当前映射尝试的重试次数的计数。计数器起初为0。第一次重试后计数器设置为1,第二次重试后计数器设置为2。

在您的英特尔 Quartus Prime Settings File (.qsf)中指定重试的最大次数。该命令是:set_global_assignment -name RSU_MAX_RETRY_COUNT 3MAX_RETRY计数器的有效值为1-3。实际可用重试次数为MAX_RETRY -1

该字段添加于英特尔 Quartus Prime Pro Edition软件版本19.3中。

RSU_NOTIFY 5D 1 0
清除RSU_STATUS响应中所有错误的信息并复位重试计数器。one-word自变量具有如下字段:
  • 0x00050000:清零当前复位重试计数器。复位当前重试计数器将计数器设置回零,就像当前映射第一次成功加载一样。
  • 0x00060000:清除错误状态信息。
  • 所有其他值均被保留。

该命令在英特尔 Quartus Prime Pro Edition软件19.3版本之前不可用。

QSPI_OPEN 32 0 0

请求对quad SPI的专属访问。您可以在任何其他QSPI请求前发布该请求。如果quad SPI未被使用并且SDM未配置器件,则SDM接受请求。如果SDM获得访问权限则返回OK。接收到OK响应后,发布QSPI_SET_CS命令以选择flash器件。

SDM将专属访问权限授予使用该mailbox的client客户端。其他client不可访问quad SPI,直到有效client客户端使用QSPI_CLOSE命令放弃该访问权限。

使用SDM_IO管脚访问QSPI flash存储器器件仅适用于AS x4配置方案,JTAG配置和针对AS x4配置编译的设计。对于Avalon流传输接口 ( Avalon® ST) 配置方案,您必须将QSPI flash存储器与GPIO管脚连接起来。

默认情况下,在包含HPS的设计中,无法通过任何mailbox client IP访问quad SPI flash存储器器件,除非您在HPS软件配置中禁用QSPI。

重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
QSPI_CLOSE 33 0 0 关闭对quad SPI接口的专属访问。
重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
QSPI_SET_CS 34 1 0 通过片选线指定其中一个连接的quad SPI器件。按照以下描述选用一个one-word自变量:
  • Bits[31:28]:要选择的Flash器件。请参阅以下信息了解与nCSO[0:3]管脚对应的值。
    • 4'h0000选择的是响应nCSO[0]的flash
    • 4'h0001 选择响应nCSO[1]的flash
    • 4'h0002 选择响应nCSO[2]的flash
    • 4'h0003选择响应nCSO[3]的flash
  • Bits[27:0]:保留(写作0)。
注: 英特尔Agilex® 7 Intel® Stratix® 10支持一个AS x4 flash存储器件用于从与nCSO[0]连接的quad SPI器件进行AS配置。一旦器件进入用户模式,您最多可以使用4个具有Mailbox Client IP的AS x4 flash存储器或者HPS作为数据存储。Mailbox Client IP或HPS可以使用nCSO[3:0]来访问quad SPI器件。

Intel® Stratix® 10器件中的AS x4配置方案期间,该命令为可选。片选线(chip select line)遵循最后执行的QSPI_SET_CS命令或者在AS x4配置后默认遵循nCSO[0]命令。

英特尔Agilex® 7器件中的AS x4配置方案期间,每个QSPI_OPEN命令后都需要此命令。

JTAG配置方案期间,每个QSPI_OPEN命令后都需要该命令。

重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
QSPI_READ 3A 2 N

读取连接的quad SPI器件。最大传输大小为4 kilobytes (KB)或1024个字。

取两个自变量:
  • quad SPI flash地址(1个字)。该地址必须字对齐。对于未对齐的地址,器件返回0x1错误代码。
  • 要读取的字数(1个字)。
成功后,返回OK随之是从quad SPI器件读取的数据。失败的响应会返回一个错误代码。

对于部分成功的读取,QSPI_READ可能会错误地返回OK状态。

注: 在器件配置进行中,您无法运行QSPI_READ命令。
重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
QSPI_WRITE 39 2+N 0

将数据写入quad SPI器件。最大传输大小为4 kilobytes (KB)或1024个字。

取三个自变量:
  • flash地址偏移量(一个字)写地址必须对齐。
  • 要写入的字数(一个字)。
  • 要写入的字(一个或多个字)。
成功写入后返回OK响应代码。

要为写入准备存储空间,请先使用QSPI_ERASE命令在发布该命令。

注: 在器件配置进行中,您无法运行QSPI_WRITE命令。
重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
QSPI_ERASE 38 2 0 擦除quad SPI器件的4/32/64 KB扇区。取两个自变量:
  • 开始擦除的flash地址偏移量(一个字)。根据要擦除的字数,起始地址必须是:
    • 如果要擦除的字数是0x400,则4 KB对齐。
    • 如果要擦除的字数是0x2000,则32 Kb对齐。
    • 如果要擦除的字数是0x4000,则64 KB对齐。
    针对non-4/32/64 KB 对齐的地址返回一个错误代码。
  • 要擦除的字以如下倍数指定:
    • 0x400对应擦除4 KB (100个字)数据。该选项是最小擦除大小。
    • 0x2000对应擦除32 KB (500个字)数据
    • 0x4000 对应擦除64 KB (1000个字)数据
成功擦除返回OK响应代码。
重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
QSPI_READ_DEVICE_REG 35 2 N 从quad SPI器件读取寄存器。最大读取为8个字节。取两个自变量:
  • 读命令的操作码(opcode)。
  • 要读取的字节数。

成功读取后返回OK响应代码,随后是从器件读取来的数据。读数据返回为4字节的倍数。如果要读取的字节不是4字节的精确倍数,则用4字节的倍数填充,直到下一个字边界且填充的位值为零。

重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
QSPI_WRITE_DEVICE_REG 36 2+N 0 写入quad SPI的寄存器。最多写入8个字节。取3个自变量:
  • 写命令的操作码(opcode)。
  • 要写入的字节数。
  • 要写入的数据。

要执行扇区擦除或子扇区擦除,您必须按最高有效字节(MSB)到最低有效字节(LSB)的顺序指定串行flash地址,如下所示。

要使用QSPI_WRITE_DEVICE_REG command命令擦除位于地址0x04FF0000的Micron 2 gigabit (Gb) flash存储器,请以MSB到LSB顺序写入该flash地址,如下所示:

Header: 0x00003036

Opcode: 0x000000DC

要写入的字节数:0x00000004

Flash 地址:0x0000FF04

成功写入会返回OK响应代码。该命令填充不是4字节倍数的数据直到下一个字的边界。该命令以0填充数据。

重要: 复位quad SPI后,您必须遵循复位Quad SPI Flash中指定的说明。
QSPI_SEND_DEVICE_OP 37 1 0 向quad SPI发送命令操作码。取一个自变量:
  • 向quad SPI器件发送的操作码。

成功发送命令会返回OK响应码。

重要: 复位quad SPI后,您必须遵循复位Quad SPI Flash中指定的说明。
QSPI_READ_SHA 6E 2 16/12/8 指示固件读取从flash控制器来的数据并使用三个Secure Hashing Algorithms (SHA)中的其中一个来计算其哈希值。可将返回的哈希值与之前使用相同算法得到的哈希值进行比较来。从而确定flash内容的一致性。

该命令取两个32位字作为自变量。

Word 0:

  • Bits [1:0]:SHA变体。该参数确定使用的SHA算法类型。它可以采取以下值:
    • 00: SHA512
    • 01: SHA384
    • 10: SHA256
  • Bits[31:2]:起始地址。该地址是flash中开始验证的地址。该地址必须是4字节对齐。

Word 1:

  • Bits [31:0]: NumBytes(字节数)。表示SHA读操作中使用的字节数。必须是64的倍数。
响应长度因命令中选择的SHA变体而有所不同。
  • SHA512:返回16字
  • SHA384:返回12字
  • SHA256:返回8字
注: 英特尔Agilex® 7器件支持该命令。
GET_CONFIGURATION_TIME 65 0 2 返回配置网络控制时钟的64位周期计数,最低有效位排在首位。计数值除以配置网络控制时钟频率可提供配置时间的估计值。配置网络时钟的操作频率取决于英特尔 Quartus Prime中的时钟源设置配置。该命令可与任何支持的配置方案一起使用。

通常,配置周期计数由低32位捕获。固件不太可能返回64位周期计数。如果一旦出现该情况,您必须连接两个32位字来获得总周期计数值。

例如:

返回的响应:0x007C27EE = 8136686个周期。

配置控制时钟频率:200 MHz

配置时间:(8136686/200000000) × 1000 = 40.68 ms

注: 英特尔Agilex® 7器件支持该命令
配置时钟源 配置网络控制时钟频率
外部振荡器(OSC_CLK_1 250 MHz
内部振荡器 170 MHz到230 MHz
READ_SEU_ERROR 3C 0
  • 如果Error Message Queue为空则为 1;否则
  • 长度 +2,最高达到FIFO大小[17]

当检测到SEU错误时,错误信息被存储在错误消息队列中。此命令提供了一种检查队列并从中删除条目的方法。

Device and Pin Options窗口中设置SEU_ERROR管脚,您可能会观察到错误消息队列中存在一个或多个错误时,SEU_ERROR 信号保持高电平。当错误消息队列为空时,该信号变低。

当错误消息队列中没有错误时,响应为一个字长。

当队列中存在一个或多个错误时,队列中的第一个错误将被删除并在后续字中返回。此命令每次从队列中返回一个元素。

注: 如果您的设计包含Advanced SEU Detection Intel® FPGA IP,则请勿使用该mailbox命令。
名称 描述
0 Error Count Bit[31:0]:Error Message Queue中的错误总数。
1 Sector Address 请参阅相应的SEU缓解用户指南关于位的描述。
2 Error Data
QSPI_READ_SHA512 6E 2 16

该命令采用两个32位字作为自变量。

Word 0:

  • Bits [1:0]:SHA变体。SHA512算法的输入00
  • Bits[31:2]:起始地址。该地址是flash中的验证起始地址。该地址必须4个字节对齐。

Word 1:

  • Bits[31:0]:NumBytes(字节数)。该位表示SHA读操作中要使用的字节数。必须为64的倍数。

响应长度返回16个字。

注: Intel® Stratix® 10器件支持该命令。
STATUS_VR 713 1 1

提供电源管理固件 (PMF) 和电压调节器 (VR) 数据的接口。此命令适用于启用了VID且同时启用了VR轮询和PMF的器件。

采用如下所述的输入自变量之一:
  • 0x0:以整数形式返回PMF State,该整数对应于以下值之一。
    • 0x0 = DISABLED
    • 0x1 = INIT
    • 0x2 = MONITOR
    • 0x3 = PAUSED
    • 0x4= ERROR
  • 0x1:返回VID Target Voltage值,以毫伏 (mV) 为单位
  • 0x2:VR Error Status
    • 成功的命令返回值0x0,表示正常执行或无错误。
    • 对于0x0以外的任何返回值,请参阅状态寄存器映射图示中的PMBus* Specification Part II Rev. 1.2或更高版本相关的STATUS_WORD寄存器错误映射。

英特尔 Quartus Prime Pro Edition软件版本23.3或更高版本中有该命令。

注: 英特尔Agilex® 7器件支持该命令。

对于CONFIG_STATUSRSU_STATUS主要和次要错误码的描述,请参阅附录:CONFIG_STATUS和RSU_STATUS错误码描述

7 该数字不包括命令或响应header。
8 对于支持读取多个器件的 Intel® Stratix® 10 英特尔Agilex® 7器件,索引n与您器件上使能的通道数相匹配。
9 请参阅 Intel® Stratix® 10模拟到数字转换器用户指南了解更多关于 Intel® Stratix® 10器件上读电压传感器的信息。
10 请参阅 英特尔Agilex® 7电源管理用户指南了解关于温度传感器通道和位置的更多信息。
11 索引n取决于传感器掩码数量。