MICROCHIP CoreFPU Core Flyttalsenhet
Introduktion
- Core Floating Point Unit (CoreFPU) är utformad för flyttalaritmetik och konverteringsoperationer, för flyttalstal med enkel och dubbel precision. CoreFPU stöder konverteringar från fast komma till flyttal och från flyttal till fast komma samt flyttaladdition, subtraktion och multiplikation. IEEE®-standarden för flyttalaritmetik (IEEE 754) är en teknisk standard för flyttalsberäkning.
- Viktigt: CoreFPU stöder endast beräkningar med normaliserade tal, och endast språket Verilog stöds; VHDL stöds inte.
Sammanfattning
Följande tabell ger en sammanfattning av CoreFPU:s egenskaper.
Tabell 1. CoreFPU-egenskaper
Kärnversion | Detta dokument gäller CoreFPU v3.0. |
Enhetsfamiljer som stöds |
|
Verktygsflöde som stöds | Kräver Libero® SoC v12.6 eller senare versioner. |
Licensiering | CoreFPU är inte licenslåst. |
Installationsinstruktioner | CoreFPU måste installeras automatiskt i IP-katalogen för Libero SoC via IP-katalogens uppdateringsfunktion. Alternativt kan CoreFPU laddas ner manuellt från katalogen. När IP-kärnan är
installerad konfigureras, genereras och instansieras den i SmartDesign för inkludering i projektet. |
Enhetsanvändning och prestanda | En sammanfattning av användnings- och prestandainformation för CoreFPU finns i Enhetsresursutnyttjande och prestanda. |
Information om CoreFPU-ändringsloggen
Detta avsnitt ger en omfattande överview av de nyligen införlivade funktionerna, med början i den senaste versionen. Mer information om de lösta problemen finns i avsnittet Lösta problem.
Version | Vad är nytt |
v3.0 | Implementerade ytterligare utdataflaggor för att förbättra IP-adressens noggrannhet |
v2.1 | Lade till funktionen för dubbel precision |
v2.0 | Uppdaterade tidsvågformerna |
v1.0 | Första produktionsversionen av CoreFPU |
1. Funktioner
CoreFPU har följande viktiga funktioner:
- Stöder flytande nummer med enkel och dubbel precision enligt IEEE-754-standarden
- Stöder konverteringar enligt listan:
- Konvertering från fast punkt till flyttal
- Flyttals- till fasttalskonvertering
- Stöder aritmetiska operationer enligt listan:
- Flyttalsaddition
- Flyttalssubtraktion
- Flyttalsmultiplikation
- Tillhandahåller avrundningsschemat (avrunda till närmaste jämna tal) endast för aritmetiska operationer.
- Tillhandahåller flaggor för överflöde, underflöde, oändlighet (positiv oändlighet, negativ oändlighet), tyst NaN (QNaN) och signalerande NaN (SNaN) för flyttal.
- Stöder fullständig pipelineimplementering av aritmetiska operationer
- Ger möjlighet att konfigurera kärnan för designkrav
Funktionsbeskrivning
- IEEE-standarden för flyttalsaritmetik (IEEE 754) är en teknisk standard för flyttalsberäkning. Termen flyttal hänvisar till talets radixpunkt (decimalpunkt eller binärpunkt), som placeras var som helst i förhållande till talets signifikanta siffror.
Ett flyttal uttrycks vanligtvis i vetenskaplig notation, med en bråkdel (F) och en exponent (E) av en viss radix (r), i formen F × r^E. Decimaltal använder radix av 10 (F × 10^E); medan binära tal använder radix av 2 (F × 2^E). - Representationen av flyttalstal är inte unik. Till exempelampt.ex. representeras talet 55.66 som 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3, och så vidare. Bråkdelen normaliseras. I den normaliserade formen finns det bara en enda siffra som inte är noll före grundpunkten. Till exempelampf.eks. normaliseras decimaltalet 123.4567 till 1.234567 × 10^2; binärtalet 1010.1011B normaliseras till 1.0101011B × 2^3.
- Det är viktigt att notera att flyttal förlorar precision när de representeras med ett fast antal bitar (till exempelamp(t.ex. 32-bitars eller 64-bitars). Detta beror på att det finns ett oändligt antal reella tal (även inom ett litet intervall från 0.0 till 0.1). Å andra sidan, en
Det binära mönstret med n bitar representerar ett ändligt antal på 2^n distinkt tal. Därför representeras inte alla reella tal. Den närmaste approximationen används istället, vilket resulterar i minskad noggrannhet.
Det enkla precisionsflyttalet representeras enligt följande:
- Teckenbit: 1-bit
- Exponentbredd: 8 bitar
- Signifikansnoggrannhet: 24 bitar (23 bitar lagras explicit)
Figur 2-1. 32-bitars ram
Flyttalstalet med dubbel precision representeras enligt följande:
- Teckenbit: 1-bit
- Exponentbredd: 11 bitar
- Signifikansnoggrannhet: 53 bitar (52 bitar lagras explicit)
Figur 2-2. 64-bitars ram CoreFPU är den övergripande integrationen av de två konverteringsmodulerna (Fast flyttal och Flyttal) och tre aritmetiska operationer (FP ADD, FP SUB och FP MULT). Användaren kan konfigurera vilken som helst av operationerna baserat på kravet så att resurserna utnyttjas för den valda operationen.
Följande figur visar det övergripande blockschemat för CoreFPU med portar.
Figur 2-3. Blockdiagram för CoreFPU-portar
Följande tabell listar bredden på in- och utgångsportarna. Tabell 2-1. Bredd på in- och utgångsportarna
Signal | Enkel precisionsbredd | Dubbel precisionsbredd |
ain | [31:0] | [63:0] |
bin | [31:0] | [63:0] |
ut | [31:0] | [63:0] |
putt | [31:0] | [63:0] |
Fastkomma till flyttal (omvandling)
CoreFPU konfigurerad som flyttal med fast komma härleder modulen för konvertering från fast komma till flyttal. Ingången (ain) till CoreFPU är vilket fast tal som helst som innehåller heltals- och bråkbitar. CoreFPU-konfiguratorn har alternativ för att välja ingångens heltals- och bråkbredder. Ingången är giltig på di_valid-signalen och utgången är giltig på do_valid. Utgången (aout) från flyttalsoperationen är i flyttal med enkel eller dubbel precision.
Example för konvertering från fast komma till flyttal listas i följande tabell.
Tabell 2-2. Example för konvertering från fast komma till flyttal
Fastpunktsnummer | Flyttalsnummer | |||||
ain | Heltal | Fraktion | ut | Tecken | Exponent | Mantissa |
0x12153524 (32-bitars) | 00010010000101010 | 011010100100100 | 0x4610a9a9 | 0 | 10001100 | 00100001010100110101001 |
0x0000000000008CCC
(64-bitars) |
0000000000000000000000000000000000000000000000001 | 000110011001100 | 0x3FF199999999999A | 0 | 01111111111 | 0001100110011001100110011001100110011001100110011010 |
Flyttals- till fasttalsvärde (omvandling)
CoreFPU konfigurerad som flytande till fast komma infererar modulen för konvertering från flyttal till fast komma. Ingången (ain) till CoreFPU är ett valfritt flyttal med enkel eller dubbel precision och producerar en utgång (aout) i fast kommaformat som innehåller heltals- och bråkbitar. Ingången är giltig vid di_valid-signalen och utgången är giltig vid do_valid. CoreFPU-konfiguratorn har alternativ för att välja utgående heltals- och bråkbredder.
Example för konvertering från flyttal till fast komma listas i följande tabell.
Tabell 2-3. Example för flyttals- till fasttalskonvertering
Flyttalsnummer | Fastpunktsnummer | |||||
ain | Tecken | Exponent | Mantissa | ut | Heltal | Fraktion |
0x41bd6783 (32-bitars) | 0 | 10000011 | 01111010110011110000011 | 0x000bd678 | 00000000000010111 | 101011001111000 |
0x4002094c447c30d3
(64-bitars) |
0 | 10000000000 | 0010000010010100110001000100011111000011000011010011 | 0x0000000000012095 | 0000000000000000000000000000000000000000000000010 | 010000010010101 |
Flyttalsaddition (aritmetisk operation)
CoreFPU konfigurerad som FP ADD härleder flyttaladditionsmodulen. Den adderar de två flyttalstalen (ain och bin) och ger utdata (pout) i flyttalformat. Indata och utdata är flyttal med enkel eller dubbel precision. Indata är giltig på di_valid-signalen och utdata är giltig på do_valid. Kärnan producerar flaggorna ovfl_fg (Overflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) och ninf_fg (Negative Infinity) baserat på additionsoperationen.
ExampFunktioner för flyttalsaddition listas i följande tabeller.
Tabell 2-4. Example för flyttalsaddition (32-bitars)
Flyttalsvärde | Tecken | Exponent | Mantissa |
Flyttalsingång 1 ain (0x4e989680) | 0 | 10011101 | 00110001001011010000000 |
Flyttalsinmatning 2 bin (0x4f191b40) | 0 | 10011110 | 00110010001101101000000 |
Flyttalsadditionsutgång (0x4f656680) | 0 | 10011110 | 11001010110011010000000 |
Tabell 2-5. Example för flyttalsaddition (64-bitars)
Flyttalsvärde | Tecken | Exponent | Mantissa |
Flyttalsingång 1
ain (0x3ff4106ee30caa32) |
0 | 01111111111 | 0100000100000110111011100011000011001010101000110010 |
Flyttalsingång 2
bin (0x40020b2a78798e61) |
0 | 10000000000 | 0010000010110010101001111000011110011000111001100001 |
Flyttalsadditionsutgång (0x400c1361e9ffe37a) | 0 | 10000000000 | 1100000100110110000111101001111111111110001101111010 |
Flyttalssubtraktion (aritmetisk operation)
CoreFPU konfigurerad som FP SUB härleder flyttalssubtraktionsmodulen. Den subtraherar de två flyttalstalen (ain och bin) och ger utdata (pout) i flyttalformat. Indata och utdata är flyttal med enkel eller dubbel precision. Indata är giltig på di_valid-signalen och utdata är giltig på do_valid. Kärnan producerar flaggorna ovfl_fg (Överflöde), unfl_fg (Underflöde), qnan_fg (Tyst Inte ett Tal), snan_fg (Signalling Inte ett Tal), pinf_fg (Positiv Infinity) och ninf_fg (Negativ Infinity) baserat på subtraktionsoperationen.
ExampFunktioner för flyttalsberäkning listas i följande tabeller.
Tabell 2-6. Example för flyttalssubtraktionsoperation (32-bitars)
Flyttalsvärde | Tecken | Exponent | Mantissa |
Flyttalsingång 1 ain (0xac85465f) | 1 | 01011001 | 00001010100011001011111 |
Flyttalsinmatning 2 bin (0x2f516779) | 0 | 01011110 | 10100010110011101111001 |
Flyttalssubtraktionsutgång (0xaf5591ac) | 1 | 01011110 | 10101011001000110101011 |
Flyttalsvärde | Tecken | Exponent | Mantissa |
Flyttalsingång 1
ain (0x405569764adff823) |
0 | 10000000101 | 0101011010010111011001001010110111111111100000100011 |
Flyttalsingång 2
bin (0x4057d04e78dee3fc) |
0 | 10000000101 | 0111110100000100111001111000110111101110001111111100 |
Flyttalssubtraktionsutgång (0xc02336c16ff75ec8) | 1 | 10000000010 | 0011001101101100000101101111111101110101111011001000 |
Flyttalsmultiplikation (aritmetisk operation)
CoreFPU konfigurerad som FP MULT härleder flyttalsmodulen. Den multiplicerar de två flyttalstalen (ain och bin) och ger utdata (pout) i flyttalformat. Indata och utdata är flyttal med enkel eller dubbel precision. Indata är giltig på di_valid-signalen och utdata är giltig på do_valid. Kärnan producerar flaggorna ovfl_fg (Överflöde), unfl_fg (Underflöde), qnan_fg (Tyst Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positiv Infinity) och ninf_fg (Negativ Infinity) baserat på multiplikationsoperationen.
ExampFiler för flyttalmultiplikation listas i följande tabeller.
Tabell 2-8. Example för flyttalmultiplikationsoperation (32-bitars)
Flyttalsvärde | Tecken | Exponent | Mantissa |
Flyttalsingång 1 ain (0x1ec7a735) | 0 | 00111101 | 10001111010011100110101 |
Flyttalsinmatning 2 bin (0x6ecf15e8) | 0 | 11011101 | 10011110001010111101000 |
Flyttalsmultiplikationsutgång (0x4e21814a) | 0 | 10011100 | 01000011000000101001010 |
Flyttalsvärde | Tecken | Exponent | Mantissa |
Flyttalsingång 1
ain (0x40c1f5a9930be0df) |
0 | 10000001100 | 0001111101011010100110010011000010111110000011011111 |
Flyttalsingång 2
bin (0x400a0866c962b501) |
0 | 10000000000 | 1010000010000110011011001001011000101011010100000001 |
Flyttalsmultiplikationsutgång (0x40dd38a1c3e2cae9) | 0 | 10000001101 | 1101001110001010000111000011111000101100101011101001 |
Sanningstabell för addition och subtraktion
Följande sanningstabeller listar värdena för additions- och subtraktionsoperationer. Tabell 2-10. Sanningstabell för addition
Data A | Data B | Sign Bit | Resultat | Svämma över | Underflöde | 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 |
noll | noll | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
noll | posfinit(y) | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
noll | negfinit(y) | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
noll | oändlig | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
noll | negonfin | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit(y) | noll | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | oändlig | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
Tabell 2-10. Sanningstabell för addition (fortsättning) | |||||||||
Data A | Data B | Sign Bit | Resultat | Svämma över | Underflöde | SNaN | QNaN | PINF | NINF |
posfinit | negonfin | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit(y) | noll | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | oändlig | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit | negonfin | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
oändlig | noll | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | posfinit | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | negfinit | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | oändlig | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | negonfin | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negonfin | noll | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | posfinit | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | negfinit | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | oändlig | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negonfin | negonfin | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit | posfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posfinit | 0 | oändlig | 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 | negonfin | 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 | Svämma över | Underflöde | 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 |
noll | noll | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
noll | posfinit(y) | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
noll | negfinit(y) | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
noll | oändlig | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
noll | negonfin | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit(y) | noll | 0 | posfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | oändlig | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
posfinit | negonfin | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
negfinit(y) | noll | 1 | negfinit(y) | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | oändlig | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
Tabell 2-11. Sanningstabell för subtraktion (fortsättning) | |||||||||
Data A | Data B | Sign Bit | Resultat | Svämma över | Underflöde | SNaN | QNaN | PINF | NINF |
negfinit | negonfin | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | noll | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | posfinit | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | negfinit | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | oändlig | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
oändlig | negonfin | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
negonfin | noll | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | posfinit | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | negfinit | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | oändlig | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | negonfin | 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 | oändlig | 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 | negonfin | 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 |
Viktig:
- De i föregående tabeller betecknar valfritt tal.
- i föregående tabeller anger ett strunta-tillstånd.
Sanningstabell för multiplikation
Följande sanningstabell listar värdena för multiplikationsoperationen.
Tabell 2-12. Sanningstabell för multiplikation
Data A | Data B | Sign Bit | Resultat | Svämma över | Underflöde | 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 |
noll | noll | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
noll | posfinit | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
noll | negfinit | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
noll | oändlig | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
noll | negonfin | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
Tabell 2-12. Sanningstabell för multiplikation (fortsättning) | |||||||||
Data A | Data B | Sign Bit | Resultat | Svämma över | Underflöde | SNaN | QNaN | PINF | NINF |
posfinit | noll | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | oändlig | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | negonfin | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | noll | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
negfinit | oändlig | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negfinit | negonfin | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | noll | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
oändlig | posfinit | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | negfinit | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
oändlig | oändlig | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
oändlig | negonfin | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | noll | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
negonfin | posfinit | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | negfinit | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
negonfin | oändlig | 1 | negonfin | 0 | 0 | 0 | 0 | 0 | 1 |
negonfin | negonfin | 0 | oändlig | 0 | 0 | 0 | 0 | 1 | 0 |
posfinit | posfinit | 0 | posfinit | 0 | 0 | 0 | 0 | 0 | 0 |
posfinit | posfinit | 0 | oändlig | 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 | negonfin | 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 | negonfin | 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 | oändlig | 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 |
Viktig:
Teckenbit '0' definierar positiv utgång och '1' definierar negativ utgång.
X:et i föregående tabell anger villkoret "bryr mig inte".
CoreFPU-parametrar och gränssnittssignaler
Det här avsnittet diskuterar parametrarna i CoreFPU Configurator-inställningarna och I/O-signalerna.
Konfiguration GUI-parametrar
Det finns ett antal konfigurerbara alternativ som gäller för FPU-enheten, enligt följande tabell. Om en annan konfiguration än standardinställningen krävs används konfigurationsdialogrutan för att välja lämpliga värden för det konfigurerbara alternativet.
Tabell 3-1. CoreFPU-konfigurationsparametrar för grafiskt gränssnitt
Parameternamn | Standard | Beskrivning |
Precision | Enda | Välj önskad operation:
Enkel precision |
Konverteringstyp | Konvertering från fast punkt till flyttal | Välj önskad operation:
|
Inmatningsbredd1 | 15 | Konfigurerar bråkpunkten i ingångssignalerna ain och bin
Giltigt intervall är 31–1 |
Utgångsfraktionens bredd2 | 15 | Konfigurerar bråkpunkten i utgångssignalerna
Giltigt intervall är 51–1 |
Viktig:
- Den här parametern kan endast konfigureras vid konvertering från fast komma till flyttal.
- Den här parametern kan endast konfigureras vid konvertering från flyttal till fast komma.
In- och utsignaler (ställ en fråga)
Följande tabell listar in- och utgångsportsignalerna för CoreFPU.
Tabell 3-2. Portbeskrivning
Signalnamn | Bredd | Typ | Beskrivning |
clk | 1 | Input | Huvudsystemklocka |
rstn | 1 | Input | Aktiv-låg asynkron återställning |
di_valid | 1 | Input | Aktiv-hög ingång giltig
Denna signal indikerar att data som finns på ain[31:0], ain[63:0] och bin[31:0], bin[63:0] är giltiga. |
ain | 32/64 | Input | En ingångsbuss (den används för alla operationer) |
bin1 | 32/64 | Input | B Ingångsbuss (Den används endast för aritmetiska operationer) |
ut2 | 32/64 | Produktion | Utdatavärde när konvertering med flyttals- eller fasttalsvärde är valda. |
putt1 | 32/64 | Produktion | Utdatavärde när additions-, subtraktions- eller multiplikationsoperationer är valda. |
Tabell 3-2. Portbeskrivning (fortsättning) | |||
Signalnamn | Bredd | Typ | Beskrivning |
do_valid | 1 | Produktion | Aktiv hög signal
Denna signal indikerar att data som finns på pout/aout-databussen är giltig. |
ovfl_fg3 | 1 | Produktion | Aktiv hög signal
Denna signal indikerar överflödet under flyttaloperationer. |
oförglömlig_fg | 1 | Produktion | Aktiv hög signal
Denna signal indikerar underflödet under flyttaloperationer. |
qnan_fg3 | 1 | Produktion | Aktiv hög signal
Denna signal indikerar Quiet Not a Number (QNaN) under flyttalsmetoder. |
snan_fg | 1 | Produktion | Aktiv hög signal
Denna signal indikerar Signalling Not-a-Number (SNaN) under flyttaloperationer. |
pinf_fg3 | 1 | Produktion | Aktiv hög signal
Denna signal indikerar den positiva oändligheten under flyttaloperationer. |
ninf_fg | 1 | Produktion | Aktiv hög signal
Denna signal indikerar negativ oändlighet under flyttaloperationer. |
Viktig:
- Den här porten är endast tillgänglig för flyttalsaddition, subtraktion eller multiplikation.
- Den här porten är endast tillgänglig för konvertering från fast komma till flyttal och från flyttal till fast komma.
- Denna port är tillgänglig för flyttal till fast komma, flyttaladdition, flyttalssubtraktion och flyttalsmultiplikation.
Implementering av CoreFPU i Libero Design Suite
Det här avsnittet beskriver implementeringen av CoreFPU i Libero Design Suite.
SmartDesign
CoreFPU finns tillgänglig för nedladdning i Libero IP-katalogen via web repository. När den väl finns i katalogen instansieras kärnan med hjälp av SmartDesign-flödet. Information om hur du använder SmartDesign för att konfigurera, ansluta och generera kärnor finns i Libero SoC onlinehjälp.
Efter konfigurering och generering av kärninstansen simuleras den grundläggande funktionaliteten med hjälp av testbänken som medföljer CoreFPU. Testbänkens parametrar justeras automatiskt till CoreFPU-konfigurationen. CoreFPU instansieras som en komponent i en större design.
Figur 4-1. SmartDesign CoreFPU-instans för aritmetiska operationer
Figur 4-2. SmartDesign CoreFPU-instans för konverteringsoperation
Konvertering från fast komma till flyttal
Under konvertering från fastkomma till flyttal är inmatningsbråkbredden konfigurerbar. Utmatningsbredden är som standard inställd på 32 bitar för enkel precision och 64 bitar för dubbel precision.
För att konvertera från fast komma till flyttal, välj Konverteringstyp Fast till flyttal, som visas i följande figur.
Flyttals- till fasttalsvärde
Under konvertering från flyttal till fast komma är utgångsbråkbredden konfigurerbar, och ingångsbredden är som standard inställd på 32 bitar för enkel precision och 64 bitar för dubbel precision med flyttal.
För att konvertera från flyttal till fast komma, välj Konverteringstyp från flyttal till fast komma, som visas i följande figur.
Figur 4-4. CoreFPU-konfigurator för flyttals- till fast komma Flyttalsaddition/subtraktion/multiplikation
Under flyttalsaddition, subtraktion och multiplikation kan inte inmatningsbråkbredden och utmatningsbråkbredden konfigureras eftersom dessa är flyttalsberäkningar, och inmatnings-/utmatningsbredden är som standard inställd på 32-bitars enkel precision och 64-bitars för dubbel precision med flyttal.
Följande figur visar CoreFPU-konfiguratorn för flyttal-subtraktion.
Figur 4-5. CoreFPU-konfigurator för flyttalssubtraktionSimulering (Ställ en fråga)
För att köra simuleringar, välj Användartestbänk i kärnkonfigurationsfönstret. Efter att ha genererat CoreFPU, testbänken före syntes Hardware Description Language (HDL) files är installerade i Libero.
Simuleringsvågformer (Ställ en fråga)
Det här avsnittet diskuterar simuleringsvågformerna för CoreFPU.
Följande figurer visar vågformen för konvertering från fast komma till flyttal för både 32-bitars och 64-bitars.
Systemintegration
Följande bild visar ett exampanvändning av kärnan. I detta exempelampI.e. används designens UART som en kommunikationskanal mellan konstruktionen och värddatorn. Signalerna ain och bin (vardera med 32-bitars eller 64-bitars bredd) är ingångarna till konstruktionen från UART. Efter att CoreFPU mottagit di_valid-signalen beräknar den resultatet. Efter att resultatet har beräknats går do_valid-signalen högt och lagrar resultatet (aout/pout-data) i utgångsbufferten. Samma procedur gäller för konverterings- och aritmetiska operationer. För konverteringsoperationer är endast ingången ain tillräcklig, medan för aritmetiska operationer krävs både ain- och bin-ingångar. Utgången aout är aktiverad för konverteringsoperationer och pout-porten är aktiverad för aritmetiska operationer.
Bild 4-16. Example av CoreFPU-systemet
- Syntes (Ställ en fråga)
För att köra syntes på CoreFPU, ange designroten till IP-komponentinstansen och kör syntesverktyget från Liberos designflödesruta.
Plats och rutt (Ställ en fråga)
När designen har syntetiserats, kör verktyget Place-and-Route. CoreFPU kräver inga speciella inställningar för place-and-route. - Användartestbänk (Ställ en fråga)
En användartestbänk medföljer CoreFPU IP-utgåvan. Med hjälp av denna testbänk kan du verifiera CoreFPU:s funktionella beteende.
Ett förenklat blockschema över användartestbänken visas i följande figur. Användartestbänken instansierar den konfigurerade CoreFPU-designen (UUT) och inkluderar en generator för beteendetestdata, nödvändig klocka och återställningssignaler.
Figur 4-17. CoreFPU användartestbänk
Viktigt: Du måste övervaka utsignalerna i ModelSim-simulatorn, se avsnittet Simulering.
Ytterligare referenser (Ställ en fråga)
Det här avsnittet innehåller en lista med ytterligare information.
För uppdateringar och ytterligare information om programvaran, enheterna och hårdvaran, besök
Immateriella sidor om Microchip FPGA och PLD webplats.
- Kända problem och lösningar (Ställ en fråga)
Det finns inga kända problem eller lösningar för CoreFPU v3.0. - Utgångna funktioner och enheter (Ställ en fråga)
Det finns inga utgående funktioner och enheter med denna IP-version.
Ordlista
Följande är en lista över termer och definitioner som används i dokumentet.
Tabell 6-1. Termer och definitioner
Kalla | Definition |
FPU | Flytpunktsenhet |
FP-tillägg | Flyttalsaddition |
FP-SUB | Flyttalssubtraktion |
FP MULT | Flyttalsmultiplikation |
Lösta problem
Följande tabell listar alla lösta problem för de olika CoreFPU-utgåvorna.
Tabell 7-1. Lösta problem
Släppa | Beskrivning |
3.0 | Följande är en lista över alla lösta problem i v3.0-utgåvan:
Ärendenummer: 01420387 och 01422128 Lade till avrundningsschemats logik (avrunda till närmaste jämna tal). |
2.1 | Följande är en lista över alla lösta problem i v2.1-utgåvan: Designen stöter på problem på grund av förekomsten av dubbla moduler när flera kärnor instansieras. Att byta namn på CoreFPU IP-instansen resulterar i felet "Odefinierad modul". |
1.0 | Initial release |
Enhetsresursutnyttjande och prestanda
CoreFPU-makrot är implementerat i familjerna som listas i följande tabell.
Tabell 8-1. FPU PolarFire-enhetsanvändning för 32-bitars
FPGA-resurser | Utnyttjande | |||||||
Familj | 4LUT | DFF | Total | Matteblock | Anordning | Procenttage | Prestanda | Latens |
Fastkomma till flyttal | ||||||||
PolarFire® | 260 | 104 | 364 | 0 | MPF300T | 0.12 | 310 MHz | 3 |
Flyttals- till fasttalsvärde | ||||||||
PolarFire | 591 | 102 | 693 | 0 | MPF300T | 0.23 | 160 MHz | 3 |
Flyttalsaddition | ||||||||
PolarFire | 1575 | 1551 | 3126 | 0 | MPF300T | 1.06 | 340 MHz | 16 |
Flyttalssubtraktion | ||||||||
PolarFire | 1561 | 1549 | 3110 | 0 | MPF300T | 1.04 | 345 MHz | 16 |
Flyttalsmultiplikation | ||||||||
PolarFire | 465 | 847 | 1312 | 4 | MPF300T | 0.44 | 385 MHz | 14 |
FPGA-resurser | Utnyttjande | |||||||
Familj | 4LUT | DFF | Total | Matteblock | Anordning | Procenttage | Prestanda | Latens |
Fastkomma till flyttal | ||||||||
RTG4™ | 264 | 104 | 368 | 0 | RT4G150 | 0.24 | 160 MHz | 3 |
Flyttals- till fasttalsvärde | ||||||||
RTG4 | 439 | 112 | 551 | 0 | RT4G150 | 0.36 | 105 MHz | 3 |
Flyttalsaddition | ||||||||
RTG4 | 1733 | 1551 | 3284 | 0 | RT4G150 | 1.16 | 195 MHz | 16 |
Flyttalssubtraktion | ||||||||
RTG4 | 1729 | 1549 | 3258 | 0 | RT4G150 | 1.16 | 190 MHz | 16 |
Flyttalsmultiplikation | ||||||||
RTG4 | 468 | 847 | 1315 | 4 | RT4G150 | 0.87 | 175 MHz | 14 |
FPGA-resurser | Utnyttjande | |||||||
Familj | 4LUT | DFF | Total | Matteblock | Anordning | Procenttage | Prestanda | Latens |
Fastkomma till flyttal | ||||||||
PolarFire® | 638 | 201 | 849 | 0 | MPF300T | 0.28 | 305 MHz | 3 |
Flyttals- till fasttalsvärde | ||||||||
PolarFire | 2442 | 203 | 2645 | 0 | MPF300T | 0.89 | 110 MHz | 3 |
Flyttalsaddition | ||||||||
PolarFire | 5144 | 4028 | 9172 | 0 | MPF300T | 3.06 | 240 MHz | 16 |
Flyttalssubtraktion | ||||||||
PolarFire | 5153 | 4026 | 9179 | 0 | MPF300T | 3.06 | 250 MHz | 16 |
Flyttalsmultiplikation | ||||||||
PolarFire | 1161 | 3818 | 4979 | 16 | MPF300T | 1.66 | 340 MHz | 27 |
FPGA-resurser | Utnyttjande | |||||||
Familj | 4LUT | DFF | Total | Matteblock | Anordning | Procenttage | Prestanda | Latens |
Fastkomma till flyttal | ||||||||
RTG4™ | 621 | 201 | 822 | 0 | RT4G150 | 0.54 | 140 MHz | 3 |
Flyttals- till fasttalsvärde | ||||||||
RTG4 | 1114 | 203 | 1215 | 0 | RT4G150 | 0.86 | 75 MHz | 3 |
Flyttalsaddition | ||||||||
RTG4 | 4941 | 4028 | 8969 | 0 | RT4G150 | 5.9 | 140 MHz | 16 |
Flyttalssubtraktion | ||||||||
RTG4 | 5190 | 4026 | 9216 | 0 | RT4G150 | 6.07 | 130 MHz | 16 |
Flyttalsmultiplikation | ||||||||
RTG4 | 1165 | 3818 | 4983 | 16 | RT4G150 | 3.28 | 170 MHz | 27 |
Viktigt: För att öka frekvensen, välj Aktivera retiming-alternativet i syntesinställningen.
Revisionshistorik
Revisionshistoriken beskriver de ändringar som implementerades i dokumentet. Ändringarna listas efter revidering, med början i den senaste publikationen.
Microchip FPGA-stöd
Microchip FPGA-produktgruppen stödjer sina produkter med olika supporttjänster, inklusive kundtjänst, tekniskt kundsupportcenter, ett webwebbplats och försäljningskontor över hela världen. Kunder rekommenderas att besöka Microchips onlineresurser innan de kontaktar supporten eftersom det är mycket troligt att deras frågor redan har besvarats.
Kontakta tekniskt supportcenter via webplats på www.microchip.com/support. Nämn FPGA-enhetens artikelnummer, välj lämplig fodralkategori och ladda upp design files när du skapar ett tekniskt supportärende.
Kontakta kundtjänst för icke-teknisk produktsupport, såsom produktpriser, produktuppgraderingar, uppdateringsinformation, orderstatus och auktorisering.
- Från Nordamerika, ring 800.262.1060
- Från resten av världen, ring 650.318.4460
- Faxa, från var som helst i världen, 650.318.8044
Information om mikrochip
Varumärken
"Microchip"-namnet och logotypen, "M"-logotypen och andra namn, logotyper och varumärken är registrerade och oregistrerade varumärken som tillhör Microchip Technology Incorporated eller dess dotterbolag och/eller dotterbolag i USA och/eller andra länder ("Microchip-varumärken"). Information om Microchip-varumärken finns på https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3
Rättsligt meddelande
Denna publikation och informationen häri får endast användas med Microchip-produkter, inklusive för att designa, testa och integrera Microchip-produkter med din applikation. Användning av denna information på något annat sätt bryter mot dessa villkor. Information om enhetsapplikationer tillhandahålls endast för din bekvämlighet och kan ersättas av uppdateringar. Det är ditt ansvar att se till att din ansökan uppfyller dina specifikationer. Kontakta ditt lokala Microchip-försäljningskontor för ytterligare support eller få ytterligare support på www.microchip.com/en-us/support/design-help/client-support-services
DENNA INFORMATION TILLHANDAHÅLLS AV MICROCHIP "I BEFINTLIGT SKICK". MICROCHIP GÖR INGA UTSÄTTNINGAR ELLER GARANTIER AV NÅGOT SLAG, VARKEN UTTRYCKLIGA ELLER UNDERFÖRSTÅDDA, SKRIFTLIGA ELLER MUNTLIGA, LAGSTÄMNADE ELLER ANNAT SÄTT, RELATERADE TILL INFORMATIONEN INKLUSIVE MEN INTE BEGRÄNSADE TILL NÅGRA UNDERFÖRSTÅDDA GARANTIER, OCH GARANTIER, LÄMPLIGHET FÖR ETT SÄRSKILT ÄNDAMÅL ELLER GARANTIER RELATERADE TILL DESS SKICK, KVALITET ELLER PRESTANDA.
UNDER INGA OMSTÄNDIGHETER KOMMER MICROCHIP ANSVARIGT FÖR NÅGON INDIREKTA, SÄRSKILDA, STRAFFANDE, OAVSIKTLIGA ELLER FÖLJDLIG FÖRLUST, SKADA, KOSTNAD ELLER KOSTNADER AV NÅGOT SLAG SOM HELST SAMMANFATTAS TILL INFORMATIONEN ELLER DESS ANVÄNDNING, OAVSETT OAVSETT OAVSETT MÖJLIGHETEN ELLER SKADOR ÄR FÖRUTSÅBARA. I FULLSTÄNDIG UTSTRÄCKNING SOM TILLÅTS AV LAGEN KOMMER MICROCHIPS TOTALA ANSVAR PÅ ALLA ANSVAR PÅ NÅGOT SÄTT relaterade till INFORMATIONEN ELLER DESS ANVÄNDNING INTE ÖVERSKRIVA BELÖPET AV AVGIFTER, OM NÅGRA, SOM DU HAR BETALAT DIREKT FÖR INFORMATIONOCHIPEN.
Användning av Microchip-enheter i livsuppehållande och/eller säkerhetsapplikationer sker helt och hållet på köparens risk, och köparen samtycker till att försvara, gottgöra och hålla Microchip ofarligt från alla skador, anspråk, processer eller utgifter som härrör från sådan användning. Inga licenser överförs, vare sig underförstått eller på annat sätt, under några Microchips immateriella rättigheter om inte annat anges.
Mikrochip-enheter kodskyddsfunktion
Observera följande detaljer om kodskyddsfunktionen på Microchip-produkter:
- Microchip-produkter uppfyller specifikationerna i deras specifika Microchip-datablad.
- Microchip anser att dess familj av produkter är säkra när de används på avsett sätt, inom driftsspecifikationer och under normala förhållanden.
- Microchip värdesätter och skyddar aggressivt dess immateriella rättigheter. Försök att bryta mot kodskyddsfunktionerna för Microchip-produkter är strängt förbjudna och kan bryta mot Digital Millennium Copyright Act.
- Varken Microchip eller någon annan halvledartillverkare kan garantera säkerheten för sin kod. Kodskydd betyder inte att vi garanterar att produkten är "okrossbar". Kodskyddet utvecklas ständigt. Microchip har åtagit sig att kontinuerligt förbättra kodskyddsfunktionerna i våra produkter.
Dokument/resurser
![]() |
MICROCHIP CoreFPU Core Flyttalsenhet [pdf] Användarhandbok v3.0, v2.1, v2.0, v1.0, CoreFPU Kärnflyttalsenhet, Kärnflyttalsenhet, Flyttalsenhet, Punktenhet |