MICROCHIP -logo

Unidad de punto flotante CoreFPU de MICROCHIP

Producto de unidad de coma flotante CoreFPU de MICROCHIP

 

Introducción 

  • La Unidad Central de Coma Flotante (CoreFPU) está diseñada para operaciones aritméticas y de conversión de coma flotante, tanto para números de coma flotante de precisión simple como doble. CoreFPU admite conversiones de coma fija a coma flotante y de coma flotante a coma fija, así como operaciones de suma, resta y multiplicación de coma flotante. El estándar IEEE® para aritmética de coma flotante (IEEE 754) es un estándar técnico para el cálculo de coma flotante.
  • Importante: CoreFPU solo admite cálculos con números normalizados y solo se admite el lenguaje Verilog; no se admite VHDL.

Resumen
La siguiente tabla proporciona un resumen de las características de CoreFPU.

Tabla 1. Características de CoreFPU 

Versión principal Este documento se aplica a CoreFPU v3.0.
Familias de dispositivos compatibles
  • SoC PolarFire®
  • fuego polar
  • RTG4™
Flujo de herramientas admitido Requiere Libero® SoC v12.6 o versiones posteriores.
Licencias CoreFPU no tiene licencia bloqueada.
Instrucciones de instalación CoreFPU debe instalarse automáticamente en el catálogo de IP del SoC Libero mediante la función de actualización del catálogo de IP. Alternativamente, CoreFPU puede descargarse manualmente del catálogo. Una vez que el núcleo de IP esté...

Se instala, se configura, se genera y se instancia dentro de SmartDesign para su inclusión en el proyecto.

Utilización y rendimiento del dispositivo En Utilización y rendimiento de recursos del dispositivo se incluye un resumen de la información de utilización y rendimiento de CoreFPU.

Información del registro de cambios de CoreFPU
Esta sección proporciona una descripción completaview De las nuevas funciones incorporadas, a partir de la versión más reciente. Para más información sobre los problemas resueltos, consulte la sección Problemas Resueltos.

Versión Qué hay de nuevo
v3.0 Se implementaron indicadores de salida adicionales para mejorar la precisión de la IP
v2.1 Se agregó la función de doble precisión
v2.0 Se actualizaron las formas de onda de temporización.
v1.0 Primera versión de producción de CoreFPU

1. Características

CoreFPU tiene las siguientes características clave:

  • Admite números flotantes de precisión simple y doble según el estándar IEEE-754
  • Admite las conversiones que se enumeran a continuación:
    • Conversión de punto fijo a punto flotante
    • Conversión de punto flotante a punto fijo
  • Admite operaciones aritméticas como se enumeran:
    • Suma de punto flotante
    • Resta de punto flotante
    • Multiplicación de punto flotante
  • Proporciona el esquema de redondeo (redondeo al par más cercano) solo para las operaciones aritméticas
  • Proporciona indicadores para desbordamiento, subdesbordamiento, infinito (infinito positivo, infinito negativo), NaN silencioso (QNaN) y NaN de señalización (SNaN) para números de punto flotante.
  • Admite una implementación completamente canalizada de operaciones aritméticas
  • Proporciona disposiciones para configurar el núcleo para los requisitos de diseño

Descripción funcional

  • El Estándar IEEE para Aritmética de Punto Flotante (IEEE 754) es un estándar técnico para el cálculo de punto flotante. El término punto flotante se refiere al punto decimal o punto binario del número, que se coloca en cualquier punto con respecto a los dígitos significativos del número.
    Un número de punto flotante se expresa típicamente en notación científica, con una fracción (F) y un exponente (E) de un determinado radio (r), en la forma F × r^E. Los números decimales usan el radio 10 (F × 10^E); mientras que los números binarios usan el radio 2 (F × 2^E).
  • La representación del número de punto flotante no es única. Por ejemplo:ampPor ejemplo, el número 55.66 se representa como 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3, y así sucesivamente. La parte fraccionaria está normalizada. En la forma normalizada, solo hay un dígito distinto de cero antes del punto de la base. Por ejemploample, el número decimal 123.4567 se normaliza como 1.234567 × 10^2; el número binario 1010.1011B se normaliza como 1.0101011B × 2^3.
  • Es importante tener en cuenta que los números de punto flotante sufren pérdida de precisión cuando se representan con un número fijo de bits (por ejemplo,ampes decir, 32 bits o 64 bits). Esto se debe a que hay una cantidad infinita de números reales (incluso dentro de un rango pequeño de 0.0 a 0.1). Por otro lado, un
    El patrón binario de n bits representa un número finito de 2^n números distintos. Por lo tanto, no se representan todos los números reales. Se utiliza la aproximación más cercana, lo que resulta en una pérdida de precisión.

El número de punto flotante de precisión simple se representa de la siguiente manera:

  • Bit de signo: 1 bit
  • Ancho del exponente: 8 bits
  • Precisión significativa: 24 bits (23 bits se almacenan explícitamente)

Figura 2-1. Marco de 32 bits

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (2)El número de punto flotante de doble precisión se representa de la siguiente manera:

  • Bit de signo: 1 bit
  • Ancho del exponente: 11 bits
  • Precisión significativa: 53 bits (52 bits se almacenan explícitamente)

Figura 2-2. Marco de 64 bits MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (3)CoreFPU es la integración de alto nivel de dos módulos de conversión (de punto fijo a punto flotante y de punto flotante a punto fijo) y tres operaciones aritméticas (FP ADD, FP SUB y FP MULT). El usuario puede configurar cualquiera de las operaciones según sus necesidades para que los recursos se utilicen en la operación seleccionada.
La siguiente figura muestra el diagrama de bloques de CoreFPU de nivel superior con puertos.

Figura 2-3. Diagrama de bloques de puertos CoreFPU

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (4)La siguiente tabla muestra el ancho de los puertos de entrada y salida. Tabla 2-1. Ancho de los puertos de entrada y salida

Señal Ancho de precisión simple Ancho de doble precisión
[31:0] [63:0]
papelera [31:0] [63:0]
sobre [31:0] [63:0]
abadejo [31:0] [63:0]

Punto fijo a punto flotante (conversión)

CoreFPU configurado como fijo a punto flotante infiere el módulo de conversión de punto fijo a punto flotante. La entrada (ain) de CoreFPU es cualquier número de punto fijo que contenga bits enteros y fraccionarios. El configurador de CoreFPU permite seleccionar los anchos de entrada para enteros y fraccionarios. La entrada es válida con la señal di_valid y la salida con la señal do_valid. La salida (aout) de la operación de fijo a punto flotante está en formato de punto flotante de precisión simple o doble.
ExampLos procedimientos para la conversión de punto fijo a punto flotante se enumeran en la siguiente tabla.
Tabla 2-2. Example para la conversión de punto fijo a punto flotante

Número de punto fijo Número de punto flotante
Entero Fracción sobre Firmar Exponente Mantisa
0x12153524 (32 bits) 00010010000101010 011010100100100 0x4610a9a9 0 10001100 00100001010100110101001
0x0000000000008CCC

(64 bits)

0000000000000000000000000000000000000000000000001 000110011001100 0x3FF199999999999A 0 01111111111 0001100110011001100110011001100110011001100110011010

Conversión de punto flotante a punto fijo 
CoreFPU configurado como de coma flotante a punto fijo infiere el módulo de conversión de coma flotante a punto fijo. La entrada (ain) de CoreFPU es cualquier número de coma flotante de precisión simple o doble y produce una salida (aout) en formato de coma fija que contiene bits enteros y fraccionarios. La entrada es válida con la señal di_valid y la salida con la señal do_valid. El configurador de CoreFPU permite seleccionar los anchos de salida para enteros y fraccionarios.
ExampLos procedimientos para la conversión de punto flotante a punto fijo se enumeran en la siguiente tabla.

Tabla 2-3. Example para la conversión de punto flotante a punto fijo

Número de punto flotante Número de punto fijo
Firmar Exponente Mantisa sobre Entero Fracción
0x41bd6783 (32 bits) 0 10000011 01111010110011110000011 0x000bd678 00000000000010111 101011001111000
0x4002094c447c30d3

(64 bits)

0 10000000000 0010000010010100110001000100011111000011000011010011 0x0000000000012095 0000000000000000000000000000000000000000000000010 010000010010101

Suma de punto flotante (operación aritmética)
CoreFPU configurado como FP ADD infiere el módulo de suma de coma flotante. Suma los dos números de coma flotante (ain y bin) y proporciona la salida (pout) en formato de coma flotante. La entrada y la salida son números de coma flotante de precisión simple o doble. La entrada es válida con la señal di_valid y la salida con la señal do_valid. El núcleo genera los indicadores ovfl_fg (Desbordamiento), qnan_fg (Silencio no es un número), snan_fg (Señalización no es un número), pinf_fg (Infinito positivo) y ninf_fg (Infinito negativo) según la operación de suma.
ExampLos archivos para la operación de suma de punto flotante se enumeran en las siguientes tablas.
Tabla 2-4. Example para la operación de suma de punto flotante (32 bits)

Valor de punto flotante Firmar Exponente Mantisa
Entrada de punto flotante 1 ain (0x4e989680) 0 10011101 00110001001011010000000
Entrada de punto flotante 2 bin (0x4f191b40) 0 10011110 00110010001101101000000
Salida de suma de punto flotante pout (0x4f656680) 0 10011110 11001010110011010000000

Tabla 2-5. Example para la operación de suma de punto flotante (64 bits)

Valor de punto flotante Firmar Exponente Mantisa
Entrada de punto flotante 1

ain (0x3ff4106ee30caa32)

0 01111111111 0100000100000110111011100011000011001010101000110010
Entrada de punto flotante 2

bin (0x40020b2a78798e61)

0 10000000000 0010000010110010101001111000011110011000111001100001
Salida de suma de punto flotante pout (0x400c1361e9ffe37a) 0 10000000000 1100000100110110000111101001111111111110001101111010

Resta de punto flotante (operación aritmética) 
CoreFPU configurado como FP SUB infiere el módulo de resta de coma flotante. Resta los dos números de coma flotante (ain y bin) y proporciona la salida (pout) en formato de coma flotante. La entrada y la salida son números de coma flotante de precisión simple o doble. La entrada es válida con la señal di_valid y la salida con la señal do_valid. El núcleo genera indicadores ovfl_fg (desbordamiento), unfl_fg (desbordamiento insuficiente), qnan_fg (silencio no es un número), snan_fg (señalización no es un número), pinf_fg (infinito positivo) y ninf_fg (infinito negativo) según la operación de resta.
ExampLos archivos para la operación de resta de punto flotante se enumeran en las siguientes tablas.
Tabla 2-6. Example para la operación de resta de punto flotante (32 bits)

Valor de punto flotante Firmar Exponente Mantisa
Entrada de punto flotante 1 ain (0xac85465f) 1 01011001 00001010100011001011111
Entrada de punto flotante 2 bin (0x2f516779) 0 01011110 10100010110011101111001
Salida de resta de punto flotante pout (0xaf5591ac) 1 01011110 10101011001000110101011
Valor de punto flotante Firmar Exponente Mantisa
Entrada de punto flotante 1

ain (0x405569764adff823)

0 10000000101 0101011010010111011001001010110111111111100000100011
Entrada de punto flotante 2

bin (0x4057d04e78dee3fc)

0 10000000101 0111110100000100111001111000110111101110001111111100
Salida de resta de punto flotante pout (0xc02336c16ff75ec8) 1 10000000010 0011001101101100000101101111111101110101111011001000

Multiplicación de punto flotante (operación aritmética)
CoreFPU configurado como FP MULT infiere el módulo de multiplicación de punto flotante. Multiplica dos números de punto flotante (ain y bin) y proporciona la salida (pout) en formato de punto flotante. La entrada y la salida son números de punto flotante de precisión simple o doble. La entrada es válida con la señal di_valid y la salida con la señal do_valid. El núcleo genera indicadores ovfl_fg (desbordamiento), unfl_fg (desbordamiento insuficiente), qnan_fg (silencio no es un número), snan_fg (señalización no es un número), pinf_fg (infinito positivo) y ninf_fg (infinito negativo) según la operación de multiplicación.
ExampLos archivos para la operación de multiplicación de punto flotante se enumeran en las siguientes tablas.
Tabla 2-8. Example para la operación de multiplicación de punto flotante (32 bits)

Valor de punto flotante Firmar Exponente Mantisa
Entrada de punto flotante 1 ain (0x1ec7a735) 0 00111101 10001111010011100110101
Entrada de punto flotante 2 bin (0x6ecf15e8) 0 11011101 10011110001010111101000
Salida de multiplicación de punto flotante pout (0x4e21814a) 0 10011100 01000011000000101001010
Valor de punto flotante Firmar Exponente Mantisa
Entrada de punto flotante 1

ain (0x40c1f5a9930be0df)

0 10000001100 0001111101011010100110010011000010111110000011011111
Entrada de punto flotante 2

bin (0x400a0866c962b501)

0 10000000000 1010000010000110011011001001011000101011010100000001
Salida de multiplicación de punto flotante pout (0x40dd38a1c3e2cae9) 0 10000001101 1101001110001010000111000011111000101100101011101001

 Tabla de verdad para la suma y la resta 
Las siguientes tablas de verdad enumeran los valores de las operaciones de suma y resta. Tabla 2-10. Tabla de verdad para la suma.

Datos A Datos B Bit de signo Resultado Rebosar Desbordamiento SNaN QNaN PINF NINF
QNaN/SNaN x 0 POSQNaN 0 0 0 1 0 0
x QNaN/SNaN 0 POSQNaN 0 0 0 1 0 0
cero cero 0 POSZERO 0 0 0 0 0 0
cero posfinito(y) 0 posfinito(y) 0 0 0 0 0 0
cero negfinito(y) 1 negfinito(y) 0 0 0 0 0 0
cero posinfinito 0 posinfinito 0 0 0 0 1 0
cero neginfinito 1 neginfinito 0 0 0 0 0 1
posfinito(y) cero 0 posfinito(y) 0 0 0 0 0 0
posfinito posinfinito 0 posinfinito 0 0 0 0 1 0
Mesa 2-10. Tabla de verdad para la suma (continuación)
Datos A Datos B Bit de signo Resultado Rebosar Desbordamiento SNaN QNaN PINF NINF
posfinito neginfinito 1 neginfinito 0 0 0 0 0 1
negfinito(y) cero 1 negfinito(y) 0 0 0 0 0 0
negfinito posinfinito 0 posinfinito 0 0 0 0 1 0
negfinito neginfinito 1 neginfinito 0 0 0 0 0 1
posinfinito cero 0 posinfinito 0 0 0 0 1 0
posinfinito posfinito 0 posinfinito 0 0 0 0 1 0
posinfinito negfinito 0 posinfinito 0 0 0 0 1 0
posinfinito posinfinito 0 posinfinito 0 0 0 0 1 0
posinfinito neginfinito 0 POSQNaN 0 0 0 1 0 0
neginfinito cero 1 neginfinito 0 0 0 0 0 1
neginfinito posfinito 1 neginfinito 0 0 0 0 0 1
neginfinito negfinito 1 neginfinito 0 0 0 0 0 1
neginfinito posinfinito 0 POSQNaN 0 0 0 1 0 0
neginfinito neginfinito 1 neginfinito 0 0 0 0 0 1
posfinito posfinito 0 posfinito 0 0 0 0 0 0
posfinito posfinito 0 posinfinito 0 0 0 0 1 0
posfinito posfinito 0/1 QNaN 0 0 0 1 0 0
posfinito posfinito 0/1 SNaN 0 0 1 0 0 0
posfinito posfinito 0 POSESIÓN 1 0 1 0 0 0
posfinito negfinito 0 posfinito 0 0 0 0 0 0
posfinito negfinito 1 negfinito 0 0 0 0 0 0
posfinito negfinito 0 POSESIÓN 0 1 1 0 0 0
negfinito posfinito 0 posfinito 0 0 0 0 0 0
negfinito posfinito 1 negfinito 0 0 0 0 0 0
negfinito posfinito 0 POSESIÓN 0 1 1 0 0 0
negfinito negfinito 1 negfinito 0 0 0 0 0 0
negfinito negfinito 1 neginfinito 0 0 0 0 0 1
negfinito negfinito 0/1 QNaN 0 0 0 1 0 0
negfinito negfinito 0/1 SNaN 0 0 1 0 0 0
negfinito negfinito 0 POSESIÓN 1 0 1 0 0 0
Datos A Datos B Bit de signo Resultado Rebosar Desbordamiento SNaN QNaN PINF NINF
QNaN/SNaN x 0 POSQNaN 0 0 0 1 0 0
x QNaN/SNaN 0 POSQNaN 0 0 0 1 0 0
cero cero 0 POSZERO 0 0 0 0 0 0
cero posfinito(y) 1 negfinito(y) 0 0 0 0 0 0
cero negfinito(y) 0 posfinito(y) 0 0 0 0 0 0
cero posinfinito 1 neginfinito 0 0 0 0 0 1
cero neginfinito 0 posinfinito 0 0 0 0 1 0
posfinito(y) cero 0 posfinito(y) 0 0 0 0 0 0
posfinito posinfinito 1 neginfinito 0 0 0 0 0 1
posfinito neginfinito 0 posinfinito 0 0 0 0 1 0
negfinito(y) cero 1 negfinito(y) 0 0 0 0 0 0
negfinito posinfinito 1 neginfinito 0 0 0 0 0 1
Mesa 2-11. Tabla de verdad para la resta (continuación)
Datos A Datos B Bit de signo Resultado Rebosar Desbordamiento SNaN QNaN PINF NINF
negfinito neginfinito 0 posinfinito 0 0 0 0 1 0
posinfinito cero 0 posinfinito 0 0 0 0 1 0
posinfinito posfinito 0 posinfinito 0 0 0 0 1 0
posinfinito negfinito 0 posinfinito 0 0 0 0 1 0
posinfinito posinfinito 0 POSQNaN 0 0 0 1 0 0
posinfinito neginfinito 0 posinfinito 0 0 0 0 1 0
neginfinito cero 1 neginfinito 0 0 0 0 0 1
neginfinito posfinito 1 neginfinito 0 0 0 0 0 1
neginfinito negfinito 1 neginfinito 0 0 0 0 0 1
neginfinito posinfinito 1 neginfinito 0 0 0 0 0 1
neginfinito neginfinito 0 POSQNaN 0 0 0 1 0 0
posfinito posfinito 0 posfinito 0 0 0 0 0 0
posfinito posfinito 1 negfinito 0 0 0 0 0 0
posfinito posfinito 0 POSESIÓN 0 1 1 0 0 0
posfinito negfinito 0 posfinito 0 0 0 0 0 0
posfinito negfinito 0 posinfinito 0 0 0 0 1 0
posfinito negfinito 0/1 QNaN 0 0 0 1 0 0
posfinito negfinito 0/1 SNaN 0 0 1 0 0 0
posfinito negfinito 0 POSESIÓN 1 0 1 0 0 0
negfinito posfinito 1 negfinito 0 0 0 0 0 0
negfinito posfinito 1 neginfinito 0 0 0 0 0 1
negfinito posfinito 0/1 QNaN 0 0 0 1 0 0
negfinito posfinito 0/1 SNaN 0 0 1 0 0 0
negfinito posfinito 0 POSESIÓN 1 0 1 0 0 0
negfinito negfinito 0 posfinito 0 0 0 0 0 0
negfinito negfinito 1 negfinito 0 0 0 0 0 0
negfinito negfinito 0 POSESIÓN 0 1 1 0 0 0

Importante:

  • En las tablas anteriores se denota cualquier número.
  • En las tablas anteriores se denota una condición de no importancia.

Tabla de verdad para la multiplicación 
La siguiente tabla de verdad enumera los valores para la operación de multiplicación.

Tabla 2-12. Tabla de verdad para la multiplicación

Datos A Datos B Bit de signo Resultado Rebosar Desbordamiento SNaN QNaN PINF NINF
QNaN/SNaN x 0 POSQNaN 0 0 0 1 0 0
x QNaN/SNaN 0 POSQNaN 0 0 0 1 0 0
cero cero 0 POSZERO 0 0 0 0 0 0
cero posfinito 0 POSZERO 0 0 0 0 0 0
cero negfinito 0 POSZERO 0 0 0 0 0 0
cero posinfinito 0 POSQNaN 0 0 0 1 0 0
cero neginfinito 0 POSQNaN 0 0 0 1 0 0
Mesa 2-12. Tabla de verdad para la multiplicación (continuación)
Datos A Datos B Bit de signo Resultado Rebosar Desbordamiento SNaN QNaN PINF NINF
posfinito cero 0 POSZERO 0 0 0 0 0 0
posfinito posinfinito 0 posinfinito 0 0 0 0 1 0
posfinito neginfinito 1 neginfinito 0 0 0 0 0 1
negfinito cero 0 POSZERO 0 0 0 0 0 0
negfinito posinfinito 1 neginfinito 0 0 0 0 0 1
negfinito neginfinito 0 posinfinito 0 0 0 0 1 0
posinfinito cero 0 POSQNaN 0 0 0 1 0 0
posinfinito posfinito 0 posinfinito 0 0 0 0 1 0
posinfinito negfinito 1 neginfinito 0 0 0 0 0 1
posinfinito posinfinito 0 posinfinito 0 0 0 0 1 0
posinfinito neginfinito 1 neginfinito 0 0 0 0 0 1
neginfinito cero 0 POSQNaN 0 0 0 1 0 0
neginfinito posfinito 1 neginfinito 0 0 0 0 0 1
neginfinito negfinito 0 posinfinito 0 0 0 0 1 0
neginfinito posinfinito 1 neginfinito 0 0 0 0 0 1
neginfinito neginfinito 0 posinfinito 0 0 0 0 1 0
posfinito posfinito 0 posfinito 0 0 0 0 0 0
posfinito posfinito 0 posinfinito 0 0 0 0 1 0
posfinito posfinito 0 POSQNaN 0 0 0 1 0 0
posfinito posfinito 0 POSESIÓN 0 0 1 0 0 0
posfinito posfinito 0 POSESIÓN 1 0 1 0 0 0
posfinito posfinito 0 POSESIÓN 0 1 1 0 0 0
posfinito negfinito 1 negfinito 0 0 0 0 0 0
posfinito negfinito 1 neginfinito 0 0 0 0 0 1
posfinito negfinito 0 POSQNaN 0 0 0 1 0 0
posfinito negfinito 0 POSESIÓN 0 0 1 0 0 0
posfinito negfinito 0 POSESIÓN 1 0 1 0 0 0
posfinito negfinito 0 POSESIÓN 0 1 1 0 0 0
negfinito posfinito 1 negfinito 0 0 0 0 0 0
negfinito posfinito 1 neginfinito 0 0 0 0 0 1
negfinito posfinito 0 POSQNaN 0 0 0 1 0 0
negfinito posfinito 0 POSESIÓN 0 0 1 0 0 0
negfinito posfinito 0 POSESIÓN 1 0 1 0 0 0
negfinito posfinito 0 POSESIÓN 0 1 1 0 0 0
negfinito negfinito 0 posfinito 0 0 0 0 0 0
negfinito negfinito 0 posinfinito 0 0 0 0 1 0
negfinito negfinito 0 POSQNaN 0 0 0 1 0 0
negfinito negfinito 0 POSQNaN 0 0 1 0 0 0
negfinito negfinito 0 POSQNaN 1 0 1 0 0 0
negfinito negfinito 0 POSQNaN 0 1 1 0 0 0

Importante:

El bit de signo '0' define una salida positiva y '1' define una salida negativa.
La x en la tabla anterior denota la condición de no importar.

Parámetros y señales de interfaz de CoreFPU
En esta sección se analizan los parámetros de la configuración del Configurador CoreFPU y las señales de E/S.

Parámetros de GUI de configuración 
Existen varias opciones configurables para la unidad FPU, como se muestra en la siguiente tabla. Si se requiere una configuración distinta a la predeterminada, se utiliza el cuadro de diálogo de configuración para seleccionar los valores adecuados para la opción configurable.

Tabla 3-1. Parámetros de la interfaz gráfica de usuario de configuración de CoreFPU 

Nombre del parámetro Por defecto Descripción
Precisión Soltero Seleccione la operación según sea necesario:

Precisión simple
Doble precisión

Tipo de conversión Conversión de punto fijo a punto flotante Seleccione la operación según sea necesario:
  • Conversión de punto fijo a punto flotante
  • Conversión de punto flotante a punto fijo
  • Suma de punto flotante
  • Resta de punto flotante
  • Multiplicación de punto flotante
Ancho de fracción de entrada1 15 Configura el punto fraccionario en las señales de entrada ain y bin

El rango válido es 31–1

Ancho de fracción de salida2 15 Configura el punto fraccionario en las señales de salida aout

El rango válido es 51–1

Importante:

  1. Este parámetro solo se puede configurar durante la conversión de punto fijo a punto flotante.
  2. Este parámetro solo se puede configurar durante la conversión de punto flotante a punto fijo.

Señales de entrada y salida (haga una pregunta)
La siguiente tabla enumera las señales del puerto de entrada y salida de CoreFPU.

Tabla 3-2. Descripción del puerto 

Nombre de la señal Ancho Tipo Descripción
Clic 1 Aporte Reloj del sistema principal
rstn 1 Aporte Reinicio asincrónico activo bajo
di_válido 1 Aporte Entrada activa alta válida

Esta señal indica que los datos presentes en ain[31:0], ain[63:0] y bin[31:0], bin[63:0] son ​​válidos.

32/64 Aporte Un bus de entrada (se utiliza para todas las operaciones)
papelera1 32/64 Aporte Bus de entrada B (Se utiliza únicamente para operaciones aritméticas)
sobre2 32/64 Producción Valor de salida cuando se seleccionan operaciones de conversión de punto fijo a punto flotante o de punto flotante a punto fijo.
abadejo1 32/64 Producción Valor de salida cuando se seleccionan operaciones de suma, resta o multiplicación.
Mesa 3-2. Descripción del puerto (continuación)
Nombre de la señal Ancho Tipo Descripción
hacer_válido 1 Producción Señal activa alta

Esta señal indica que los datos presentes en el bus de datos pout/aout son válidos.

ovfl_fg3 1 Producción Señal activa alta

Esta señal indica el desbordamiento durante las operaciones de punto flotante.

unfl_fg 1 Producción Señal activa alta

Esta señal indica el desbordamiento durante las operaciones de punto flotante.

qnan_fg3 1 Producción Señal activa alta

Esta señal indica que el número silencioso no es un número (QNaN) durante las operaciones de punto flotante.

snan_fg 1 Producción Señal activa alta

Esta señal indica que la señalización no es un número (SNaN) durante las operaciones de punto flotante.

pinf_fg3 1 Producción Señal activa alta

Esta señal indica el infinito positivo durante las operaciones de punto flotante.

ninf_fg 1 Producción Señal activa alta

Esta señal indica el infinito negativo durante las operaciones de punto flotante.

Importante:

  1. Este puerto solo está disponible para operaciones de suma, resta o multiplicación de punto flotante.
  2. Este puerto solo está disponible para operaciones de conversión de punto fijo a punto flotante y de punto flotante a punto fijo.
  3. Este puerto está disponible para operaciones de punto flotante a punto fijo, suma de punto flotante, resta de punto flotante y multiplicación de punto flotante.

Implementación de CoreFPU en Libero Design Suite

Esta sección describe la implementación de CoreFPU en Libero Design Suite.

Diseño inteligente 

CoreFPU está disponible para descargar en el catálogo de IP de Libero a través de web Repositorio. Una vez incluido en el catálogo, el núcleo se instancia mediante el flujo de SmartDesign. Para obtener información sobre el uso de SmartDesign para configurar, conectar y generar núcleos, consulte la ayuda en línea de Libero SoC.
Tras configurar y generar la instancia principal, se simula la funcionalidad básica mediante el banco de pruebas incluido con CoreFPU. Los parámetros del banco de pruebas se ajustan automáticamente a la configuración de CoreFPU. CoreFPU se instancia como un componente de un diseño más amplio.
Figura 4-1. Instancia de SmartDesign CoreFPU para operaciones aritméticas

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (5)Figura 4-2. Instancia de SmartDesign CoreFPU para la operación de conversión MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (6)

 

Conversión de punto fijo a punto flotante
Durante la conversión de punto fijo a punto flotante, el ancho de la fracción de entrada es configurable. El ancho de salida se establece de forma predeterminada en 32 bits para precisión simple y 64 bits para punto flotante de doble precisión.
Para convertir de punto fijo a punto flotante, seleccione el tipo de conversión de punto fijo a punto flotante, como se muestra en la siguiente figura.

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (7)Punto flotante a punto fijo 
Durante la conversión de punto flotante a punto fijo, el ancho fraccionario de salida es configurable y el ancho de entrada se establece en 32 bits para precisión simple y 64 bits para punto flotante de precisión doble de manera predeterminada.
Para convertir de punto flotante a punto fijo, seleccione el tipo de conversión de punto flotante a fijo, como se muestra en la siguiente figura.
Figura 4-4. Configurador de CoreFPU para punto flotante a fijo MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (8)Suma/Resta/Multiplicación de punto flotante
Durante las operaciones de suma, resta y multiplicación de punto flotante, el Ancho de fracción de entrada y el Ancho de fracción de salida no son configurables ya que son operaciones aritméticas de punto flotante, y el Ancho de entrada/salida se establece en 32 bits de precisión simple y 64 bits para punto flotante de precisión doble de manera predeterminada.
La siguiente figura muestra el configurador CoreFPU para la operación de resta de punto flotante.

Figura 4-5. Configurador de CoreFPU para la resta de punto flotanteMICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (9)Simulación (Hacer una pregunta)
Para ejecutar simulaciones, en la ventana de configuración del núcleo, seleccione User Testbench. Tras generar el CoreFPU, el banco de pruebas de presíntesis (Lenguaje de Descripción de Hardware [HDL]) fileLos s están instalados en Libero.

Formas de onda de simulación (Haga una pregunta)
En esta sección se analizan las formas de onda de simulación para CoreFPU.
Las siguientes figuras muestran la forma de onda de la conversión de punto fijo a punto flotante tanto para 32 bits como para 64 bits.MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (10)

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (11) MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (12) MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (13)

Integración de sistemas
La siguiente figura muestra un exampde usar el núcleo. En este ejemploampEl UART de diseño se utiliza como canal de comunicación entre el diseño y el PC host. Las señales ain y bin (cada una de 32 o 64 bits de ancho) son las entradas del diseño desde el UART. Tras recibir la señal di_valid, la CoreFPU calcula el resultado. Tras calcular el resultado, la señal do_valid se activa y almacena el resultado (datos aout/pout) en el búfer de salida. Este mismo procedimiento se aplica a las operaciones de conversión y aritméticas. Para las operaciones de conversión, solo es suficiente la entrada ain, mientras que para las operaciones aritméticas se requieren tanto ain como bin. La salida aout está habilitada para las operaciones de conversión y el puerto pout está habilitado para las operaciones aritméticas.
Figura 4-16. Example del sistema CoreFPU

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (14)

 

  1. Síntesis (Haz una pregunta)
    Para ejecutar la síntesis en CoreFPU, configure la raíz del diseño en la instancia del componente IP y, desde el panel de flujo de diseño de Libero, ejecute la herramienta Síntesis.
    Lugar y Ruta (Haz una Pregunta)
    Una vez sintetizado el diseño, ejecute la herramienta de ubicación y ruta. CoreFPU no requiere configuraciones especiales de ubicación y ruta.
  2. Banco de pruebas de usuario (Haga una pregunta)
    La versión IP de CoreFPU incluye un banco de pruebas de usuario. Con este banco de pruebas, puede verificar el funcionamiento de CoreFPU.

En la siguiente figura se muestra un diagrama de bloques simplificado del banco de pruebas de usuario. Este banco instancia el diseño de CoreFPU configurado (UUT) e incluye el generador de datos de prueba de comportamiento, el reloj necesario y las señales de reinicio.
Figura 4-17. Banco de pruebas de usuario de CoreFPU

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (15)Importante: Debes monitorizar las señales de salida en el simulador ModelSim, ver la sección Simulación.

Referencias adicionales (Haga una pregunta)
Esta sección proporciona una lista con información adicional.
Para obtener actualizaciones e información adicional sobre el software, los dispositivos y el hardware, visite el

Páginas de propiedad intelectual sobre los FPGA y PLD de Microchip websitio.

  1. Problemas conocidos y soluciones alternativas (haga una pregunta)
    No hay problemas conocidos ni soluciones alternativas para CoreFPU v3.0.
  2. Funciones y dispositivos descontinuados (Haga una pregunta)
    No hay funciones ni dispositivos discontinuados con esta versión de IP.

Glosario

La siguiente es la lista de términos y definiciones utilizados en el documento.
Tabla 6-1. Términos y definiciones

Término Definición
Unidad de fomento Unidad de punto flotante
FP ADD Suma de punto flotante
Subtítulo FP Resta de punto flotante
FP MULT Multiplicación de punto flotante

Problemas resueltos 
En la siguiente tabla se enumeran todos los problemas resueltos para las distintas versiones de CoreFPU.

Tabla 7-1. Problemas resueltos

Liberar Descripción
3.0 La siguiente es la lista de todos los problemas resueltos en la versión v3.0:

Número de caso: 01420387 y 01422128

Se agregó la lógica del esquema de redondeo (redondear al número par más cercano).

2.1 La siguiente es la lista de todos los problemas resueltos en la versión v2.1:
El diseño presenta problemas debido a la presencia de módulos duplicados cuando se instancian múltiples núcleos.
Al cambiar el nombre de la instancia IP de CoreFPU se genera un error de “Módulo no definido”.
1.0 Lanzamiento inicial

Utilización y rendimiento de los recursos del dispositivo

La macro CoreFPU se implementa en las familias enumeradas en la siguiente tabla.
Tabla 8-1. Utilización del dispositivo de la unidad FPU PolarFire para 32 bits

Recursos FPGA Utilización
Familia 4 LUT DFF Total Bloque de matemáticas Dispositivo Porcentajetage Actuación Estado latente
Punto fijo a punto flotante
PolarFire® 260 104 364 0 MPF300T 0.12 310 MHz 3
Punto flotante a punto fijo
fuego polar 591 102 693 0 MPF300T 0.23 160 MHz 3
Suma de punto flotante
fuego polar 1575 1551 3126 0 MPF300T 1.06 340 MHz 16
Resta de punto flotante
fuego polar 1561 1549 3110 0 MPF300T 1.04 345 MHz 16
Multiplicación de punto flotante
fuego polar 465 847 1312 4 MPF300T 0.44 385 MHz 14
Recursos FPGA Utilización
Familia 4 LUT DFF Total Bloque de matemáticas Dispositivo Porcentajetage Actuación Estado latente
Punto fijo a punto flotante
RTG4™ 264 104 368 0 RT4G150 0.24 160 MHz 3
Punto flotante a punto fijo
RTG4 439 112 551 0 RT4G150 0.36 105 MHz 3
Suma de punto flotante
RTG4 1733 1551 3284 0 RT4G150 1.16 195 MHz 16
Resta de punto flotante
RTG4 1729 1549 3258 0 RT4G150 1.16 190 MHz 16
Multiplicación de punto flotante
RTG4 468 847 1315 4 RT4G150 0.87 175 MHz 14
Recursos FPGA Utilización
Familia 4 LUT DFF Total Bloque de matemáticas Dispositivo Porcentajetage Actuación Estado latente
Punto fijo a punto flotante
PolarFire® 638 201 849 0 MPF300T 0.28 305 MHz 3
Punto flotante a punto fijo
fuego polar 2442 203 2645 0 MPF300T 0.89 110 MHz 3
Suma de punto flotante
fuego polar 5144 4028 9172 0 MPF300T 3.06 240 MHz 16
Resta de punto flotante
fuego polar 5153 4026 9179 0 MPF300T 3.06 250 MHz 16
Multiplicación de punto flotante
fuego polar 1161 3818 4979 16 MPF300T 1.66 340 MHz 27
Recursos FPGA Utilización
Familia 4 LUT DFF Total Bloque de matemáticas Dispositivo Porcentajetage Actuación Estado latente
Punto fijo a punto flotante
RTG4™ 621 201 822 0 RT4G150 0.54 140 MHz 3
Punto flotante a punto fijo
RTG4 1114 203 1215 0 RT4G150 0.86 75 MHz 3
Suma de punto flotante
RTG4 4941 4028 8969 0 RT4G150 5.9 140 MHz 16
Resta de punto flotante
RTG4 5190 4026 9216 0 RT4G150 6.07 130 MHz 16
Multiplicación de punto flotante
RTG4 1165 3818 4983 16 RT4G150 3.28 170 MHz 27

Importante: para aumentar la frecuencia, seleccione la opción Habilitar resincronización en la configuración de síntesis.

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.

MICROCHIP-CoreFPU-Cor-Unidad de punto flotante- (1)

Compatibilidad con microchips FPGA

El grupo de productos FPGA de Microchip respalda sus productos con varios servicios de soporte, incluido el Servicio al cliente, el Centro de soporte técnico al cliente, un websitio y oficinas de ventas en todo el mundo. Se sugiere a los clientes que visiten los recursos en línea de Microchip antes de ponerse en contacto con el soporte, ya que es muy probable que sus consultas ya hayan sido respondidas.
Comuníquese con el Centro de Soporte Técnico a través del websitio en www.microchip.com/support. Mencione el número de pieza del dispositivo FPGA, seleccione la categoría de caso adecuada y cargue el diseño files al crear un caso de soporte técnico.
Comuníquese con el Servicio de atención al cliente para obtener soporte no técnico del producto, como precios de productos, actualizaciones de productos, información actualizada, estado de pedidos y autorización.

  • Desde América del Norte, llame al 800.262.1060
  • Desde el resto del mundo, llame al 650.318.4460
  • Fax, desde cualquier parte del mundo, 650.318.8044

Información del microchip

Marcas comerciales
El nombre y el logotipo de “Microchip”, el logotipo de “M” y otros nombres, logotipos y marcas son marcas comerciales registradas y no registradas de Microchip Technology Incorporated o sus filiales y/o subsidiarias en los Estados Unidos y/o en otros países (“Marcas comerciales de Microchip”). Puede encontrar información sobre las marcas comerciales de Microchip en https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3

Aviso legal
Esta publicación y la información contenida en este documento solo se pueden usar con productos de Microchip, incluso para diseñar, probar e integrar productos de Microchip con su aplicación. El uso de esta información de cualquier otra manera viola estos términos. La información sobre las aplicaciones del dispositivo se proporciona solo para su conveniencia y puede ser reemplazada por actualizaciones. Es su responsabilidad asegurarse de que su aplicación cumpla con sus especificaciones. Comuníquese con su oficina local de ventas de Microchip para obtener soporte adicional u obtenga soporte adicional en www.microchip.com/en-us/support/design-help/client-support-services

MICROCHIP PROPORCIONA ESTA INFORMACIÓN “TAL CUAL”. MICROCHIP NO HACE DECLARACIONES NI OFRECE GARANTÍAS DE NINGÚN TIPO, YA SEAN EXPRESAS O IMPLÍCITAS, ESCRITAS U ORALES, ESTATUTARIAS O DE OTRO TIPO, RELACIONADAS CON LA INFORMACIÓN, INCLUYENDO, ENTRE OTRAS, CUALQUIER GARANTÍA IMPLÍCITA DE NO INFRACCIÓN, COMERCIABILIDAD E IDONEIDAD PARA UN PROPÓSITO PARTICULAR, O GARANTÍAS RELACIONADAS CON SU CONDICIÓN, CALIDAD O DESEMPEÑO.

EN NINGÚN CASO SERÁ MICROCHIP RESPONSABLE POR CUALQUIER PÉRDIDA, DAÑO, COSTO O GASTO INDIRECTO, ESPECIAL, PUNITIVO, INCIDENTAL O CONSECUENTE DE NINGÚN TIPO RELACIONADO CON LA INFORMACIÓN O SU USO, SIN IMPORTAR LA CAUSA, AUNQUE SE HAYA ADVERTIDO A MICROCHIP DE LA POSIBILIDAD O LOS DAÑOS SEAN PREVISIBLES. EN LA MEDIDA EN QUE LO PERMITA LA LEY, LA RESPONSABILIDAD TOTAL DE MICROCHIP POR TODAS LAS RECLAMACIONES RELACIONADAS DE CUALQUIER MANERA CON LA INFORMACIÓN O SU USO NO EXCEDERÁ EL MONTO DE LAS TARIFAS, SI LAS HUBIERE, QUE HAYA PAGADO DIRECTAMENTE A MICROCHIP POR LA INFORMACIÓN.

El uso de dispositivos Microchip en aplicaciones de soporte vital y/o seguridad se realiza por cuenta y riesgo del comprador, y el comprador acepta defender, indemnizar y eximir de responsabilidad a Microchip de todos los daños, reclamaciones, demandas o gastos que resulten de dicho uso. No se transfiere ninguna licencia, implícita o de otro modo, en virtud de ningún derecho de propiedad intelectual de Microchip a menos que se indique lo contrario.

Característica de protección de código de dispositivos de microchip
Tenga en cuenta los siguientes detalles de la función de protección de código en los productos Microchip:

  • Los productos de Microchip cumplen con las especificaciones contenidas en su hoja de datos de Microchip particular.
  • Microchip cree que su familia de productos es segura cuando se utiliza de la manera prevista, dentro de las especificaciones de funcionamiento y en condiciones normales.
  • Microchip valora y protege agresivamente sus derechos de propiedad intelectual. Los intentos de violar las características de protección del código de los productos Microchip están estrictamente prohibidos y pueden violar la Ley de Derechos de Autor del Milenio Digital.
  • Ni Microchip ni ningún otro fabricante de semiconductores puede garantizar la seguridad de su código. La protección del código no significa que garanticemos que el producto sea “irrompible”. La protección del código evoluciona constantemente. Microchip se compromete a mejorar continuamente las características de protección del código de nuestros productos.

Documentos / Recursos

Unidad de punto flotante CoreFPU de MICROCHIP [pdf] Guía del usuario
v3.0, v2.1, v2.0, v1.0, CoreFPU Unidad de punto flotante central, Unidad de punto flotante central, Unidad de punto flotante, Unidad de punto

Referencias

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *