UG0837
Guía del usuario
IGLOO2 y FPGA SmartFusion2
Simulación de servicios del sistema
Junio de 2018
Historial de revisiones
El historial de revisiones describe los cambios que se implementaron en el documento. Los cambios se enumeran por revisión, comenzando con la publicación más reciente.
1.1 Revisión 1.0
La revisión 1.0 se publicó en junio de 2018. Fue la primera publicación de este documento.
Simulación de servicios del sistema FPGA IGLOO2 y SmartFusion2
El bloque de servicios del sistema de la familia SmartFusion®2 FPGA presenta una colección de servicios responsables de diversas tareas. Estos incluyen servicios de mensajes de simulación, servicios de puntero de datos y servicios de descriptores de datos. Se puede acceder a los servicios del sistema a través de Cortex-M3 en SmartFusion2 y desde la estructura FPGA a través del controlador de interfaz de estructura (FIC) tanto para SmartFusion2 como para IGLOO®2. Estos métodos de acceso se envían al controlador del sistema a través de COMM_BLK. COMM_BLK tiene una interfaz de bus periférico avanzado (APB) y actúa como un conducto de paso de mensajes para intercambiar datos con el controlador del sistema. Las solicitudes de servicio del sistema se envían al controlador del sistema y las respuestas de servicio del sistema se envían a CoreSysServrvice a través de COMM BLK. La ubicación de la dirección para COMM_BLK está disponible dentro del subsistema del microcontrolador (MSS)/subsistema de memoria de alto rendimiento (HPMS). Para obtener más información, consulte UG0450: SmartFusion2 SoC y controlador del sistema FPGA IGLOO2.
Guía del usuario
La siguiente ilustración muestra el flujo de datos de los servicios del sistema.
Figura 1 • Diagrama de flujo de datos del servicio del sistemaPara la simulación de servicios del sistema IGLOO2 y SmartFusion2, debe enviar solicitudes de servicio del sistema y verificar las respuestas del servicio del sistema para verificar que la simulación sea correcta. Este paso es necesario para acceder al controlador del sistema, que proporciona los servicios del sistema. La forma de escribir y leer desde el controlador del sistema es diferente para los dispositivos IGLOO2 y SmartFusion2. Para SmartFusion2, Coretex-M3 está disponible y puede escribir y leer desde el controlador del sistema mediante comandos del modelo funcional de bus (BFM). Para IGLOO2, Cortex-M3 no está disponible y no se puede acceder al controlador del sistema mediante comandos BFM.
2.1 Tipos de servicios del sistema disponibles
Hay tres tipos diferentes de servicios del sistema disponibles y cada tipo de servicio tiene diferentes subtipos.
Servicios de mensajes de simulación.
Servicios de puntero de datos
Servicios de descriptores de datos
El capítulo Apéndice: Tipos de servicios del sistema (consulte la página 19) de esta guía describe los diferentes tipos de servicios del sistema. Para obtener más información sobre los servicios del sistema, consulte UG0450: Guía del usuario del controlador del sistema SmartFusion2 SoC y IGLOO2 FPGA.
2.2 Simulación del servicio del sistema IGLOO2
Los servicios del sistema implican escribir y leer desde el controlador del sistema. Para escribir y leer desde el controlador del sistema con fines de simulación, debe realizar los pasos siguientes.
- Cree una instancia del núcleo IP suave CoreSysServices, disponible en el catálogo de SmartDesign.
- Escriba el código HDL para una máquina de estados finitos (FSM).
El HDL FSM interactúa con CoreSysServices Core, que sirve como tejido maestro del bus AHBLite. El núcleo CoreSysServices inicia la solicitud de servicio del sistema al COMM BLK y recibe respuestas de servicio del sistema del COMM BLK a través del controlador de interfaz de estructura FIC_0/1, como se muestra en la siguiente ilustración.
Figura 2 • Topología de simulación de servicios del sistema IGLOO22.3 Simulación del servicio del sistema SmartFusion2
Para simular los servicios del sistema en dispositivos SmartFusion2, debe escribir y leer desde el controlador del sistema. Hay dos opciones disponibles para acceder al controlador del sistema con fines de simulación.
Opción 1: escribir el código HDL para que un FSM interactúe con el núcleo IP suave CoreSysService, que sirve como maestro de tejido AHBLite e inicia la solicitud de servicio del sistema al COMM BLK y recibe respuestas de servicio del sistema del COMM BLK a través del tejido FIC_0/1. interfaz como se muestra en la siguiente ilustración.
Figura 3 • Topología de simulación de servicios del sistema SmartFusion2
Opción 2 — Como Cortex-M3 está disponible para dispositivos SmartFusion2, puede usar comandos BFM para escribir y leer directamente desde el espacio de memoria del controlador del sistema.
El uso de comandos BFM (opción 2) ahorra la necesidad de escribir códigos HDL para el FSM. En esta guía del usuario, la opción 2 se utiliza para mostrar la simulación de servicios del sistema en SmartFusion2. Con esta opción, se accede al espacio de memoria del controlador del sistema para conocer el mapa de memoria del COMM BLK y el bloque del controlador de interrupción de interfaz de tejido (FIIC) cuando escribe sus comandos BFM.
2.4 Simulación ExampLos
La guía del usuario cubre las siguientes simulaciones.
- Simulación del servicio de número de serie IGLOO2 (consulte la página 5)
- Simulación del servicio de número de serie SmartFusion2 (consulte la página 8)
- Simulación del servicio de puesta a cero IGLOO2 (ver página 13)
- Simulación del servicio de puesta a cero SmartFusion2 (consulte la página 16)
Se pueden aplicar métodos de simulación similares a otros servicios del sistema. Para obtener una lista completa de los diferentes servicios del sistema disponibles, vaya al Apéndice: Tipos de servicios del sistema (consulte la página 19).
2.5 Simulación del servicio de número de serie IGLOO2
Para prepararse para la simulación del servicio de número de serie IGLOO2, realice los pasos siguientes.
- Invoque el constructor del sistema para crear su bloque HPMS.
- Marque la casilla de verificación Servicios del sistema HPMS en la página Características del dispositivo. Esto le indicará al constructor del sistema que exponga la interfaz de bus (BIF) HPMS_FIC_0 SYS_SERVICES_MASTER.
- Deje todas las demás casillas sin marcar.
- Acepte el valor predeterminado en todas las demás páginas y haga clic en Finalizar para completar el bloque de creación del sistema. En el editor HDL de Libero® SoC, escriba el código HDL para el FSM (File > Nuevo > HDL) . Incluya los siguientes tres estados en su FSM.
Estado INIT (estado inicial)
SERV_PHASE (estado de solicitud de servicio)
RSP_PHASE (estado de respuesta del servicio).
La siguiente figura muestra los tres estados de FSM.
Figura 4 • FSM de tres Estados En su código HDL para el FSM, use el código de comando correcto (“01” Hex para servicio de número de serie) para ingresar al estado de solicitud de servicio desde el estado INIT.
- Guarde su HDL file. El FSM aparece como un componente en la Jerarquía de Diseño.
- Abra Diseño Inteligente. Arrastre y suelte su bloque de creación de sistema de nivel superior y su bloque FSM en el lienzo de SmartDesign. Desde el catálogo, arrastre y suelte el núcleo IP suave CoreSysService en el lienzo de SmartDesign.
- Haga clic derecho en el núcleo IP suave CoreSysService para abrir el configurador. Marque la casilla de verificación Servicio de número de serie (en Servicios de información de diseño y dispositivo).
grupo) para habilitar el servicio de número de serie. - Deje todas las demás casillas sin marcar. Haga clic en Aceptar para salir del configurador.
Figura 5 • Configurador central de IP suave CoreSysServices
- Conecte el HPMS_FIC_0 SYS_SERVICES_MASTER BIF del bloque constructor del sistema al AHBL_MASTER BIF del bloque CoreSysService.
- Conecte la salida de su bloque HDL FSM a la entrada del núcleo IP suave CoreSysService. Realice todas las demás conexiones en el lienzo de SmartDesign como se muestra en la siguiente figura.
Figura 6 • SmartDesign Canvas con bloque HDL, CoreSysServices Soft IP y bloques HPMS - En el lienzo de SmartDesign, haga clic derecho en >Generar componente para generar el diseño de nivel superior.
- En la jerarquía de diseño view, haga clic derecho en el diseño de nivel superior y seleccione crear Testbench > HDL.
- Utilice un editor de texto para crear un texto. file llamado “estado.txt”.
- Incluya el comando para el servicio del sistema y el número de serie de 128 bits. Para obtener más información, consulte la Tabla 1 (Valores de respuesta/comando de servicios del sistema) en la Manual de CoreSysServices v3.1 para que los códigos de comando (Hex) se utilicen para diferentes servicios del sistema. Para el servicio de número de serie, el código de comando es “01” hexadecimal.
El formato del status.txt file para el servicio de número de serie es el siguiente.
<CMD de 2 dígitos hexadecimales><Número de serie de 32 dígitos hexadecimales>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Guarde el estado.txt file en la carpeta Simulación de su proyecto. El diseño ahora está listo para la simulación.
Una vez que el servicio ha comenzado a ejecutarse, se muestra un mensaje que indica la ubicación de destino y el número de serie en la ventana de transcripción de ModelSim, como se muestra en la siguiente figura.
Figura 7 • Ventana Transcripción de simulación de ModelSimEl controlador del sistema realiza una escritura AHB en la dirección con el número de serie. Al finalizar el servicio, el RXFIFO de COMM_BLK se cargará con la respuesta del servicio.
Nota: Para obtener una lista completa de los códigos de comando que se utilizarán para diferentes servicios del sistema, consulte la Tabla 1 (Valores de comando/respuesta de servicios del sistema) en el Manual CoreSysServices v3.1 o UG0450: Guía del usuario del controlador del sistema SmartFusion2 SoC y IGLOO2 FPGA.
2.6 Simulación del servicio de número de serie SmartFusion2
En esta guía del usuario, los comandos BFM (opción 2) se utilizan para acceder al controlador del sistema para realizar el servicio del sistema. Los comandos BFM se utilizan ya que el procesador Cortex-M3 está disponible en el dispositivo para la simulación BFM. Los comandos BFM le permiten escribir y leer directamente desde COMM BLK una vez que conoce la asignación de memoria de COMM_BLK.
Para preparar su diseño para la simulación del servicio de número de serie SmartFusion2, realice los siguientes pasos.
- Arrastre y suelte el MSS desde el catálogo al lienzo de diseño de su proyecto.
- Deshabilite todos los periféricos de MSS excepto MSS_CCC, Restablecer controlador, Gestión de interrupciones y FIC_0, FIC_1 y FIC_2.
- Configure la gestión de interrupciones para utilizar MSS para interrumpir la estructura.
- Prepare el serialnum.bfm file en un editor de texto o en el editor HDL de Libero. Guarde el número de serie.bfm file en la carpeta Simulación del proyecto. El serialnum.bfm debe incluir los siguientes detalles.
• Asignación de memoria al COMM BLK (CMBLK)
• Mapeo de memoria para interrumpir la gestión periférica (FIIC)
• Comando para solicitud de servicio del sistema de números de serie (“01” Hex)
• Dirección para la ubicación del número de serie
Un examparchivo del serialnum.bfm file es como sigue
mapa de memoria FIIC 0x40006000; #Mapeo de memoria para la gestión de interrupciones
mapa de memoria CMBLK 0x40016000; #Asignación de memoria a COMM BLK
mapa de memoria DESCRIPTOR_ADDR 0x20000000; #Ubicación de la dirección para el número de serie
#Código de comando en hexadecimal
CMD constante 0x1 # Código de comando para el servicio de número de serie
Registros de configuración #FIIC
constante FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK Registros de configuración
CONTROL constante 0x00
ESTADO constante 0x04
constante INT_ENABLE 0x08
DATOS constante8 0x10
DATOS constante32 0x14
constante FRAME_START8 0x18
constante FRAME_START32 0x1C
número de serie del procedimiento;
entero x;
escriba w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configurar
#FICC_INTERRUPT_ENABLE0 # Regístrese para habilitar COMBLK_INTR #
#interrupt del bloque COMM_BLK al tejido
#Fase de Solicitud
escriba w CMBLK CONTROL 0x10 # Configure COMM BLK Control #Registrarse en
habilitar transferencias en la interfaz COMM BLK
escribir w CMBLK INT_ENABLE 0x1 # Configurar COMM BLK Interrupción Habilitar
#Regístrese para habilitar la interrupción para TXTOKAY (bit correspondiente en el
#EstadoRegistro)
waitint 19 # espera la interrupción COMM BLK, aquí #BFM espera
#hasta que se confirme COMBLK_INTR
readstore w CMBLK STATUS x # Leer estado de COMM BLK Registrarse para #TXTOKAY
# Interrumpir
establecer xx y 0x1
si x
escriba w CMBLK FRAME_START8 CMD # Configurar COMM BLK FRAME_START8
#Regístrese para solicitar el servicio de Número de Serie
fin si
fin si
waitint 19 # espere la interrupción COMM BLK, aquí
#BFM espera hasta que se afirma COMBLK_INTR
readstore w CMBLK STATUS x # Leer estado COMM BLK Registrar para
#TXTOKAY Interrumpir
establecer xx y 0x1
establecer xx y 0x1
si x
escriba w CMBLK CONTROL 0x14 #Configurar control COMM BLK
#Regístrese para habilitar transferencias en la interfaz COMM BLK
escriba w CMBLK DATA32 DESCRIPTOR_ADDR
escribir w CMBLK INT_ENABLE 0x80
escribir w CMBLK CONTROL 0x10
fin si
espera 20
#Fase de respuesta
esperando 19
readstore w ESTADO CMBLK x
establecer xx y 0x80
si x
readcheck w CMBLK FRAME_START8 CMD
escribir w CMBLK INT_ENABLE 0x2
fin si
esperando 19
readstore w ESTADO CMBLK x
establecer xx y 0x2
si x
verificación de lectura con CMBLK DATA8 0x0
escribir w CMBLK CONTROL 0x18
fin si
esperando 19
verificación de lectura con FIIC 0x8 0x20000000
readstore w ESTADO CMBLK x
establecer xx y 0x2
si x
readcheck w CMBLK DATA32 DESCRIPTOR_ADDR
fin si
verificación de lectura w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck para comprobar S/N
verificación de lectura w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck para comprobar S/N
verificación de lectura w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck para comprobar S/N
verificación de lectura w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck para comprobar S/N
devolver - Crea el estado. TXT file en el editor HDL de Libero o en cualquier editor de texto. Incluya el comando de servicio del sistema de número de serie (“01” en hexadecimal) y el número de serie en el estado. TXT file. Consulte el manual de CoreSysServices v3.1 para utilizar el código de comando correcto.
- La sintaxis de este file para el servicio de número de serie es <2 dígitos hexadecimales CMD>< Número de serie de 32 dígitos hexadecimales>. Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- Guarde el estado .txt file en la carpeta Simulación del proyecto.
- Edite el usuario .bfm (ubicado dentro de la carpeta Simulación) para incluir el número de serie. bfm file y llame al procedimiento del número de serie como se muestra en el siguiente fragmento de código.
incluir “serialnum.bfm” #incluir serialnum.bfm
procedimiento usuario_principal;
imprimir “INFO: Comienza la simulación”;
imprimir “INFO:Código de comando de servicio en decimal:%0d”, CMD;
llamar al número de serie; #llamar al procedimiento serialnum
imprimir “INFO: Finaliza la simulación”;
devolver - En la jerarquía de diseño view, genere el banco de pruebas (haga clic con el botón derecho, Diseño de nivel superior > Crear banco de pruebas > HDL) y estará listo para ejecutar la simulación del servicio de número de serie.
Una vez que el servicio ha comenzado a ejecutarse, se muestra un mensaje indicando la ubicación de destino y el número de serie. El controlador del sistema realiza una escritura AHB en la dirección con el número de serie. Al finalizar el servicio, el RXFIFO de COMM_BLK se cargará con la respuesta del servicio. La ventana de transcripción de ModelSim muestra la dirección y el número de serie recibido como se muestra en la siguiente figura.
Figura 8 • Simulación del servicio de número de serie de SmartFusion2 en la ventana Transcripción de ModelSim
2.7 Simulación del servicio de puesta a cero IGLOO2
Para prepararse para la simulación del servicio de puesta a cero IGLOO2, realice los pasos siguientes.
- Invoque el constructor del sistema para crear el bloque HPMS. Marque la casilla de verificación Servicios del sistema HPMS en Características del dispositivo SYS_SERVICES_MASTER BIF. Deje todas las demás casillas sin marcar. Acepte el valor predeterminado en todas las demás páginas y haga clic en la página. Esto indica al constructor del sistema que exponga HPMS_FIC_0 Finish para completar la configuración del bloque del constructor del sistema.
- En el editor HDL de Libero SoC, escriba el código HDL para el FSM. En su código HDL para FSM, incluya los siguientes tres estados.
Estado INIT (estado inicial)
SERV_PHASE (estado de solicitud de servicio)
RSP_PHASE (estado de respuesta del servicio)
La siguiente figura muestra los tres estados de FSM.
Figura 9 • FSM de tres Estados - En su código HDL, use el código de comando “F0″(Hex) para ingresar al estado de solicitud de servicio desde el estado INIT.
- Guarde su HDL file.
- Abra SmartDesign, arrastre y suelte su bloque de creación de sistema de nivel superior y su bloque HDL FSM en el lienzo de SmartDesign. Desde el catálogo, arrastre y suelte el núcleo IP suave CoreSysService en el lienzo de SmartDesign.
- Haga clic con el botón derecho en el núcleo de IP suave de CoreSysServices para abrir el configurador y marque la casilla de verificación Servicio de puesta a cero en el grupo Servicios de seguridad de datos. Deje todas las demás casillas sin marcar. Haga clic para Aceptar y salir.
Figura 10 • Configurador de CoreSysServices
- Conecte el HPMS_FIC_0 SYS_SERVICES_MASTER BIF del bloque constructor del sistema al AHBL_MASTER BIF del bloque CoreSysService.
- Conecte la salida de su bloque HDL FSM a la entrada del núcleo IP suave CoreSysService. Realice todas las demás conexiones en el lienzo de SmartDesign.
Figura 11 • SmartDesign Canvas con bloque HDL, CoreSysServices Soft IP y bloques HPMS
9. En el lienzo de SmartDesign, genere el diseño de nivel superior (haga clic derecho > Generar componente).
10. En la jerarquía de diseño view, haga clic derecho en el diseño de nivel superior y seleccione crear Testbench > HDL. Ahora está listo para ejecutar la simulación.
Una vez que el servicio ha comenzado la ejecución, se muestra un mensaje que indica que la puesta a cero se completó en el momento x, como se muestra en la siguiente figura.
Figura 12 • Ventana de transcripción de simulación del servicio del sistema de puesta a cero IGLOO2
El controlador del sistema realiza una escritura AHB en la dirección con el número de serie. Al finalizar el servicio, el RXFIFO de COMM_BLK se cargará con la respuesta del servicio. Cabe señalar que el modelo de simulación simula la puesta a cero deteniendo la simulación en lugar de poner a cero el diseño en sí.
Nota: Para obtener una lista completa de los códigos de comando que se utilizarán para diferentes servicios del sistema, consulte la Tabla 1 (Valores de comando/respuesta de servicios del sistema) en la Manual de CoreSysServices v3.1:. o UG0450: Guía del usuario del controlador del sistema SmartFusion2 SoC y IGLOO2 FPGA
2.8 Simulación del servicio de puesta a cero SmartFusion2
En esta guía, los comandos BFM (opción 2) se utilizan para acceder al controlador del sistema para realizar el servicio del sistema.
Los comandos BFM se utilizan ya que el procesador Cortex-M3 está disponible en el dispositivo para la simulación BFM. Los comandos BFM le permiten escribir y leer directamente desde COMM BLK una vez que conozca la asignación de memoria de COMM_BLK. Para preparar su diseño para la simulación del servicio de puesta a cero SmartFusion2, realice los siguientes pasos.
- Arrastre y suelte el MSS desde el catálogo al lienzo de diseño de su proyecto.
- Deshabilite todos los periféricos de MSS excepto MSS_CCC, Restablecer controlador, Gestión de interrupciones y FIC_0, FIC_1 y FIC_2.
- Configure la gestión de interrupciones para utilizar MSS para interrumpir la estructura.
- Preparar el zeroizaton.bfm file en un editor de texto o en el editor HDL de Libero. Tu puesta a cero. bfm debe incluir:
- Asignación de memoria al COMM BLK (CMBLK)
- Mapeo de memoria para interrumpir la gestión periférica (FIIC)
- Comando para solicitud de servicio de puesta a cero (“F0” Hex para puesta a cero)
Un examparchivo del serialnum.bfm file se muestra en la siguiente figura.
Figura 13 • Zeroization.bfm para la simulación de servicios del sistema de puesta a cero SmartFusion2
5. Guarde el archivo zeroization.bfm file en la carpeta Simulación del proyecto. usuario.bfm
6. Edite (ubicado en la carpeta de simulación zeroization.bfm) para incluirlo utilizando el siguiente fragmento de código.
incluir “ceroización.bfm” #incluir ceroización.bfm file procedimiento usuario_principal;
imprimir “INFO: Comienza la simulación”;
imprimir “INFO:Código de comando de servicio en decimal:%0d”, CMD;
llamar a ceroización; #llamar al retorno del procedimiento de puesta a cero
7. En la Jerarquía de diseño, genere el banco de pruebas (haga clic con el botón derecho en el nivel superior > Crear banco de pruebas > HDL) y estará listo para ejecutar la simulación de puesta a cero de SmartFusion2.
Una vez que el servicio ha comenzado a ejecutarse, se muestra un mensaje que indica que el dispositivo se ha puesto a cero en el momento x. Cabe señalar que el modelo de simulación simula la puesta a cero deteniendo la simulación en lugar de poner a cero el diseño en sí. La ventana de transcripción de ModelSim en la siguiente figura muestra que el dispositivo se ha puesto a cero.
Figura 14 • Registro de simulación de servicio del sistema de puesta a cero SmartFusion2
Apéndice: Tipos de servicios del sistema
Este capítulo describe varios tipos de servicios del sistema.
3.1 Servicios de mensajes de simulación
Las siguientes secciones describen varios tipos de servicios de mensajes de simulación.
3.1.1 Flash*Congelar
La simulación entrará en el estado Flash*Freeze cuando se envíe la solicitud de servicio adecuada al COMM_BLK desde el FIC (en el caso de dispositivos IGLOO2) o Cortex-M3 (en dispositivos SmartFusion2). Una vez que el controlador del sistema haya detectado el servicio, la simulación se detendrá y se mostrará un mensaje indicando que el sistema ha entrado en Flash*Freeze (junto con la opción seleccionada). Al reanudarse la simulación, el RXFIFO de COMM_BLK se completará con la respuesta del servicio que consta del comando y el estado del servicio. Cabe señalar que no hay soporte de simulación para la salida de Flash*Freeze.
3.1.2 Puesta a cero
La puesta a cero es actualmente el único servicio de alta prioridad dentro de los servicios del sistema procesados por COMM_BLK. La simulación entrará en el estado de puesta a cero tan pronto como COMM_BLK detecte la solicitud de servicio correcta. El controlador del sistema detendrá y descartará la ejecución de otros servicios y, en su lugar, se ejecutará el servicio de puesta a cero. Una vez que se detecta la solicitud del servicio de puesta a cero, la simulación se detiene y se muestra un mensaje que indica que el sistema ha entrado en puesta a cero. Los reinicios manuales de la simulación después de la puesta a cero no son válidos.
3.2 Servicios de puntero de datos
Las siguientes secciones describen varios tipos de servicios de puntero de datos.
3.2.1 Número de serie
El servicio de número de serie escribirá un número de serie de 128 bits en una dirección proporcionada como parte de la solicitud de servicio. Este parámetro de 128 bits se puede configurar mediante un soporte de simulación de servicio del sistema. file (ver página 22). Si el parámetro del número de serie de 128 bits no está definido dentro del file, se utilizará un número de serie predeterminado de 0. Una vez que el servicio ha comenzado a ejecutarse, se muestra un mensaje indicando la ubicación de destino y el número de serie. El controlador del sistema realiza una escritura AHB en la dirección con el número de serie. Al finalizar el servicio, el RXFIFO de COMM_BLK se cargará con la respuesta del servicio.
3.2.2 Código de usuario
El servicio de código de usuario escribe un parámetro de código de usuario de 32 bits en una ubicación de dirección proporcionada como parte de la solicitud de servicio. Este parámetro de 32 bits se puede configurar mediante el soporte de simulación del servicio del sistema. file (ver página 22). Si el parámetro de 32 bits no está definido dentro del file, se utiliza un valor predeterminado de 0. Una vez que el servicio ha comenzado a ejecutarse, se muestra un mensaje que indica la ubicación de destino y el código de usuario. El controlador del sistema realiza una escritura AHB en la dirección con el parámetro de 32 bits. Al finalizar el servicio, el RXFIFO de COMM_BLK se carga con la respuesta del servicio, que incluye el comando de servicio y la dirección de destino.
3.3 Servicios de descriptor de datos
Las siguientes secciones describen varios tipos de servicios de descriptores de datos.
3.3.1 AES
El soporte de simulación para este servicio solo se ocupa de mover los datos originales desde el origen al destino, sin realizar ningún cifrado o descifrado de los datos. Los datos que deben cifrarse/descifrarse y la estructura de datos deben escribirse antes de enviar la solicitud de servicio. Una vez que el servicio ha comenzado la ejecución, se muestra un mensaje indicando la ejecución del servicio AES. El servicio AES lee tanto la estructura de datos como los datos que se van a cifrar/descifrar. Los datos originales se copian y escriben en la dirección proporcionada dentro de la estructura de datos. Una vez que se completa el servicio, el comando, el estado y la dirección de la estructura de datos se envían al RXFIFO.
Nota: Este servicio es solo para datos de 128 y 256 bits, y tanto los datos de 128 como los de 256 bits tienen diferentes longitudes de estructura de datos.
3.3.2 SHA 256
El soporte de simulación para este servicio solo se ocupa de mover los datos, sin realizar ningún hash en los datos. La función SHA 256 está diseñada para generar una clave hash de 256 bits basada en los datos de entrada. Los datos que deben ser codificados y la estructura de datos deben escribirse en sus respectivas direcciones antes de enviar la solicitud de servicio a COMM_BLK. La longitud en bits y el puntero definidos dentro de la estructura de datos SHA 256 deben corresponder correctamente a la longitud y dirección de los datos que se van a cifrar. Una vez que el servicio ha comenzado a ejecutarse, se muestra un mensaje indicando la ejecución del servicio SHA 256. En lugar de ejecutar la función real, se escribirá una clave hash predeterminada en el puntero de destino desde la estructura de datos. La clave hash predeterminada es hexadecimal "ABCD1234". Para configurar una clave personalizada, vaya a la sección Configuración de parámetros (consulte la página 23). Al finalizar el servicio, el RXFIFO se carga con la respuesta del servicio que consta del comando del servicio, el estado y el puntero de estructura de datos SHA 256.
3.3.3 HMAC
El soporte de simulación para este servicio solo se ocupa del movimiento de datos, sin realizar ningún hash en los datos. Los datos que deben ser codificados y la estructura de datos deben escribirse en sus respectivas direcciones antes de enviar la solicitud de servicio a COMM_BLK. El servicio HMAC requiere una clave de 32 bytes además de la longitud en bytes, el puntero de origen y el puntero de destino. Una vez que el servicio ha comenzado la ejecución, se muestra un mensaje que indica la ejecución del servicio HMAC. La clave se lee y la clave de 256 bits se copia de la estructura de datos al puntero de destino. Al finalizar el servicio, el RXFIFO se carga con la respuesta del servicio que consta del comando del servicio, el estado y el puntero de estructura de datos HMAC.
3.3.4 Generación de DRBG
Este servicio realiza la generación de bits aleatorios. Cabe señalar que el modelo de simulación no sigue exactamente la misma metodología de generación de números aleatorios utilizada por el silicio. La estructura de datos debe escribirse correctamente en la ubicación prevista antes de enviar la solicitud de servicio a COMM_BLK. El controlador del sistema lee la estructura de datos, el puntero de destino, la longitud y otros datos relevantes. El servicio de generación DRBG genera un conjunto pseudoaleatorio de datos de la longitud solicitada (0-128). El controlador del sistema escribe los datos aleatorios en el puntero de destino. En la simulación se muestra un mensaje que indica la ejecución del servicio de generación DRBG. Una vez que se completa el servicio, el comando, el estado y la dirección de la estructura de datos se envían al RXFIFO. Si la longitud de los datos solicitados no está dentro del rango de 0-128, se enviará un código de error de "4" (Generación máxima) al RXFIFO. Si la longitud de los datos adicionales no está dentro del rango de Solicitud demasiado grande de 0 a 128, se enviará un código de error de “5” (Longitud máxima de datos adicionales excedida) al RXFIFO. Si tanto la longitud de datos solicitada para generar como la longitud de datos adicionales no están dentro de su rango definido (0-128), se envía un código de error de "1" (Error catastrófico) al RXFIFO.
3.3.5 Restablecimiento de DRBG
La función de reinicio real se realiza eliminando instancias de DRBG y restableciendo DRBG. Una vez que se ha detectado la solicitud de servicio, la simulación muestra un mensaje de servicio de reinicio DRBG completado. La respuesta, que incluye el servicio y el estado, se envía al RXFIFO.
3.3.6 Autoprueba DRBG
El soporte de simulación para la autoprueba DRBG en realidad no ejecuta la función de autoprueba. Una vez que se haya detectado la solicitud de servicio, la simulación mostrará un mensaje de ejecución del servicio de autoprueba DRBG. La respuesta, que incluye el servicio y el estado, se enviará al RXFIFO.
3.3.7 Instancia DRBG
El soporte de simulación para el servicio de creación de instancias DRBG en realidad no realiza el servicio de creación de instancias. La estructura de datos debe escribirse correctamente en la ubicación prevista antes de enviar la solicitud de servicio a COMM_BLK. Una vez detectada la solicitud de servicio, se leerá la estructura y cadena de personalización definida dentro del espacio de direcciones MSS. La simulación mostrará un mensaje que indica que el servicio DRBG Instantiate ha comenzado la ejecución. Una vez que se completa el servicio, la respuesta, que incluye el comando del servicio, el estado y el puntero a la estructura de datos, se enviará al RXFIFO. Si la longitud de los datos (PERSONALIZATIONLENGTH) no está dentro del rango de 0-128, se enviará un código de error de "1" (Error catastrófico) al RXFIFO para el estado.
3.3.8 Desinstancia de DRBG
El soporte de simulación para el servicio de eliminación de instancias de DRBG en realidad no realiza el servicio de eliminación de instancias de eliminar un DRBG previamente creado, como lo hace el silicio. La solicitud de servicio debe incluir tanto el comando como el identificador DRBG. Una vez que se haya detectado la solicitud de servicio, se almacenará el identificador DRBG. La simulación mostrará un mensaje que indica que se ha inicializado el servicio de eliminación de instancias de DRBG. Una vez que se completa el servicio, la respuesta, que incluye el comando de servicio, el estado y el identificador DRBG, se enviará al RXFIFO.
3.3.9 Resembrado DRBG
Debido a la naturaleza simulativa del bloque de servicios del sistema, el servicio de reinicialización de DRBG en simulación no se ejecuta automáticamente después de cada 65535 servicios generados por DRBG. La estructura de datos debe escribirse correctamente en la ubicación prevista antes de enviar la solicitud de servicio a COMM_BLK. Una vez detectada la solicitud de servicio, se leerá la estructura y el parámetro de entrada adicional en el espacio de direcciones MSS. Se mostrará un mensaje que indica que el servicio de reinicialización DRBG ha comenzado a ejecutarse. La estructura de datos debe escribirse correctamente en la ubicación prevista antes de enviar la solicitud de servicio a COMM_BLK. Una vez que se completa el servicio, la respuesta, que incluye el comando del servicio, el estado y el puntero a la estructura de datos, se enviará al RXFIFO.
3.3.10 Árbol de claves
La función real no se ejecuta en la simulación del servicio KeyTree. La estructura de datos del servicio KeyTree consta de una clave de 32 bytes, datos de tipo de opción de 7 bits (MSB ignorado) y una ruta de 16 bytes. Los datos dentro de la estructura de datos deben escribirse en sus respectivas direcciones, antes de enviar la solicitud de servicio a COMM_BLK. Una vez que el servicio haya comenzado la ejecución, se mostrará un mensaje indicando la ejecución del servicio KeyTree. Se leerá el contenido de la estructura de datos, se almacenará la clave de 32 bytes y se sobrescribirá la clave original ubicada dentro de la estructura de datos. Después de esta escritura AHB, el valor de la clave dentro de la estructura de datos no debería cambiar, pero se producirán transacciones AHB para la escritura. Al finalizar el servicio, el RXFIFO se carga con la respuesta del servicio, que consta del comando del servicio, el estado y el puntero de estructura de datos KeyTree.
3.3.11 Respuesta al desafío
La función real, como la autenticación del dispositivo, no se ejecuta en la simulación para el servicio de respuesta al desafío. La estructura de datos de este servicio requiere un puntero al búfer para recibir un resultado de 32 bytes, un tipo de operación de 7 bits y una ruta de 128 bits. Los datos dentro de la estructura de datos deben escribirse en sus respectivas direcciones antes de enviar la solicitud de servicio a COMM_BLK. Una vez que el servicio haya comenzado la ejecución, se mostrará un mensaje indicando la ejecución del servicio de respuesta al desafío. Se escribirá una respuesta genérica de 256 bits en el puntero proporcionado dentro de la estructura de datos. La clave predeterminada está configurada como hexadecimal “ABCD1234”. Para obtener una clave personalizada, consulte Configuración de parámetros (consulte la página 23). Al finalizar el servicio, el RXFIFO se cargará con la respuesta del servicio, que consta del comando del servicio, el estado y el puntero de estructura de datos de respuesta al desafío.
3.4 Otros Servicios
Las siguientes secciones describen varios otros servicios del sistema.
3.4.1 Verificación de resumen
La función real de recalcular y comparar resúmenes de componentes seleccionados no se ejecuta para el servicio de verificación de resúmenes en la simulación. Esta solicitud de servicio consta de comandos de servicio y opciones de servicio (LSB de 5 bits). Una vez que el servicio haya comenzado a ejecutarse, se mostrará un mensaje que detalla la ejecución del servicio de verificación de resumen, junto con las opciones seleccionadas de la solicitud. Al finalizar el servicio, el RXFIFO se cargará con la respuesta del servicio, que consta del comando de servicio y los indicadores de aprobación/fallo de verificación de resumen.
3.4.2 Respuesta de comando no reconocida
Cuando se envía una solicitud de servicio no reconocida al COMM_BLK, el COMM_BLK responderá automáticamente con un mensaje de comando no reconocido enviado al RXFIFO. El mensaje consta del comando enviado al COMM_BLK y el estado del comando no reconocido (252D). También se mostrará un mensaje en pantalla que indica que se ha detectado una solicitud de servicio no reconocida. COMM_BLK volverá a un estado inactivo, esperando aceptar la siguiente solicitud de servicio.
3.4.3 Servicios no compatibles
Los servicios no admitidos configurados en COMM_BLK activarán un mensaje en simulación que indica que la solicitud de servicio no es compatible. COMM_BLK volverá a un estado inactivo, esperando aceptar la siguiente solicitud de servicio. PINTERRUPT no se configurará, lo que indica que se ha completado un servicio. La lista actual de servicios no compatibles incluye: IAP, ISP, certificado de dispositivo y el servicio DESIGNVER.
3.5 Soporte de simulación de servicios del sistema File
Para apoyar la simulación de servicios del sistema, un texto file llamado "status.txt" se puede utilizar para pasar instrucciones sobre el comportamiento requerido del modelo de simulación al modelo de simulación. Este file debe estar ubicado en la misma carpeta desde donde se ejecuta la simulación. El file se puede utilizar, entre otras cosas, para forzar ciertas respuestas de error para los servicios del sistema soportados o incluso para configurar algunos parámetros necesarios para la simulación (por ej.amparchivo, número de serie). El número máximo de líneas admitidas en el "status.txt" file es 256. Las instrucciones que aparecen después de la línea número 256 no se utilizarán en la simulación.
3.5.1 Forzar respuestas de error
El usuario puede forzar una determinada respuesta de error para un servicio en particular durante la prueba pasando la información al modelo de simulación utilizando el "status.txt". file, que debe colocarse en la carpeta desde la que se ejecuta la simulación. Para forzar respuestas de error a un determinado servicio, el comando y la respuesta requerida se deben escribir en la misma línea en el siguiente formato:amparchivo, a Comando> ; Indique al modelo de simulación que genere una respuesta de error de acceso a la memoria MSS al servicio de número de serie, el comando es el siguiente.
Servicio: Número de serie: 01
Mensaje de error solicitado: Error de acceso a memoria MSS: 7F
Debes tener la línea 017F ingresada en “status.txt” file.
3.5.2 Configuración de parámetros
El "estado.txt" file También se puede utilizar para establecer algunos parámetros necesarios en la simulación. como un examparchivo, para configurar el parámetro de 32 bits para el código de usuario, el formato de la línea debe estar en este orden: <CÓDIGO DE USUARIO de 32 bits>; donde ambos valores se ingresan en hexadecimal. Para configurar el parámetro de 128 bits para el número de serie, el formato de la línea debe estar en este orden: <Número de serie de 128 bits [127:0]> ; donde ambos valores se ingresan en hexadecimal. Para configurar el parámetro de 256 bits para la clave SHA 256; el formato de la línea debe estar en este orden: <Clave de 256 bits [255:0]>; donde ambos valores se ingresan en hexadecimal. Para configurar el parámetro de 256 bits para la clave de respuesta al desafío, el formato de la línea debe estar en este orden: <Clave de 256 bits [255:0]>;
donde ambos valores se ingresan en hexadecimal.
3.5.3 Prioridad del dispositivo
Los servicios de sistemas y COMM_BLK utilizan un sistema de alta prioridad. Actualmente, el único servicio de alta prioridad es la puesta a cero. Para realizar un servicio de alta prioridad, mientras se ejecuta otro servicio, el servicio actual se detiene y el servicio de mayor prioridad se ejecutará en su lugar. COMM_BLK descartará el servicio actual para realizar el servicio de mayor prioridad. Si se envían varios servicios que no son de alta prioridad antes de que se complete un servicio actual, estos servicios se pondrán en cola dentro del TXFIFO. Una vez que se complete el servicio actual, se ejecutará el siguiente servicio en TXFIFO.
Microsemi no ofrece ninguna garantía con respecto a la información contenida en este documento o la idoneidad de sus productos y servicios para un propósito particular, ni Microsemi asume responsabilidad alguna que surja de la aplicación o el uso de cualquier producto o circuito. Los productos vendidos a continuación y cualquier otro producto vendido por Microsemi han sido sujetos a pruebas limitadas y no deben usarse junto con equipos o aplicaciones de misión crítica. Las especificaciones de rendimiento se consideran confiables, pero no se verifican, y el Comprador debe realizar y completar todas las pruebas de rendimiento y de otro tipo de los productos, solos y junto con, o instalados en, cualquier producto final. El Comprador no se basará en los datos y especificaciones o parámetros de rendimiento proporcionados por Microsemi. Es responsabilidad del Comprador determinar de forma independiente la idoneidad de cualquier producto y probarlo y verificarlo. La información proporcionada por Microsemi a continuación se proporciona "tal cual, dónde está" y con todas las fallas, y todo el riesgo asociado con dicha información es totalmente del Comprador. Microsemi no otorga, explícita o implícitamente, a ninguna de las partes ningún derecho de patente, licencia o cualquier otro derecho de propiedad intelectual, ya sea con respecto a dicha información en sí misma o cualquier cosa descrita en dicha información. La información proporcionada en este documento es propiedad de Microsemi, y Microsemi se reserva el derecho de realizar cambios en la información de este documento o en cualquier producto y servicio en cualquier momento sin previo aviso.
Microsemi, una subsidiaria de propiedad total de Microchip Technology Inc. (Nasdaq: MCHP), ofrece una cartera integral de soluciones de sistemas y semiconductores para los mercados aeroespacial y de defensa, comunicaciones, centros de datos e industrial. Los productos incluyen circuitos integrados analógicos de señal mixta, FPGA, SoC y ASIC de alto rendimiento y resistentes a la radiación; productos de gestión de energía; dispositivos de cronometraje y sincronización y soluciones horarias precisas, que establecen el estándar mundial en materia de tiempo; dispositivos de procesamiento de voz; soluciones de radiofrecuencia; componentes discretos; soluciones de comunicación y almacenamiento empresarial; tecnologías de seguridad y anti-t escalablesamper productos; soluciones de Ethernet; Midspans e IC de alimentación a través de Ethernet; así como capacidades y servicios de diseño personalizados. Microsemi tiene su sede en Aliso Viejo, California, y cuenta con aproximadamente 4,800 empleados en todo el mundo. Obtenga más información en www.microsemi.com.
Sede Microsemi
Una Empresa, Aliso Viejo,
CA 92656 EE. UU.
Dentro de EE. UU.: +1 800-713-4113
Fuera de EE. UU.: +1 949-380-6100
Ventas: +1 949-380-6136
Teléfono: +1 949-215-4996
Correo electrónico: ventas.soporte@microsemi.com
www.microsemi.com
© 2018 Microsemi. Reservados todos los derechos. Microsemi y el logotipo de Microsemi
son marcas comerciales de Microsemi Corporation. Todas las demás marcas comerciales y servicios
Las marcas son propiedad de sus respectivos dueños.
Documentos / Recursos
![]() |
Microsemi UG0837 IGLOO2 y SmartFusion2 FPGA Simulación de servicios del sistema [pdf] Guía del usuario UG0837, UG0837 Simulación de servicios del sistema FPGA IGLOO2 y SmartFusion2, Simulación de servicios del sistema FPGA IGLOO2 y SmartFusion2, Simulación de servicios del sistema FPGA SmartFusion2, Simulación de servicios del sistema FPGA, Simulación de servicios |