Microsemiのロゴ

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 • システムサービスデータフロー図Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - データ フロー図IGLOO2 と SmartFusion2 の両方のシステム サービス シミュレーションでは、システム サービス要求を送信し、システム サービス応答をチェックして、シミュレーションが正しいことを確認する必要があります。この手順は、システム サービスを提供するシステム コントローラにアクセスするために必要です。システム コントローラへの書き込みとシステム コントローラからの読み取りの方法は、IGLOO2 デバイスと SmartFusion2 デバイスで異なります。SmartFusion2 では、Coretex-M3 が使用可能で、バス機能モデル (BFM) コマンドを使用してシステム コントローラへの書き込みと読み取りが可能です。IGLOO2 では、Cortex-M3 は使用できず、BFM コマンドを使用してシステム コントローラにアクセスすることはできません。
2.1 利用可能なシステムサービスの種類
3 つの異なるタイプのシステム サービスが利用可能であり、各タイプのサービスには異なるサブタイプがあります。
シミュレーションメッセージサービス
データ ポインタ サービス
データ記述子サービス
このガイドの「付録 – システム サービス タイプ」(19 ページを参照) の章では、さまざまなタイプのシステム サービスについて説明します。システム サービスの詳細については、『UG0450: SmartFusion2 SoC および IGLOO2 FPGA システム コントローラー ユーザー ガイド』を参照してください。
2.2 IGLOO2システムサービスシミュレーション
システム サービスには、システム コントローラへの書き込みとシステム コントローラからの読み取りが含まれます。シミュレーションの目的でシステム コントローラへの書き込みとシステム コントローラからの読み取りを行うには、次の手順を実行する必要があります。

  1. SmartDesign カタログで入手可能な CoreSysServices ソフト IP コアをインスタンス化します。
  2. 有限状態マシン (FSM) の HDL コードを記述します。

HDL FSM は、AHBLite バスのファブリック マスターとして機能する CoreSysServices コアとインターフェイスします。CoreSysServices コアは、次の図に示すように、COMM BLK へのシステム サービス要求を開始し、FIC_0/1 (ファブリック インターフェイス コントローラ) を介して COMM BLK からシステム サービス応答を受信します。
図2 • IGLOO2 システムサービスシミュレーショントポロジMicrosemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - データ フロー図 12.3 SmartFusion2 システムサービスシミュレーション
SmartFusion2 デバイスでシステム サービスをシミュレートするには、システム コントローラへの書き込みとシステム コントローラからの読み取りを行う必要があります。シミュレーションの目的でシステム コントローラにアクセスするには、XNUMX つのオプションがあります。
オプション 1 - 次の図に示すように、AHBLite ファブリック マスターとして機能し、COMM BLK へのシステム サービス要求を開始し、FIC_0/1 ファブリック インターフェイスを介して COMM BLK からシステム サービス応答を受信する CoreSysService ソフト IP コアとインターフェイスする FSM の HDL コードを記述します。
図3 • SmartFusion2 システムサービスシミュレーショントポロジMicrosemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - データ フロー図 2

オプション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 シリアル番号サービス シミュレーションを準備するには、次の手順を実行します。

  1. システム ビルダーを呼び出して HPMS ブロックを作成します。
  2. デバイス機能ページの HPMS システム サービス チェックボックスをオンにします。これにより、システム ビルダーは HPMS_FIC_0 SYS_SERVICES_MASTER バス インターフェイス (BIF) を公開するように指示されます。
  3. 他のチェックボックスはすべてオフのままにしておきます。
  4. 他のすべてのページではデフォルトを受け入れ、[完了] をクリックしてシステム ビルダー ブロックを完了します。Libero® SoC の HDL エディターで、FSM の HDL コードを記述します (File > 新規 > HDL) 。次の 3 つの状態を FSM に含めます。
    INIT状態(初期状態)
    SERV_PHASE (サービス要求状態)
    RSP_PHASE(サービス応答状態)。
    次の図は、FSM の 3 つの状態を示しています。
    図4 • XNUMX状態FSM
  5. Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - 1 ステート FSM XNUMXFSM の HDL コードでは、正しいコマンド コード (シリアル番号サービスの場合は「01」XNUMX 進数) を使用して、INIT 状態からサービス要求状態に入ります。
  6. HDLを保存する fileFSM はデザイン階層内のコンポーネントとして表示されます。
  7. SmartDesign を開きます。トップレベルのシステム ビルダー ブロックと FSM ブロックを SmartDesign キャンバスにドラッグ アンド ドロップします。カタログから、CoreSysService ソフト IP コアを SmartDesign キャンバスにドラッグ アンド ドロップします。
  8. CoreSysServiceソフトIPコアを右クリックしてコンフィギュレータを開きます。シリアル番号サービスチェックボックスをオンにします(デバイスおよび設計情報サービスの下)。
    シリアル番号サービスを有効にするには、グループに登録する必要があります。
  9. 他のチェックボックスはすべてオフのままにします。[OK] をクリックしてコンフィギュレータを終了します。
    図5 • CoreSysServices ソフト IP コア コンフィギュレータ
    Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - コア コンフィギュレータ
  10. システム ビルダー ブロックの HPMS_FIC_0 SYS_SERVICES_MASTER BIF を CoreSysService ブロックの AHBL_MASTER BIF に接続します。
  11. HDL FSM ブロックの出力を CoreSysService ソフト IP コアの入力に接続します。次の図に示すように、SmartDesign キャンバスで他のすべての接続を行います。
    図 6 • HDL ブロック、CoreSysServices ソフト IP、HPMS ブロックを含む SmartDesign キャンバスMicrosemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - HPMS ブロック
  12. SmartDesign キャンバスで右クリックし、[コンポーネントの生成] を選択して最上位レベルのデザインを生成します。
  13. デザイン階層 view、トップレベルデザインを右クリックし、テストベンチの作成 > HDL を選択します。
  14. テキストエディタを使用してテキストを作成する file 「status.txt」という名前です。
  15. システムサービス用のコマンドと128ビットのシリアル番号を含めます。詳細については、 CoreSysServices v3.1 ハンドブック さまざまなシステム サービスに使用されるコマンド コード (01 進数)。シリアル番号サービスの場合、コマンド コードは「XNUMX」XNUMX 進数です。

status.txtのフォーマット file シリアルナンバーサービスについては以下の通りとなります。
< 2 桁の 32 進数 CMD><XNUMX 桁の XNUMX 進数シリアル番号>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
status.txtを保存する file プロジェクトのシミュレーション フォルダーに保存します。これで、設計のシミュレーションの準備が整いました。
サービスの実行が開始されると、次の図に示すように、宛先の場所とシリアル番号を示すメッセージが ModelSim トランスクリプト ウィンドウに表示されます。
図7 • ModelSimシミュレーショントランスクリプトウィンドウMicrosemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - トランスクリプト ウィンドウシステム コントローラは、シリアル番号を持つアドレスに AHB 書き込みを実行します。サービスが完了すると、COMM_BLK の RXFIFO にサービス応答がロードされます。
注: さまざまなシステム サービスに使用されるコマンド コードの完全なリストについては、CoreSysServices v1 ハンドブックまたは UG3.1: SmartFusion0450 SoC および IGLOO2 FPGA システム コントローラー ユーザー ガイドの表 2 (システム サービス コマンド/応答値) を参照してください。
2.6 SmartFusion2 シリアル番号サービスシミュレーション
このユーザー ガイドでは、BFM コマンド (オプション 2) を使用して、システム サービス用のシステム コントローラにアクセスします。BFM コマンドは、デバイス上で Cortex-M3 プロセッサが BFM シミュレーション用に使用できる場合に使用されます。BFM コマンドを使用すると、COMM_BLK のメモリ マッピングがわかれば、COMM BLK に直接書き込み、そこから読み取ることができます。
SmartFusion2 シリアル番号サービス シミュレーション用に設計を準備するには、次の手順を実行します。

  1. MSS をカタログからプロジェクトのデザイン キャンバスにドラッグ アンド ドロップします。
  2. MSS_CCC、リセット コントローラ、割り込み管理、FIC_0、FIC_1、FIC_2 を除くすべての MSS 周辺機器を無効にします。
  3. ファブリック割り込みに MSS を使用するように割り込み管理を構成します。
  4. serialnum.bfmを準備する file テキストエディタまたはLiberoのHDLエディタでserialnum.bfmを保存します。 file プロジェクトの Simulation フォルダー内にあります。serialnum.bfm には次の詳細が含まれている必要があります。
    • COMM BLK (CMBLK)へのメモリマッピング
    • 割り込み管理ペリフェラル(FIIC)へのメモリマッピング
    • シリアル番号システムサービス要求コマンド (“01” XNUMX進数)
    • シリアル番号の記載場所の住所
    元ampserialnum.bfm の le file は以下の通りです。
    memmap FIIC 0x40006000; #割り込み管理へのメモリマッピング
    memmap CMBLK 0x40016000; #COMM BLK へのメモリ マッピング
    memmap DESCRIPTOR_ADDR 0x20000000; #シリアル番号のアドレス位置
    #16進数のコマンドコード
    定数 CMD 0x1 # シリアル番号サービスのコマンドコード
    #FIIC 構成レジスタ
    定数 FICC_INTERRUPT_ENABLE0 0x0
    #COMM_BLK 構成レジスタ
    定数 CONTROL 0x00
    定数 STATUS 0x04
    定数 INT_ENABLE 0x08
    定数 DATA8 0x10
    定数 DATA32 0x14
    定数 FRAME_START8 0x18
    定数 FRAME_START32 0x1C
    手順シリアル番号;
    整数x;
    FIIC FICC_INTERRUPT_ENABLE0 0x20000000 を書き込む #Configure
    #FICC_INTERRUPT_ENABLE0 # COMBLK_INTR を有効にするには登録してください #
    #COMM_BLKブロックからファブリックへの割り込み
    #リクエストフェーズ
    write w CMBLK CONTROL 0x10 # COMM BLK制御レジスタを設定する
    COMM BLKインターフェースでの転送を有効にする
    write w CMBLK INT_ENABLE 0x1 # COMM BLK割り込みを有効にする
    #TXTOKAYの割り込みを有効にするレジスタ(
    #ステータスレジスター
    waitint 19 # COMM BLK割り込みを待つ。ここで#BFMは待機する
    #COMBLK_INTRがアサートされるまで
    readstore w CMBLK STATUS x # #TXTOKAY の COMM BLK ステータス レジスタを読み取る
    # 割り込み
    xx と 0x1 を設定
    もしx
    write 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
    write w CMBLK CONTROL 0x14 #COMM BLKコントロールを構成する
    #COMM BLKインターフェースでの転送を有効にするレジスタ
    CMBLK DATA32 DESCRIPTOR_ADDR への書き込み
    CMBLK INT_ENABLE 0x80 を書き込む
    CMBLK CONTROL 0x10 を書き込む
    終了
    20分待つ
    #レスポンスフェーズ
    待機中 19
    読み取りストア w CMBLK ステータス x
    xx と 0x80 を設定
    もしx
    CMBLK FRAME_START8 CMD で読み取りチェック
    CMBLK INT_ENABLE 0x2 を書き込む
    終了
    待機中 19
    読み取りストア w CMBLK ステータス x
    xx と 0x2 を設定
    もしx
    CMBLK DATA8 0x0 の読み取りチェック
    CMBLK CONTROL 0x18 を書き込む
    終了
    待機中 19
    FIIC 0x8 0x20000000 の読み取りチェック
    読み取りストア w CMBLK ステータス x
    xx と 0x2 を設定
    もしx
    CMBLK DATA32 DESCRIPTOR_ADDR の読み取りチェック
    終了
    readcheck w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #S/NをチェックするためにReadcheckを実行する
    readcheck w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #S/NをチェックするためにReadcheckを実行する
    readcheck w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #S/NをチェックするためにReadcheckを実行する
    readcheck w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #S/NをチェックするためにReadcheckを実行する
    戻る
  5. ステータス .txt を作成する file LiberoのHDLエディタまたは任意のテキストエディタで、シリアル番号システムサービスコマンド(01進数で「XNUMX」)とシリアル番号をステータス.txtに含めます。 file正しいコマンド コードの使用については、CoreSysServices v3.1 ハンドブックを参照してください。
  6. この構文は file シリアル番号サービスの場合、<2 桁の 32 進数の CMD>< XNUMX 桁の XNUMX 進数のシリアル番号> です。例:ample: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
  7. ステータス.txtを保存する file プロジェクトのシミュレーション フォルダー内。
  8. ユーザ .bfm (シミュレーション フォルダ内) を編集して、シリアル番号を含めます。bfm file 次のコード スニペットに示すように、シリアル番号プロシージャを呼び出します。
    include “serialnum.bfm” #serialnum.bfmをインクルードする
    手順 user_main;
    「INFO:シミュレーションが開始します」と出力します。
    「INFO:サービス コマンド コード (0 進数):%XNUMXd」を印刷します。CMD ;
    call serialnum; #serialnum プロシージャを呼び出す
    「INFO:シミュレーション終了」を印刷します。
    戻る
  9. デザイン階層 view、テストベンチを生成し (右クリックして、トップレベルデザイン > テストベンチの作成 > HDL)、シリアル番号サービスシミュレーションを実行する準備が整います。

サービスの実行が開始されると、宛先の場所とシリアル番号を示すメッセージが表示されます。システム コントローラは、シリアル番号を持つアドレスに AHB 書き込みを実行します。サービスが完了すると、COMM_BLK の RXFIFO にサービス応答がロードされます。ModelSim トランスクリプト ウィンドウには、次の図に示すように、受信したアドレスとシリアル番号が表示されます。
図 8 • ModelSim トランスクリプト ウィンドウでの SmartFusion2 シリアル番号サービス シミュレーションMicrosemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - トランスクリプト ウィンドウ 1

2.7 IGLOO2 ゼロ化サービスシミュレーション
IGLOO2 ゼロ化サービス シミュレーションを準備するには、次の手順を実行します。

  1. システム ビルダーを呼び出して、HPMS ブロックを作成します。デバイス機能 SYS_SERVICES_MASTER BIF の HPMS システム サービス チェックボックスをオンにします。他のチェックボックスはすべてオフのままにします。他のすべてのページではデフォルトを受け入れ、ページをクリックします。これにより、システム ビルダーは HPMS_FIC_0 Finish を公開して、システム ビルダー ブロックの構成を完了するように指示されます。
  2. Libero SoC の HDL エディターで、FSM の HDL コードを記述します。FSM の HDL コードには、次の 3 つの状態を含めます。
    INIT状態(初期状態)
    SERV_PHASE (サービス要求状態)
    RSP_PHASE (サービス応答状態)
    次の図は、FSM の 3 つの状態を示しています。
    図9 • XNUMX状態FSMMicrosemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - XNUMX ステート FSM

     

  3. HDL コードでは、コマンド コード「F0」(XNUMX 進数) を使用して、INIT 状態からサービス要求状態に入ります。
  4. HDLを保存する file.
  5. SmartDesign を開き、トップレベルのシステム ビルダー ブロックと HDL FSM ブロックを SmartDesign キャンバスにドラッグ アンド ドロップします。カタログから、CoreSysService ソフト IP コアを SmartDesign キャンバスにドラッグ アンド ドロップします。
  6. CoreSysServices ソフト IP コアを右クリックしてコンフィギュレータを開き、データ セキュリティ サービス グループの下にあるゼロ化サービス チェックボックスをオンにします。他のチェックボックスはすべてオフのままにします。[OK] をクリックして終了します。
    図 10 • CoreSysServices コンフィギュレータ
    Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - コア コンフィギュレータ 1
  7. システム ビルダー ブロックの HPMS_FIC_0 SYS_SERVICES_MASTER BIF を CoreSysService ブロックの AHBL_MASTER BIF に接続します。
  8. HDL FSM ブロックの出力を CoreSysService ソフト IP コアの入力に接続します。その他のすべての接続は SmartDesign キャンバスで行います。
    図11 • HDLブロック、CoreSysServicesソフトIP、HPMSブロックを含むSmartDesignキャンバス
    Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - HPMS ブロック 19. SmartDesign キャンバスで、トップレベルのデザインを生成します (右クリック > コンポーネントの生成)。
    10. デザイン階層 view、トップレベルのデザインを右クリックし、テストベンチの作成 > HDL を選択します。これでシミュレーションを実行する準備が整いました。
    サービスの実行が開始されると、次の図に示すように、時刻 x にゼロ化が完了したことを示すメッセージが表示されます。
    図12 • IGLOO2ゼロ化システムサービスシミュレーショントランスクリプトウィンドウ
    Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - トランスクリプト ウィンドウ 3

システム コントローラは、シリアル番号を持つアドレスに AHB 書き込みを実行します。サービスが完了すると、COMM_BLK の RXFIFO にサービス応答がロードされます。シミュレーション モデルは、設計自体をゼロ化するのではなく、シミュレーションを停止することによってゼロ化をシミュレートすることに注意してください。
注: さまざまなシステムサービスで使用されるコマンドコードの完全なリストについては、 CoreSysServices v3.1 ハンドブック:. または UG0450: SmartFusion2 SoC および IGLOO2 FPGA システム コントローラー ユーザー ガイド

2.8 SmartFusion2ゼロ化サービスシミュレーション
このガイドでは、BFM コマンド (オプション 2) を使用して、システム サービス用のシステム コントローラーにアクセスします。
BFM コマンドは、Cortex-M3 プロセッサがデバイス上で BFM シミュレーションに使用できる場合に使用されます。BFM コマンドを使用すると、COMM_BLK のメモリ マッピングがわかれば、COMM BLK に直接書き込み、そこから読み取ることができます。SmartFusion2 ゼロ化サービス シミュレーション用に設計を準備するには、次の手順を実行します。

  1. MSS をカタログからプロジェクトのデザイン キャンバスにドラッグ アンド ドロップします。
  2. MSS_CCC、リセット コントローラ、割り込み管理、FIC_0、FIC_1、FIC_2 を除くすべての MSS 周辺機器を無効にします。
  3. ファブリック割り込みに MSS を使用するように割り込み管理を構成します。
  4. zeroizaton.bfmを準備する file テキスト エディターまたは Libero の HDL エディターで、ゼロ化を実行します。bfm には次の内容を含める必要があります。
  • COMM BLK (CMBLK) へのメモリ マッピング
  • 割り込み管理ペリフェラル (FIIC) へのメモリ マッピング
  • ゼロ化サービス要求のコマンド(ゼロ化の「F0」XNUMX進数)

元ampserialnum.bfm の le file 次の図に示します。
図 13 • SmartFusion2 ゼロ化システム サービス シミュレーション用の Zeroization.bfm

Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - トランスクリプト ウィンドウ 4

5. zeroization.bfmを保存します。 file プロジェクトのシミュレーションフォルダ内。user.bfm
6. (zeroization.bfm シミュレーション フォルダー内) を編集し、次のコード スニペットを使用して を含めます。
“zeroization.bfm” をインクルードします #zeroization.bfm をインクルードします file 手順 user_main;
「INFO:シミュレーションが開始します」と出力します。
「INFO:サービス コマンド コード (0 進数):%XNUMXd」を印刷します。CMD ;
ゼロ化を呼び出す; #ゼロ化プロシージャを呼び出す return
7. デザイン階層でテストベンチを生成し(最上位を右クリック > テストベンチの作成 > HDL)、SmartFusion2 ゼロ化シミュレーションを実行する準備が整います。
サービスの実行が開始されると、デバイスが時刻 x にゼロ化されたことを示すメッセージが表示されます。シミュレーション モデルは、設計自体をゼロ化するのではなく、シミュレーションを停止することによってゼロ化をシミュレートすることに注意してください。次の図の ModelSim トランスクリプト ウィンドウには、デバイスがゼロ化されたことが示されています。

図14 • SmartFusion2ゼロ化システムサービスシミュレーションログ

Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション - トランスクリプト ウィンドウ 5

付録: システムサービスの種類

この章では、さまざまな種類のシステム サービスについて説明します。
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 SHA256
このサービスのシミュレーション サポートは、データの移動のみを対象としており、実際にデータのハッシュ処理は実行しません。SHA 256 関数は、入力データに基づいて 256 ビットのハッシュ キーを生成するように設計されています。ハッシュ処理が必要なデータとデータ構造は、サービス要求が COMM_BLK に送信される前に、それぞれのアドレスに書き込まれている必要があります。SHA 256 データ構造内で定義されているビット長とポインタは、ハッシュ処理されるデータの長さとアドレスに正しく対応している必要があります。サービスの実行が開始されると、SHA 256 サービスの実行を示すメッセージが表示されます。実際の関数を実行するのではなく、データ構造から宛先ポインタにデフォルトのハッシュ キーが書き込まれます。デフォルトのハッシュ キーは 1234 進数の「ABCD23」です。カスタム キーを設定するには、パラメーター設定 (256 ページを参照) セクションを参照してください。サービスが完了すると、サービス コマンド、ステータス、および SHA XNUMX データ構造ポインターで構成されるサービス応答が RXFIFO にロードされます。
3.3.3 ハッシュ
このサービスのシミュレーション サポートは、データの移動のみを対象としており、実際にデータのハッシュ処理は行いません。ハッシュ処理が必要なデータとデータ構造は、サービス要求が COMM_BLK に送信される前に、それぞれのアドレスに書き込まれている必要があります。HMAC サービスには、バイト単位の長さ、ソース ポインター、および宛先ポインターに加えて、32 バイトのキーが必要です。サービスの実行が開始されると、HMAC サービスの実行を示すメッセージが表示されます。キーが読み取られ、256 ビットのキーがデータ構造から宛先ポインターにコピーされます。サービスが完了すると、RXFIFO に、サービス コマンド、ステータス、および HMAC データ構造ポインターで構成されるサービス応答がロードされます。

3.3.4 DRBG生成
このサービスによって、ランダム ビットの生成が実行されます。シミュレーション モデルは、シリコンで使用されるのと同じ乱数生成方法に厳密に従うわけではないことに注意してください。サービス要求が COMM_BLK に送信される前に、データ構造を目的の場所に正しく書き込む必要があります。データ構造、宛先ポインタ、長さ、およびその他の関連データは、システム コントローラによって読み取られます。DRBG 生成サービスは、要求された長さ (0 ~ 128) の疑似ランダム データ セットを生成します。システム コントローラは、ランダム データを宛先ポインタに書き込みます。DRBG 生成サービスの実行を示すメッセージがシミュレーションに表示されます。サービスが完了すると、コマンド、ステータス、およびデータ構造アドレスが RXFIFO にプッシュされます。要求されたデータ長が 0 ~ 128 の範囲内にない場合は、エラー コード「4」(最大生成) が RXFIFO にプッシュされます。追加データの長さが 0 ~ 128 の要求が大きすぎる範囲内にない場合、エラー コード「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 インスタンス化サービスの実行が開始されたことを示すメッセージが表示されます。サービスが完了すると、サービス コマンド、ステータス、およびデータ構造へのポインターを含む応答が RXFIFO にプッシュされます。データ長 (PERSONALIZATIONLENGTH) が 0 ~ 128 の範囲内にない場合は、ステータスのエラー コード「1」(致命的なエラー) が RXFIFO にプッシュされます。
3.3.8 DRBG のインスタンス化解除
DRBG インスタンス解除サービスのシミュレーション サポートは、シリコンのように、以前にインスタンス化された DRBG を削除するインスタンス解除サービスを実際に実行しません。サービス要求には、コマンドと DRBG ハンドルの両方が含まれている必要があります。サービス要求が検出されると、DRBG ハンドルが保存されます。シミュレーションでは、DRBG インスタンス解除サービスが初期化されたことを示すメッセージが表示されます。サービスが完了すると、サービス コマンド、ステータス、および DRBG ハンドルを含む応答が RXFIFO にプッシュされます。
3.3.9 DRBG 再シード
システム サービス ブロックのシミュレーションの性質上、シミュレーション中の DRBG 再シード サービスは、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 ビットの optype、および 128 ビットのパスを受信するためのバッファーへのポインターが必要です。データ構造内のデータは、サービス要求が COMM_BLK に送信される前に、それぞれのアドレスに書き込まれる必要があります。サービスの実行が開始されると、チャレンジ レスポンス サービスの実行を示すメッセージが表示されます。汎用の 256 ビット応答は、データ構造内に提供されたポインターに書き込まれます。デフォルトのキーは、1234 進数の「ABCD23」に設定されています。カスタム キーを取得するには、パラメーター設定を確認してください (XNUMX ページを参照)。サービスが完了すると、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は、シミュレーションが実行されるフォルダーに配置する必要があります。特定のサービスに対してエラー応答を強制するには、コマンドと必要な応答を次の形式で同じ行に入力する必要があります。ample、コマンドへ> ; シミュレーション モデルにシリアル番号サービスへの MSS メモリ アクセス エラー応答を生成するように指示する場合、コマンドは次のようになります。
サービス: シリアル番号: 01
要求されたエラーメッセージ: MSS メモリ アクセス エラー: 7F
「status.txt」に017Fの行を入力する必要があります。 file.
3.5.2パラメータ設定
「status.txt」 file シミュレーションに必要なパラメータを設定するためにも使用できます。例としてample、ユーザーコードの 32 ビット パラメータを設定するには、行の形式は次の順序である必要があります。 <32 ビット USERCODE>; 両方の値は 128 進数で入力されます。シリアル番号の 128 ビット パラメータを設定するには、行の形式は次の順序でなければなりません。 <127 ビットシリアル番号 [0:256]> ; 両方の値は 256 進数で入力されます。SHA 256 キーの 255 ビットパラメータを設定するには、行の形式は次の順序でなければなりません。 <0 ビット キー [256:256]>; 両方の値は 255 進数で入力します。チャレンジ レスポンス キーの 0 ビット パラメータを設定するには、行の形式を次の順序にする必要があります。 <XNUMXビットキー[XNUMX:XNUMX]>;
両方の値は 16 進数で入力されます。
3.5.3 デバイスの優先順位
システム サービスと COMM_BLK は、高優先度システムを利用します。現在、高優先度サービスはゼロ化のみです。高優先度サービスを実行するために、別のサービスの実行中に現在のサービスが停止され、代わりに優先度の高いサービスが実行されます。COMM_BLK は、優先度の高いサービスを実行するために現在のサービスを破棄します。現在のサービスが完了する前に複数の非高優先度サービスが送信された場合、これらのサービスは TXFIFO 内でキューに入れられます。現在のサービスが完了すると、TXFIFO 内の次のサービスが実行されます。

Microsemiは、ここに含まれる情報、または特定の目的に対するその製品とサービスの適合性に関して、保証、表明、または保証を行いません。また、Microsemiは、製品または回路のアプリケーションまたは使用から生じるいかなる責任も負わないものとします。 本契約に基づいて販売される製品およびMicrosemiが販売するその他の製品は、限定的なテストの対象であり、ミッションクリティカルな機器またはアプリケーションと組み合わせて使用​​しないでください。 パフォーマンス仕様は信頼できると考えられていますが、検証されていません。購入者は、製品のすべてのパフォーマンスおよびその他のテストを、単独で、および最終製品と一緒に、または最終製品にインストールして、実行および完了する必要があります。 購入者は、Microsemiが提供するデータおよびパフォーマンスの仕様またはパラメーターに依存してはなりません。 製品の適合性を独自に判断し、それをテストおよび検証するのは購入者の責任です。 本契約に基づいてMicrosemiが提供する情報は、「現状有姿」ですべての過失とともに提供され、そのような情報に関連するすべてのリスクは完全に購入者にあります。 Microsemiは、そのような情報自体またはそのような情報によって記述されたものに関係なく、明示的または暗黙的に、特許権、ライセンス、またはその他のIP権をいかなる当事者にも付与しません。 このドキュメントで提供される情報はMicrosemiの所有物であり、Microsemiは、このドキュメントの情報または製品やサービスをいつでも予告なしに変更する権利を留保します。
Microchip Technology Inc. (Nasdaq: MCHP) の完全子会社である Microsemi は、航空宇宙および防衛、通信、データセンター、および産業市場向けの半導体およびシステム ソリューションの包括的なポートフォリオを提供しています。 製品には、高性能で耐放射線性のあるアナログ混合信号集積回路、FPGA、SoC、および ASIC が含まれます。 電源管理製品; タイミングおよび同期デバイスと正確な時間ソリューションは、時間の世界標準を設定します。 音声処理装置; RF ソリューション; ディスクリート コンポーネント; エンタープライズ ストレージおよび通信ソリューション。 セキュリティ技術とスケーラブルなアンチ tamp製品; イーサネット ソリューション; Power-over-Ethernet IC およびミッドスパン。 カスタム設計機能とサービスと同様に。 Microsemi はカリフォルニア州アリソ ビエホに本社を置き、世界中に約 4,800 人の従業員を擁しています。 詳細はこちら www.microsemi.com.

Microsemiのロゴ

マイクロセミ本社
One Enterprise、Aliso Viejo、
カリフォルニア 92656 米国
米国内: +1 800-713-4113
米国外: +1 949-380-6100
売上: +1 949-380-6136
ファックス: +1 949-215-4996
電子メール: 営業。お問い合わせ
www.microsemi.com
© 2018 Microsemi。無断複写・転載を禁じます。MicrosemiおよびMicrosemiのロゴ
はMicrosemi Corporationの商標です。その他の商標およびサービス
マークはそれぞれの所有者の所有物です。

ドキュメント / リソース

Microsemi UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション [pdf] ユーザーガイド
UG0837、UG0837 IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション、IGLOO2 および SmartFusion2 FPGA システム サービス シミュレーション、SmartFusion2 FPGA システム サービス シミュレーション、FPGA システム サービス シミュレーション、サービス シミュレーション

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *