UG0837
用户指南
IGLOO2 和 SmartFusion2 FPGA
系统服务模拟
2018 年 XNUMX 月
修订历史
修订历史描述了文档中实施的更改。更改按修订列出,从最新发布开始。
1.1 修订版 1.0
修订版 1.0 于 2018 年 XNUMX 月发布。这是本文档的首次发布。
IGLOO2 和 SmartFusion2 FPGA 系统服务仿真
SmartFusion®2 FPGA 系列的系统服务块具有负责各种任务的服务集合。 这些包括模拟消息服务、数据指针服务和数据描述符服务。 系统服务可以通过 SmartFusion3 中的 Cortex-M2 访问,也可以通过 SmartFusion2 和 IGLOO®2 的结构接口控制器 (FIC) 从 FPGA 结构访问。 这些访问方法通过 COMM_BLK 发送到系统控制器。 COMM_BLK 具有高级外设总线 (APB) 接口,可作为消息传递管道与系统控制器交换数据。 系统服务请求被发送到系统控制器,系统服务响应通过 COMM BLK 被发送到 CoreSysSerrvice。 COMM_BLK 的地址位置在微控制器子系统 (MSS)/高性能内存子系统 (HPMS) 中可用。 有关详细信息,请参阅 UG0450:SmartFusion2 SoC 和 IGLOO2 FPGA 系统控制器。
用户指南
下图显示了系统服务数据流。
图 1 • 系统服务数据流程图无论是IGLOO2还是SmartFusion2系统服务模拟,都需要发送系统服务请求,检查系统服务响应,以验证模拟是否正确。 此步骤是访问提供系统服务的系统控制器所必需的。 IGLOO2 和 SmartFusion2 设备向系统控制器写入和读取的方式不同。 对于 SmartFusion2,Coretex-M3 可用,您可以使用总线功能模型 (BFM) 命令写入和读取系统控制器。 对于 IGLOO2,Cortex-M3 不可用,并且无法使用 BFM 命令访问系统控制器。
2.1 可用系统服务的类型
可以使用三种不同类型的系统服务,每种类型的服务都有不同的子类型。
模拟消息服务
数据指针服务
数据描述符服务
本指南的附录 – 系统服务类型(请参阅第 19 页)一章描述了不同类型的系统服务。 有关系统服务的更多信息,请参阅 UG0450:SmartFusion2 SoC 和 IGLOO2 FPGA 系统控制器用户指南。
2.2 IGLOO2系统服务模拟
系统服务涉及写入和读取系统控制器。 要出于仿真目的写入和读取系统控制器,您需要执行以下步骤。
- 实例化 CoreSysServices 软核 IP,可在 SmartDesign 目录中找到。
- 为有限状态机 (FSM) 编写 HDL 代码。
HDL FSM 与 CoreSysServices Core 接口,CoreSysServices Core 充当 AHBLite 总线的结构主机。 CoreSysServices 核心向 COMM BLK 发起系统服务请求,并通过 FIC_0/1、结构接口控制器从 COMM BLK 接收系统服务响应,如下图所示。
图 2 • IGLOO2 系统服务模拟拓扑2.3 SmartFusion2系统服务模拟
要在 SmartFusion2 设备中模拟系统服务,您需要写入和读取系统控制器。 有两个选项可用于访问系统控制器以进行仿真。
选项 1 — 为 FSM 编写 HDL 代码以与 CoreSysService 软 IP 内核接口,它充当 AHBLite 架构主机并向 COMM BLK 发起系统服务请求并通过 FIC_0/1 架构从 COMM BLK 接收系统服务响应界面如下图所示。
图 3 • SmartFusion2 系统服务仿真拓扑
选项 2 — 由于 Cortex-M3 可用于 SmartFusion2 设备,您可以使用 BFM 命令直接写入和读取系统控制器的内存空间。
使用 BFM 命令(选项 2)无需为 FSM 编写 HDL 代码。 在本用户指南中,选项 2 用于显示 SmartFusion2 中的系统服务模拟。 使用此选项,可以访问系统控制器的内存空间,以在编写 BFM 命令时找出 COMM BLK 和结构接口中断控制器 (FIIC) 块的内存映射。
2.4 仿真例amp莱斯
用户指南涵盖以下模拟。
- IGLOO2 序列号服务模拟(参见第 5 页)
- SmartFusion2 序列号服务模拟(参见第 8 页)
- IGLOO2 归零服务模拟(参见第 13 页)
- SmartFusion2 归零服务模拟(参见第 16 页)
类似的模拟方法可以应用于其他系统服务。 有关可用的不同系统服务的完整列表,请转至附录 – 系统服务类型(请参见第 19 页)。
2.5 IGLOO2序列号服务模拟
要准备 IGLOO2 序列号服务模拟,请执行以下步骤。
- 调用系统构建器来创建您的 HPMS 块。
- 选中设备功能页面中的 HPMS 系统服务复选框。 这将指示系统构建器公开 HPMS_FIC_0 SYS_SERVICES_MASTER 总线接口 (BIF)。
- 取消选中所有其他复选框。
- 接受所有其他页面中的默认值并单击完成以完成系统构建块。 在 Libero® SoC 的 HDL 编辑器中,为 FSM (File > 新 > 高密度脂蛋白)。 在 FSM 中包含以下三个状态。
INIT状态(初始状态)
SERV_PHASE(服务请求状态)
RSP_PHASE(服务响应状态)。
下图展示了FSM的三种状态。
图 4 • 三态 FSM 在 FSM 的 HDL 代码中,使用正确的命令代码(“01”Hex for serial number service)从 INIT 状态进入服务请求状态。
- 保存您的 HDL file. FSM 作为设计层次结构中的一个组件出现。
- 打开智能设计。 将顶层系统构建器块和 FSM 块拖放到 SmartDesign 画布中。 从目录中,将 CoreSysService 软 IP 核拖放到 SmartDesign 画布中。
- 右键单击 CoreSysService 软核 IP 以打开配置器。 检查序列号服务复选框(在设备和设计信息服务下
组)以启用序列号服务。 - 取消选中所有其他复选框。 单击“确定”退出配置器。
图 5 • CoreSysServices 软 IP 内核配置器
- 将系统构建器块的 HPMS_FIC_0 SYS_SERVICES_MASTER BIF 连接到 CoreSysService 块的 AHBL_MASTER BIF。
- 将 HDL FSM 模块的输出连接到 CoreSysService 软 IP 内核的输入。 在 SmartDesign 画布中进行所有其他连接,如下图所示。
图 6 • 带有 HDL 块、CoreSysServices 软 IP 和 HPMS 块的 SmartDesign 画布 - 在 SmartDesign 画布中,右键单击 >Generate Component 以生成顶层设计。
- 在设计层次结构中 view,右键单击顶层设计并选择创建测试平台 > HDL。
- 使用文本编辑器创建文本 file 名为“status.txt”。
- 包括系统服务命令和128位序列号。 有关详细信息,请参阅表 1(系统服务命令/响应值) CoreSysServices v3.1 手册 用于不同系统服务的命令代码(十六进制)。 对于序列号服务,命令代码为“01”Hex。
status.txt 的格式 file 序列号服务如下。
< 2 十六进制数字 CMD><32 十六进制数字序列号>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
保存状态.txt file 在项目的 Simulation 文件夹中。 设计现在已准备好进行仿真。
服务开始执行后,ModelSim 脚本窗口中会显示一条指示目标位置和序列号的消息,如下图所示。
图 7 • ModelSim 仿真脚本窗口系统控制器对带有序列号的地址进行 AHB 写入。 服务完成后,COMM_BLK 的 RXFIFO 将加载服务响应。
注意:有关用于不同系统服务的命令代码的完整列表,请参阅 CoreSysServices v1 手册或 UG3.1:SmartFusion0450 SoC 和 IGLOO2 FPGA 系统控制器用户指南中的表 2(系统服务命令/响应值)。
2.6 SmartFusion2序列号服务模拟
在本用户指南中,BFM 命令(选项 2)用于访问系统控制器以提供系统服务。 BFM 命令用于设备上的 Cortex-M3 处理器以进行 BFM 仿真。 一旦知道 COMM_BLK 的内存映射,BFM 命令允许您直接写入和读取 COMM BLK。
要为 SmartFusion2 序列号服务仿真准备您的设计,请执行以下步骤。
- 将 MSS 从目录拖放到项目的设计画布中。
- 禁用除 MSS_CCC、复位控制器、中断管理和 FIC_0、FIC_1 和 FIC_2 之外的所有 MSS 外设。
- 配置中断管理以使用 MSS 结构中断。
- 准备 serialnum.bfm file 在文本编辑器或 Libero 的 HDL 编辑器中。 保存 serialnum.bfm file 在项目的 Simulation 文件夹中。 serialnum.bfm 应包括以下详细信息。
• 内存映射到 COMM BLK (CMBLK)
• 内存映射到中断管理外设 (FIIC)
• 序列号系统服务请求命令(“01”十六进制)
• 序列号所在地址
前任ampserialnum.bfm 的文件 file 如下。
内存映射 FIIC 0x40006000; #内存映射到中断管理
内存映射 CMBLK 0x40016000; #Memory 映射到 COMM BLK
内存映射 DESCRIPTOR_ADDR 0x20000000; #序列号的地址位置
#十六进制命令码
constant CMD 0x1 # Serial NumberService 的命令代码
#FIIC 配置寄存器
常量 FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK 配置寄存器
常量控制 0x00
常量 STATUS 0x04
常量 INT_ENABLE 0x08
常数 DATA8 0x10
常数 DATA32 0x14
常量 FRAME_START8 0x18
常数 FRAME_START32 0x1C
程序序列号;
int x;
写 w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configure
#FICC_INTERRUPT_ENABLE0 # 注册启用 COMBLK_INTR #
#从 COMM_BLK 块中断到结构
#请求阶段
write w CMBLK CONTROL 0x10 # 配置 COMM BLK 控制 #Register to
在 COMM BLK 接口上启用传输
write w CMBLK INT_ENABLE 0x1 # 配置 COMM BLK 中断使能
#注册以启用TXTOKAY的中断(相应位在
#状态寄存器)
waitint 19 # 等待 COMM BLK 中断,这里 #BFM 等待
#till COMBLK_INTR 被断言
readstore w CMBLK STATUS x # 读取 #TXTOKAY 的 COMM BLK 状态寄存器
# 打断
设置 xx & 0x1
如果 x
写入 w CMBLK FRAME_START8 CMD # 配置 COMM BLK FRAME_START8
#注册请求序列号服务
结束语
结束语
waitint 19 # 等待 COMM BLK 中断,在这里
#BFM 等待 COMBLK_INTR 被断言
readstore w CMBLK STATUS x # 读取 COMM BLK 状态寄存器
#TXTOKAY 中断
设置 xx & 0x1
设置 xx & 0x1
如果 x
写 w CMBLK CONTROL 0x14 #Configure COMM BLK 控制
#注册以在 COMM BLK 接口上启用传输
写入 CMBLK DATA32 DESCRIPTOR_ADDR
写 w CMBLK INT_ENABLE 0x80
写 CMBLK 控制 0x10
结束语
等待20
#响应阶段
等待 19
读取 CMBLK 状态 x
设置 xx & 0x80
如果 x
使用 CMBLK FRAME_START8 CMD 重新检查
写 w CMBLK INT_ENABLE 0x2
结束语
等待 19
读取 CMBLK 状态 x
设置 xx & 0x2
如果 x
读取 CMBLK 数据 8 0x0
写 CMBLK 控制 0x18
结束语
等待 19
读检查 w FIIC 0x8 0x20000000
读取 CMBLK 状态 x
设置 xx & 0x2
如果 x
读取 CMBLK DATA32 DESCRIPTOR_ADDR
结束语
读检查w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck 检查序列号
读检查 w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck 检查序列号
读检查w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck 检查序列号
读检查w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck 检查序列号
返回 - 创建状态。 TXT file 在 Libero 的 HDL 编辑器或任何文本编辑器中。 包括序列号系统服务命令(十六进制中的“01”)和状态中的序列号。 TXT file. 请参阅 CoreSysServices v3.1 手册以了解如何使用正确的命令代码。
- 这个的语法 file 序列号服务是 <2 Hex digit CMD>< 32 Hex digit Serial Number> 。 前任ample: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- 保存状态.txt file 在项目的 Simulation 文件夹中。
- 编辑用户 .bfm(位于 Simulation 文件夹内)以包含序列号。 bfm file 并调用序列号过程,如以下代码片段所示。
包括“serialnum.bfm”#include theserialnum.bfm
程序 user_main;
打印“信息:模拟开始”;
打印“信息:十进制的服务命令代码:%0d”,CMD;
调用序列号; #调用序列号过程
打印“信息:模拟结束”;
返回 - 在设计层次结构中 view,生成测试台(右键单击,顶层设计>创建测试台> HDL),您就可以运行序列号服务仿真了。
服务开始执行后,将显示一条指示目标位置和序列号的消息。 系统控制器对带有序列号的地址进行 AHB 写入。 服务完成后,COMM_BLK 的 RXFIFO 将加载服务响应。 ModelSim 脚本窗口显示收到的地址和序列号,如下图所示。
图 8 • ModelSim 脚本窗口中的 SmartFusion2 序列号服务模拟
2.7 IGLOO2 归零服务模拟
要准备 IGLOO2 归零服务模拟,请执行以下步骤。
- 调用系统构建器来创建 HPMS 块。 选中设备功能 SYS_SERVICES_MASTER BIF 中的 HPMS 系统服务复选框。 取消选中所有其他复选框。 在所有其他页面中接受默认值并单击页面。 这指示系统构建器公开 HPMS_FIC_0 Finish 以完成系统构建器块的配置。
- 在 Libero SoC 的 HDL 编辑器中,为 FSM 编写 HDL 代码。 在 FSM 的 HDL 代码中,包括以下三种状态。
INIT状态(初始状态)
SERV_PHASE(服务请求状态)
RSP_PHASE(服务响应状态)
下图展示了FSM的三种状态。
图 9 • 三态 FSM - 在您的 HDL 代码中,使用命令代码“F0”(Hex) 从 INIT 状态进入服务请求状态。
- 保存您的 HDL file.
- 打开 SmartDesign,将顶层系统构建器块和 HDL FSM 块拖放到 SmartDesign 画布中。 从目录中,将 CoreSysService 软 IP 核拖放到 SmartDesign 画布中。
- 右键单击 CoreSysServices 软核 IP,打开配置器并选中 Data Security Services 组下的 Zeroization Service 复选框。 取消选中所有其他复选框。 单击确定退出。
图 10 • CoreSysServices 配置器
- 将系统构建器块的 HPMS_FIC_0 SYS_SERVICES_MASTER BIF 连接到 CoreSysService 块的 AHBL_MASTER BIF。
- 将 HDL FSM 模块的输出连接到 CoreSysService 软 IP 内核的输入。 在 SmartDesign 画布中建立所有其他连接。
图 11 • 具有 HDL 块、CoreSysServices 软 IP 和 HPMS 块的 SmartDesign 画布
9. 在 SmartDesign 画布中,生成顶层设计(右键单击 > 生成组件)。
10.在设计层次中 view,右击顶层设计,选择create Testbench > HDL。 您现在可以运行模拟了。
服务开始执行后,将显示一条消息,指示零化已在时间 x 完成,如下图所示。
图 12 • IGLOO2 归零系统服务模拟脚本窗口
系统控制器对带有序列号的地址进行 AHB 写入。 服务完成后,COMM_BLK 的 RXFIFO 将加载服务响应。 应该注意的是,仿真模型通过停止仿真而不是将设计本身置零来模拟置零。
注意:有关用于不同系统服务的命令代码的完整列表,请参阅表 1(系统服务命令/响应值) CoreSysServices v3.1 手册:. 或 UG0450:SmartFusion2 SoC 和 IGLOO2 FPGA 系统控制器用户指南
2.8 SmartFusion2 归零服务模拟
在本指南中,BFM 命令(选项 2)用于访问系统控制器以提供系统服务。
BFM 命令用于设备上的 Cortex-M3 处理器以进行 BFM 仿真。 一旦知道 COMM_BLK 的内存映射,BFM 命令允许您直接写入和读取 COMM BLK。 要为 SmartFusion2 归零服务仿真准备您的设计,请执行以下步骤。
- 将 MSS 从目录拖放到项目的设计画布中。
- 禁用除 MSS_CCC、复位控制器、中断管理和 FIC_0、FIC_1 和 FIC_2 之外的所有 MSS 外设。
- 配置中断管理以使用 MSS 结构中断。
- 准备 zeroizaton.bfm file 在文本编辑器或 Libero 的 HDL 编辑器中。 你的归零。 bfm 应该包括:
- 内存映射到 COMM BLK (CMBLK)
- 内存映射到中断管理外设 (FIIC)
- zeroization 服务请求命令(“F0” Hex for zeriozation)
前任ampserialnum.bfm 的文件 file 下图所示。
图 13 • 用于 SmartFusion2 归零系统服务模拟的 Zeroization.bfm
5.保存归零.bfm file 在项目的 Simulation 文件夹中。 用户.bfm
6. 编辑(位于 zeroization.bfm Simulation 文件夹中)以包括使用以下代码片段。
包括“zeroization.bfm” #include zeroization.bfm file 程序 user_main;
打印“信息:模拟开始”;
打印“信息:十进制的服务命令代码:%0d”,CMD;
调用归零; #调用归零程序返回
7. 在 Design Hierarchy 中,生成 Testbench(右键单击顶层 > Create Testbench > HDL),您就可以运行 SmartFusion2 归零仿真了。
服务开始执行后,将显示一条消息,指示设备已在时间 x 归零。 应该注意的是,仿真模型通过停止仿真而不是将设计本身置零来模拟置零。 下图中的ModelSim transcript窗口显示设备已经归零。
图 14 • SmartFusion2 归零系统服务模拟日志
附录:系统服务的类型
本章描述了各种类型的系统服务。
3.1 模拟消息服务
以下部分描述了各种类型的模拟消息服务。
3.1.1 闪现*冻结
当适当的服务请求从 FIC(在 IGLOO2 设备的情况下)或 Cortex-M3(在 SmartFusion2 设备的情况下)发送到 COMM_BLK 时,模拟将进入 Flash*Freeze 状态。 一旦系统控制器检测到该服务,模拟将停止,并显示一条消息,指示系统已进入 Flash*Freeze(以及所选的选项)。 模拟恢复后,COMM_BLK 的 RXFIFO 将填充由服务命令和状态组成的服务响应。 应该注意的是,没有对 Flash*Freeze 退出的模拟支持。
3.1.2 归零
归零目前是 COMM_BLK 处理的系统服务中唯一的高优先级服务。 一旦 COMM_BLK 检测到正确的服务请求,模拟将立即进入归零状态。 其他服务的执行将被系统控制器暂停和丢弃,取而代之的是执行归零服务。 一旦检测到归零服务请求,模拟将停止并显示一条消息,指示系统已进入归零。 归零后手动重启仿真无效。
3.2 数据指针服务
以下部分描述了各种类型的数据指针服务。
3.2.1 序列号
序列号服务会将 128 位序列号写入作为服务请求的一部分提供的地址位置。 可以使用系统服务模拟支持设置此 128 位参数 file (见第 22 页)。 如果 128 位序列号参数没有在 file, 将使用默认序列号 0。 服务开始执行后,将显示一条指示目标位置和序列号的消息。 系统控制器对带有序列号的地址进行 AHB 写入。 服务完成后,COMM_BLK 的 RXFIFO 将加载服务响应。
3.2.2 用户代码
用户代码服务将 32 位用户代码参数写入作为服务请求的一部分提供的地址位置。 可以使用系统服务模拟支持设置此 32 位参数 file (参见第 22 页)。 如果 32 位参数未在 file, 使用默认值 0。 服务开始执行后,将显示一条指示目标位置和用户代码的消息。 系统控制器对具有 32 位参数的地址进行 AHB 写入。 服务完成后,COMM_BLK 的 RXFIFO 加载服务响应,其中包括服务命令和目标地址。
3.3 数据描述符服务
以下部分描述了各种类型的数据描述符服务。
3.3.1 AES
该服务的模拟支持只涉及将原始数据从源移动到目的地,而不实际对数据执行任何加密/解密。 需要加密/解密的数据和数据结构应该在发送服务请求之前写好。 服务开始执行后,将显示一条指示 AES 服务执行的消息。 AES 服务读取数据结构和要加密/解密的数据。 原始数据被复制并写入数据结构中提供的地址。 服务完成后,命令、状态和数据结构地址被推入 RXFIFO。
笔记: 该服务仅针对128位和256位数据,128位和256位数据的数据结构长度不同。
3.3.2 SHA 256
此服务的模拟支持仅涉及移动数据,而不实际对数据执行任何散列。 SHA 256 函数旨在根据输入数据生成 256 位散列密钥。 需要散列的数据和数据结构应该在服务请求发送到COMM_BLK之前写入各自的地址。 SHA 256 数据结构中定义的位长度和指针必须与要散列的数据的长度和地址正确对应。 服务开始执行后,将显示一条指示 SHA 256 服务执行的消息。 不是执行实际函数,而是将默认哈希键从数据结构写入目标指针。 默认哈希键是十六进制“ABCD1234”。 要设置自定义键,请转至参数设置(请参见第 23 页)部分。 服务完成后,RXFIFO 加载服务响应,其中包括服务命令、状态和 SHA 256 数据结构指针。
3.3.3 HMAC
对该服务的模拟支持只关心数据的移动,而不实际对数据执行任何散列。 需要散列的数据和数据结构应该在服务请求发送到COMM_BLK之前写入各自的地址。 除了以字节为单位的长度、源指针和目标指针之外,HMAC 服务还需要一个 32 字节的密钥。 服务开始执行后,将显示一条指示 HMAC 服务执行的消息。 读取密钥并将 256 位密钥从数据结构复制到目标指针。 服务完成后,RXFIFO 载入由服务命令、状态和 HMAC 数据结构指针组成的服务响应。
3.3.4 DRBG生成
随机位的生成由该服务执行。 应该注意的是,仿真模型并不完全遵循硅所使用的相同随机数生成方法。 在将服务请求发送到 COMM_BLK 之前,必须将数据结构正确写入其预期位置。 数据结构、目标指针、长度和其他相关数据由系统控制器读取。 DRBG 生成服务生成请求长度 (0-128) 的伪随机数据集。 系统控制器将随机数据写入目标指针。 仿真中显示一条指示执行 DRBG 生成服务的消息。 服务完成后,命令、状态和数据结构地址被推入 RXFIFO。 如果请求的数据长度不在 0-128 范围内,错误代码“4”(Max Generate)将被压入 RXFIFO。 如果附加数据长度不在 0-128 的 Request Too Big 范围内,错误代码“5”(超出附加数据的最大长度)将被推入 RXFIFO。 如果生成请求的数据长度和附加数据长度都不在其定义的范围内(0-128),则错误代码“1”(灾难性错误)将被推入 RXFIFO。
3.3.5 DRBG 复位
实际的重置功能是通过删除 DRBG 实例化和重置 DRBG 来执行的。 一旦检测到服务请求,模拟就会显示 DRBG 重置服务完成消息。 包含服务和状态的响应被推入 RXFIFO。
3.3.6 DRBG 自检
对 DRBG 自检的模拟支持实际上并不执行自检功能。 一旦检测到服务请求,模拟将显示 DRBG 自检服务执行消息。 包含服务和状态的响应将被推入 RXFIFO。
3.3.7 DRBG实例化
对 DRBG 实例化服务的模拟支持实际上并不执行实例化服务。 在将服务请求发送到 COMM_BLK 之前,必须将数据结构正确写入其预期位置。 一旦检测到服务请求,将读取 MSS 地址空间内定义的结构和个性化字符串。 模拟将显示一条消息,指示 DRBG Instantiate 服务已开始执行。 服务完成后,包括服务命令、状态和指向数据结构的指针的响应将被推入 RXFIFO。 如果数据长度 (PERSONALIZATIONLENGTH) 不在 0-128 的范围内,则错误代码“1”(灾难性错误)将被推入 RXFIFO 的状态。
3.3.8 DRBG 取消实例化
对 DRBG 非实例化服务的仿真支持实际上并不像硅那样执行移除先前实例化的 DRBG 的非实例化服务。 服务请求必须包括命令和 DRBG 句柄。 一旦检测到服务请求,DRBG 句柄将被存储。 模拟将显示一条消息,指示 DRBG 未实例化服务已初始化。 服务完成后,包括服务命令、状态和 DRBG 句柄的响应将被推入 RXFIFO。
3.3.9 DRBG 重新播种
由于系统服务块的模拟特性,模拟中的 DRBG reseed 服务不会在每 65535 个 DRBG 生成服务后自动执行。 在将服务请求发送到 COMM_BLK 之前,必须将数据结构正确写入其预期位置。 一旦检测到服务请求,将读取 MSS 地址空间中的结构和附加输入参数。 将显示一条消息,指示 DRBG 重新播种服务已开始执行。 在将服务请求发送到 COMM_BLK 之前,必须将数据结构正确写入其预期位置。 服务完成后,包括服务命令、状态和指向数据结构的指针的响应将被推入 RXFIFO。
3.3.10 密钥树
KeyTree 服务的实际功能不会在模拟中执行。 KeyTree 服务数据结构由 32 字节密钥、7 位 optype 数据(忽略 MSB)和 16 字节路径组成。 在将服务请求发送到 COMM_BLK 之前,数据结构中的数据应写入其各自的地址。 服务开始执行后,将显示一条指示 KeyTree 服务执行的消息。 将读取数据结构的内容,存储 32 字节的密钥,并覆盖数据结构中的原始密钥。 在这个 AHB 写入之后,数据结构中的键的值不应该改变,但是写入的 AHB 事务将会发生。 服务完成后,RXFIFO 加载服务响应,包括服务命令、状态和 KeyTree 数据结构指针。
3.3.11 挑战响应
实际功能(如设备身份验证)不会在质询响应服务的模拟中执行。 此服务的数据结构需要指向缓冲区的指针,以接收 32 字节的结果、7 位的操作类型和 128 位的路径。 在服务请求发送到 COMM_BLK 之前,数据结构中的数据应该写入它们各自的地址。 一旦服务开始执行,将显示一条消息,指示挑战响应服务的执行。 通用的 256 位响应将写入数据结构中提供的指针。 默认密钥设置为十六进制“ABCD1234”。 要获得自定义键,请检查参数设置(请参见第 23 页)。 服务完成后,RXFIFO 将加载服务响应,包括服务命令、状态和质询响应数据结构指针。
3.4 其他服务
以下部分描述了各种其他系统服务。
3.4.1 摘要检查
仿真中的摘要检查服务不执行实际的重新计算和比较所选组件摘要的功能。 该服务请求由服务命令和服务选项(5 位 LSB)组成。 服务开始执行后,将显示一条详细说明摘要检查服务执行情况的消息,以及从请求中选择的选项。 服务完成后,RXFIFO 将加载服务响应,包括服务命令和摘要检查通过/失败标志。
3.4.2 无法识别的命令响应
当一个无法识别的服务请求被发送到 COMM_BLK 时,COMM_BLK 将自动回复一个无法识别的命令消息,并将其推入 RXFIFO。 该消息由发送到 COMM_BLK 的命令和无法识别的命令状态 (252D) 组成。 还将显示指示已检测到无法识别的服务请求的显示消息。 COMM_BLK 将返回空闲状态,等待接受下一个服务请求。
3.4.3 不支持的服务
设置为 COMM_BLK 的不受支持的服务将在模拟中触发一条消息,指示服务请求不受支持。 COMM_BLK 将返回空闲状态,等待接受下一个服务请求。 PINTERRUPT 不会被设置,表示服务已经完成。 当前不支持的服务列表包括:IAP、ISP、设备证书和 DESIGNVER 服务。
3.5 系统服务仿真支持 File
为了支持系统服务模拟,一个文本 file 称为“status.txt”,可用于将有关仿真模型所需行为的指令传递给仿真模型。 这 file 应该位于运行模拟的同一文件夹中。 这 file 除其他事项外,可用于为支持的系统服务强制某些错误响应,甚至用于设置模拟所需的一些参数,(例如ample,序列号)。 “status.txt”支持的最大行数 file 是 256。在第 256 行之后出现的指令将不会在模拟中使用。
3.5.1 强制错误响应
用户可以在测试期间通过使用“status.txt”将信息传递给仿真模型来强制对特定服务进行特定错误响应 file,它应该放在运行模拟的文件夹中。 为了强制对特定服务进行错误响应,命令和所需的响应应按以下格式在同一行中键入:amp勒,命令> ; 指示仿真模型生成MSS内存访问错误响应给序列号服务,命令如下。
服务:序列号:01
请求的错误消息:MSS 内存访问错误:7F
您应该在“status.txt”中输入 017F 行 file.
3.5.2 参数设置
“状态.txt” file 也可以用来设置一些仿真中需要的参数。 作为前任ample,为了给usercode设置32位参数,该行的格式必须是这样的顺序: <32 位用户代码>; 其中两个值均以十六进制输入。 为了设置序列号的128位参数,该行的格式必须是这样的顺序: <128 位序列号 [127:0]> ; 其中两个值均以十六进制输入。 为了给SHA 256密钥设置256位的参数; 该行的格式必须按以下顺序: <256位密钥[255:0]>; 其中两个值均以十六进制输入。 为了设置挑战响应密钥的 256 位参数,该行的格式必须按以下顺序: <256位密钥[255:0]>;
其中两个值均以十六进制输入。
3.5.3 设备优先级
系统服务和 COMM_BLK 使用高优先级系统。 目前,唯一的高优先级服务是归零。 为了执行一个高优先级的服务,当另一个服务正在执行时,当前的服务被暂停,更高优先级的服务将在它的位置执行。 COMM_BLK 将丢弃当前服务以执行更高优先级的服务。 如果在当前服务完成之前发送了多个非高优先级服务,则这些服务将在 TXFIFO 中排队。 一旦当前服务完成,TXFIFO 中的下一个服务将被执行。
Microsemi 对此处包含的信息或其产品和服务对任何特定目的的适用性不作任何保证、陈述或保证,Microsemi 也不承担因应用或使用任何产品或电路而产生的任何责任。 在此销售的产品和 Microsemi 销售的任何其他产品都经过了有限的测试,不应与任务关键型设备或应用程序一起使用。 任何性能规格都被认为是可靠的,但未经验证,买方必须单独、与任何最终产品一起或安装在任何最终产品中进行并完成产品的所有性能和其他测试。 买方不得依赖 Microsemi 提供的任何数据和性能规格或参数。 买方有责任独立确定任何产品的适用性并对其进行测试和验证。 Microsemi 在此提供的信息是“按原样、在哪里”提供的,并且存在所有错误,与此类信息相关的全部风险完全由买方承担。 Microsemi 没有明确或暗示地向任何一方授予任何专利权、许可或任何其他知识产权,无论是关于此类信息本身还是此类信息所描述的任何内容。 本文档中提供的信息是 Microsemi 的专有信息,Microsemi 保留随时对本文档中的信息或任何产品和服务进行任何更改的权利,恕不另行通知。
Microsemi 是 Microchip Technology Inc.(纳斯达克股票代码:MCHP)的全资子公司,为航空航天与国防、通信、数据中心和工业市场提供全面的半导体和系统解决方案组合。 产品包括高性能和抗辐射模拟混合信号集成电路、FPGA、SoC 和 ASIC; 电源管理产品; 计时和同步设备以及精确的时间解决方案,为时间设定了世界标准; 语音处理设备; 射频解决方案; 分立元件; 企业存储和通信解决方案; 安全技术和可扩展的反 tamp呃产品; 以太网解决方案; 以太网供电 IC 和中跨; 以及定制设计能力和服务。 Microsemi 总部位于加利福尼亚州的 Aliso Viejo,在全球拥有约 4,800 名员工。 了解更多信息 www.microsemi.com.
微半导体总部
一个企业,Aliso Viejo,
CA 92656美国
美国境内:+1 800-713-4113
美国境外:+1 949-380-6100
销售额:+1 949-380-6136
传真:+1 949-215-4996
邮箱:销售。support@microsemi.com
www.microsemi.com
© 2018 美高森美。 版权所有。 Microsemi 和 Microsemi 徽标
是美高森美公司的商标。 所有其他商标和服务
商标是其各自所有者的财产。
文件/资源
![]() |
Microsemi UG0837 IGLOO2 和 SmartFusion2 FPGA 系统服务仿真 [pdf] 用户指南 UG0837、UG0837 IGLOO2 和 SmartFusion2 FPGA 系统服务仿真、IGLOO2 和 SmartFusion2 FPGA 系统服务仿真、SmartFusion2 FPGA 系统服务仿真、FPGA 系统服务仿真、服务仿真 |