Logo da Microsemi

UG0837
Guia do usuário
FPGA IGLOO2 e SmartFusion2
Simulação de serviços de sistema
Junho de 2018

Histórico de revisão

O histórico de revisão descreve as alterações que foram implementadas no documento. As alterações são listadas por revisão, começando com a publicação mais atual.
1.1 Revisão 1.0
A revisão 1.0 foi publicada em junho de 2018. Foi a primeira publicação deste documento.

Simulação de serviços do sistema IGLOO2 e SmartFusion2 FPGA

O bloco System Services da família SmartFusion®2 FPGA apresenta uma coleção de serviços responsáveis ​​por diversas tarefas. Estes incluem serviços de mensagens de simulação, serviços de ponteiro de dados e serviços de descritores de dados. Os serviços do sistema podem ser acessados ​​através do Cortex-M3 no SmartFusion2 e da malha FPGA através do controlador de interface de malha (FIC) para SmartFusion2 e IGLOO®2. Esses métodos de acesso são enviados ao controlador do sistema por meio do COMM_BLK. O COMM_BLK possui uma interface de barramento periférico avançado (APB) e atua como um canal de passagem de mensagens para troca de dados com o controlador do sistema. As solicitações de serviço do sistema são enviadas ao controlador do sistema e as respostas do serviço do sistema são enviadas ao CoreSysService por meio do COMM BLK. A localização do endereço para COMM_BLK está disponível dentro do subsistema microcontrolador (MSS)/subsistema de memória de alto desempenho (HPMS). Para obter detalhes, consulte UG0450: SmartFusion2 SoC e controlador de sistema IGLOO2 FPGA.
Guia do usuário
A ilustração a seguir mostra o fluxo de dados dos serviços do sistema.
Figura 1 • Diagrama de Fluxo de Dados do Serviço do SistemaSimulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Diagrama de fluxo de dadosPara simulação de serviço do sistema IGLOO2 e SmartFusion2, você precisa enviar solicitações de serviço do sistema e verificar as respostas do serviço do sistema para verificar se a simulação está correta. Esta etapa é necessária para acessar o controlador do sistema, que fornece os serviços do sistema. A maneira de gravar e ler no controlador do sistema é diferente para dispositivos IGLOO2 e SmartFusion2. Para SmartFusion2, o Coretex-M3 está disponível e você pode escrever e ler no controlador do sistema usando comandos de modelo funcional de barramento (BFM). Para IGLOO2, o Cortex-M3 não está disponível e o controlador do sistema não está acessível usando comandos BFM.
2.1 Tipos de serviços de sistema disponíveis
Três tipos diferentes de serviços do sistema estão disponíveis e cada tipo de serviço possui subtipos diferentes.
Serviços de mensagens de simulação
Serviços de ponteiro de dados
Serviços de descritor de dados
O capítulo Apêndice –Tipos de serviços do sistema (na página 19) deste guia descreve os diferentes tipos de serviços do sistema. Para obter mais informações sobre serviços do sistema, consulte UG0450: SmartFusion2 SoC e IGLOO2 FPGA System Controller User Guide .
2.2 Simulação de serviço do sistema IGLOO2
Os serviços do sistema envolvem gravação e leitura do controlador do sistema. Para gravar e ler no controlador do sistema para fins de simulação, é necessário executar as etapas a seguir.

  1. Instancie o núcleo soft IP CoreSysServices, disponível no catálogo SmartDesign.
  2. Escreva o código HDL para uma máquina de estados finitos (FSM).

O HDL FSM faz interface com o CoreSysServices Core, que serve como fabric master do barramento AHBLite. O núcleo CoreSysServices inicia a solicitação de serviço do sistema para o COMM BLK e recebe respostas de serviço do sistema do COMM BLK por meio do controlador de interface de malha FIC_0/1, conforme mostrado na ilustração a seguir.
Figura 2 • Topologia de simulação de serviços do sistema IGLOO2Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Diagrama de fluxo de dados 12.3 Simulação de serviço do sistema SmartFusion2
Para simular serviços do sistema em dispositivos SmartFusion2, é necessário gravar e ler no controlador do sistema. Duas opções estão disponíveis para acessar o controlador do sistema para fins de simulação.
Opção 1 — Escreva o código HDL para um FSM para fazer interface com o núcleo de soft IP CoreSysService, que serve como um mestre de malha AHBLite e inicia a solicitação de serviço do sistema para o COMM BLK e recebe respostas de serviço do sistema do COMM BLK por meio da malha FIC_0/1 interface conforme mostrado na ilustração a seguir.
Figura 3 • Topologia de simulação de serviços do sistema SmartFusion2Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Diagrama de fluxo de dados 2

Opção 2 — Como o Cortex-M3 está disponível para dispositivos SmartFusion2, você pode usar comandos BFM para gravar e ler diretamente no espaço de memória do controlador do sistema.
Usar comandos BFM (opção 2) evita a necessidade de escrever os códigos HDL para o FSM. Neste guia do usuário, a opção 2 é usada para mostrar a simulação de serviços do sistema no SmartFusion2. Com esta opção, o espaço de memória do controlador do sistema é acessado para descobrir o mapa de memória do COMM BLK e o bloco do controlador de interrupção da interface de malha (FIIC) quando você escreve seus comandos BFM.
2.4 Simulação Exampos
O guia do usuário cobre as seguintes simulações.

  • Simulação de serviço de número de série IGLOO2 (ver página 5)
  • Simulação de serviço de número de série SmartFusion2 (consulte a página 8)
  • Simulação de serviço de zeroização IGLOO2 (ver página 13)
  • Simulação do serviço de zerização SmartFusion2 (na página 16)

Métodos de simulação semelhantes podem ser aplicados a outros serviços do sistema. Para obter uma lista completa dos diferentes serviços do sistema disponíveis, vá para Apêndice – Tipos de serviços do sistema (ver página 19).

2.5 Simulação de serviço de número de série IGLOO2
Para se preparar para a simulação do serviço de número de série IGLOO2, execute as etapas a seguir.

  1. Chame o construtor de sistemas para criar seu bloco HPMS.
  2. Marque a caixa de seleção HPMS System Services na página Recursos do dispositivo. Isso instruirá o integrador de sistema a expor a interface de barramento HPMS_FIC_0 SYS_SERVICES_MASTER (BIF).
  3. Deixe todas as outras caixas de seleção desmarcadas.
  4. Aceite o padrão em todas as outras páginas e clique em Concluir para concluir o bloco do construtor de sistema. No editor HDL do Libero® SoC, escreva o código HDL para o FSM (File > Novo > HDL). Inclua os três estados a seguir em seu FSM.
    Estado INIT (estado inicial)
    SERV_PHASE (estado da solicitação de serviço)
    RSP_PHASE (estado de resposta do serviço).
    A figura a seguir mostra os três estados do FSM.
    Figura 4 • FSM de três estados
  5. Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - FSM 1 de três estadosEm seu código HDL para o FSM, use o código de comando correto (“01” Hex para serviço de número de série) para inserir o estado de solicitação de serviço a partir do estado INIT.
  6. Salve seu HDL file. O FSM aparece como um componente na Hierarquia de Design.
  7. Abra o SmartDesign. Arraste e solte o bloco construtor de sistema de nível superior e o bloco FSM na tela do SmartDesign. No catálogo, arraste e solte o núcleo de soft IP CoreSysService na tela do SmartDesign.
  8. Clique com o botão direito no núcleo de soft IP CoreSysService para abrir o configurador. Marque a caixa de seleção Serviço de número de série (em Serviços de informações de dispositivo e design
    grupo) para ativar o serviço de número de série.
  9. Deixe todas as outras caixas de seleção desmarcadas. Clique em OK para sair do configurador.
    Figura 5 • Configurador de núcleo IP soft CoreSysServices
    Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Configurador de núcleo
  10. Conecte o BIF HPMS_FIC_0 SYS_SERVICES_MASTER do bloco construtor de sistema ao BIF AHBL_MASTER do bloco CoreSysService.
  11. Conecte a saída do seu bloco HDL FSM à entrada do núcleo IP flexível CoreSysService. Faça todas as outras conexões na tela do SmartDesign conforme mostrado na figura a seguir.
    Figura 6 • SmartDesign Canvas com bloco HDL, CoreSysServices Soft IP e blocos HPMSSimulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Blocos HPMS
  12. Na tela do SmartDesign, clique com o botão direito em >Gerar componente para gerar o design de nível superior.
  13. Na hierarquia de design view, clique com o botão direito no design de nível superior e selecione criar Testbench > HDL .
  14. Use um editor de texto para criar um texto file chamado “status.txt”.
  15. Inclua o comando para serviço do sistema e o número de série de 128 bits. Para obter mais informações, consulte Tabela 1 (Valores de comando/resposta dos serviços do sistema) no Manual CoreSysServices v3.1 para que os códigos de comando (Hex) sejam usados ​​para diferentes serviços do sistema. Para serviço de número de série, o código de comando é “01” Hex.

O formato do status.txt file para serviço de número de série é o seguinte.
<CMD de 2 dígitos hexadecimais><Número de série de 32 dígitos hexadecimais>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Salve o status.txt file na pasta Simulation do seu projeto. O projeto agora está pronto para simulação.
Após o início da execução do serviço, uma mensagem indicando o local de destino e o número de série é exibida na janela de transcrição do ModelSim, conforme mostrado na figura a seguir.
Figura 7 • Janela de transcrição da simulação ModelSimSimulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Janela de transcriçãoO controlador do sistema realiza uma gravação AHB no endereço com o número de série. Após a conclusão do serviço, o RXFIFO do COMM_BLK será carregado com a resposta do serviço.
Nota: Para obter uma lista completa dos códigos de comando a serem usados ​​para diferentes serviços do sistema, consulte Tabela 1 (Valores de comando/resposta dos serviços do sistema) no Manual CoreSysServices v3.1 ou UG0450: Guia do usuário do controlador de sistema SmartFusion2 SoC e IGLOO2 FPGA.
2.6 Simulação de serviço de número de série SmartFusion2
Neste guia do usuário, os comandos BFM (opção 2) são usados ​​para acessar o controlador do sistema para serviço do sistema. Os comandos BFM são usados ​​porque o processador Cortex-M3 está disponível no dispositivo para simulação BFM. Os comandos BFM permitem gravar e ler diretamente no COMM BLK, uma vez que você conhece o mapeamento de memória do COMM_BLK.
Para preparar seu projeto para simulação de serviço de número de série SmartFusion2, execute as etapas a seguir.

  1. Arraste e solte o MSS do catálogo na tela de design do seu projeto.
  2. Desative todos os periféricos MSS, exceto MSS_CCC, Reset Controller, Interrupt Management e FIC_0, FIC_1 e FIC_2.
  3. Configure o gerenciamento de interrupções para usar MSS para interrupção de estrutura.
  4. Prepare o serialnum.bfm file em um editor de texto ou no editor HDL do Líbero. Salve o serialnum.bfm file na pasta Simulação do projeto. O serialnum.bfm deve incluir os seguintes detalhes.
    • Mapeamento de memória para COMM BLK (CMBLK)
    • Mapeamento de memória para periférico de gerenciamento de interrupção (FIIC)
    • Comando para solicitação de serviço do sistema de número de série (“01” Hex)
    • Endereço para localização do número de série
    Um examparquivo do serialnum.bfm file é o seguinte.
    mapa de memória FIIC 0x40006000; #Mapeamento de memória para gerenciamento de interrupções
    mapa de memória CMBLK 0x40016000; #Mapeamento de memória para COMM BLK
    mapa de memória DESCRIPTOR_ADDR 0x20000000; #Localização do endereço para número de série
    #Código de comando em hexadecimal
    constante CMD 0x1 # Código de comando para Serial NumberService
    #FIIC Registros de configuração
    constante FICC_INTERRUPT_ENABLE0 0x0
    #COMM_BLK Registros de configuração
    CONTROLE constante 0x00
    ESTADO constante 0x04
    constante INT_ENABLE 0x08
    constante DADOS8 0x10
    constante DADOS32 0x14
    constante FRAME_START8 0x18
    constante FRAME_START32 0x1C
    número de série do procedimento;
    int x;
    escreva w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configurar
    #FICC_INTERRUPT_ENABLE0 # Registre-se para ativar COMBLK_INTR #
    #interrupt do bloco COMM_BLK para a malha
    #Fase de solicitação
    escreva w CMBLK CONTROL 0x10 # Configure COMM BLK Control #Registre-se para
    habilitar transferências na interface COMM BLK
    escreva w CMBLK INT_ENABLE 0x1 # Configure a ativação de interrupção COMM BLK
    #Registre-se para ativar a interrupção para TXTOKAY (bit correspondente no
    #Registro de status)
    waitint 19 # espere pela interrupção COMM BLK, aqui #BFM espera
    #till COMBLK_INTR é afirmado
    readstore w CMBLK STATUS x # Ler registro de status COMM BLK para #TXTOKAY
    # Interromper
    definir xx e 0x1
    se x
    escreva w CMBLK FRAME_START8 CMD # Configurar COMM BLK FRAME_START8
    #Registre-se para solicitar serviço de número de série
    fim se
    fim se
    waitint 19 # espere pela interrupção COMM BLK, aqui
    #BFM espera até que COMBLK_INTR seja declarado
    readstore w CMBLK STATUS x # Ler registro de status COMM BLK para
    #TXTOKAY Interrupção
    definir xx e 0x1
    definir xx e 0x1
    se x
    escreva w CMBLK CONTROL 0x14 #Configure COMM BLK Control
    #Register para permitir transferências na interface COMM BLK
    escreva w CMBLK DATA32 DESCRIPTOR_ADDR
    escreva w CMBLK INT_ENABLE 0x80
    escreva w CMBLK CONTROL 0x10
    fim se
    espere 20
    #Fase de resposta
    espere 19
    readstore w CMBLK STATUS x
    definir xx e 0x80
    se x
    verificação de leitura com CMBLK FRAME_START8 CMD
    escreva w CMBLK INT_ENABLE 0x2
    fim se
    espere 19
    readstore w CMBLK STATUS x
    definir xx e 0x2
    se x
    verificação de leitura com CMBLK DATA8 0x0
    escreva w CMBLK CONTROL 0x18
    fim se
    espere 19
    verificação de leitura com FIIC 0x8 0x20000000
    readstore w CMBLK STATUS x
    definir xx e 0x2
    se x
    verificação de leitura com CMBLK DATA32 DESCRIPTOR_ADDR
    fim se
    verificação de leitura w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck para verificar S/N
    verificação de leitura com DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck para verificar S/N
    verificação de leitura com DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck para verificar S/N
    verificação de leitura w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck para verificar S/N
    retornar
  5. Crie o status. TXT file no editor HDL do Libero ou em qualquer editor de texto. Inclua o comando de serviço do sistema de número de série (“01” em Hex) e o número de série no status . TXT file. Consulte o Manual CoreSysServices v3.1 para usar o código de comando correto.
  6. A sintaxe deste file para serviço de número de série é <2 dígitos hexadecimais CMD>< número de série de 32 dígitos hexadecimais> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
  7. Salve o status .txt file na pasta Simulação do projeto.
  8. Edite o usuário .bfm (localizado dentro da pasta Simulation) para incluir o serialnum. namorado file e chame o procedimento de número de série conforme mostrado no trecho de código a seguir.
    inclua “serialnum.bfm” #inclua o serialnum.bfm
    procedimento user_main;
    imprima “INFO:Simulação Iniciada”;
    imprima “INFO:Código de comando de serviço em decimal:%0d”, CMD;
    chamar número de série; #chama o procedimento serialnum
    imprima “INFO: Fim da Simulação”;
    retornar
  9. Na hierarquia de design view, gere o testbench (clique com o botão direito, Top Level Design > Create Testbench > HDL ) e você estará pronto para executar a simulação de serviço de número de série.

Assim que o serviço iniciar a execução, uma mensagem indicando o local de destino e o número de série será exibida. O controlador do sistema realiza uma gravação AHB no endereço com o número de série. Após a conclusão do serviço, o RXFIFO do COMM_BLK será carregado com a resposta do serviço. A janela de transcrição do ModelSim exibe o endereço e o número de série recebido conforme mostrado na figura a seguir.
Figura 8 • Simulação de serviço de número de série SmartFusion2 na janela de transcrição do ModelSimSimulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Janela de transcrição 1

2.7 Simulação do Serviço de Zeroização IGLOO2
Para se preparar para a simulação do serviço de zerização do IGLOO2, execute as etapas a seguir.

  1. Chame o construtor de sistemas para criar o bloco HPMS. Marque a caixa de seleção HPMS System Services em Device Features SYS_SERVICES_MASTER BIF. Deixe todas as outras caixas de seleção desmarcadas. Aceite o padrão em todas as outras páginas e clique em página. Isso instrui o integrador de sistema a expor o HPMS_FIC_0 Finish para concluir a configuração do bloco do construtor de sistema.
  2. No editor HDL do Libero SoC, escreva o código HDL para o FSM. No seu código HDL para o FSM, inclua os três estados a seguir.
    Estado INIT (estado inicial)
    SERV_PHASE (estado da solicitação de serviço)
    RSP_PHASE (estado de resposta do serviço)
    A figura a seguir mostra os três estados do FSM.
    Figura 9 • FSM de três estadosSimulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - FSM de três estados

     

  3. Em seu código HDL, use o código de comando “F0″(Hex) para inserir o estado de solicitação de serviço a partir do estado INIT.
  4. Salve seu HDL file.
  5. Abra o SmartDesign, arraste e solte seu bloco construtor de sistema de nível superior e seu bloco HDL FSM na tela do SmartDesign. No catálogo, arraste e solte o núcleo de soft IP CoreSysService na tela do SmartDesign.
  6. Clique com o botão direito do mouse no núcleo de soft IP CoreSysServices para abrir o configurador e marque a caixa de seleção Zeroization Service no grupo Data Security Services. Deixe todas as outras caixas de seleção desmarcadas. Clique para OK sair.
    Figura 10 • Configurador CoreSysServices
    Simulação de serviços de sistema Microsemi UG0837 IGLOO2 e SmartFusion2 FPGA - Configurador de núcleo 1
  7. Conecte o BIF HPMS_FIC_0 SYS_SERVICES_MASTER do bloco construtor de sistema ao BIF AHBL_MASTER do bloco CoreSysService.
  8. Conecte a saída do seu bloco HDL FSM à entrada do núcleo IP flexível CoreSysService. Faça todas as outras conexões na tela do SmartDesign.
    Figura 11 • SmartDesign Canvas com bloco HDL, CoreSysServices Soft IP e blocos HPMS
    Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Blocos HPMS 19. Na tela do SmartDesign, gere o design de nível superior (clique com o botão direito > Gerar componente).
    10. Na hierarquia de design view, clique com o botão direito no design de nível superior e selecione criar Testbench > HDL. Agora você está pronto para executar a simulação.
    Após o início da execução do serviço, uma mensagem indicando que a zerização foi concluída no tempo x é exibida conforme mostrado na figura a seguir.
    Figura 12 • Janela de transcrição da simulação de serviço do sistema de zeroização IGLOO2
    Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Janela de transcrição 3

O controlador do sistema realiza uma gravação AHB no endereço com o número de série. Após a conclusão do serviço, o RXFIFO do COMM_BLK será carregado com a resposta do serviço. Deve-se notar que o modelo de simulação simula a zeragem parando a simulação em vez de zerar o projeto em si.
Nota: Para obter uma lista completa dos códigos de comando a serem usados ​​para diferentes serviços do sistema, consulte a Tabela 1 (Valores de Comando/Resposta dos Serviços do Sistema) no Manual CoreSysServices v3.1:. ou UG0450: Guia do usuário do controlador de sistema SmartFusion2 SoC e IGLOO2 FPGA

2.8 Simulação do serviço de zerização SmartFusion2
Neste guia, os comandos BFM (opção 2) são usados ​​para acessar o controlador do sistema para serviço do sistema.
Os comandos BFM são usados ​​porque o processador Cortex-M3 está disponível no dispositivo para simulação BFM. Os comandos BFM permitem gravar e ler diretamente no COMM BLK, uma vez que você conhece o mapeamento de memória do COMM_BLK. Para preparar seu projeto para a simulação do serviço de zerização do SmartFusion2, execute as etapas a seguir.

  1. Arraste e solte o MSS do catálogo na tela de design do seu projeto.
  2. Desative todos os periféricos MSS, exceto MSS_CCC, Reset Controller, Interrupt Management e FIC_0, FIC_1 e FIC_2.
  3. Configure o gerenciamento de interrupções para usar MSS para interrupção de estrutura.
  4. Prepare o zeroizaton.bfm file em um editor de texto ou no editor HDL do Libero. Sua zerização. bfm deve incluir:
  • Mapeamento de memória para COMM BLK (CMBLK)
  • Mapeamento de memória para periférico de gerenciamento de interrupção (FIIC)
  • Comando para solicitação de serviço de zerização (“F0” Hex para zerização)

Um examparquivo do serialnum.bfm file é mostrado na figura a seguir.
Figura 13 • Zeroization.bfm para simulação de serviços do sistema de zeroização SmartFusion2

Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Janela de transcrição 4

5. Salve o zeroization.bfm file na pasta Simulação do projeto. usuário.bfm
6. Edite (localizado na pasta zeroization.bfm Simulation) para incluir usando o seguinte trecho de código.
inclua “zeroization.bfm” #include zeroization.bfm file procedimento user_main;
imprima “INFO:Simulação Iniciada”;
imprima “INFO:Código de comando de serviço em decimal:%0d”, CMD;
zeroização de chamadas; #call retorno do procedimento de zerização
7. Na hierarquia de design, gere o Testbench (clique com o botão direito no nível superior > Criar Testbench > HDL) e você estará pronto para executar a simulação de zeragem do SmartFusion2.
Após o início da execução do serviço, é exibida uma mensagem indicando que o dispositivo foi zerado no tempo x. Deve-se notar que o modelo de simulação simula a zeragem parando a simulação em vez de zerar o projeto em si. A janela de transcrição do ModelSim na figura a seguir mostra que o dispositivo foi zerado.

Figura 14 • Registro de simulação de serviço do sistema de zerização SmartFusion2

Simulação de serviços de sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 - Janela de transcrição 5

Apêndice: Tipos de serviços do sistema

Este capítulo descreve vários tipos de serviços do sistema.
3.1 Serviços de Mensagens de Simulação
As seções a seguir descrevem vários tipos de serviços de mensagens de simulação.
3.1.1 Flash*Congelar
A simulação entrará no estado Flash*Freeze quando a solicitação de serviço adequada for enviada ao COMM_BLK do FIC (no caso de dispositivos IGLOO2) ou do Cortex-M3 (em dispositivos SmartFusion2). Assim que o serviço for detectado pelo controlador do sistema, a simulação será interrompida e uma mensagem indicando que o sistema entrou no Flash*Freeze (junto com a opção selecionada) será exibida. Ao reiniciar a simulação, o RXFIFO do COMM_BLK será preenchido com a resposta de serviço composta pelo comando de serviço e status. Deve-se observar que não há suporte de simulação para saída do Flash*Freeze.
3.1.2 Zeroização
A zerização é atualmente o único serviço de alta prioridade nos serviços do sistema processados ​​pelo COMM_BLK. A simulação entrará no estado de zeragem assim que a solicitação de serviço correta for detectada pelo COMM_BLK. A execução de outros serviços será interrompida e descartada pelo controlador do sistema, e o serviço de zerização será executado em seu lugar. Assim que a solicitação do serviço de zeragem for detectada, a simulação será interrompida e uma mensagem indicando que o sistema entrou na zeragem será exibida. Os reinícios manuais da simulação após a zeragem são inválidos.
3.2 Serviços de ponteiro de dados
As seções a seguir descrevem vários tipos de serviços de ponteiro de dados.
3.2.1 Número de série
O serviço de número de série gravará um número de série de 128 bits em um endereço fornecido como parte da solicitação de serviço. Este parâmetro de 128 bits pode ser definido usando um suporte de simulação de serviço do sistema file (ver página 22). Se o parâmetro do número de série de 128 bits não estiver definido no file, um número de série padrão de 0 será usado. Assim que o serviço iniciar a execução, uma mensagem indicando o local de destino e o número de série será exibida. O controlador do sistema realiza uma gravação AHB no endereço com o número de série. Após a conclusão do serviço, o RXFIFO do COMM_BLK será carregado com a resposta do serviço.
3.2.2 Código de usuário
O serviço usercode grava um parâmetro usercode de 32 bits em um local de endereço fornecido como parte da solicitação de serviço. Este parâmetro de 32 bits pode ser definido usando o System Service Simulation Support file (ver página 22). Se o parâmetro de 32 bits não estiver definido no file, um valor padrão de 0 é usado. Assim que o serviço iniciar a execução, uma mensagem indicando o local de destino e o código do usuário será exibida. O controlador do sistema conduz uma gravação AHB no endereço com o parâmetro de 32 bits. Após a conclusão do serviço, o RXFIFO do COMM_BLK é carregado com a resposta do serviço, que inclui o comando de serviço e o endereço de destino.
3.3 Serviços de Descritores de Dados
As seções a seguir descrevem vários tipos de serviços de descritores de dados.

3.3.1 AES
O suporte de simulação para este serviço preocupa-se apenas em mover os dados originais da origem para o destino, sem realmente realizar qualquer criptografia/descriptografia dos dados. Os dados que precisam ser criptografados/descriptografados e a estrutura de dados devem ser gravados antes do envio da solicitação de serviço. Após o início da execução do serviço, é exibida uma mensagem indicando a execução do serviço AES. O serviço AES lê a estrutura de dados e os dados a serem criptografados/descriptografados. Os dados originais são copiados e gravados no endereço fornecido na estrutura de dados. Assim que o serviço for concluído, o comando, o status e o endereço da estrutura de dados são enviados para o RXFIFO.
Observação: Este serviço é apenas para dados de 128 e 256 bits, e os dados de 128 e 256 bits têm comprimentos de estrutura de dados diferentes.

3.3.2 SHA 256
O suporte de simulação para este serviço preocupa-se apenas em mover os dados, sem realmente realizar qualquer hashing nos dados. A função SHA 256 foi projetada para gerar uma chave hash de 256 bits com base nos dados de entrada. Os dados que precisam ser hash e a estrutura de dados devem ser gravados em seus respectivos endereços antes que a solicitação de serviço seja enviada ao COMM_BLK. O comprimento em bits e o ponteiro definidos na estrutura de dados SHA 256 devem corresponder corretamente ao comprimento e ao endereço dos dados a serem hash. Assim que a execução do serviço tiver iniciado, será exibida uma mensagem indicando a execução do serviço SHA 256. Em vez de executar a função real, uma chave hash padrão será gravada no ponteiro de destino da estrutura de dados. A chave hash padrão é hexadecimal “ABCD1234”. Para definir uma chave personalizada, vá para a seção Configuração de parâmetros (consulte a página 23). Após a conclusão do serviço, o RXFIFO é carregado com a resposta do serviço que consiste no comando de serviço, status e ponteiro de estrutura de dados SHA 256.
3.3.3 HMAC
O suporte de simulação para este serviço preocupa-se apenas com a movimentação de dados, sem realmente realizar qualquer hashing nos dados. Os dados que precisam ser hash e a estrutura de dados devem ser gravados em seus respectivos endereços antes que a solicitação de serviço seja enviada ao COMM_BLK. O serviço HMAC requer uma chave de 32 bytes além do comprimento em bytes, ponteiro de origem e ponteiro de destino. Após o início da execução do serviço, é exibida uma mensagem indicando a execução do serviço HMAC. A chave é lida e a chave de 256 bits é copiada da estrutura de dados para o ponteiro de destino. Após a conclusão do serviço, o RXFIFO é carregado com a resposta do serviço que consiste no comando de serviço, status e ponteiro de estrutura de dados HMAC.

3.3.4 Geração de DRBG
A geração de bits aleatórios é realizada por este serviço. Ressalta-se que o modelo de simulação não segue exatamente a mesma metodologia de geração de números aleatórios utilizada pelo silício. A estrutura de dados deve ser gravada corretamente no local pretendido antes que a solicitação de serviço seja enviada ao COMM_BLK. A estrutura de dados, ponteiro de destino, comprimento e outros dados relevantes são lidos pelo controlador do sistema. O serviço de geração DRBG gera um conjunto pseudoaleatório de dados com o comprimento solicitado (0-128). O controlador do sistema grava os dados aleatórios no ponteiro de destino. Uma mensagem indicando a execução do serviço de geração do DRBG é exibida na simulação. Assim que o serviço for concluído, o comando, o status e o endereço da estrutura de dados são enviados para o RXFIFO. Se o comprimento dos dados solicitados não estiver dentro do intervalo de 0 a 128, um código de erro “4” (Max Generate) será enviado para o RXFIFO. Se o comprimento dos dados adicionais não estiver dentro do intervalo Solicitação muito grande de 0 a 128, um código de erro “5” (Comprimento máximo de dados adicionais excedido) será enviado para o RXFIFO. Se o comprimento dos dados solicitados para geração e o comprimento dos dados adicionais não estiverem dentro do intervalo definido (0-128), um código de erro “1” (Erro Catastrófico) será enviado ao RXFIFO.

3.3.5 Reinicialização do DRBG
A função de redefinição real é executada removendo instanciações do DRBG e redefinindo o DRBG. Depois que a solicitação de serviço for detectada, a simulação exibirá uma mensagem de serviço de redefinição de DRBG concluído. A resposta, que inclui o serviço e o status, é enviada para o RXFIFO.
3.3.6 Autoteste DRBG
O suporte de simulação para o autoteste DRBG não executa realmente a função de autoteste. Uma vez detectada a solicitação de serviço, a simulação exibirá uma mensagem de execução do serviço de autoteste DRBG. A resposta, que inclui o serviço e o status, será enviada para o RXFIFO.
3.3.7 Instanciar DRBG
O suporte de simulação para o serviço de instanciação do DRBG não executa realmente o serviço de instanciação. A estrutura de dados deve ser gravada corretamente no local pretendido antes que a solicitação de serviço seja enviada ao COMM_BLK. Assim que a solicitação de serviço for detectada, a estrutura e a sequência de personalização definidas no espaço de endereço MSS serão lidas. A simulação exibirá uma mensagem indicando que o serviço DRBG Instantiate iniciou a execução. Assim que o serviço for concluído, a resposta, que inclui o comando de serviço, o status e o ponteiro para a estrutura de dados, será enviada para o RXFIFO. Se o comprimento dos dados (PERSONALIZATIONLENGTH) não estiver dentro do intervalo de 0 a 128, um código de erro “1” (Erro Catastrófico) será enviado ao RXFIFO para o status.
3.3.8 DRBG não instanciado
O suporte de simulação para o serviço não instanciado do DRBG não executa realmente o serviço não instanciado de remoção de um DRBG previamente instanciado, como o silício faz. A solicitação de serviço deve incluir o comando e o identificador DRBG. Assim que a solicitação de serviço for detectada, o identificador DRBG será armazenado. A simulação exibirá uma mensagem indicando que o serviço não instanciado do DRBG foi inicializado. Assim que o serviço for concluído, a resposta, que inclui o comando de serviço, o status e o identificador DRBG, será enviada por push para o RXFIFO.
3.3.9 Repropagação DRBG
Devido à natureza simulativa do bloco de serviços do sistema, o serviço de nova propagação do DRBG na simulação não é executado automaticamente após cada 65535 serviços gerados pelo DRBG. A estrutura de dados deve ser gravada corretamente no local pretendido antes que a solicitação de serviço seja enviada ao COMM_BLK. Uma vez detectada a solicitação de serviço, a estrutura e o parâmetro de entrada adicional no espaço de endereço MSS serão lidos. Uma mensagem indicando que o serviço de repropagação do DRBG começou a ser executado será exibida. A estrutura de dados deve ser gravada corretamente no local pretendido antes que a solicitação de serviço seja enviada ao COMM_BLK. Assim que o serviço for concluído, a resposta, que inclui o comando de serviço, o status e o ponteiro para a estrutura de dados, será enviada para o RXFIFO.
3.3.10 Árvore-chave
A função real não é executada na simulação para o serviço KeyTree. A estrutura de dados do serviço KeyTree consiste em uma chave de 32 bytes, dados de tipo de opção de 7 bits (MSB ignorados) e caminho de 16 bytes. Os dados dentro da estrutura de dados devem ser gravados em seus respectivos endereços, antes que a solicitação de serviço seja enviada ao COMM_BLK. Assim que o serviço iniciar a execução, será exibida uma mensagem indicando a execução do serviço KeyTree. O conteúdo da estrutura de dados será lido, a chave de 32 bytes será armazenada e a chave original localizada na estrutura de dados será substituída. Após esta gravação AHB, o valor da chave dentro da estrutura de dados não deve mudar, mas ocorrerão transações AHB para a gravação. Após a conclusão do serviço, o RXFIFO é carregado com a resposta do serviço, consistindo no comando de serviço, status e ponteiro da estrutura de dados KeyTree.
3.3.11 Resposta ao Desafio
A função real, como a autenticação do dispositivo, não é executada na simulação para o serviço de resposta a desafios. A estrutura de dados para este serviço requer um ponteiro para o buffer, para receber um resultado de 32 bytes, tipo de opção de 7 bits e um caminho de 128 bits. Os dados dentro da estrutura de dados devem ser gravados em seus respectivos endereços antes que a solicitação de serviço seja enviada ao COMM_BLK. Assim que o serviço iniciar a execução, será exibida uma mensagem indicando a execução do serviço de resposta a desafios. Uma resposta genérica de 256 bits será escrita no ponteiro fornecido na estrutura de dados. A chave padrão é definida como hexadecimal “ABCD1234”. Para obter uma chave personalizada, verifique Configuração de parâmetros (consulte a página 23). Após a conclusão do serviço, o RXFIFO será carregado com a resposta do serviço, consistindo no comando de serviço, status e ponteiro da estrutura de dados de resposta ao desafio.
3.4 Outros Serviços
As seções a seguir descrevem vários outros serviços do sistema.
3.4.1 Verificação de resumo
A função real de recalcular e comparar resumos de componentes selecionados não é executada para o serviço de verificação de resumo na simulação. Esta solicitação de serviço consiste em comandos de serviço e opções de serviço (LSB de 5 bits). Após o início da execução do serviço, será exibida uma mensagem detalhando a execução do serviço de verificação de resumo, juntamente com as opções selecionadas na solicitação. Após a conclusão do serviço, o RXFIFO será carregado com a resposta do serviço, consistindo no comando de serviço e nos sinalizadores de aprovação/reprovação da verificação de resumo.
3.4.2 Resposta de comando não reconhecida
Quando uma solicitação de serviço não reconhecida é enviada ao COMM_BLK, o COMM_BLK responderá automaticamente com uma mensagem de comando não reconhecida enviada para o RXFIFO. A mensagem consiste no comando enviado para COMM_BLK e no status do comando não reconhecido (252D). Uma mensagem no display indicando que uma solicitação de serviço não reconhecida foi detectada também será exibida. O COMM_BLK retornará ao estado inativo, aguardando para aceitar a próxima solicitação de serviço.
3.4.3 Serviços não suportados
Serviços não suportados definidos como COMM_BLK acionarão uma mensagem na simulação indicando que a solicitação de serviço não é suportada. O COMM_BLK retornará ao estado inativo, aguardando para aceitar a próxima solicitação de serviço. O PINTERRUPT não será definido, indicando que um serviço foi concluído. A lista atual de serviços não suportados inclui: IAP, ISP, Certificado de Dispositivo e Serviço DESIGNVER.
3.5 Suporte à simulação de serviços do sistema File
Para apoiar a simulação de serviços do sistema, um texto file chamado “status.txt” pode ser usado para passar instruções sobre o comportamento necessário do modelo de simulação para o modelo de simulação. Esse file deve estar localizado na mesma pasta a partir da qual a simulação é executada. O file pode ser utilizado, entre outras coisas, para forçar determinadas respostas de erro para os serviços do sistema suportados ou mesmo para definir alguns parâmetros necessários à simulação, (por exemploamparquivo, número de série). O número máximo de linhas suportadas no “status.txt” file é 256. As instruções que aparecem após o número da linha 256 não serão usadas na simulação.
3.5.1 Forçando respostas de erro
O usuário pode forçar uma determinada resposta de erro para um determinado serviço durante o teste, passando as informações para o modelo de simulação usando o “status.txt” file, que deve ser colocado na pasta a partir da qual a simulação é executada. Para forçar respostas de erro a um determinado serviço, o comando e a resposta necessária devem ser digitados na mesma linha no seguinte formato:ample, para Comando> ; instruir o modelo de simulação para gerar uma resposta de erro de acesso à memória MSS para o serviço de número de série, o comando é o seguinte.
Serviço: Número de série: 01
Mensagem de erro solicitada: Erro de acesso à memória MSS: 7F
Você deve inserir a linha 017F em “status.txt” file.
3.5.2 Configuração de Parâmetro
O “status.txt” file também pode ser usado para definir alguns parâmetros necessários na simulação. Como um example, para definir o parâmetro de 32 bits para o código do usuário, o formato da linha deve estar nesta ordem: <CÓDIGO DE USUÁRIO 32 bits>; onde ambos os valores são inseridos em hexadecimal. Para definir o parâmetro de 128 bits para o número de série, o formato da linha deve estar nesta ordem: <Número de série de 128 bits [127:0]> ; onde ambos os valores são inseridos em hexadecimal. Para definir o parâmetro de 256 bits para a chave SHA 256; o formato da linha deve estar nesta ordem: <Chave de 256 bits [255:0]>; onde ambos os valores são inseridos em hexadecimal. Para definir o parâmetro de 256 bits para a chave de resposta de desafio, o formato da linha deve estar nesta ordem: <Chave de 256 bits [255:0]>;
onde ambos os valores são inseridos em hexadecimal.
3.5.3 Prioridade do dispositivo
Os serviços de sistemas e o COMM_BLK utilizam um sistema de alta prioridade. Atualmente, o único serviço de alta prioridade é a zerização. Para realizar um serviço de alta prioridade, enquanto outro serviço está sendo executado, o serviço atual é interrompido e o serviço de maior prioridade será executado em seu lugar. O COMM_BLK descartará o serviço atual para executar o serviço de maior prioridade. Se vários serviços sem alta prioridade forem enviados antes da conclusão de um serviço atual, esses serviços serão enfileirados no TXFIFO. Assim que o serviço atual for concluído, o próximo serviço no TXFIFO será executado.

A Microsemi não oferece nenhuma garantia, representação ou garantia em relação às informações aqui contidas ou a adequação de seus produtos e serviços para qualquer finalidade específica, nem assume qualquer responsabilidade decorrente da aplicação ou uso de qualquer produto ou circuito. Os produtos vendidos abaixo e quaisquer outros produtos vendidos pela Microsemi foram sujeitos a testes limitados e não devem ser usados ​​em conjunto com equipamentos ou aplicativos de missão crítica. Todas as especificações de desempenho são consideradas confiáveis, mas não são verificadas, e o Comprador deve conduzir e concluir todos os testes de desempenho e outros dos produtos, sozinhos e em conjunto com ou instalados em quaisquer produtos finais. O Comprador não deve confiar em quaisquer dados e especificações de desempenho ou parâmetros fornecidos pela Microsemi. É responsabilidade do Comprador determinar independentemente a adequação de quaisquer produtos e testar e verificar os mesmos. As informações fornecidas pela Microsemi neste instrumento são fornecidas “como estão, onde estão” e com todas as falhas, e todo o risco associado a tais informações é inteiramente do Comprador. A Microsemi não concede, explícita ou implicitamente, a qualquer parte quaisquer direitos de patente, licenças ou quaisquer outros direitos de PI, seja com relação a tais informações em si ou qualquer coisa descrita por tais informações. As informações fornecidas neste documento são de propriedade da Microsemi, e a Microsemi se reserva o direito de fazer quaisquer alterações nas informações contidas neste documento ou em quaisquer produtos e serviços a qualquer momento, sem aviso prévio.
A Microsemi, uma subsidiária integral da Microchip Technology Inc. (Nasdaq: MCHP), oferece um portfólio abrangente de soluções de semicondutores e sistemas para os mercados aeroespacial e de defesa, comunicações, data center e industrial. Os produtos incluem circuitos integrados analógicos de sinais mistos de alto desempenho e resistentes à radiação, FPGAs, SoCs e ASICs; produtos de gerenciamento de energia; dispositivos de cronometragem e sincronização e soluções de tempo precisas, estabelecendo o padrão mundial de tempo; dispositivos de processamento de voz; Soluções de RF; componentes discretos; soluções empresariais de armazenamento e comunicação; tecnologias de segurança e anti-t escalávelamper produtos; soluções Ethernet; CIs e midspans Power-over-Ethernet; bem como recursos e serviços de design personalizado. A Microsemi está sediada em Aliso Viejo, Califórnia, e tem aproximadamente 4,800 funcionários em todo o mundo. Saiba mais em www.microsemi.com.

Logo da Microsemi

Sede da Microsemi
Uma Empresa, Aliso Velho,
CA 92656 EUA
Nos EUA: +1 800-713-4113
Fora dos EUA: +1 949-380-6100
Vendas: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: vendas.suporte@microsemi.com
www.microsemi.com
© 2018 Microsemi. Todos os direitos reservados. Microsemi e o logotipo da Microsemi
são marcas registradas da Microsemi Corporation. Todas as outras marcas registradas e serviços
marcas são propriedade de seus respectivos proprietários.

Documentos / Recursos

Simulação de serviços de sistema Microsemi UG0837 IGLOO2 e SmartFusion2 FPGA [pdf] Guia do Usuário
UG0837, UG0837 Simulação de serviços de sistema FPGA IGLOO2 e SmartFusion2, Simulação de serviços de sistema FPGA IGLOO2 e SmartFusion2, Simulação de serviços de sistema FPGA SmartFusion2, Simulação de serviços de sistema FPGA, Simulação de serviços

Referências

Deixe um comentário

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *