UG0837
Guía de usuario
IGLOO2 e SmartFusion2 FPGA
Simulación de servizos do sistema
Xuño 2018
Historial de revisións
O historial de revisións describe os cambios que se implementaron no documento. Os cambios están listados por revisión, comezando pola publicación máis recente.
1.1 Revisión 1.0
A revisión 1.0 publicouse en xuño de 2018. Foi a primeira publicación deste documento.
Simulación de servizos do sistema FPGA IGLOO2 e SmartFusion2
O bloque de servizos do sistema da familia SmartFusion®2 FPGA presenta unha colección de servizos responsables de varias tarefas. Estes inclúen servizos de mensaxes de simulación, servizos de punteiro de datos e servizos de descritores de datos. Pódese acceder aos servizos do sistema a través do Cortex-M3 en SmartFusion2 e desde o tecido FPGA a través do controlador de interface de tecido (FIC) tanto para SmartFusion2 como para IGLOO®2. Estes métodos de acceso envíanse ao controlador do sistema a través do COMM_BLK. O COMM_BLK ten unha interface de bus periférico avanzado (APB) e actúa como un conducto de paso de mensaxes para intercambiar datos co controlador do sistema. As solicitudes de servizo do sistema envíanse ao controlador do sistema e as respostas de servizo do sistema envíanse ao CoreSysServicio a través do COMM BLK. A localización do enderezo para COMM_BLK está dispoñible dentro do subsistema de microcontroladores (MSS)/subsistema de memoria de alto rendemento (HPMS). Para obter máis información, consulte o UG0450: SmartFusion2 SoC e IGLOO2 FPGA System Controller.
Guía de usuario
A seguinte ilustración mostra o fluxo de datos dos servizos do sistema.
Figura 1 • Diagrama de fluxo de datos do servizo do sistemaTanto para a simulación de servizo do sistema IGLOO2 como para a SmartFusion2, cómpre enviar solicitudes de servizo do sistema e comprobar as respostas do servizo do sistema para verificar que a simulación é correcta. Este paso é necesario para acceder ao controlador do sistema, que proporciona os servizos do sistema. A forma de escribir e ler desde o controlador do sistema é diferente para os dispositivos IGLOO2 e SmartFusion2. Para SmartFusion2, o Coretex-M3 está dispoñible e pode escribir e ler desde o controlador do sistema mediante comandos de modelo funcional de bus (BFM). Para IGLOO2, o Cortex-M3 non está dispoñible e non se pode acceder ao controlador do sistema mediante comandos BFM.
2.1 Tipos de servizos do sistema dispoñibles
Hai tres tipos diferentes de servizos do sistema dispoñibles e cada tipo de servizo ten diferentes subtipos.
Servizos de mensaxes de simulación
Servizos de punteiro de datos
Servizos de descriptores de datos
O capítulo Apéndice – Tipos de servizos do sistema (consulte a páxina 19) desta guía describe os diferentes tipos de servizos do sistema. Para obter máis información sobre os servizos do sistema, consulte UG0450: SmartFusion2 SoC e IGLOO2 FPGA System Controller User Guide .
2.2 Simulación do servizo do sistema IGLOO2
Os servizos do sistema implican escribir e ler desde o controlador do sistema. Para escribir e ler no controlador do sistema con fins de simulación, cómpre realizar os pasos seguintes.
- Instancia o núcleo IP suave de CoreSysServices, dispoñible no catálogo de SmartDesign.
- Escriba o código HDL para unha máquina de estados finitos (FSM).
O HDL FSM interactúa co CoreSysServices Core, que serve como mestre de tecido do bus AHBLite. O núcleo CoreSysServices inicia a solicitude de servizo do sistema ao COMM BLK e recibe respostas do servizo do sistema do COMM BLK a través do controlador de interface de tecido FIC_0/1, como se mostra na seguinte ilustración.
Figura 2 • Topoloxía de simulación de servizos do sistema IGLOO22.3 Simulación do servizo do sistema SmartFusion2
Para simular os servizos do sistema en dispositivos SmartFusion2, cómpre escribir e ler desde o controlador do sistema. Hai dúas opcións dispoñibles para acceder ao controlador do sistema con fins de simulación.
Opción 1: escriba o código HDL para que un FSM interactúe co núcleo IP suave CoreSysService, que serve como mestre de tecido AHBLite e inicia a solicitude de servizo do sistema ao COMM BLK e recibe respostas do servizo do sistema do COMM BLK a través do tecido FIC_0/1. interface como se mostra na seguinte ilustración.
Figura 3 • Topoloxía de simulación de servizos do sistema SmartFusion2
Opción 2 - Como o Cortex-M3 está dispoñible para dispositivos SmartFusion2, pode usar comandos BFM para escribir e ler directamente no espazo de memoria do controlador do sistema.
Usar comandos BFM (opción 2) aforra a necesidade de escribir os códigos HDL para o FSM. Nesta guía de usuario, a opción 2 úsase para mostrar a simulación de servizos do sistema en SmartFusion2. Con esta opción, accédese ao espazo de memoria do controlador do sistema para descubrir o mapa de memoria do COMM BLK e o bloque do controlador de interrupción da interface de tecido (FIIC) cando escribe os seus comandos BFM.
2.4 Simulación Examples
A guía do usuario recolle as seguintes simulacións.
- Simulación do servizo de número de serie IGLOO2 (consulte a páxina 5)
- Simulación de servizo de número de serie SmartFusion2 (consulte a páxina 8)
- Simulación do servizo de puesta a cero IGLOO2 (consulte a páxina 13)
- Simulación do servizo de puesta a cero SmartFusion2 (consulte a páxina 16)
Pódense aplicar métodos de simulación similares a outros servizos do sistema. Para obter unha lista completa dos diferentes servizos do sistema dispoñibles, vaia ao Apéndice – Tipos de servizos do sistema (consulte a páxina 19).
2.5 Simulación do servizo de número de serie IGLOO2
Para prepararse para a simulación do servizo de número de serie IGLOO2, siga os pasos seguintes.
- Invoque o creador do sistema para crear o seu bloque HPMS.
- Marque a caixa de verificación Servizos do sistema HPMS na páxina Características do dispositivo. Isto indicará ao creador do sistema que expoña a interface de bus HPMS_FIC_0 SYS_SERVICES_MASTER (BIF).
- Deixa todas as demais caixas de verificación sen marcar.
- Acepte o valor predeterminado en todas as outras páxinas e prema en Finalizar para completar o bloque do creador do sistema. No editor HDL do SoC Libero®, escriba o código HDL para o FSM (File > Novo > HDL). Inclúe os seguintes tres estados no teu FSM.
Estado INIT (estado inicial)
SERV_PHASE (estado da solicitude de servizo)
RSP_PHASE (estado de resposta do servizo).
A seguinte figura mostra os tres estados de FSM.
Figura 4 • FSM de tres estados No seu código HDL para o FSM, use o código de comando correcto ("01" Hex para o servizo de número de serie) para introducir o estado de solicitude de servizo desde o estado INIT.
- Garda o teu HDL file. O FSM aparece como un compoñente na xerarquía de deseño.
- Abre SmartDesign. Arrastra e solta o teu bloque de creación de sistemas de nivel superior e o teu bloque FSM no lenzo de SmartDesign. Desde o catálogo, arrastra e solta o núcleo IP suave CoreSysService no lenzo de SmartDesign.
- Fai clic co botón dereito no núcleo IP suave CoreSysService para abrir o configurador. Marque a caixa de verificación Servizo de número de serie (en Servizos de información sobre dispositivos e deseño).
grupo) para activar o servizo de número de serie. - Deixa todas as demais caixas de verificación sen marcar. Fai clic en Aceptar para saír do configurador.
Figura 5 • CoreSysServices soft IP Core Configurator
- Conecte o HPMS_FIC_0 SYS_SERVICES_MASTER BIF do bloque do creador do sistema ao AHBL_MASTER BIF do bloque CoreSysService.
- Conecte a saída do seu bloque HDL FSM á entrada do núcleo IP suave CoreSysService. Fai todas as demais conexións no lenzo de SmartDesign como se mostra na seguinte figura.
Figura 6 • SmartDesign Canvas con HDL Block, CoreSysServices Soft IP e HPMS Blocks - No lenzo de SmartDesign, prema co botón dereito > Xerar compoñente para xerar o deseño de nivel superior.
- Na xerarquía de deseño view, fai clic co botón dereito no deseño de nivel superior e selecciona Crear banco de probas > HDL .
- Use un editor de texto para crear un texto file chamado "status.txt".
- Inclúa o comando para o servizo do sistema e o número de serie de 128 bits. Para obter máis información, consulte a Táboa 1 (Valores de comandos/respostas dos servizos do sistema). Manual de CoreSysServices v3.1 para que os códigos de comando (hexadecimal) se utilicen para diferentes servizos do sistema. Para o servizo de número de serie, o código de comando é "01" Hex.
O formato do status.txt file para o servizo de número de serie é o seguinte.
< 2 díxitos hexadecimales CMD><32 díxitos hexadecimales Número de serie>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Garda o status.txt file no cartafol Simulación do teu proxecto. O deseño xa está listo para a simulación.
Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a localización de destino e o número de serie na xanela de transcrición de ModelSim, como se mostra na seguinte figura.
Figura 7 • Ventá de transcrición de simulación de ModelSimO controlador do sistema realiza unha escritura AHB no enderezo co número de serie. Ao completar o servizo, o RXFIFO de COMM_BLK cargarase coa resposta do servizo.
Nota: Para obter unha lista completa dos códigos de comandos que se usarán para os diferentes servizos do sistema, consulte a Táboa 1 (Valores de comandos/respostas dos servizos do sistema) no Manual CoreSysServices v3.1 ou UG0450: Guía de usuario do controlador de sistema SmartFusion2 SoC e IGLOO2 FPGA.
2.6 Simulación do servizo de número de serie SmartFusion2
Nesta guía de usuario, os comandos BFM (opción 2) utilízanse para acceder ao controlador do sistema para o servizo do sistema. Os comandos BFM úsanse xa que o procesador Cortex-M3 está dispoñible no dispositivo para a simulación BFM. Os comandos BFM permítenche escribir e ler directamente no COMM BLK unha vez que coñezas a asignación de memoria do COMM_BLK.
Para preparar o seu deseño para a simulación do servizo de número de serie SmartFusion2, siga os seguintes pasos.
- Arrastre e solte o MSS do catálogo ao lenzo de deseño do seu proxecto.
- Desactiva todos os periféricos MSS excepto MSS_CCC, Restablecer controlador, Xestión de interrupcións e FIC_0, FIC_1 e FIC_2.
- Configure a xestión de interrupcións para utilizar MSS para a interrupción de tecido.
- Prepare o serialnum.bfm file nun editor de texto ou no editor HDL de Libero. Garda o serialnum.bfm file no cartafol Simulación do proxecto. O serialnum.bfm debe incluír os seguintes detalles.
• Asignación de memoria ao COMM BLK (CMBLK)
• Asignación de memoria para periféricos de xestión de interrupcións (FIIC)
• Comando para a solicitude de servizo do sistema de número de serie (“01” Hex)
• Enderezo para a localización do número de serie
Un example do número de serie.bfm file é o seguinte.
memmap FIIC 0x40006000; #Mapeamento da memoria para a xestión de interrupcións
memmap CMBLK 0x40016000; #Mapeamento da memoria a COMM BLK
memmap DESCRIPTOR_ADDR 0x20000000; #Localización do enderezo para o número de serie
#Código de comando en hexadecimal
CMD constante 0x1 # Código de comando para Serial NumberService
Rexistros de configuración #FIIC
constante FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK Rexistros de configuración
CONTROL constante 0x00
constante ESTADO 0x04
constante INT_ENABLE 0x08
constante DATA8 0x10
constante DATA32 0x14
constante FRAME_START8 0x18
constante FRAME_START32 0x1C
procedemento número de serie;
int x;
escribir w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configurar
#FICC_INTERRUPT_ENABLE0 # Rexístrese para activar COMBLK_INTR #
#interrupción do bloque COMM_BLK ao fabric
#Fase de solicitude
escribir w CMBLK CONTROL 0x10 # Configurar COMM BLK Control #Rexistrarse en
habilitar transferencias na interface COMM BLK
escribir w CMBLK INT_ENABLE 0x1 # Configure COMM BLK Interrupt Enable
#Register para habilitar a interrupción para TXTOKAY (bit correspondente no
#Rexistro de estado)
waitint 19 # wait for COMM BLK Interrupt , Aquí #BFM espera
#ata que se afirme COMBLK_INTR
readstore w CMBLK STATUS x # Read COMM BLK Status Rexistrarse para #TXTOKAY
# Interromper
establecer xx e 0x1
se x
escribir w CMBLK FRAME_START8 CMD # Configurar COMM BLK FRAME_START8
#Rexístrese para solicitar o servizo de número de serie
endif
endif
waitint 19 # agarde a interrupción COMM BLK, aquí
#BFM agarda ata que se afirme COMBLK_INTR
readstore w CMBLK STATUS x # Read COMM BLK Status Rexistrarse para
#TXTOKAY Interrupción
establecer xx e 0x1
establecer xx e 0x1
se x
escribir w CMBLK CONTROL 0x14 #Configurar COMM BLK Control
#Regístrate para activar as transferencias na interface COMM BLK
escribir w CMBLK DATA32 DESCRIPTOR_ADDR
escribir w CMBLK INT_ENABLE 0x80
escribir w CMBLK CONTROL 0x10
endif
espera 20
#Fase de Resposta
espera 19
readstore w CMBLK STATUS x
establecer xx e 0x80
se x
comprobación de lectura w CMBLK FRAME_START8 CMD
escribir w CMBLK INT_ENABLE 0x2
endif
espera 19
readstore w CMBLK STATUS x
establecer xx e 0x2
se x
comprobación de lectura w CMBLK DATA8 0x0
escribir w CMBLK CONTROL 0x18
endif
espera 19
comprobación de lectura con FIIC 0x8 0x20000000
readstore w CMBLK STATUS x
establecer xx e 0x2
se x
comprobación de lectura w CMBLK DATA32 DESCRIPTOR_ADDR
endif
comprobación de lectura w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck para comprobar S/N
comprobación de lectura w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck para comprobar S/N
comprobación de lectura w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck para comprobar S/N
comprobación de lectura w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck para comprobar S/N
volver - Crea o estado. txt file no editor HDL de Libero ou en calquera editor de texto. Inclúa o comando de servizo do sistema de número de serie ("01" en hexadecimal) e o número de serie no estado . txt file. Consulte o Manual de CoreSysServices v3.1 para usar o código de comando correcto.
- A sintaxe desta file para o servizo de número de serie é <2 díxitos hexadecimales CMD>< 32 díxitos hexadecimales Número de serie> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- Garda o estado .txt file no cartafol Simulación do proxecto.
- Edite o usuario .bfm (situado dentro do cartafol Simulación) para incluír o número de serie. bfm file e chame ao procedemento do número de serie como se mostra no seguinte fragmento de código.
inclúe "serialnum.bfm" #include serialnum.bfm
procedemento user_main;
imprimir "INFO:Comeza a simulación";
imprimir "INFO:Código de comando de servizo en decimal:%0d", CMD ;
chamar a número de serie; #chamar o procedemento do número de serie
imprimir "INFO: Finaliza a simulación";
volver - Na xerarquía de deseño view, xera o banco de probas (faga clic co botón dereito, Deseño de nivel superior > Crear banco de probas > HDL ) e xa está preparado para executar a simulación do servizo de número de serie.
Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a localización de destino e o número de serie. O controlador do sistema realiza unha escritura AHB no enderezo co número de serie. Ao completar o servizo, o RXFIFO de COMM_BLK cargarase coa resposta do servizo. A xanela de transcrición de ModelSim mostra o enderezo e o número de serie recibidos como se mostra na seguinte figura.
Figura 8 • Simulación do servizo de número de serie SmartFusion2 na xanela de transcrición de ModelSim
2.7 Simulación do servizo de puesta a cero IGLOO2
Para prepararse para a simulación do servizo de ceroización de IGLOO2, siga os pasos que se indican a continuación.
- Invoque o creador do sistema para crear o bloque HPMS. Marque a caixa de verificación Servizos do sistema HPMS nas características do dispositivo SYS_SERVICES_MASTER BIF. Deixa todas as demais caixas de verificación sen marcar. Acepta o valor predeterminado en todas as outras páxinas e fai clic na páxina. Isto indícase ao creador do sistema que expoña o HPMS_FIC_0 Finalizar para completar a configuración do bloque do creador do sistema.
- No editor HDL do SoC Libero, escriba o código HDL para o FSM. No teu código HDL para o FSM, inclúe os tres estados seguintes.
Estado INIT (estado inicial)
SERV_PHASE (estado da solicitude de servizo)
RSP_PHASE (estado de resposta do servizo)
A seguinte figura mostra os tres estados de FSM.
Figura 9 • FSM de tres estados - No seu código HDL, use o código de comando "F0" (hexadecimal) para introducir o estado de solicitude de servizo desde o estado INIT.
- Garda o teu HDL file.
- Abre SmartDesign, arrastra e solta o teu bloque de creación de sistemas de nivel superior e o teu bloque HDL FSM no lenzo de SmartDesign. Desde o catálogo, arrastre e solte o núcleo IP suave CoreSysService no lenzo de SmartDesign.
- Fai clic co botón dereito no núcleo IP suave de CoreSysServices para abrir o configurador e marca a caixa de verificación Servizo de ceroización no grupo Servizos de seguridade de datos. Deixa todas as demais caixas de verificación sen marcar. Fai clic para saír de Aceptar.
Figura 10 • Configurador de CoreSysServices
- Conecte o HPMS_FIC_0 SYS_SERVICES_MASTER BIF do bloque do creador do sistema ao AHBL_MASTER BIF do bloque CoreSysService.
- Conecte a saída do seu bloque HDL FSM á entrada do núcleo IP suave CoreSysService. Fai todas as demais conexións no lenzo de SmartDesign.
Figura 11 • SmartDesign Canvas con HDL Block, CoreSysServices Soft IP e HPMS Blocks
9. No lenzo SmartDesign, xera o deseño de nivel superior (faga clic co botón dereito > Xerar compoñente).
10. Na xerarquía de deseño view, fai clic co botón dereito no deseño de nivel superior e selecciona crear Testbench > HDL. Agora estás listo para executar a simulación.
Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica que a puesta a cero se completou no momento x, como se mostra na seguinte figura.
Figura 12 • Ventá de transcrición do servizo de simulación do sistema de ceroización IGLOO2
O controlador do sistema realiza unha escritura AHB no enderezo co número de serie. Ao completar o servizo, o RXFIFO de COMM_BLK cargarase coa resposta do servizo. Cómpre ter en conta que o modelo de simulación simula a puesta a cero ao deter a simulación en lugar de cero o deseño en si.
Nota: Para obter unha lista completa dos códigos de comando que se usarán para os diferentes servizos do sistema, consulte a Táboa 1 (Valores de comando/resposta dos servizos do sistema) no Manual de CoreSysServices v3.1:. ou UG0450: Guía de usuario do controlador de sistema SmartFusion2 SoC e IGLOO2 FPGA
2.8 Simulación do servizo de ceroización SmartFusion2
Nesta guía, os comandos BFM (opción 2) utilízanse para acceder ao controlador do sistema para o servizo do sistema.
Os comandos BFM úsanse xa que o procesador Cortex-M3 está dispoñible no dispositivo para a simulación BFM. Os comandos BFM permítenche escribir e ler directamente no COMM BLK unha vez que coñezas a asignación de memoria do COMM_BLK. Para preparar o seu deseño para a simulación do servizo de ceroización SmartFusion2, siga os seguintes pasos.
- Arrastre e solte o MSS do catálogo ao lenzo de deseño do seu proxecto.
- Desactiva todos os periféricos MSS excepto MSS_CCC, Restablecer controlador, Xestión de interrupcións e FIC_0, FIC_1 e FIC_2.
- Configure a xestión de interrupcións para utilizar MSS para a interrupción de tecido.
- Prepare o zeroization.bfm file nun editor de texto ou no editor HDL de Libero. A túa puesta a cero. bfm debe incluír:
- Asignación de memoria ao COMM BLK (CMBLK)
- Asignación de memoria para periféricos de xestión de interrupcións (FIIC)
- Comando para a solicitude de servizo de ceroización ("F0" Hex para ceroización)
Un example do número de serie.bfm file móstrase na seguinte figura.
Figura 13 • Zeroization.bfm para SmartFusion2 Zeroization System Services Simulation
5. Garda o zeroization.bfm file no cartafol Simulación do proxecto. usuario.bfm
6. Edite o (situado no cartafol de simulación zeroization.bfm) para incluír o usando o seguinte fragmento de código.
inclúen “zeroization.bfm” #include zeroization.bfm file procedemento user_main;
imprimir "INFO:Comeza a simulación";
imprimir "INFO:Código de comando de servizo en decimal:%0d", CMD ;
chamar a cero; Devolución do procedemento de cero de #chamada
7. Na xerarquía de deseño , xera o banco de probas (faga clic co botón dereito no nivel superior > Crear banco de probas > HDL ) e xa está preparado para executar a simulación de ceroización SmartFusion2.
Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica que o dispositivo se puxo a cero no momento x. Cómpre ter en conta que o modelo de simulación simula a puesta a cero ao deter a simulación en lugar de cero o deseño en si. A xanela de transcrición de ModelSim na seguinte figura mostra que o dispositivo foi cero.
Figura 14 • Rexistro de simulación do servizo do sistema de ceroización SmartFusion2
Apéndice: Tipos de Servizos do Sistema
Este capítulo describe varios tipos de servizos do sistema.
3.1 Servizos de mensaxes de simulación
As seguintes seccións describen varios tipos de servizos de mensaxes de simulación.
3.1.1 Flash*Conxelar
A simulación entrará no estado Flash*Freeze cando se envíe a solicitude de servizo adecuada ao COMM_BLK desde o FIC (no caso dos dispositivos IGLOO2) ou o Cortex-M3 (nos dispositivos SmartFusion2). Unha vez que o controlador do sistema detecte o servizo, a simulación deterase e mostrarase unha mensaxe que indica que o sistema entrou en Flash*Freeze (xunto coa opción seleccionada). Ao retomar a simulación, o RXFIFO do COMM_BLK cubrirase coa resposta do servizo consistente no comando e estado do servizo. Nótese que non hai soporte de simulación para a saída de Flash*Freeze.
3.1.2 A cero
A puesta a cero é actualmente o único servizo de alta prioridade dentro dos servizos do sistema procesados polo COMM_BLK. A simulación entrará no estado de cero en canto o COMM_BLK detecte a solicitude de servizo correcta. A execución doutros servizos será detida e descartada polo controlador do sistema, e no seu lugar executarase o servizo de cero. Unha vez detectada a solicitude de servizo de cero, a simulación detense e móstrase unha mensaxe que indica que o sistema entrou en cero. Os reinicios manuais da simulación despois da puesta a cero non son válidos.
3.2 Servizos de punteiro de datos
As seguintes seccións describen varios tipos de servizos de punteiro de datos.
3.2.1 Número de serie
O servizo de números de serie escribirá un número de serie de 128 bits nunha localización de enderezos proporcionada como parte da solicitude de servizo. Este parámetro de 128 bits pódese configurar mediante un soporte de simulación de servizo do sistema file (ver páxina 22). Se o parámetro do número de serie de 128 bits non está definido dentro do file, empregarase un número de serie predeterminado 0. Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a localización de destino e o número de serie. O controlador do sistema realiza unha escritura AHB no enderezo co número de serie. Ao completar o servizo, o RXFIFO de COMM_BLK cargarase coa resposta do servizo.
3.2.2 Código de usuario
O servizo de código de usuario escribe un parámetro de código de usuario de 32 bits nunha localización de enderezo proporcionada como parte da solicitude de servizo. Este parámetro de 32 bits pódese configurar mediante o soporte de simulación de servizo do sistema file (ver páxina 22). Se o parámetro de 32 bits non está definido dentro do file, úsase un valor predeterminado de 0. Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a localización de destino e o código de usuario. O controlador do sistema realiza unha escritura AHB no enderezo co parámetro de 32 bits. Ao completar o servizo, o RXFIFO do COMM_BLK cárgase coa resposta do servizo, que inclúe o comando do servizo e o enderezo de destino.
3.3 Servizos de descritores de datos
As seguintes seccións describen varios tipos de servizos de descritores de datos.
3.3.1 AES
O soporte de simulación para este servizo só se ocupa de mover os datos orixinais da fonte ao destino, sen realizar ningún cifrado/descifrado dos datos. Os datos que deben ser cifrados/descifrados e a estrutura de datos deben escribirse antes de enviar a solicitude de servizo. Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a execución do servizo AES. O servizo AES le tanto a estrutura de datos como os datos que se van cifrar/descifrar. Os datos orixinais cópiase e escríbense no enderezo proporcionado dentro da estrutura de datos. Unha vez que se completa o servizo, o comando, o estado e o enderezo da estrutura de datos envíanse ao RXFIFO.
Nota: Este servizo só é para datos de 128 e 256 bits, e os datos de 128 e 256 bits teñen lonxitudes de estrutura de datos diferentes.
3.3.2 SHA 256
O soporte de simulación para este servizo só se ocupa de mover os datos, sen realizar ningún hash sobre os datos. A función SHA 256 está deseñada para xerar unha clave hash de 256 bits baseada nos datos de entrada. Os datos que deben ser clasificados e a estrutura de datos deben escribirse nos seus respectivos enderezos antes de enviar a solicitude de servizo ao COMM_BLK. A lonxitude en bits e o punteiro definida dentro da estrutura de datos SHA 256 debe corresponder correctamente á lonxitude e á dirección dos datos que se van a procesar. Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a execución do servizo SHA 256. En lugar de executar a función real, escribirase unha clave hash predeterminada no punteiro de destino desde a estrutura de datos. A chave hash predeterminada é hexadecimal "ABCD1234". Para configurar unha tecla personalizada, vaia á sección Configuración de parámetros (consulte a páxina 23). Ao completar o servizo, o RXFIFO cárgase coa resposta do servizo que consiste no comando do servizo, o estado e o punteiro da estrutura de datos SHA 256.
3.3.3 HMAC
O soporte de simulación para este servizo só se ocupa do movemento de datos, sen realizar ningún hash sobre os datos. Os datos que deben ser clasificados e a estrutura de datos deben escribirse nos seus respectivos enderezos antes de enviar a solicitude de servizo ao COMM_BLK. O servizo HMAC require unha clave de 32 bytes ademais da lonxitude en bytes, o punteiro de orixe e o de destino. Unha vez que o servizo comezou a executarse, móstrase unha mensaxe que indica a execución do servizo HMAC. Léase a clave e cópiase a clave de 256 bits da estrutura de datos ao punteiro de destino. Ao completar o servizo, o RXFIFO cárgase coa resposta do servizo que consiste no comando do servizo, o estado e o punteiro da estrutura de datos HMAC.
3.3.4 Xerar DRBG
Este servizo realiza a xeración de bits aleatorios. Hai que ter en conta que o modelo de simulación non segue exactamente a mesma metodoloxía de xeración de números aleatorios empregada polo silicio. A estrutura de datos debe escribirse correctamente na súa localización prevista antes de enviar a solicitude de servizo ao COMM_BLK. A estrutura de datos, o punteiro de destino, a lonxitude e outros datos relevantes son lidos polo controlador do sistema. O servizo de xeración DRBG xera un conxunto pseudoaleatorio de datos da lonxitude solicitada (0-128). O controlador do sistema escribe os datos aleatorios no punteiro de destino. Na simulación móstrase unha mensaxe que indica a execución do servizo de xeración de DRBG. Unha vez que se completa o servizo, o comando, o estado e o enderezo da estrutura de datos envíanse ao RXFIFO. Se a lonxitude de datos solicitada non está dentro do intervalo de 0-128, enviarase un código de erro "4" (Xeración máxima) ao RXFIFO. Se a lonxitude de datos adicionais non está dentro do intervalo Solicitude demasiado grande de 0-128, enviarase un código de erro "5" (Lonxitude máxima de datos adicionais excedidos) no RXFIFO. Se tanto a lonxitude de datos solicitada para xerar como a lonxitude de datos adicional non están dentro do seu intervalo definido (0-128), un código de erro de "1" (Erro catastrófico) é enviado ao RXFIFO.
3.3.5 Restablecemento DRBG
A función de reinicio real realízase eliminando as instancias de DRBG e restablecendo DRBG. Unha vez detectada a solicitude de servizo, a simulación mostra unha mensaxe de restablecemento do servizo DRBG completado. A resposta, que inclúe o servizo e o estado, envíase ao RXFIFO.
3.3.6 Autotest DRBG
O soporte de simulación para a autoproba DRBG non executa realmente a función de autoproba. Unha vez detectada a solicitude de servizo, a simulación mostrará unha mensaxe de execución do servizo de autoproba DRBG. A resposta, que inclúe o servizo e o estado, introducirase no RXFIFO.
3.3.7 Instancia de DRBG
O soporte de simulación para o servizo de instanciación DRBG non realiza realmente o servizo de instanciación. A estrutura de datos debe escribirse correctamente na súa localización prevista antes de enviar a solicitude de servizo ao COMM_BLK. Unha vez detectada a solicitude de servizo, lerase a estrutura e cadea de personalización definidas dentro do espazo de enderezos MSS. A simulación mostrará unha mensaxe que indica que o servizo DRBG Instantiate comezou a executarse. Unha vez que se complete o servizo, a resposta, que inclúe o comando do servizo, o estado e o punteiro á estrutura de datos, enviarase ao RXFIFO. Se a lonxitude dos datos (PERSONALIZATIONLENGTH) non está dentro do intervalo de 0-128, un código de erro de "1" (Erro catastrófico) enviarase ao RXFIFO para o estado.
3.3.8 DRBG Desinstanciar
A compatibilidade de simulación para o servizo de instancias DRBG non realiza realmente o servizo de eliminación de instancias DRBG previamente, como o fai o silicio. A solicitude de servizo debe incluír tanto o comando como o identificador DRBG. Unha vez detectada a solicitude de servizo, almacenarase o identificador DRBG. A simulación mostrará unha mensaxe que indica que o servizo de desinstanciación DRBG foi inicializado. Unha vez que se complete o servizo, a resposta, que inclúe o comando do servizo, o estado e o identificador DRBG, enviarase ao RXFIFO.
3.3.9 Resemente DRBG
Debido á natureza simulativa do bloque de servizos do sistema, o servizo de resemente DRBG en simulación non se executa automaticamente despois de cada 65535 DRBG xerar servizos. A estrutura de datos debe escribirse correctamente na súa localización prevista antes de enviar a solicitude de servizo ao COMM_BLK. Unha vez detectada a solicitude de servizo, lerase a estrutura e o parámetro de entrada adicional no espazo de enderezos MSS. Amosarase unha mensaxe que indica que o servizo de reseed DRBG comezou a executarse. A estrutura de datos debe escribirse correctamente na súa localización prevista antes de enviar a solicitude de servizo ao COMM_BLK. Unha vez que se complete o servizo, a resposta, que inclúe o comando do servizo, o estado e o punteiro á estrutura de datos, enviarase ao RXFIFO.
3.3.10 KeyTree
A función real non se executa na simulación para o servizo KeyTree. A estrutura de datos do servizo KeyTree consta dunha clave de 32 bytes, datos de tipo óptico de 7 bits (MSB ignorado) e unha ruta de 16 bytes. Os datos dentro da estrutura de datos deben escribirse nos seus respectivos enderezos, antes de enviar a solicitude de servizo ao COMM_BLK. Unha vez que o servizo comezou a executarse, mostrarase unha mensaxe que indica a execución do servizo KeyTree. Lerase o contido da estrutura de datos, almacenarase a clave de 32 bytes e sobrescríbese a clave orixinal situada dentro da estrutura de datos. Despois desta escritura de AHB, o valor da clave dentro da estrutura de datos non debería cambiar, pero produciranse transaccións de AHB para a escritura. Ao completar o servizo, o RXFIFO cárgase coa resposta do servizo, que consiste no comando do servizo, o estado e o punteiro da estrutura de datos KeyTree.
3.3.11 Resposta ao desafío
A función real, como a autenticación do dispositivo, non se executa na simulación para o servizo de resposta ao desafío. A estrutura de datos deste servizo require un punteiro ao búfer para recibir un resultado de 32 bytes, un tipo de opción de 7 bits e unha ruta de 128 bits. Os datos da estrutura de datos deben escribirse nos seus respectivos enderezos antes de enviar a solicitude de servizo ao COMM_BLK. Unha vez que se inicie a execución do servizo, mostrarase unha mensaxe que indica a execución do servizo de resposta ao desafío. Unha resposta xenérica de 256 bits escribirase no punteiro proporcionado dentro da estrutura de datos. A clave predeterminada está definida como hexadecimal "ABCD1234". Para obter unha clave personalizada, verifique Configuración de parámetros (consulte a páxina 23). Ao completar o servizo, o RXFIFO cargarase coa resposta do servizo, que consiste no comando do servizo, o estado e o punteiro da estrutura de datos de resposta ao desafío.
3.4 Outros Servizos
As seguintes seccións describen outros servizos do sistema.
3.4.1 Comprobación do resumo
A función real de recalcular e comparar resumos dos compoñentes seleccionados non se executa para o servizo de verificación de resumos en simulación. Esta solicitude de servizo consta de comandos de servizo e opcións de servizo (LSB de 5 bits). Unha vez que se inicie a execución do servizo, mostrarase unha mensaxe que detalla a execución do servizo de comprobación de resumo, xunto coas opcións seleccionadas na solicitude. Ao completar o servizo, o RXFIFO cargarase coa resposta do servizo, que consiste no comando de servizo e as marcas de aprobación/falla de comprobación de resumo.
3.4.2 Resposta ao comando non recoñecida
Cando se envía unha solicitude de servizo non recoñecido ao COMM_BLK, o COMM_BLK responderá automaticamente cunha mensaxe de comando non recoñecido enviada ao RXFIFO. A mensaxe consiste no comando enviado ao COMM_BLK e o estado do comando non recoñecido (252D). Tamén se mostrará unha mensaxe que indica que se detectou unha solicitude de servizo non recoñecida. O COMM_BLK volverá ao estado inactivo, á espera de aceptar a seguinte solicitude de servizo.
3.4.3 Servizos non compatibles
Os servizos non compatibles definidos como COMM_BLK activarán unha mensaxe de simulación que indica que a solicitude de servizo non é compatible. O COMM_BLK volverá ao estado inactivo, á espera de aceptar a seguinte solicitude de servizo. Non se establecerá PINTERRUPT, que indica que se completou un servizo. A lista actual de servizos non compatibles inclúe: IAP, ISP, certificado de dispositivo e o servizo DESIGNVER.
3.5 Soporte de simulación de servizos do sistema File
Para apoiar a simulación de servizos do sistema, un texto file chamado "status.txt" pódese usar para pasar instrucións sobre o comportamento necesario do modelo de simulación ao modelo de simulación. Isto file debe estar situado no mesmo cartafol desde o que se executa a simulación. O file pódese utilizar, entre outras cousas, para forzar certas respostas de erro para os servizos do sistema soportados ou mesmo para establecer algúns parámetros necesarios para a simulación (por exemploample, número de serie). O número máximo de liñas admitidas no "status.txt" file é 256. As instrucións que aparecen despois da liña número 256 non se utilizarán na simulación.
3.5.1 Forzar respostas de erro
O usuario pode forzar unha determinada resposta de erro para un servizo particular durante a proba pasando a información ao modelo de simulación mediante o "status.txt" file, que debe colocarse no cartafol desde que se executa a simulación. Para forzar respostas de erro a un determinado servizo, o comando e a resposta requirida deben escribirse na mesma liña no seguinte formato:ample, a Command> ; instruír ao modelo de simulación para xerar unha resposta de erro de acceso á memoria MSS ao servizo de número de serie, o comando é o seguinte.
Servizo: Número de serie: 01
Mensaxe de erro solicitada: Erro de acceso á memoria MSS: 7F
Debería introducir a liña 017F en "status.txt" file.
3.5.2 Configuración de parámetros
O "status.txt" file tamén se pode usar para establecer algúns parámetros necesarios na simulación. Como example, para configurar o parámetro de 32 bits para o código de usuario, o formato da liña debe estar nesta orde: <CÓDIGO DE USUARIO de 32 bits>; onde ambos os valores se introducen en hexadecimal. Para configurar o parámetro de 128 bits para o número de serie, o formato da liña debe estar nesta orde: <Número de serie de 128 bits [127:0]> ; onde ambos os valores se introducen en hexadecimal. Para establecer o parámetro de 256 bits para a chave SHA 256; o formato da liña debe estar nesta orde: <Chave de 256 bits [255:0]>; onde ambos os valores se introducen en hexadecimal. Para configurar o parámetro de 256 bits para a clave de resposta ao desafío, o formato da liña debe estar nesta orde: <Chave de 256 bits [255:0]>;
onde ambos os valores se introducen en hexadecimal.
3.5.3 Prioridade do dispositivo
Os servizos de sistemas e COMM_BLK utilizan un sistema de alta prioridade. Actualmente, o único servizo prioritario é a cero. Para a realización dun servizo de alta prioridade, mentres se está a executar outro servizo, queda paralizado o servizo actual e executarase no seu lugar o de maior prioridade. O COMM_BLK descartará o servizo actual para realizar o servizo de maior prioridade. Se se envían varios servizos non prioritarios antes da finalización dun servizo actual, estes servizos quedarán en cola dentro do TXFIFO. Unha vez rematado o servizo actual, executarase o seguinte servizo no TXFIFO.
Microsemi non fai ningunha garantía, representación ou garantía sobre a información contida aquí ou a idoneidade dos seus produtos e servizos para ningún propósito particular, nin Microsemi asume ningunha responsabilidade derivada da aplicación ou uso de calquera produto ou circuíto. Os produtos que se venden a continuación e calquera outro produto vendido por Microsemi foron sometidos a probas limitadas e non deben usarse xunto con equipos ou aplicacións de misión crítica. Crese que todas as especificacións de rendemento son fiables, pero non se verifican, e o comprador debe realizar e completar todas as probas de rendemento e outras probas dos produtos, só e xunto con calquera produto final ou instalado en calquera. O comprador non dependerá de ningún dato e especificacións de rendemento ou parámetros proporcionados por Microsemi. É responsabilidade do comprador determinar de forma independente a idoneidade de calquera produto e probalo e verificalo. A información proporcionada por Microsemi a continuación ofrécese "tal e como está, onde está" e con todos os fallos, e todo o risco asociado a dita información correspóndelle enteiramente ao comprador. Microsemi non concede, de forma explícita ou implícita, a ningunha parte ningún dereito de patente, licenza ou calquera outro dereito de PI, xa sexa con respecto a dita información en si ou a calquera cousa descrita por dita información. A información proporcionada neste documento é propiedade de Microsemi, e Microsemi resérvase o dereito de facer calquera cambio na información deste documento ou en calquera produto e servizo en calquera momento sen previo aviso.
Microsemi, unha subsidiaria de propiedade total de Microchip Technology Inc. (Nasdaq: MCHP), ofrece unha carteira completa de solucións de sistemas e semicondutores para a industria aeroespacial e de defensa, comunicacións, centros de datos e mercados industriais. Os produtos inclúen circuítos integrados de sinais mixtos analóxicos de alto rendemento e endurecidos pola radiación, FPGA, SoC e ASIC; produtos de xestión de enerxía; dispositivos de temporización e sincronización e solucións horarias precisas, establecendo o estándar mundial para o tempo; dispositivos de procesamento de voz; solucións de RF; compoñentes discretos; solucións de almacenamento e comunicación empresarial; tecnoloxías de seguridade e escalable anti-tamper produtos; solucións Ethernet; Circuitos integrados de alimentación por Ethernet e intervalos medios; así como capacidades e servizos de deseño personalizado. Microsemi ten a súa sede en Aliso Viejo, California, e ten aproximadamente 4,800 empregados en todo o mundo. Máis información en www.microsemi.com.
Sede Microsemi
One Enterprise, Aliso Viejo,
CA 92656 EUA
Dentro dos EUA: +1 800-713-4113
Fóra dos EUA: +1 949-380-6100
Vendas: +1 949-380-6136
Fax: +1 949-215-4996
Correo electrónico: vendas.support@microsemi.com
www.microsemi.com
© 2018 Microsemi. Todos os dereitos reservados. Microsemi e o logotipo de Microsemi
son marcas comerciais de Microsemi Corporation. Todas as outras marcas comerciais e servizos
as marcas son propiedade dos seus respectivos propietarios.
Documentos/Recursos
![]() |
Simulación de servizos do sistema Microsemi UG0837 IGLOO2 e SmartFusion2 FPGA [pdfGuía do usuario UG0837, UG0837 Simulación de servizos do sistema FPGA IGLOO2 e SmartFusion2, Simulación dos servizos do sistema FPGA IGLOO2 e SmartFusion2, Simulación dos servizos do sistema SmartFusion2 FPGA, Simulación dos servizos do sistema FPGA, simulación dos servizos |