Unitat de coma flotant CoreFPU de MICROCHIP
Introducció
- The Core Floating Point Unit (CoreFPU) is designed for floating-point arithmetic and conversion operations, for single and double precision floating-point numbers. CoreFPU supports fixed-point to floating-point and floating-point to fixed-point conversions and floating-point addition, subtraction, and multiplication operations. The IEEE® Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point computation.
- Important: CoreFPU supports calculations with normalized numbers only, and only the Verilog language is supported; VHDL is not supported.
Resum
La taula següent proporciona un resum de les característiques de CoreFPU.
Taula 1. Característiques de CoreFPU
Versió bàsica | Aquest document s'aplica a CoreFPU v3.0. |
Famílies de dispositius compatibles |
|
Flux d'eines compatibles | Requereix Libero® SoC v12.6 o versions posteriors. |
Llicència | CoreFPU is not license locked. |
Instruccions d'instal·lació | CoreFPU must be installed to the IP Catalog of Libero SoC automatically through the IP Catalog update function. Alternatively, CoreFPU could be manually downloaded from the catalog. Once the IP core is
installed, it is configured, generated and instantiated within SmartDesign for inclusion in the project. |
Ús i rendiment del dispositiu | A summary of utilization and performance information for CoreFPU is listed in Device Resource Utilization and Performance. |
Informació del registre de canvis de CoreFPU
Aquesta secció ofereix una descripció completaview de les funcions recentment incorporades, començant per la versió més recent. Per obtenir més informació sobre els problemes resolts, consulteu la secció Problemes resolts.
Versió | Què hi ha de nou |
v3.0 | Implemented additional output flags to enhance the accuracy of the IP |
v2.1 | Added the double precision feature |
v2.0 | Updated the timing waveforms |
v1.0 | First production release of CoreFPU |
1. Característiques
CoreFPU té les següents característiques clau:
- Supports Single and Double Precision Floating Numbers as per IEEE-754 Standard
- Supports Conversions as listed:
- Conversió de coma fixa a coma flotant
- Floating-point to Fixed-point conversion
- Supports Arithmetic Operations as listed:
- Suma de coma flotant
- Resta de coma flotant
- Multiplicació per coma flotant
- Provides the Rounding Scheme (Round to nearest even) for the Arithmetic Operations only
- Provides Flags for Overflow, Underflow, Infinity (Positive Infinity, Negative Infinity), Quiet NaN (QNaN) and Signalling NaN (SNaN) for Floating-Point Numbers.
- Supports Fully pipelined implementation of Arithmetic Operations
- Provides Provision to configure the Core for Design Requirements
Descripció funcional
- L'estàndard IEEE per a l'aritmètica de coma flotant (IEEE 754) és un estàndard tècnic per al càlcul de coma flotant. El terme coma flotant fa referència al punt de la base del nombre (punt decimal o punt binari), que es col·loca en qualsevol lloc respecte als dígits significatius del nombre.
Un nombre de coma flotant s'expressa normalment en notació científica, amb una fracció (F) i un exponent (E) d'una determinada base (r), en la forma de F × r^E. Els nombres decimals utilitzen una base de 10 (F × 10^E); mentre que els nombres binaris utilitzen una base de 2 (F × 2^E). - La representació del nombre de coma flotant no és única. Per exempleampPer exemple, el nombre 55.66 es representa com a 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3, etc. La part fraccionària està normalitzada. En la forma normalitzada, només hi ha un dígit diferent de zero abans del punt de la base. Per exempleampÉs a dir, el nombre decimal 123.4567 es normalitza com a 1.234567 × 10^2; el nombre binari 1010.1011B es normalitza com a 1.0101011B × 2^3.
- És important tenir en compte que els nombres de coma flotant pateixen pèrdua de precisió quan es representen amb un nombre fix de bits (per exemple,ample, 32-bit or 64-bit). This is because there are an infinite number of real numbers (even within a small range from 0.0 to 0.1). On the other hand, an
n- bit binary pattern represents a finite 2^n distinct numbers. Hence, not all the real numbers are represented. The nearest approximation is used instead, which results in the loss of accuracy.
The single precision floating-point number is represented as follows:
- Sign bit: 1-bit
- Exponent width: 8 bits
- Significand precision: 24 bits (23 bits are explicitly stored)
Figura 2-1. Trama de 32 bits
The double precision floating-point number is represented as follows:
- Sign bit: 1-bit
- Exponent width: 11 bits
- Significand precision: 53 bits (52 bits are explicitly stored)
Figura 2-2. Trama de 64 bits El CoreFPU és la integració de nivell superior dels dos mòduls de conversió (de coma fixa a coma flotant i de coma flotant a coma fixa) i tres operacions aritmètiques (FP ADD, FP SUB i FP MULT). L'usuari pot configurar qualsevol de les operacions segons els requisits, de manera que els recursos s'utilitzin per a l'operació seleccionada.
La figura següent mostra el diagrama de blocs de nivell superior de la CoreFPU amb els ports.
Figura 2-3. Diagrama de blocs dels ports CoreFPU
The following table lists the width of the Input and Output ports. Table 2-1. Input and Output Port Width
Senyal | Amplada de precisió única | Double Precision Width |
ain | [31:0] | [63:0] |
paperera | [31:0] | [63:0] |
fora | [31:0] | [63:0] |
morros | [31:0] | [63:0] |
Fixed-Point to Floating-Point (Conversion)
El CoreFPU configurat com a de coma fixa a coma flotant infereix el mòdul de conversió de coma fixa a coma flotant. L'entrada (ain) a CoreFPU és qualsevol nombre de coma fixa que contingui els bits enters i fraccionaris. El configurador CoreFPU té les opcions per seleccionar les amplades d'entrada d'enter i fracció. L'entrada és vàlida en el senyal di_valid i la sortida és vàlida en do_valid. La sortida (aout) de l'operació de coma fixa a coma flotant és en format de coma flotant de simple o doble precisió.
ExampL'operació de conversió de coma fixa a coma flotant es mostra a la taula següent.
Taula 2-2. Example per a la conversió de coma fixa a coma flotant
Nombre de coma fixa | Nombre de coma flotant | |||||
ain | Nombre sencer | Fracció | fora | Signar | Exponent | Mantissa |
0x12153524 (32-bit) | 00010010000101010 | 011010100100100 | 0x4610a9a9 | 0 | 10001100 | 00100001010100110101001 |
0x0000000000008CCC
(64 bits) |
0000000000000000000000000000000000000000000000001 | 000110011001100 | 0x3FF199999999999A | 0 | 01111111111 | 0001100110011001100110011001100110011001100110011010 |
Floating-Point to Fixed-Point (Conversion)
El CoreFPU configurat com a de coma flotant a coma fixa infereix el mòdul de conversió de coma flotant a coma fixa. L'entrada (ain) al CoreFPU és qualsevol nombre de coma flotant de simple o doble precisió i produeix una sortida (aout) en format de coma fixa que conté bits enters i fraccionaris. L'entrada és vàlida en el senyal di_valid i la sortida és vàlida en do_valid. El configurador CoreFPU té les opcions per seleccionar les amplades d'enter i fracció de sortida.
ExampL'operació de conversió de coma flotant a coma fixa es mostra a la taula següent.
Taula 2-3. Example per a la conversió de coma flotant a coma fixa
Nombre de coma flotant | Nombre de coma fixa | |||||
ain | Signar | Exponent | Mantissa | fora | Nombre sencer | Fracció |
0x41bd6783 (32-bit) | 0 | 10000011 | 01111010110011110000011 | 0x000bd678 | 00000000000010111 | 101011001111000 |
0x4002094c447c30d3
(64 bits) |
0 | 10000000000 | 0010000010010100110001000100011111000011000011010011 | 0 x 0000000000012095 | 0000000000000000000000000000000000000000000000010 | 010000010010101 |
Floating-Point Addition (Arithmetic Operation)
CoreFPU configured as FP ADD infers the floating-point addition module. It adds the two floating-point numbers (ain and bin) and provides the output (pout) in floating-point format. The input and output are single or double precision floating-point numbers. The input is valid on di_valid signal and output is valid on do_valid. The core produce ovfl_fg (Overflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg(Positive Infinity), and ninf_fg (Negative Infinity) flags based on the addition operation.
ExampEls fitxers per a l'operació de suma de coma flotant es llisten a les taules següents.
Taula 2-4. Example per a l'operació de suma de coma flotant (32 bits)
Valor de coma flotant | Signar | Exponent | Mantissa |
Entrada de coma flotant 1 ain (0x4e989680) | 0 | 10011101 | 00110001001011010000000 |
Entrada de coma flotant 2 bin (0x4f191b40) | 0 | 10011110 | 00110010001101101000000 |
Sortida de suma de coma flotant pout (0x4f656680) | 0 | 10011110 | 11001010110011010000000 |
Taula 2-5. Example per a l'operació de suma de coma flotant (64 bits)
Valor de coma flotant | Signar | Exponent | Mantissa |
Floating-point input 1
ain (0x3ff4106ee30caa32) |
0 | 01111111111 | 0100000100000110111011100011000011001010101000110010 |
Floating-point input 2
bin (0x40020b2a78798e61) |
0 | 10000000000 | 0010000010110010101001111000011110011000111001100001 |
Floating-point addition output pout (0x400c1361e9ffe37a) | 0 | 10000000000 | 1100000100110110000111101001111111111110001101111010 |
Floating-Point Subtraction (Arithmetic Operation)
El CoreFPU configurat com a FP SUB infereix el mòdul de subtracció de coma flotant. Resta els dos nombres de coma flotant (ain i bin) i proporciona la sortida (pout) en format de coma flotant. L'entrada i la sortida són nombres de coma flotant de simple o doble precisió. L'entrada és vàlida en el senyal di_valid i la sortida és vàlida en do_valid. El nucli produeix els senyaladors ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) i ninf_fg (Negative Infinity) basats en l'operació de subtracció.
ExampEls fitxers per a l'operació de resta de coma flotant es llisten a les taules següents.
Taula 2-6. Example per a l'operació de subtracció de coma flotant (32 bits)
Valor de coma flotant | Signar | Exponent | Mantissa |
Entrada de coma flotant 1 ain (0xac85465f) | 1 | 01011001 | 00001010100011001011111 |
Entrada de coma flotant 2 bin (0x2f516779) | 0 | 01011110 | 10100010110011101111001 |
Sortida de subtracció de coma flotant pout (0xaf5591ac) | 1 | 01011110 | 10101011001000110101011 |
Valor de coma flotant | Signar | Exponent | Mantissa |
Floating-point input 1
ain (0x405569764adff823) |
0 | 10000000101 | 0101011010010111011001001010110111111111100000100011 |
Floating-point input 2
bin (0x4057d04e78dee3fc) |
0 | 10000000101 | 0111110100000100111001111000110111101110001111111100 |
Floating-point subtraction output pout (0xc02336c16ff75ec8) | 1 | 10000000010 | 0011001101101100000101101111111101110101111011001000 |
Floating-Point Multiplication (Arithmetic Operation)
El CoreFPU configurat com a FP MULT infereix el mòdul de multiplicació de coma flotant. Multiplica els dos nombres de coma flotant (ain i bin) i proporciona la sortida (pout) en format de coma flotant. L'entrada i la sortida són nombres de coma flotant de simple o doble precisió. L'entrada és vàlida en el senyal di_valid i la sortida és vàlida en do_valid. El nucli produeix els senyaladors ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) i ninf_fg (Negative Infinity) basats en l'operació de multiplicació.
ExampEls fitxers per a l'operació de multiplicació en coma flotant es llisten a les taules següents.
Taula 2-8. Example per a l'operació de multiplicació de coma flotant (32 bits)
Valor de coma flotant | Signar | Exponent | Mantissa |
Entrada de coma flotant 1 ain (0x1ec7a735) | 0 | 00111101 | 10001111010011100110101 |
Entrada de coma flotant 2 bin (0x6ecf15e8) | 0 | 11011101 | 10011110001010111101000 |
Sortida de multiplicació de coma flotant pout (0x4e21814a) | 0 | 10011100 | 01000011000000101001010 |
Valor de coma flotant | Signar | Exponent | Mantissa |
Floating-point input 1
ain (0x40c1f5a9930be0df) |
0 | 10000001100 | 0001111101011010100110010011000010111110000011011111 |
Floating-point input 2
bin (0x400a0866c962b501) |
0 | 10000000000 | 1010000010000110011011001001011000101011010100000001 |
Floating-point multiplication output pout (0x40dd38a1c3e2cae9) | 0 | 10000001101 | 1101001110001010000111000011111000101100101011101001 |
Truth Table for Addition and Subtraction
The following truth tables list the values for addition and subtraction operation. Table 2-10. Truth Table for Addition
Dades A | Dades B | Sign Bit | Resultat | Desbordament | Desbordament inferior | 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 |
zero | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
zero | posfinit(y) | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
zero | negfinit(y) | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
zero | posinfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
zero | neginfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit(y) | zero | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posinfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
Taula 2-10. Truth Table for Addition (continued) | |||||||||
Dades A | Dades B | Sign Bit | Resultat | Desbordament | Desbordament inferior | SNaN | QNaN | PINF | NINF |
posfinit | neginfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit(y) | zero | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posinfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit | neginfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
posinfinit | zero | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | posfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | negfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | posinfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | neginfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
neginfinit | zero | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | posfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | negfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | posinfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
neginfinit | neginfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit | posfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | posfinit | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinit | posfinit | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinit | posfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
posfinit | negfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | negfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | posfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | negfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | negfinit | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negfinit | negfinit | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
Dades A | Dades B | Sign Bit | Resultat | Desbordament | Desbordament inferior | 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 |
zero | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
zero | posfinit(y) | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
zero | negfinit(y) | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
zero | posinfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
zero | neginfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit(y) | zero | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posinfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit | neginfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit(y) | zero | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posinfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
Taula 2-11. Truth Table for Subtraction (continued) | |||||||||
Dades A | Dades B | Sign Bit | Resultat | Desbordament | Desbordament inferior | SNaN | QNaN | PINF | NINF |
negfinit | neginfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | zero | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | posfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | negfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | posinfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posinfinit | neginfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
neginfinit | zero | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | posfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | negfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | posinfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | neginfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinit | posfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
posfinit | negfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | negfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | negfinit | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinit | negfinit | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinit | negfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | posfinit | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negfinit | posfinit | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | negfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
Important:
- They in the preceding tables denotes any number.
- The in the preceding tables denotes a don’t care condition.
Truth Table for Multiplication
La taula de veritat següent enumera els valors de l'operació de multiplicació.
Taula 2-12. Taula de veritat per a la multiplicació
Dades A | Dades B | Sign Bit | Resultat | Desbordament | Desbordament inferior | 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 |
zero | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
zero | posfinit | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
zero | negfinit | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
zero | posinfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
zero | neginfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
Taula 2-12. Truth Table for Multiplication (continued) | |||||||||
Dades A | Dades B | Sign Bit | Resultat | Desbordament | Desbordament inferior | SNaN | QNaN | PINF | NINF |
posfinit | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posinfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | neginfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posinfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | neginfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | zero | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posinfinit | posfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | negfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
posinfinit | posinfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinit | neginfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | zero | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
neginfinit | posfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | negfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
neginfinit | posinfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
neginfinit | neginfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | posfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | posfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinit | posfinit | 0 | POSSNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinit | posfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
posfinit | posfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
posfinit | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | negfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit | negfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinit | negfinit | 0 | POSSNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinit | negfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
posfinit | negfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | posfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinit | 1 | neginfinit | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | posfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negfinit | posfinit | 0 | POSSNaN | 0 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | negfinit | 0 | posinfinit | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit | negfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negfinit | negfinit | 0 | POSQNaN | 0 | 0 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | POSQNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | POSQNaN | 0 | 1 | 1 | 0 | 0 | 0 |
Important:
Sign Bit ‘0’ defines positive output and ‘1’ defines negative output.
The x in the preceding table denotes don’t care condition.
Paràmetres i senyals d'interfície de CoreFPU
En aquesta secció es tracten els paràmetres de la configuració del CoreFPU Configurator i els senyals d'E/S.
Paràmetres de la GUI de configuració
Hi ha diverses opcions configurables que s'apliquen a la unitat FPU, tal com es mostra a la taula següent. Si es requereix una configuració diferent de la predeterminada, s'utilitza el quadre de diàleg de configuració per seleccionar els valors adequats per a l'opció configurable.
Taula 3-1. Paràmetres de la GUI de configuració de CoreFPU
Nom del paràmetre | Per defecte | Descripció |
Precisió | Solter | Select the operation as required:
Single Precision |
Tipus de conversió | Conversió de coma fixa a coma flotant | Select the operation as required:
|
Input Fraction Width1 | 15 | Configures the fractional point in the Input ain and bin signals
Valid range is 31–1 |
Output Fraction Width2 | 15 | Configures the fractional point in the Output aout signals
Valid range is 51–1 |
Important:
- This parameter is configurable only during fixed-point to floating-point conversion.
- This parameter is configurable only during floating-point to fixed-point conversion.
Senyals d'entrada i sortida (fer una pregunta)
La taula següent enumera els senyals de port d'entrada i sortida de CoreFPU.
Taula 3-2. Descripció del port
Nom del senyal | Amplada | Tipus | Descripció |
clk | 1 | Entrada | Main system clock |
primer | 1 | Entrada | Active-low asynchronous reset |
di_vàlid | 1 | Entrada | Active-high input valid
This signal indicates that the data present on ain[31:0], ain[63:0] and bin[31:0], bin[63:0] is valid. |
ain | 32/64 | Entrada | A Input Bus (It is used for all operations) |
paperera1 | 32/64 | Entrada | B Input Bus (It is used for arithmetic operations only) |
fora2 | 32/64 | Sortida | Output value when fixed to floating-point or floating to fixed-point conversion operations are selected. |
morros1 | 32/64 | Sortida | Output value when addition, subtraction, or multiplication operations are selected. |
Taula 3-2. Port Description (continued) | |||
Nom del senyal | Amplada | Tipus | Descripció |
do_valid | 1 | Sortida | Active-high signal
Aquest senyal indica que les dades presents al bus de dades pout/aout són vàlides. |
ovfl_fg3 | 1 | Sortida | Active-high signal
Aquest senyal indica el desbordament durant les operacions de coma flotant. |
unfl_fg | 1 | Sortida | Active-high signal
This Signal indicates the underflow during floating point operations. |
qnan_fg3 | 1 | Sortida | Active-high signal
This signal indicates the Quiet Not a Number (QNaN) during floating-point operations. |
snan_fg | 1 | Sortida | Active-high signal
Aquest senyal indica el Signalling Not-a-Number (SNaN) durant les operacions de coma flotant. |
pinf_fg3 | 1 | Sortida | Active-high signal
Aquest senyal indica l'infinit positiu durant les operacions de coma flotant. |
ninf_fg | 1 | Sortida | Active-high signal
Aquest senyal indica l'infinit negatiu durant les operacions de coma flotant. |
Important:
- This port is available only for floating-point addition, subtraction, or multiplication operations.
- This port is available only for fixed-point to floating-point and floating-point to fixed-point conversion operations.
- This port is available for floating-point to fixed-point, floating-point addition, floating-point subtraction, and floating-point multiplication.
Implementació de CoreFPU a Libero Design Suite
Aquesta secció descriu la implementació de CoreFPU a Libero Design Suite.
Disseny intel·ligent
CoreFPU està disponible per descarregar al catàleg Libero IP a través de web repositori. Un cop apareix al catàleg, el nucli s'instancia mitjançant el flux SmartDesign. Per obtenir informació sobre com utilitzar SmartDesign per configurar, connectar i generar nuclis, consulteu l'ajuda en línia de Libero SoC.
Després de configurar i generar la instància principal, la funcionalitat bàsica es simula mitjançant el banc de proves subministrat amb la CoreFPU. Els paràmetres del banc de proves s'ajusten automàticament a la configuració de la CoreFPU. La CoreFPU s'instancia com a component d'un disseny més gran.
Figura 4-1. Instància de SmartDesign CoreFPU per a operacions aritmètiques
Figura 4-2. Instància de SmartDesign CoreFPU per a l'operació de conversió
Fixed-Point to Floating-Point Conversion
Durant la conversió de coma fixa a coma flotant, l'amplada de la fracció d'entrada és configurable. L'amplada de sortida es defineix per defecte a 32 bits per a coma flotant de simple precisió i a 64 bits per a coma flotant de doble precisió.
Per convertir de coma fixa a coma flotant, seleccioneu el tipus de conversió de coma fixa a coma flotant, tal com es mostra a la figura següent.
De coma flotant a coma fixa
Durant la conversió de coma flotant a coma fixa, l'amplada fraccionària de sortida és configurable i l'amplada d'entrada es defineix per defecte a 32 bits per a coma flotant de simple precisió i 64 bits per a coma flotant de doble precisió.
Per convertir de coma flotant a coma fixa, seleccioneu el tipus de conversió de coma flotant a fixa, tal com es mostra a la figura següent.
Figura 4-4. Configurador CoreFPU per a coma flotant a fix Floating-Point Addition/Subtraction/Multiplication
During floating-point addition, subtraction, and multiplication operation, the Input Fraction Width and Output Fraction Width are not configurable as these are floating-point arithmetic operations, and the Input/Output Width is set to 32-bit single precision and 64-bit for double precision floating-point by default.
The following figure shows the CoreFPU configurator for floating point subtraction operation.
Figura 4-5. Configurador CoreFPU per a la resta de coma flotantSimulació (fer una pregunta)
Per executar simulacions, a la finestra de configuració del nucli, seleccioneu Banc de proves d'usuari. Després de generar el CoreFPU, el banc de proves previ a la síntesi s'utilitzarà en Llenguatge de descripció de maquinari (HDL). files estan instal·lats a Libero.
Formes d'ona de simulació (feu una pregunta)
Aquesta secció tracta les formes d'ona de simulació per a CoreFPU.
Les figures següents mostren la forma d'ona de la conversió de coma fixa a coma flotant tant per a 32 bits com per a 64 bits.
Integració de sistemes
La figura següent mostra un example d'utilitzar el nucli. En aquest exempleampÉs a dir, la UART de disseny s'utilitza com a canal de comunicació entre el disseny i el PC amfitrió. Els senyals ain i bin (cadascun d'amplada de 32 bits o 64 bits) són les entrades al disseny des de la UART. Després que la CoreFPU rebi el senyal di_valid, calcula el resultat. Després de calcular el resultat, el senyal do_valid s'activa i emmagatzema el resultat (dades aout/pout) a la memòria intermèdia de sortida. Aquest mateix procediment s'aplica a les operacions de conversió i aritmètiques. Per a les operacions de conversió, només l'entrada ain és suficient, mentre que per a les operacions aritmètiques, es requereixen tant les entrades ain com bin. La sortida aout està habilitada per a les operacions de conversió i el port pout està habilitat per a les operacions aritmètiques.
Figura 4-16. Exampdel sistema CoreFPU
- Síntesi (Fes una pregunta)
Per executar la síntesi a la CoreFPU, definiu l'arrel del disseny a la instància del component IP i, des del panell de flux de disseny de Libero, executeu l'eina Síntesi.
Lloc i ruta (Fes una pregunta)
After the design is synthesized, run the Place-and-Route tool. CoreFPU requires no special placeand- route settings. - Banc de proves d'usuari (feu una pregunta)
Amb la versió CoreFPU IP es proporciona un banc de proves d'usuari. Amb aquest banc de proves, podeu verificar el comportament funcional de CoreFPU.
A simplified block diagram of the user testbench is shown in the following figure. The user testbench instantiates the Configured CoreFPU design (UUT), and includes behavioral test data generator, necessary clock, and reset signals.
Figura 4-17. Banc de proves d'usuari de CoreFPU
Important: You have to monitor the output signals in ModelSim simulator, see Simulation section.
Referències addicionals (Feu una pregunta)
Aquesta secció proporciona una llista amb informació addicional.
Per obtenir actualitzacions i informació addicional sobre el programari, els dispositius i el maquinari, visiteu el
Pàgines de propietat intel·lectual sobre els FPGA i PLD Microchip weblloc.
- Known Issues and Workarounds (Ask a Question)
No hi ha problemes ni solucions conegudes per a CoreFPU v3.0. - Discontinued Features and Devices (Ask a Question)
No hi ha funcions ni dispositius descontinuats amb aquesta versió IP.
Glossari
La següent és la llista de termes i definicions utilitzats en el document.
Taula 6-1. Termes i definicions
Terme | Definició |
FPU | Unitat de coma flotant |
FP ADD | Suma de coma flotant |
FP SUB | Resta de coma flotant |
FP MULT | Multiplicació de coma flotant |
Problemes resolts
La taula següent enumera tots els problemes resolts per a les diverses versions de CoreFPU.
Taula 7-1. Problemes resolts
Alliberament | Descripció |
3.0 | La següent és la llista de tots els problemes resolts a la versió v3.0:
Case Number: 01420387 and 01422128 Added the rounding scheme logic (round to the nearest even number). |
2.1 | La següent és la llista de tots els problemes resolts a la versió v2.1: The design encounters issues due to the presence of duplicate modules when multiple cores are instantiated. Renaming the CoreFPU IP instance results in an “Undefined module” error. |
1.0 | Alliberament inicial |
Utilització i rendiment dels recursos del dispositiu
La macro CoreFPU s'implementa a les famílies que s'enumeren a la taula següent.
Taula 8-1. Utilització del dispositiu de la unitat FPU PolarFire per a 32 bits
Recursos FPGA | Ús | |||||||
Família | 4LUT | DFF | Total | Math Block | Dispositiu | Percenttage | Rendiment | Latència |
De punt fix a punt flotant | ||||||||
PolarFire® | 260 | 104 | 364 | 0 | MPF300T | 0.12 | 310 MHz | 3 |
De coma flotant a coma fixa | ||||||||
PolarFire | 591 | 102 | 693 | 0 | MPF300T | 0.23 | 160 MHz | 3 |
Suma de coma flotant | ||||||||
PolarFire | 1575 | 1551 | 3126 | 0 | MPF300T | 1.06 | 340 MHz | 16 |
Resta de coma flotant | ||||||||
PolarFire | 1561 | 1549 | 3110 | 0 | MPF300T | 1.04 | 345 MHz | 16 |
Multiplicació de coma flotant | ||||||||
PolarFire | 465 | 847 | 1312 | 4 | MPF300T | 0.44 | 385 MHz | 14 |
Recursos FPGA | Ús | |||||||
Família | 4LUT | DFF | Total | Math Block | Dispositiu | Percenttage | Rendiment | Latència |
De punt fix a punt flotant | ||||||||
RTG4™ | 264 | 104 | 368 | 0 | RT4G150 | 0.24 | 160 MHz | 3 |
De coma flotant a coma fixa | ||||||||
RTG4 | 439 | 112 | 551 | 0 | RT4G150 | 0.36 | 105 MHz | 3 |
Suma de coma flotant | ||||||||
RTG4 | 1733 | 1551 | 3284 | 0 | RT4G150 | 1.16 | 195 MHz | 16 |
Resta de coma flotant | ||||||||
RTG4 | 1729 | 1549 | 3258 | 0 | RT4G150 | 1.16 | 190 MHz | 16 |
Multiplicació de coma flotant | ||||||||
RTG4 | 468 | 847 | 1315 | 4 | RT4G150 | 0.87 | 175 MHz | 14 |
Recursos FPGA | Ús | |||||||
Família | 4LUT | DFF | Total | Math Block | Dispositiu | Percenttage | Rendiment | Latència |
De punt fix a punt flotant | ||||||||
PolarFire® | 638 | 201 | 849 | 0 | MPF300T | 0.28 | 305 MHz | 3 |
De coma flotant a coma fixa | ||||||||
PolarFire | 2442 | 203 | 2645 | 0 | MPF300T | 0.89 | 110 MHz | 3 |
Suma de coma flotant | ||||||||
PolarFire | 5144 | 4028 | 9172 | 0 | MPF300T | 3.06 | 240 MHz | 16 |
Resta de coma flotant | ||||||||
PolarFire | 5153 | 4026 | 9179 | 0 | MPF300T | 3.06 | 250 MHz | 16 |
Multiplicació de coma flotant | ||||||||
PolarFire | 1161 | 3818 | 4979 | 16 | MPF300T | 1.66 | 340 MHz | 27 |
Recursos FPGA | Ús | |||||||
Família | 4LUT | DFF | Total | Math Block | Dispositiu | Percenttage | Rendiment | Latència |
De punt fix a punt flotant | ||||||||
RTG4™ | 621 | 201 | 822 | 0 | RT4G150 | 0.54 | 140 MHz | 3 |
De coma flotant a coma fixa | ||||||||
RTG4 | 1114 | 203 | 1215 | 0 | RT4G150 | 0.86 | 75 MHz | 3 |
Suma de coma flotant | ||||||||
RTG4 | 4941 | 4028 | 8969 | 0 | RT4G150 | 5.9 | 140 MHz | 16 |
Resta de coma flotant | ||||||||
RTG4 | 5190 | 4026 | 9216 | 0 | RT4G150 | 6.07 | 130 MHz | 16 |
Multiplicació de coma flotant | ||||||||
RTG4 | 1165 | 3818 | 4983 | 16 | RT4G150 | 3.28 | 170 MHz | 27 |
Important: To increase the frequency, select Enable retiming option in synthesis setting.
Historial de revisions
L'historial de revisions descriu els canvis que es van implementar al document. Els canvis s'enumeren per revisió, començant per la publicació més actual.
Suport de microxip FPGA
El grup de productes Microchip FPGA avala els seus productes amb diversos serveis d'assistència, inclòs el servei d'atenció al client, el centre de suport tècnic al client, un weblloc web i oficines de vendes a tot el món. Es recomana als clients que visitin els recursos en línia de Microxip abans de contactar amb el servei d'assistència, ja que és molt probable que les seves consultes ja hagin estat respostes.
Poseu-vos en contacte amb el centre d'assistència tècnica a través de weblloc a www.microchip.com/support. Esmenteu el número de peça del dispositiu FPGA, seleccioneu la categoria de cas adequada i pengeu el disseny files mentre es crea un cas de suport tècnic.
Poseu-vos en contacte amb el servei d'atenció al client per obtenir assistència no tècnica del producte, com ara preus del producte, actualitzacions del producte, informació d'actualització, estat de la comanda i autorització.
- Des d'Amèrica del Nord, truqueu al 800.262.1060
- Des de la resta del món, truqueu al 650.318.4460
- Fax, des de qualsevol part del món, 650.318.8044
Informació del microxip
Marques comercials
El nom i el logotip "Microxip", el logotip "M" i altres noms, logotips i marques són marques registrades i no registrades de Microchip Technology Incorporated o les seves filials i/o filials als Estats Units i/o altres països ("Marques comercials de Microchip"). Podeu trobar informació sobre les marques comercials de Microxip a https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3
Avís Legal
Aquesta publicació i la informació que s'hi inclou només es poden utilitzar amb productes Microchip, inclòs per dissenyar, provar i integrar productes Microchip amb la vostra aplicació. L'ús d'aquesta informació de qualsevol altra manera viola aquests termes. La informació sobre les aplicacions del dispositiu només es proporciona per a la vostra comoditat i pot ser substituïda per actualitzacions. És la vostra responsabilitat assegurar-vos que la vostra aplicació compleix les vostres especificacions. Poseu-vos en contacte amb l'oficina local de vendes de Microxip per obtenir assistència addicional o, per obtenir assistència addicional a www.microchip.com/en-us/support/design-help/client-support-services
AQUESTA INFORMACIÓ ÉS PROPORCIONADA PER MICROCHIP "TAL CUAL". MICROCHIP NO FA REPRESENTACIONS NI GARANTIES DE CAP TIPUS, JA SIGUI EXPRESSES O IMPLÍCITES, ESCRITS O ORALS, LEGALS O D'ALTRE ALTRE, RELACIONATS AMB LA INFORMACIÓ INCLOSA, PERÒ NO LIMITADA A CAP GARANTIA IMPLÍCITA DE NO INFRACCIÓ, COMERCIABILITAT I COMERCIALITZACIÓ, COMERCIALITZACIÓ I COMERCIALITZACIÓ. GARANTIES RELACIONATS AMB EL SEU ESTAT, QUALITAT O RENDIMENT.
EN CAP CAS, MICROCHIP SERÀ RESPONSABLE DE CAP PÈRDUA INDIRECTA, ESPECIAL, PUNITIVA, INCIDENTAL O CONSEQUENTAL, DANNY, COST O DESPESA DE QUALSEVOL TIPUS RELACIONATS AMB LA INFORMACIÓ O EL SEU ÚS, SEGUI QUE SIEMPRE CAUSAT, FINS I TOT QUÈ SIGUI AIXÒ. POSSIBILITAT O ELS DANYS SÓN PREVISIBLES. EN LA MÀXIMA MESURA PERMETIDA PER LA LLEI, LA RESPONSABILITAT TOTAL DE MICROCHIP EN TOTES LES RECLAMACIONS DE QUALSEVOL MANERA RELACIONADAS AMB LA INFORMACIÓ O EL SEU ÚS NO SUPERARÀ L'IMPORT DE LES TARIFES, SI N'HEU, QUE HEU PAGAT DIRECTAMENT A MICROCHIP PER A LA INFORMACIÓ.
L'ús de dispositius Microxip en aplicacions de suport vital i/o seguretat és totalment a risc del comprador, i el comprador es compromet a defensar, indemnitzar i excloure Microxip de qualsevol dany, reclamació, demanda o despeses derivades d'aquest ús. No es transmet cap llicència, implícita o d'una altra manera, sota cap dret de propietat intel·lectual de Microxip tret que s'indiqui el contrari.
Funció de protecció de codi de dispositius de microxip
Tingueu en compte els detalls següents de la funció de protecció del codi als productes Microxip:
- Els productes de microxip compleixen les especificacions contingudes a la seva fitxa de dades particular de microxip.
- Microxip creu que la seva família de productes és segura quan s'utilitza de la manera prevista, dins de les especificacions de funcionament i en condicions normals.
- Microxip valora i protegeix de manera agressiva els seus drets de propietat intel·lectual. Els intents d'infringir les funcions de protecció del codi dels productes Microxip estan estrictament prohibits i poden infringir la Llei de drets d'autor de Digital Millennium.
- Ni Microchip ni cap altre fabricant de semiconductors poden garantir la seguretat del seu codi. La protecció del codi no vol dir que estem garantint que el producte sigui "irrompible". La protecció del codi està en constant evolució. Microxip es compromet a millorar contínuament les funcions de protecció del codi dels nostres productes.
Documents/Recursos
![]() |
Unitat de coma flotant CoreFPU de MICROCHIP [pdfGuia de l'usuari v3.0, v2.1, v2.0, v1.0, CoreFPU Unitat de coma flotant del nucli, Unitat de coma flotant del nucli, Unitat de coma flotant, Unitat de punt |