MICROCHIP CoreFPU Core flydende komma-enhed
Indledning
- Core Floating Point Unit (CoreFPU) er designet til flydende-kommaritmetik og konverteringsoperationer, til flydende-kommatal med enkelt og dobbelt præcision. CoreFPU understøtter konverteringer fra fast komma til flydende-komma og fra flydende-komma til fast komma samt addition, subtraktion og multiplikation med flydende-komma. IEEE® Standard for Floating-Point Arithmetic (IEEE 754) er en teknisk standard for flydende-kommaberegning.
- Vigtigt: CoreFPU understøtter kun beregninger med normaliserede tal, og kun Verilog-sproget understøttes; VHDL understøttes ikke.
Oversigt
Følgende tabel giver en oversigt over CoreFPU'ens egenskaber.
Tabel 1. CoreFPU-karakteristika
Kerneversion | Dette dokument gælder for CoreFPU v3.0. |
Understøttede enhedsfamilier |
|
Understøttet værktøjsflow | Kræver Libero® SoC v12.6 eller nyere udgivelser. |
Licensering | CoreFPU er ikke licenslåst. |
Installationsvejledning | CoreFPU skal installeres automatisk i IP-kataloget for Libero SoC via IP-katalogopdateringsfunktionen. Alternativt kan CoreFPU downloades manuelt fra kataloget. Når IP-kernen er
Når den er installeret, konfigureres, genereres og instantieres den i SmartDesign til inkludering i projektet. |
Enhedsudnyttelse og ydeevne | En oversigt over udnyttelses- og ydeevneoplysninger for CoreFPU findes i Enhedsressourceudnyttelse og ydeevne. |
Oplysninger om CoreFPU-ændringslog
Dette afsnit giver en omfattende overview af de nyligt indarbejdede funktioner, startende med den seneste udgivelse. For mere information om de løste problemer, se afsnittet Løste problemer.
Version | Hvad er nyt |
v3.0 | Implementerede yderligere outputflag for at forbedre nøjagtigheden af IP'en |
v2.1 | Tilføjet funktionen med dobbelt præcision |
v2.0 | Opdaterede timingbølgeformerne |
v1.0 | Første produktionsudgivelse af CoreFPU |
1. Funktioner
CoreFPU har følgende nøglefunktioner:
- Understøtter enkelt- og dobbeltpræcisionsflydende tal i henhold til IEEE-754-standarden
- Understøtter konverteringer som anført:
- Konvertering fra fast komma til flydende komma
- Konvertering fra flydende komma til fast komma
- Understøtter aritmetiske operationer som anført:
- Flydende komma-addition
- Flydende komma-subtraktion
- Flydende komma-multiplikation
- Angiver afrundingsskemaet (afrund til nærmeste lige) kun for aritmetiske operationer.
- Giver flag for overløb, underløb, uendelighed (positiv uendelighed, negativ uendelighed), stille NaN (QNaN) og signalerende NaN (SNaN) for flydende tal.
- Understøtter fuldt pipeline-implementering af aritmetiske operationer
- Giver mulighed for at konfigurere kernen til designkrav
Funktionsbeskrivelse
- IEEE-standarden for floating-point aritmetik (IEEE 754) er en teknisk standard for flydende kommaberegning. Udtrykket flydende komma refererer til radixkommaet for et tal (decimalkomma eller binært komma), som er placeret et vilkårligt sted i forhold til tallets betydende cifre.
Et flydende tal udtrykkes typisk i videnskabelig notation med en brøkdel (F) og en eksponent (E) af et bestemt radix (r) i formen F × r^E. Decimaltal bruger radix på 10 (F × 10^E); mens binære tal bruger radix på 2 (F × 2^E). - Repræsentationen af flydende kommatal er ikke entydig. For eksempelampf.eks. er tallet 55.66 repræsenteret som 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3 osv. Brøkdelen er normaliseret. I den normaliserede form er der kun et enkelt ciffer, der ikke er nul, før radixpunktet. For eksempelampf.eks. er decimaltallet 123.4567 normaliseret som 1.234567 × 10^2; det binære tal 1010.1011B er normaliseret som 1.0101011B × 2^3.
- Det er vigtigt at bemærke, at flydende kommatal mister præcision, når de repræsenteres med et fast antal bits (f.eks.ampf.eks. 32-bit eller 64-bit). Dette skyldes, at der er et uendeligt antal reelle tal (selv inden for et lille område fra 0.0 til 0.1). På den anden side er en
Et n-bit binært mønster repræsenterer et endeligt antal på 2^n forskellige tal. Derfor er ikke alle reelle tal repræsenteret. I stedet anvendes den nærmeste tilnærmelse, hvilket resulterer i tab af nøjagtighed.
Det enkelte præcisionsflydende tal er repræsenteret som følger:
- Tegnbit: 1-bit
- Eksponentbredde: 8 bit
- Signifikanspræcision: 24 bit (23 bit er eksplicit gemt)
Figur 2-1. 32-bit ramme
Det dobbeltpræcisionsflydende tal er repræsenteret som følger:
- Tegnbit: 1-bit
- Eksponentbredde: 11 bit
- Signifikanspræcision: 53 bit (52 bit er eksplicit gemt)
Figur 2-2. 64-bit ramme CoreFPU er den øverste integration af de to konverteringsmoduler (Fixed to Float point og Float to Fixed point) og tre aritmetiske operationer (FP ADD, FP SUB og FP MULT). Brugeren kan konfigurere en hvilken som helst af operationerne baseret på kravet, så ressourcerne udnyttes til den valgte operation.
Følgende figur viser CoreFPU-blokdiagrammet med porte på øverste niveau.
Figur 2-3. Blokdiagram over CoreFPU-porte
Følgende tabel viser bredden af input- og outputportene. Tabel 2-1. Bredde af input- og outputporte
Signal | Enkel præcisionsbredde | Dobbelt præcisionsbredde |
ain | [31:0] | [63:0] |
beholder | [31:0] | [63:0] |
ud | [31:0] | [63:0] |
trutmund | [31:0] | [63:0] |
Konvertering fra fast komma til flydende komma
CoreFPU konfigureret som fast til flydende komma udleder konverteringsmodulet fra fast komma til flydende komma. Inputtet (ain) til CoreFPU er et hvilket som helst fast kommatal, der indeholder heltal- og brøkbits. CoreFPU-konfiguratoren har muligheder for at vælge inputbredder for heltal og brøk. Inputtet er gyldigt på di_valid-signalet, og outputtet er gyldigt på do_valid. Outputtet (aout) fra operationen med fast til flydende komma er i enkelt- eller dobbeltpræcisionsformat med flydende komma.
ExampFunktionen for konvertering fra fast komma til flydende komma er angivet i følgende tabel.
Tabel 2-2. Eksample for konvertering fra fast komma til flydende komma
Fastpunktsnummer | Flydende kommatal | |||||
ain | Heltal | Brøk | ud | Tegn | Eksponent | Mantissa |
0x12153524 (32-bit) | 00010010000101010 | 011010100100100 | 0x4610a9a9 | 0 | 10001100 | 00100001010100110101001 |
0x0000000000008CCC
(64-bit) |
0000000000000000000000000000000000000000000000001 | 000110011001100 | 0x3FF199999999999A | 0 | 01111111111 | 0001100110011001100110011001100110011001100110011010 |
Flydende komma til fast komma (konvertering)
CoreFPU konfigureret som flydende til fast komma udleder konverteringsmodulet fra flydende komma til fast komma. Inputtet (ain) til CoreFPU er et hvilket som helst flydende komma med enkelt eller dobbelt præcision og producerer et output (aout) i fast kommaformat, der indeholder heltal og brøkdele. Inputtet er gyldigt på di_valid-signalet, og outputtet er gyldigt på do_valid. CoreFPU-konfiguratoren har muligheder for at vælge outputbredder for heltal og brøkdele.
ExampFunktionen for konvertering fra flydende komma til fast komma er angivet i følgende tabel.
Tabel 2-3. Eksample for konvertering fra flydende komma til fast komma
Flydende kommatal | Fastpunktsnummer | |||||
ain | Tegn | Eksponent | Mantissa | ud | Heltal | Brøk |
0x41bd6783 (32-bit) | 0 | 10000011 | 01111010110011110000011 | 0x000bd678 | 00000000000010111 | 101011001111000 |
0x4002094c447c30d3
(64-bit) |
0 | 10000000000 | 0010000010010100110001000100011111000011000011010011 | 0x0000000000012095 | 0000000000000000000000000000000000000000000000010 | 010000010010101 |
Flydende kommaaddition (aritmetisk operation)
CoreFPU konfigureret som FP ADD udleder flydende-komma-additionsmodulet. Det lægger de to flydende-komma-tal (ain og bin) sammen og leverer outputtet (pout) i flydende-komma-format. Input og output er flydende-komma-tal med enkelt eller dobbelt præcision. Inputtet er gyldigt på di_valid-signalet, og outputtet er gyldigt på do_valid. Kernen producerer ovfl_fg (Overflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) og ninf_fg (Negative Infinity)-flag baseret på additionsoperationen.
ExampFunktioner til flydende-komma-addition er angivet i de følgende tabeller.
Tabel 2-4. Eksample til flydende komma-additionsoperation (32-bit)
Flydende kommaværdi | Tegn | Eksponent | Mantissa |
Flydende komma-input 1 ain (0x4e989680) | 0 | 10011101 | 00110001001011010000000 |
Flydende komma-input 2 bin (0x4f191b40) | 0 | 10011110 | 00110010001101101000000 |
Flydende komma-additionsudgang (0x4f656680) | 0 | 10011110 | 11001010110011010000000 |
Tabel 2-5. Eksample til flydende komma-additionsoperation (64-bit)
Flydende kommaværdi | Tegn | Eksponent | Mantissa |
Flydende kommaindgang 1
ain (0x3ff4106ee30caa32) |
0 | 01111111111 | 0100000100000110111011100011000011001010101000110010 |
Flydende kommaindgang 2
bin (0x40020b2a78798e61) |
0 | 10000000000 | 0010000010110010101001111000011110011000111001100001 |
Flydende komma-additionsudgang (0x400c1361e9ffe37a) | 0 | 10000000000 | 1100000100110110000111101001111111111110001101111010 |
Flydende komma-subtraktion (aritmetisk operation)
CoreFPU konfigureret som FP SUB udleder flydende-komma-subtraktionsmodulet. Det subtraherer de to flydende-komma-tal (ain og bin) og leverer outputtet (pout) i flydende-komma-format. Input og output er flydende-komma-tal med enkelt eller dobbelt præcision. Inputtet er gyldigt på di_valid-signalet, og outputtet er gyldigt på do_valid. Kernen producerer ovfl_fg (Overflow), unfl_fg (underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) og ninf_fg (Negative Infinity)-flag baseret på subtraktionsoperationen.
ExampFunktioner til subtraktion med flydende komma er angivet i de følgende tabeller.
Tabel 2-6. Eksample til flydende komma-subtraktionsoperation (32-bit)
Flydende kommaværdi | Tegn | Eksponent | Mantissa |
Flydende kommaindgang 1 ain (0xac85465f) | 1 | 01011001 | 00001010100011001011111 |
Flydende komma-input 2 bin (0x2f516779) | 0 | 01011110 | 10100010110011101111001 |
Flydende komma-subtraktionsoutput pout (0xaf5591ac) | 1 | 01011110 | 10101011001000110101011 |
Flydende kommaværdi | Tegn | Eksponent | Mantissa |
Flydende kommaindgang 1
ain (0x405569764adff823) |
0 | 10000000101 | 0101011010010111011001001010110111111111100000100011 |
Flydende kommaindgang 2
bin (0x4057d04e78dee3fc) |
0 | 10000000101 | 0111110100000100111001111000110111101110001111111100 |
Flydende komma-subtraktionsoutput pout (0xc02336c16ff75ec8) | 1 | 10000000010 | 0011001101101100000101101111111101110101111011001000 |
Flydende kommamultiplikation (aritmetisk operation)
CoreFPU konfigureret som FP MULT udleder flydende-komma-multiplikationsmodulet. Det multiplicerer de to flydende-komma-tal (ain og bin) og leverer outputtet (pout) i flydende-komma-format. Input og output er flydende-komma-tal med enkelt eller dobbelt præcision. Inputtet er gyldigt på di_valid-signalet, og outputtet er gyldigt på do_valid. Kernen producerer flag af typen ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) og ninf_fg (Negative Infinity) baseret på multiplikationsoperationen.
ExampFunktioner til multiplikation med flydende komma er angivet i de følgende tabeller.
Tabel 2-8. Eksample til flydende komma-multiplikationsoperation (32-bit)
Flydende kommaværdi | Tegn | Eksponent | Mantissa |
Flydende kommaindgang 1 ain (0x1ec7a735) | 0 | 00111101 | 10001111010011100110101 |
Flydende komma-input 2 bin (0x6ecf15e8) | 0 | 11011101 | 10011110001010111101000 |
Flydende komma-multiplikationsoutput pout (0x4e21814a) | 0 | 10011100 | 01000011000000101001010 |
Flydende kommaværdi | Tegn | Eksponent | Mantissa |
Flydende kommaindgang 1
ain (0x40c1f5a9930be0df) |
0 | 10000001100 | 0001111101011010100110010011000010111110000011011111 |
Flydende kommaindgang 2
bin (0x400a0866c962b501) |
0 | 10000000000 | 1010000010000110011011001001011000101011010100000001 |
Flydende komma-multiplikationsoutput pout (0x40dd38a1c3e2cae9) | 0 | 10000001101 | 1101001110001010000111000011111000101100101011101001 |
Sandhedstabel for addition og subtraktion
Følgende sandhedstabeller viser værdierne for additions- og subtraktionsoperationer. Tabel 2-10. Sandhedstabel for addition
Data A | Data B | Sign Bit | Resultat | Flyde over | Underløb | 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 |
nul | nul | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
nul | posfinit(y) | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
nul | negfinit(y) | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
nul | posinfinite | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
nul | nefindelig | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit(y) | nul | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posinfinite | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
Tabel 2-10. Sandhedstabel for addition (fortsat) | |||||||||
Data A | Data B | Sign Bit | Resultat | Flyde over | Underløb | SNaN | QNaN | PINF | NINF |
posfinitiv | nefindelig | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit(y) | nul | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posinfinite | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit | nefindelig | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
posinfinite | nul | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | posfinitiv | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | negfinit | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | posinfinite | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | nefindelig | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
nefindelig | nul | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | posfinitiv | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | negfinit | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | posinfinite | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
nefindelig | nefindelig | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
posfinitiv | posfinitiv | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posfinitiv | posfinitiv | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinitiv | posfinitiv | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | posfinitiv | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinitiv | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinitiv | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | negfinit | 1 | nefindelig | 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 |
Data A | Data B | Sign Bit | Resultat | Flyde over | Underløb | 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 |
nul | nul | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
nul | posfinit(y) | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
nul | negfinit(y) | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
nul | posinfinite | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nul | nefindelig | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit(y) | nul | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posinfinite | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
posfinitiv | nefindelig | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit(y) | nul | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posinfinite | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
Tabel 2-11. Sandhedstabel for subtraktion (fortsat) | |||||||||
Data A | Data B | Sign Bit | Resultat | Flyde over | Underløb | SNaN | QNaN | PINF | NINF |
negfinit | nefindelig | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | nul | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | posfinitiv | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | negfinit | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | posinfinite | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posinfinite | nefindelig | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
nefindelig | nul | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | posfinitiv | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | negfinit | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | posinfinite | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | nefindelig | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinitiv | posfinitiv | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posfinitiv | negfinit | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinitiv | negfinit | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinitiv | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinitiv | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | posfinitiv | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negfinit | posfinitiv | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinitiv | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | posfinitiv | 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 |
Vigtig:
- De i de foregående tabeller angiver et hvilket som helst tal.
- I de foregående tabeller angiver en ligeglad-tilstand.
Sandhedstabel for multiplikation
Følgende sandhedstabel viser værdierne for multiplikationsoperationen.
Tabel 2-12. Sandhedstabel for multiplikation
Data A | Data B | Sign Bit | Resultat | Flyde over | Underløb | 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 |
nul | nul | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
nul | posfinitiv | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
nul | negfinit | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
nul | posinfinite | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
nul | nefindelig | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
Tabel 2-12. Sandhedstabel for multiplikation (fortsat) | |||||||||
Data A | Data B | Sign Bit | Resultat | Flyde over | Underløb | SNaN | QNaN | PINF | NINF |
posfinitiv | nul | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posinfinite | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posfinitiv | nefindelig | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | nul | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posinfinite | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | nefindelig | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | nul | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posinfinite | posfinitiv | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | negfinit | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
posinfinite | posinfinite | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posinfinite | nefindelig | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | nul | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
nefindelig | posfinitiv | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | negfinit | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
nefindelig | posinfinite | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
nefindelig | nefindelig | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posfinitiv | posfinitiv | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 0 | posinfinite | 0 | 0 | 0 | 0 | 1 | 0 |
posfinitiv | posfinitiv | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinitiv | posfinitiv | 0 | POSSNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | posfinitiv | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
posfinitiv | negfinit | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinitiv | negfinit | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
posfinitiv | negfinit | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
posfinitiv | negfinit | 0 | POSSNaN | 0 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
posfinitiv | negfinit | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | posfinitiv | 1 | negfinit | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | posfinitiv | 1 | nefindelig | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | posfinitiv | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negfinit | posfinitiv | 0 | POSSNaN | 0 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinitiv | 0 | POSSNaN | 1 | 0 | 1 | 0 | 0 | 0 |
negfinit | posfinitiv | 0 | POSSNaN | 0 | 1 | 1 | 0 | 0 | 0 |
negfinit | negfinit | 0 | posfinitiv | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | negfinit | 0 | posinfinite | 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 |
Vigtig:
Fortegnsbit '0' definerer positiv udgang, og '1' definerer negativ udgang.
X'et i den foregående tabel angiver en "ligegyldig"-betingelse.
CoreFPU-parametre og grænsefladesignaler
Dette afsnit omhandler parametrene i CoreFPU Configurator-indstillingerne og I/O-signalerne.
Konfiguration GUI-parametre
Der er et antal konfigurerbare indstillinger, der gælder for FPU-enheden, som vist i følgende tabel. Hvis en anden konfiguration end standardkonfigurationen er påkrævet, bruges konfigurationsdialogboksen til at vælge passende værdier for den konfigurerbare indstilling.
Tabel 3-1. CoreFPU-konfigurationsparametre for brugergrænsefladen
Parameternavn | Misligholdelse | Beskrivelse |
Præcision | Enkelt | Vælg den ønskede handling:
Enkelt præcision |
Konverteringstype | Konvertering fra fast komma til flydende komma | Vælg den ønskede handling:
|
Inputfraktionsbredde1 | 15 | Konfigurerer brøkpunktet i input ain- og bin-signalerne
Gyldigt interval er 31–1 |
Outputfraktionsbredde2 | 15 | Konfigurerer brøkpunktet i outputsignalerne
Gyldigt interval er 51–1 |
Vigtig:
- Denne parameter kan kun konfigureres under konvertering fra fast komma til flydende komma.
- Denne parameter kan kun konfigureres under konvertering fra flydende komma til fast komma.
Input- og outputsignaler (stil et spørgsmål)
Følgende tabel viser input- og outputportsignalerne for CoreFPU.
Tabel 3-2. Portbeskrivelse
Signal navn | Bredde | Type | Beskrivelse |
clk | 1 | Input | Hovedsystemur |
rstn | 1 | Input | Aktiv-lav asynkron nulstilling |
di_gyldig | 1 | Input | Aktiv-høj input gyldig
Dette signal indikerer, at dataene på ain[31:0], ain[63:0] og bin[31:0], bin[63:0] er gyldige. |
ain | 32/64 | Input | En indgangsbus (den bruges til alle operationer) |
beholder1 | 32/64 | Input | B Input Bus (den bruges kun til aritmetiske operationer) |
ud2 | 32/64 | Produktion | Outputværdi, når der er valgt konverteringsoperationer med fast komma eller med flydende komma. |
trutmund1 | 32/64 | Produktion | Outputværdi når additions-, subtraktions- eller multiplikationsoperationer er valgt. |
Tabel 3-2. Portbeskrivelse (fortsat) | |||
Signal navn | Bredde | Type | Beskrivelse |
do_valid | 1 | Produktion | Aktivt højt signal
Dette signal indikerer, at dataene på pout/aout-databussen er gyldige. |
ovfl_fg3 | 1 | Produktion | Aktivt højt signal
Dette signal angiver overløbet under flydende komma-operationer. |
ufl_fg | 1 | Produktion | Aktivt højt signal
Dette signal angiver underflowet under flydende kommaoperationer. |
qnan_fg3 | 1 | Produktion | Aktivt højt signal
Dette signal angiver Quiet Not a Number (QNaN) under flydende komma-operationer. |
snan_fg | 1 | Produktion | Aktivt højt signal
Dette signal angiver Signalling Not-a-Number (SNaN) under flydende komma-operationer. |
pinf_fg3 | 1 | Produktion | Aktivt højt signal
Dette signal angiver den positive uendelighed under flydende komma-operationer. |
ninf_fg | 1 | Produktion | Aktivt højt signal
Dette signal angiver den negative uendelighed under flydende komma-operationer. |
Vigtig:
- Denne port er kun tilgængelig til addition, subtraktion eller multiplikation med flydende komma.
- Denne port er kun tilgængelig til konvertering fra fast komma til flydende komma og fra flydende komma til fast komma.
- Denne port er tilgængelig til flydende-komma-til-fast-komma, flydende-komma-addition, flydende-komma-subtraktion og flydende-komma-multiplikation.
Implementering af CoreFPU i Libero Design Suite
Dette afsnit beskriver implementeringen af CoreFPU i Libero Design Suite.
SmartDesign
CoreFPU kan downloades i Libero IP-kataloget via web repository. Når den er angivet i kataloget, instantieres kernen ved hjælp af SmartDesign-flowet. Du kan finde oplysninger om brug af SmartDesign til at konfigurere, forbinde og generere kerner i onlinehjælpen til Libero SoC.
Efter konfiguration og generering af kerneinstansen simuleres den grundlæggende funktionalitet ved hjælp af den testbænk, der følger med CoreFPU'en. Testbænkens parametre justeres automatisk til CoreFPU'ens konfiguration. CoreFPU'en instantieres som en komponent i et større design.
Figur 4-1. SmartDesign CoreFPU-instans til aritmetiske operationer
Figur 4-2. SmartDesign CoreFPU-instans til konverteringshandling
Konvertering fra fast komma til flydende komma
Under konvertering fra fast komma til flydende komma kan inputbrøkbredden konfigureres. Outputbredden er som standard indstillet til 32-bit for enkelt præcision og 64-bit for dobbelt præcision flydende komma.
For at konvertere fra fast komma til flydende komma skal du vælge Konverteringstypen Fast til flydende komma, som vist i følgende figur.
Flydende komma til fast komma
Under konvertering fra flydende komma til fast komma kan outputbrøkbredden konfigureres, og inputbredden er som standard indstillet til 32-bit for enkelt præcision og 64-bit for dobbelt præcision flydende komma.
For at konvertere fra flydende komma til fast komma skal du vælge Konverteringstypen Flydende komma til fast komma, som vist i følgende figur.
Figur 4-4. CoreFPU-konfigurator for flydende komma til fast komma Flydende komma-addition/subtraktion/multiplikation
Under addition, subtraktion og multiplikation med flydende komma kan inputbrøkbredden og outputbrøkbredden ikke konfigureres, da disse er aritmetiske operationer med flydende komma, og input/output-bredden er som standard indstillet til 32-bit enkelt præcision og 64-bit for flydende komma med dobbelt præcision.
Den følgende figur viser CoreFPU-konfiguratoren til flydende komma-subtraktion.
Figur 4-5. CoreFPU-konfigurator til flydende komma-subtraktionSimulering (stil et spørgsmål)
For at køre simuleringer skal du i kernekonfigurationsvinduet vælge Brugertestbench. Efter generering af CoreFPU'en, Hardware Description Language (HDL) i præsyntesetestbenchen files er installeret i Libero.
Simuleringsbølgeformer (Stil et spørgsmål)
Dette afsnit diskuterer simuleringsbølgeformerne for CoreFPU.
De følgende figurer viser bølgeformen for konvertering fra fast komma til flydende komma for både 32-bit og 64-bit.
Systemintegration
Følgende figur viser en eksample af at bruge kernen. I dette eksempelampLe, design-UART'en bruges som en kommunikationskanal mellem designet og værts-pc'en. Signalerne ain og bin (hver med en bredde på 32-bit eller 64-bit) er input til designet fra UART. Når CoreFPU'en modtager di_valid-signalet, beregner den resultatet. Efter at have beregnet resultatet, går do_valid-signalet højt og gemmer resultatet (aout/pout-data) i outputbufferen. Den samme procedure gælder for konverterings- og aritmetiske operationer. Til konverteringsoperationer er kun input ain tilstrækkeligt, hvorimod både ain- og bin-input er nødvendige for aritmetiske operationer. Output aout er aktiveret til konverteringsoperationer, og pout-porten er aktiveret til aritmetiske operationer.
Figur 4-16. Eksample af CoreFPU-systemet
- Syntese (Stil et spørgsmål)
For at køre syntese på CoreFPU'en skal du indstille designroden til IP-komponentinstansen og køre synteseværktøjet fra Libero-designflowruden.
Sted og rute (Stil et spørgsmål)
Når designet er syntetiseret, skal du køre værktøjet Place-and-Route. CoreFPU kræver ingen særlige indstillinger for Place-and-Route. - Brugertestbænk (Stil et spørgsmål)
En brugertestbænk leveres med CoreFPU IP-udgivelsen. Ved hjælp af denne testbænk kan du verificere CoreFPU's funktionelle opførsel.
Et forenklet blokdiagram over brugertestbænken er vist i følgende figur. Brugertestbænken instantierer det konfigurerede CoreFPU-design (UUT) og inkluderer en adfærdstestdatagenerator, det nødvendige ur og nulstillingssignaler.
Figur 4-17. CoreFPU brugertestbænk
Vigtigt: Du skal overvåge udgangssignalerne i ModelSim-simulatoren, se afsnittet Simulering.
Yderligere referencer (Stil et spørgsmål)
Dette afsnit indeholder en liste med yderligere oplysninger.
For opdateringer og yderligere oplysninger om softwaren, enheder og hardware, besøg
Intellectual Property-sider om Microchip FPGA'er og PLD'er webwebsted.
- Kendte problemer og løsninger (Stil et spørgsmål)
Der er ingen kendte problemer eller løsninger til CoreFPU v3.0. - Udgåede funktioner og enheder (Stil et spørgsmål)
Der er ingen udgåede funktioner og enheder med denne IP-udgivelse.
Ordliste
Følgende er en liste over termer og definitioner, der anvendes i dokumentet.
Tabel 6-1. Begreber og definitioner
Semester | Definition |
FPU | Floating Point Unit |
FP ADD | Flydende komma-addition |
FP SUB | Flydende komma-subtraktion |
FP MULT | Flydende komma-multiplikation |
Løste problemer
Følgende tabel viser alle de løste problemer for de forskellige CoreFPU-udgivelser.
Tabel 7-1. Løste problemer
Frigøre | Beskrivelse |
3.0 | Følgende er en liste over alle løste problemer i v3.0-udgivelsen:
Sagsnummer: 01420387 og 01422128 Tilføjet afrundingsskemaets logik (afrund til nærmeste lige tal). |
2.1 | Følgende er en liste over alle løste problemer i v2.1-udgivelsen: Designet støder på problemer på grund af tilstedeværelsen af dublette moduler, når flere kerner instantieres. Omdøbning af CoreFPU IP-instansen resulterer i fejlen "Udefineret modul". |
1.0 | Første udgivelse |
Enhedsressourceudnyttelse og ydeevne
CoreFPU-makroen er implementeret i familierne, der er anført i følgende tabel.
Tabel 8-1. FPU PolarFire-enhedsudnyttelse til 32-bit
FPGA-ressourcer | Udnyttelse | |||||||
Familie | 4LUT | DFF | Total | Matematikblok | Enhed | Procenttage | Præstation | Latency |
Fastkomma til flydende komma | ||||||||
PolarFire® | 260 | 104 | 364 | 0 | MPF300T | 0.12 | 310 MHz | 3 |
Flydende komma til fast komma | ||||||||
PolarFire | 591 | 102 | 693 | 0 | MPF300T | 0.23 | 160 MHz | 3 |
Flydende komma-addition | ||||||||
PolarFire | 1575 | 1551 | 3126 | 0 | MPF300T | 1.06 | 340 MHz | 16 |
Flydende komma-subtraktion | ||||||||
PolarFire | 1561 | 1549 | 3110 | 0 | MPF300T | 1.04 | 345 MHz | 16 |
Flydende komma-multiplikation | ||||||||
PolarFire | 465 | 847 | 1312 | 4 | MPF300T | 0.44 | 385 MHz | 14 |
FPGA-ressourcer | Udnyttelse | |||||||
Familie | 4LUT | DFF | Total | Matematikblok | Enhed | Procenttage | Præstation | Latency |
Fastkomma til flydende komma | ||||||||
RTG4™ | 264 | 104 | 368 | 0 | RT4G150 | 0.24 | 160 MHz | 3 |
Flydende komma til fast komma | ||||||||
RTG4 | 439 | 112 | 551 | 0 | RT4G150 | 0.36 | 105 MHz | 3 |
Flydende komma-addition | ||||||||
RTG4 | 1733 | 1551 | 3284 | 0 | RT4G150 | 1.16 | 195 MHz | 16 |
Flydende komma-subtraktion | ||||||||
RTG4 | 1729 | 1549 | 3258 | 0 | RT4G150 | 1.16 | 190 MHz | 16 |
Flydende komma-multiplikation | ||||||||
RTG4 | 468 | 847 | 1315 | 4 | RT4G150 | 0.87 | 175 MHz | 14 |
FPGA-ressourcer | Udnyttelse | |||||||
Familie | 4LUT | DFF | Total | Matematikblok | Enhed | Procenttage | Præstation | Latency |
Fastkomma til flydende komma | ||||||||
PolarFire® | 638 | 201 | 849 | 0 | MPF300T | 0.28 | 305 MHz | 3 |
Flydende komma til fast komma | ||||||||
PolarFire | 2442 | 203 | 2645 | 0 | MPF300T | 0.89 | 110 MHz | 3 |
Flydende komma-addition | ||||||||
PolarFire | 5144 | 4028 | 9172 | 0 | MPF300T | 3.06 | 240 MHz | 16 |
Flydende komma-subtraktion | ||||||||
PolarFire | 5153 | 4026 | 9179 | 0 | MPF300T | 3.06 | 250 MHz | 16 |
Flydende komma-multiplikation | ||||||||
PolarFire | 1161 | 3818 | 4979 | 16 | MPF300T | 1.66 | 340 MHz | 27 |
FPGA-ressourcer | Udnyttelse | |||||||
Familie | 4LUT | DFF | Total | Matematikblok | Enhed | Procenttage | Præstation | Latency |
Fastkomma til flydende komma | ||||||||
RTG4™ | 621 | 201 | 822 | 0 | RT4G150 | 0.54 | 140 MHz | 3 |
Flydende komma til fast komma | ||||||||
RTG4 | 1114 | 203 | 1215 | 0 | RT4G150 | 0.86 | 75 MHz | 3 |
Flydende komma-addition | ||||||||
RTG4 | 4941 | 4028 | 8969 | 0 | RT4G150 | 5.9 | 140 MHz | 16 |
Flydende komma-subtraktion | ||||||||
RTG4 | 5190 | 4026 | 9216 | 0 | RT4G150 | 6.07 | 130 MHz | 16 |
Flydende komma-multiplikation | ||||||||
RTG4 | 1165 | 3818 | 4983 | 16 | RT4G150 | 3.28 | 170 MHz | 27 |
Vigtigt: For at øge frekvensen skal du vælge Aktiver retiming i synteseindstillingen.
Revisionshistorie
Revisionshistorikken beskriver de ændringer, der blev implementeret i dokumentet. Ændringerne er listet efter revision, startende med den seneste publikation.
Mikrochip FPGA-understøttelse
Microchip FPGA-produktgruppen støtter sine produkter med forskellige supporttjenester, herunder kundeservice, teknisk kundesupportcenter, et webwebsted og verdensomspændende salgskontorer. Kunder foreslås at besøge Microchips onlineressourcer, før de kontakter support, da det er meget sandsynligt, at deres forespørgsler allerede er blevet besvaret.
Kontakt teknisk supportcenter via website kl www.microchip.com/support. Nævn FPGA-enhedens varenummer, vælg passende sagskategori, og upload design files, mens du opretter en teknisk supportsag.
Kontakt kundeservice for ikke-teknisk produktsupport, såsom produktpriser, produktopgraderinger, opdateringsoplysninger, ordrestatus og godkendelse.
- Fra Nordamerika, ring 800.262.1060
- Fra resten af verden, ring på 650.318.4460
- Fax, hvor som helst i verden, 650.318.8044
Mikrochip information
Varemærker
"Microchip"-navnet og -logoet, "M"-logoet og andre navne, logoer og mærker er registrerede og uregistrerede varemærker tilhørende Microchip Technology Incorporated eller dets tilknyttede selskaber og/eller datterselskaber i USA og/eller andre lande ("Microchip" varemærker"). Oplysninger om Microchip-varemærker kan findes på https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3
Juridisk meddelelse
Denne publikation og oplysningerne heri må kun bruges med Microchip-produkter, herunder til at designe, teste og integrere Microchip-produkter med din applikation. Brug af disse oplysninger på anden måde overtræder disse vilkår. Oplysninger om enhedsapplikationer gives kun for din bekvemmelighed og kan blive afløst af opdateringer. Det er dit ansvar at sikre, at din ansøgning lever op til dine specifikationer. Kontakt dit lokale Microchip salgskontor for yderligere support, eller få yderligere support på www.microchip.com/en-us/support/design-help/client-support-services
DISSE OPLYSNINGER LEVERES AF MICROCHIP "SOM DE ER". MICROCHIP GIVER INGEN REPRÆSENTATIONER ELLER GARANTIER AF NOGEN ART, HVERKEN UDTRYKKELIGE ELLER UNDERFORSTÅEDE, SKRIFTLIGE ELLER mundtlige, LOVBESTEMMET ELLER ANDEN MÅDE, RELATET TIL OPLYSNINGERNE, INKLUSIVE MEN IKKE BEGRÆNSET TIL NOGEN STILTIENDE GARANTIER, GARANTIER OG GARANTIER. EGNETHED TIL ET BESTEMT FORMÅL ELLER GARANTIER RELATET TIL DETS TILSTAND, KVALITET ELLER YDELSE.
MICROCHIP VIL UNDER INGEN OMSTÆNDIGHEDER VÆRE ANSVARLIG FOR NOGEN INDIREKTE, SÆRLIGE, STRAFFENDE, TILFÆLDELIGE ELLER FØLGETAB, SKADER, OMKOSTNINGER ELLER UDGIFTER AF NOGEN ART, SOM ER RELATET TIL OPLYSNINGERNE ELLER DERES ANVENDELSE, UNDER ANDET ELLER ARGANG. MULIGHEDEN ELLER SKADERNE ER FORUDSIGELIGE. I DET FULDSTÆNDE OMFANG, DET ER TILLADT AF LOVEN, VIL MICROCHIPS SAMLEDE ANSVAR PÅ ALLE KRAV PÅ NOGEN MÅDE RELATET TIL INFORMATIONEN ELLER DERES ANVENDELSE IKKE OVERstige BELØBET, HVIS NOGET, SOM DU HAR BETALT DIREKTE TIL MICRATIONOCHIP.
Brug af Microchip-enheder i livsstøtte- og/eller sikkerhedsapplikationer er helt på købers risiko, og køberen indvilliger i at forsvare, skadesløsholde og holde Microchip skadesløs fra enhver skade, krav, sager eller udgifter som følge af sådan brug. Ingen licenser videregives, implicit eller på anden måde, under nogen af Microchips intellektuelle ejendomsrettigheder, medmindre andet er angivet.
Mikrochip-enheder kodebeskyttelsesfunktion
Bemærk følgende detaljer om kodebeskyttelsesfunktionen på Microchip-produkter:
- Microchip-produkter opfylder specifikationerne i deres særlige Microchip-datablad.
- Microchip mener, at dens familie af produkter er sikre, når de bruges på den tilsigtede måde, inden for driftsspecifikationerne og under normale forhold.
- Microchip værdsætter og beskytter aggressivt sine intellektuelle ejendomsrettigheder. Forsøg på at bryde kodebeskyttelsesfunktionerne i Microchip-produkter er strengt forbudt og kan være i strid med Digital Millennium Copyright Act.
- Hverken Microchip eller nogen anden halvlederproducent kan garantere sikkerheden af deres kode. Kodebeskyttelse betyder ikke, at vi garanterer, at produktet er "ubrydeligt". Kodebeskyttelse er i konstant udvikling. Microchip er forpligtet til løbende at forbedre kodebeskyttelsesfunktionerne i vores produkter.
Dokumenter/ressourcer
![]() |
MICROCHIP CoreFPU Core flydende komma-enhed [pdfBrugervejledning v3.0, v2.1, v2.0, v1.0, CoreFPU Kerne-flydende komma-enhed, Kerne-flydende komma-enhed, Flydende komma-enhed, Punkt-enhed |