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”十六進制。
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
程序序列號;
整數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 服務讀取數據結構和要加密/解密的數據。 原始數據被複製並寫入數據結構中提供的地址。 服務完成後,命令、狀態和數據結構地址被推入 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 系統服務仿真、服務仿真 |