SDM(Secure Device Manager)包括外围设备、加密IP和传感器、引导ROM、三冗余锁步处理器以及SDM框图中所示的其他模块。SDM执行并管理以下安全功能:
•配置位流验证:在配置状态期间,SDM验证Intel生成的配置固件和配置位流,确保配置位流来自可信源。所有Intel Agilex都支持身份验证。
•加密:加密保护配置位流或机密数据免受未经授权的第三方访问。
•侧通道攻击保护:侧通道攻击防护在非侵入性攻击下保护AES密钥和机密数据。
•完整性检查:完整性检查验证意外事件没有损坏配置位流。此功能处于活动状态,即使您未启用身份验证。
SDM框图
传感和诊断模块SDM控制的附加功能概述:
•当您选择-V和-E设备时,传感和诊断模块SDM使用SmartVID功能的温度传感器与外部PMBus电压调节器进行通信。
•AES/SHA和其他加密加速器块实现安全配置和引导。
•AS通过专用SDM引脚启用主动配置方案。
•Avalon ST x8配置方案使用SDM I/O引脚。Avalon ST x16和x32配置方案使用专用SDM I/O引脚和双用途I/O针脚。有关更多信息,请参阅传感和诊断模块引脚映射。
•为了减少配置文件大小,支持更小的内存大小,并实现更快的配置,Intel Quartus Prime软件压缩配置数据。所有Intel Agilex设备都压缩配置位流。此功能始终处于启用状态。指定加密配置位流时,“Quartus Prime Pro Edition”软件会在加密前压缩配置位流。
•Intel Agilex设备中包含的特定PCIe块支持CvP。
SDM配置时序图
SDM配置状态机
Power-On状态
上电复位(POR)将Intel Agilex设备保持在复位状态,直到电源输出在推荐的工作范围内。tRAMP定义了最大电源斜坡时间。如果电源斜坡时间不符合tRAMP时间,则Intel Agilex设备I/O引脚状态未知。
初始配置时序
图的第一部分显示了正常上电复位后初始配置的预期定时。最初,应用逻辑将nCONFIG信号驱动为低(POR)。在正常条件下,nSTATUS跟随nCONFIG状态,因为nSTATUS反映当前配置状态。nCONFIG只有在与nSTATUS具有相同值时才必须更改。当发生错误时,nSTATUS脉冲为低,当设备准备接受重配置时,再拉高。
1.SDM启动时采样MSEL信号,以确定FPGA配置方案。SDM在下一次上电之前不会再次对MSEL引脚进行采样。
2.当nCONFIG信号拉低时,SDM进入IDLE状态。对于Avalon ST x16和x32配置方案,主机必须将nCONFIG拉低,直到将nSTATUS拉低。如果主机未能将nCONFIG低位保持到nSTATUS采样低位,则配置可能会失败。
3.当外部主机将nCONFIG再次拉高时,SDM启动配置。SDM将nSTATUS信号驱动为高,表示FPGA配置开始。SDM在MSEL总线在步骤1中指定的接口上接收配置位流。在整个配置过程中,AVST_READY可能不能用的,这将要求AVST_ VALID在六个周期内解除使能。
4.SDM将CONF_ DONE信号驱动为高,表示SDM成功接收到比特流。
5.当Intel Agilex拉高INIT_ DONE表示FPGA已进入用户模式时。GPIO引脚退出高阻状态。CONF_DONE和INIT_DONE之间的时间是不固定的。
对于FPGA第一次配置,INIT_DONE在FPGA结构初始化后拉高,包括寄存器和状态机。
对于HPS第一次配置,HPS应用程序控制CONF_DONE和INIT_DONE之间的时间。直到在HPS上运行的软件(如U-Boot)或操作系统(OS)启动配置后,FPGA配置并进入用户模式,才会断言INIT_DONE。
重配置时序
如果在通电后更改MSEL设置,则必须关闭Intel Agilex的电源。
1.外部主机将nCONFIG信号驱动为低。nCONFIG信号必须保持低电平,直到设备将nSTATUS信号设置为低电平。
2.SDM启动设备清理。
3.当设备清理完成时,SDM将nSTATUS信号拉低。
4.外部主机将nCONFIG信号驱动为高以启动重新配置。
5.nSTATUS信号拉高,表示设备已准备好重新配置并开始重新配置。
如果不监视nSTATUS信号,则将nCONFIG信号低脉冲至少1000 ms,以启动重新配置请求。
重配置期间的可恢复错误
1.SDM在指定的一段时间内将nSTATUS信号拉低,表示可恢复的配置错误。Intel Agilex设备可能不会拉高CONF_DONE,表示配置没有成功完成。。设备不会拉高INIT_DONE,表示配置没有成功。nCONFIG继续为高电平,直到nSTATUS返回高电平状态。如果JTAG配置期间发生错误,SDM不会改变nSTATUS信号的状态。
2.SDM进入错误状态。
3.如果nCONFIG信号驱动至低电平,则SDM进入空闲状态。通过在nCONFIG上驱动从低到高的转换,设备已准备好重新配置。您还可以按照设备断电顺序对设备进行断电循环。
重配置期间的不可恢复错误
在极少数情况下,配置错误或安全事件可能无法恢复。在这些情况下,SDM将nSTATUS驱动到低位并保持低位。必须重新上电才能重新启动重新配置过程。为了确保在所有重新配置情况下的错误恢复,英特尔建议您将系统设计为连续监控nSTATUS,并在需要时启用设备电源循环。请注意,在SDM RAM中出现双位ECC错误的情况下,nSTATUS也被断言为低并保持低。
Power-On状态
•Intel Agilex电源遵循《英特尔Agilex功率管理用户指南》中“英特尔AgilexDevices上电顺序要求”一节中的指导原则。
•在电源达到正确的工作电压后,上电复位(POR power-on reset)生效。在电源达到工作电压之前,外部电源斜坡不得低于最小斜坡率。
•在上电阶段,内部电路将SDM_ IO0、SDM_8、SDM_16拉低。内部电路将其余SDM_ IO引脚拉至弱上拉。
•POR后,内部电路还会将所有GPIO引脚拉至弱上拉,直到设备进入用户模式。
•在上电和下电期间,SDM和HPS组中的所有I/O引脚处于未知状态。
•通电和断电期间任何点的I/O引脚输入信号不应超过存储体I/O缓冲器电源轨。
SDM Startup状态
•SDM在上电期间对MSEL引脚进行采样。
•如果MSEL设置为JTAG,SDM将保持在启动状态。
•SDM运行存储在片上引导ROM中的固件,并进入空闲状态,直到主机将nCONFIG驱动到高位。在所有时钟稳定之前,主机不应将nCONFIG驱动到高位。
Idle状态
•SDM保持空闲状态,直到外部主机通过将nCONFIG引脚从低驱动到高来启动配置。或者SDM在退出错误状态后进入空闲状态。
FPGA configuration状态
•SDM收到配置启动请求(nCONFIG=1)后,SDM将nSTATUS引脚驱动到高电平来发出配置开始的信号。
•接收到配置数据后,SDM执行身份验证、解密和解压缩。
•在重新配置流程中:
-如果重新配置后触发上电复位(POR),则引导ROM在退出POR后加载固件。
-对于由nCONFIG low脉冲触发的重新配置,SDM检查更新的固件并与现有固件进行比较。
•如果两个固件相同,SDM将继续配置流程。如果固件不同,SDM将转换到与位流一起提供的固件。
•配置期间和用户模式下,nCONFIG引脚保持高电平。主机持续监控nSTATUS引脚以查找配置错误。
•在设备配置期间,电源管理活动正在进行。有关更多信息,请参阅《英特尔Agilex电源管理用户指南》。
•SDM在成功接收完整比特流后将CONF_DONE拉高。
•CONF_DONE引脚向外部主机发送比特流传输成功的信号。
Failed FPGA Configuration状态
•nSTATUS引脚上的低脉冲表示配置错误。
•发生内部设备擦除,随后出现需要重新配置的错误。
•低脉冲指示错误后,配置停止。nSTATUS引脚保持高电平。
•发生错误后,SDM将nSTATUS驱动到低位,而外部主机将nCONFIG驱动到低位。
•在nSTATUS引脚恢复到初始预配置低状态后,设备进入空闲状态。
用户模式
•初始化内部寄存器后,SDM将INIT_DONE引脚驱动为高电平,并将GPIO引脚从高阻抗状态释放。设备进入用户模式。在CONF_ DONE拉高后,并INIT_DONE拉高之前,部分设备开始进入用户模式。INIT_DONE拉高表示整个设备进入了用户模式。英特尔要求您在设计中包含重置版本。使用重置版本Intel FPGA IP的nINIT_DONE输出将应用程序逻辑保持在重置状态,直到整个FPGA结构处于用户模式。设计中未包含此IP可能会导致间歇性应用程序逻辑故障。
•在用户模式下,nCONFIG引脚应保持高电平。
•您可以通过将nCONFIG引脚从低驱动到高来重新配置设备。
设备清理
•在设备清洁状态下,设计停止运行。
•设备清除所有配置数据的零点。
•Intel Agilex设备驱动CONF_ DONE和INIT_DONE为低。
•设备清理完成后,SDM将nSTATUS引脚驱动至低位。
MSEL对应关系
SDM_IO对应图
nCONFIG
nCONFIG引脚是SDM的专用输入引脚。nCONFIG有两个功能:
•推迟初始配置
•启动FPGA重新配置
nCONFIG引脚从低电平到高电平的转换表示配置或重新配置请求。nSTATUS引脚指示设备准备好启动FPGA配置。
配置源只能在具有与nSTATUS相同的值时更改nCONFIG引脚的状态。当Intel Agilex设备就绪时,它会驱动nSTATUS跟随nCONFIG。
主机应将nCONFIG驱动至低位,以启动设备清洁。则主机应将nCONFIG驱动至高位以启动配置。如果主机在配置周期期间将nCONFIG驱动到低位,则该配置周期停止。SDM将开始新的配置周期。
nSTATUS
nSTATUS具有以下两个功能:
•作为对nCONFIG的确认。
•表现为错误状态信号。监控nSTATUS以识别配置故障非常重要。
对于PR故障或使用JTAG配置方案的故障,nSTATUS不会变低。
通常,英特尔Agilex设备会将nSTATUS的值更改为nCONFIG的值,但出现错误后除外。例如,在POR之后,nSTATUS在nCONFIG断言之后进行断言。当主机将nCONFIG驱动为高时,Intel Agilex设备将nSTATUS驱动为高。
在以前的设备系列中,取消对nSTATUS的断言表示设备已准备好进行配置。对于Intel Agilex设备,在使用Avalon ST配置方案时,在Intel Agilex设备将nSTATUS驱动为高后,您还必须监视AVST_READY信号,以确定设备何时准备好接受配置数据。
如果在配置过程中发生错误,nSTATUS会断言。脉冲范围从0.5ms到10ms。
nSTATUS断言与数据错误检测异步。英特尔Agilex设备不支持错误后自动重启配置选项。
以前的器件系列将nSTATUS实现为具有弱内部上拉的开放漏极。Intel Agilex始终驱动nSTATUS。因此,您无法将Intel Agilex nSTATUS信号与早期设备系列中的nSTATUS数据线连接。
当V(CCIO_SDM)。
CONF_DONE and INIT_DONE
对于Intel Agilex设备,CONF_ DONE和INIT_DONE。
以前的器件系列将CONF_ DONE和INIT_DONE若上拉。CONF_ DONE信号指示配置比特流被成功接收。INIT_ DONE引脚指示设备在设计范围内运行。
在当前实现中,无法将Intel Agilex CONF_DONE或INIT_DOEN信号与以前设备系列的nSTATUS信号连接。否则,CONF_ DONE和INIT_DONE。如果将CONF_DONE和INIT_DONE分配给SDM_。确保在“英特尔Quartus Prime软件”或“英特尔Quartus Prime设置文件”(.qsf)中指定这些引脚。CONF_ DONE和INIT_。CONF_DONE在设备完成接收配置数据时断言。当设备进入用户模式时,INIT_DONE断言。