MICROCHIP CoreFPU Jednostka zmiennoprzecinkowa

Wstęp
- Jednostka Core Floating Point Unit (CoreFPU) została zaprojektowana do arytmetyki i konwersji liczb zmiennoprzecinkowych, zarówno dla liczb zmiennoprzecinkowych pojedynczej, jak i podwójnej precyzji. CoreFPU obsługuje konwersję liczb stałoprzecinkowych na zmiennoprzecinkowe i zmiennoprzecinkowych na stałoprzecinkowe, a także operacje dodawania, odejmowania i mnożenia liczb zmiennoprzecinkowych. Standard IEEE® dla arytmetyki zmiennoprzecinkowej (IEEE 754) to standard techniczny dla obliczeń zmiennoprzecinkowych.
- Ważne: CoreFPU obsługuje wyłącznie obliczenia na znormalizowanych liczbach i obsługiwany jest tylko język Verilog; VHDL nie jest obsługiwany.
Streszczenie
Poniższa tabela zawiera podsumowanie charakterystyki CoreFPU.
Tabela 1. Charakterystyka CoreFPU
| Wersja podstawowa | Niniejszy dokument dotyczy CoreFPU v3.0. |
| Obsługiwane rodziny urządzeń |
|
| Obsługiwany przepływ narzędzi | Wymaga wersji Libero® SoC v12.6 lub nowszej. |
| Koncesjonowanie | CoreFPU nie jest objęte blokadą licencyjną. |
| Instrukcje instalacji | CoreFPU musi zostać automatycznie zainstalowany w katalogu IP układu Libero SoC za pomocą funkcji aktualizacji katalogu IP. Alternatywnie, CoreFPU można pobrać ręcznie z katalogu. Po zainstalowaniu rdzenia IP
Po zainstalowaniu jest on konfigurowany, generowany i uruchamiany w programie SmartDesign w celu uwzględnienia w projekcie. |
| Wykorzystanie i wydajność urządzenia | Podsumowanie informacji o wykorzystaniu i wydajności CoreFPU znajduje się w dokumencie Wykorzystanie zasobów urządzenia i wydajność. |
Informacje o dzienniku zmian CoreFPU
Ta sekcja zawiera wyczerpujące informacje oview nowo wprowadzonych funkcji, począwszy od najnowszej wersji. Aby uzyskać więcej informacji o rozwiązanych problemach, zobacz sekcję Rozwiązane problemy.
| Wersja | Co nowego |
| wersja 3.0 | Wprowadzono dodatkowe flagi wyjściowe w celu zwiększenia dokładności adresu IP |
| wersja 2.1 | Dodano funkcję podwójnej precyzji |
| wersja 2.0 | Zaktualizowano przebiegi czasowe |
| wersja 1.0 | Pierwsza wersja produkcyjna CoreFPU |
1. Funkcje
CoreFPU ma następujące kluczowe cechy:
- Obsługuje liczby zmiennoprzecinkowe pojedynczej i podwójnej precyzji zgodnie ze standardem IEEE-754
- Obsługuje następujące konwersje:
- Konwersja stałoprzecinkowa na zmiennoprzecinkową
- Konwersja zmiennoprzecinkowa na stałoprzecinkową
- Obsługuje następujące operacje arytmetyczne:
- Dodawanie zmiennoprzecinkowe
- Odejmowanie zmiennoprzecinkowe
- Mnożenie zmiennoprzecinkowe
- Zapewnia schemat zaokrąglania (zaokrąglanie do najbliższej liczby parzystej) wyłącznie dla operacji arytmetycznych
- Zapewnia flagi przepełnienia, niedopełnienia, nieskończoności (dodatniej nieskończoności, ujemnej nieskończoności), cichego NaN (QNaN) i sygnalizującego NaN (SNaN) dla liczb zmiennoprzecinkowych.
- Obsługuje w pełni potokową implementację operacji arytmetycznych
- Zapewnia możliwość skonfigurowania rdzenia pod kątem wymagań projektowych
Opis funkcjonalny
- IEEE Standard for Floating-Point Arithmetic (IEEE 754) to standard techniczny dla obliczeń zmiennoprzecinkowych. Termin „zmiennoprzecinkowy” odnosi się do punktu dziesiętnego liczby (punktu dziesiętnego lub punktu binarnego), który jest umieszczony w dowolnym miejscu względem cyfr znaczących liczby.
Liczby zmiennoprzecinkowe są zazwyczaj wyrażane w notacji naukowej, przy użyciu ułamka (F) i wykładnika (E) o określonej podstawie (r), w postaci F × r^E. Liczby dziesiętne używają podstawy 10 (F × 10^E), natomiast liczby binarne używają podstawy 2 (F × 2^E). - Reprezentacja liczby zmiennoprzecinkowej nie jest jednoznaczna. Na przykładampnp. liczba 55.66 jest reprezentowana jako 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3 itd. Część ułamkowa jest znormalizowana. W znormalizowanej formie przed punktem dziesiętnym znajduje się tylko jedna cyfra różna od zera. Na przykładampnp. liczba dziesiętna 123.4567 jest znormalizowana jako 1.234567 × 10^2; liczba binarna 1010.1011B jest znormalizowana jako 1.0101011B × 2^3.
- Należy pamiętać, że liczby zmiennoprzecinkowe tracą precyzję, gdy są reprezentowane za pomocą stałej liczby bitów (np.ampnp. 32-bitowy lub 64-bitowy). Dzieje się tak, ponieważ istnieje nieskończona liczba liczb rzeczywistych (nawet w małym zakresie od 0.0 do 0.1). Z drugiej strony,
n-bitowy układ binarny reprezentuje skończoną liczbę 2^n różnych liczb. W związku z tym nie wszystkie liczby rzeczywiste są reprezentowane. Zamiast tego używane jest najbliższe przybliżenie, co powoduje utratę dokładności.
Liczbę zmiennoprzecinkową pojedynczej precyzji przedstawia się następująco:
- Bit znaku: 1 bit
- Szerokość wykładnika: 8 bitów
- Precyzja znacząca: 24 bity (23 bity są jawnie przechowywane)
Rysunek 2-1. Ramka 32-bitowa
Liczbę zmiennoprzecinkową podwójnej precyzji przedstawia się następująco:
- Bit znaku: 1 bit
- Szerokość wykładnika: 11 bitów
- Precyzja znacząca: 53 bity (52 bity są jawnie przechowywane)
Rysunek 2-2. Ramka 64-bitowa
CoreFPU to integracja najwyższego poziomu dwóch modułów konwersji (Fixed to Float point i Float to Fixed point) i trzech operacji arytmetycznych (FP ADD, FP SUB i FP MULT). Użytkownik może skonfigurować dowolną z operacji na podstawie wymagań, tak aby zasoby były wykorzystywane dla wybranej operacji.
Poniższy rysunek przedstawia schemat blokowy najwyższego poziomu CoreFPU z portami.
Rysunek 2-3. Schemat blokowy portów CoreFPU
W poniższej tabeli podano szerokość portów wejściowych i wyjściowych. Tabela 2-1. Szerokość portów wejściowych i wyjściowych
| Sygnał | Szerokość pojedynczej precyzji | Szerokość podwójnej precyzji |
| nie | [31:0] | [63:0] |
| kosz | [31:0] | [63:0] |
| na zewnątrz | [31:0] | [63:0] |
| dąsy | [31:0] | [63:0] |
Konwersja stałoprzecinkowa na zmiennoprzecinkową
CoreFPU skonfigurowane jako fixed-to-floating-point wnioskuje o module konwersji fixed-to-floating-point. Dane wejściowe (ain) do CoreFPU to dowolna liczba stałoprzecinkowa zawierająca bity całkowite i ułamkowe. Konfigurator CoreFPU ma opcje wyboru szerokości wejściowych liczb całkowitych i ułamkowych. Dane wejściowe są prawidłowe dla sygnału di_valid, a dane wyjściowe są prawidłowe dla do_valid. Dane wyjściowe (aout) operacji fixed-to-floating są w formacie zmiennoprzecinkowym pojedynczej lub podwójnej precyzji.
ExampW poniższej tabeli wymieniono operacje konwersji liczby stałoprzecinkowej na zmiennoprzecinkową.
Tabela 2-2. Byłyample do konwersji stałoprzecinkowej na zmiennoprzecinkową
| Liczba stałoprzecinkowa | Liczba zmiennoprzecinkowa | |||||
| nie | Liczba całkowita | Frakcja | na zewnątrz | Podpisać | Wykładnik potęgowy | Mantysa |
| 0x12153524 (32-bitowy) | 00010010000101010 | 011010100100100 | 0x4610a9a9 | 0 | 10001100 | 00100001010100110101001 |
| 0x0000000000008CCC
(64-bitowy) |
0000000000000000000000000000000000000000000000001 | 000110011001100 | 0x3FF199999999999A | 0 | 01111111111 | 0001100110011001100110011001100110011001100110011010 |
Konwersja zmiennoprzecinkowa na stałoprzecinkową
CoreFPU skonfigurowane jako float-to-fixed-inferuje moduł konwersji float-to-fixed-point. Dane wejściowe (ain) do CoreFPU to dowolna liczba zmiennoprzecinkowa pojedynczej lub podwójnej precyzji i generuje dane wyjściowe (aout) w formacie fixed-point zawierającym bity całkowite i ułamkowe. Dane wejściowe są prawidłowe dla sygnału di_valid, a dane wyjściowe są prawidłowe dla do_valid. Konfigurator CoreFPU ma opcje wyboru szerokości danych wyjściowych integer i fraction.
ExampW poniższej tabeli wymieniono operacje konwersji liczb zmiennoprzecinkowych na stałoprzecinkowe.
Tabela 2-3. Byłyample do konwersji zmiennoprzecinkowej na stałoprzecinkową
| Liczba zmiennoprzecinkowa | Liczba stałoprzecinkowa | |||||
| nie | Podpisać | Wykładnik potęgowy | Mantysa | na zewnątrz | Liczba całkowita | Frakcja |
| 0x41bd6783 (32-bitowy) | 0 | 10000011 | 01111010110011110000011 | 0x000bd678 | 00000000000010111 | 101011001111000 |
| 0x4002094c447c30d3
(64-bitowy) |
0 | 10000000000 | 0010000010010100110001000100011111000011000011010011 | 0x0000000000012095 | 0000000000000000000000000000000000000000000000010 | 010000010010101 |
Dodawanie zmiennoprzecinkowe (operacja arytmetyczna)
CoreFPU skonfigurowany jako FP ADD generuje moduł dodawania zmiennoprzecinkowego. Dodaje dwie liczby zmiennoprzecinkowe (ain i bin) i generuje wynik (pout) w formacie zmiennoprzecinkowym. Dane wejściowe i wyjściowe to liczby zmiennoprzecinkowe pojedynczej lub podwójnej precyzji. Dane wejściowe są poprawne dla sygnału di_valid, a dane wyjściowe są poprawne dla sygnału do_valid. Rdzeń generuje flagi ovfl_fg (przepełnienie), qnan_fg (cisza, nie jest liczbą), snan_fg (sygnalizacja, nie jest liczbą), pinf_fg (dodatnia nieskończoność) i ninf_fg (ujemna nieskończoność) w zależności od operacji dodawania.
ExampW poniższych tabelach wymieniono pliki przeznaczone do operacji dodawania liczb zmiennoprzecinkowych.
Tabela 2-4. Byłyample dla operacji dodawania zmiennoprzecinkowego (32-bit)
| Wartość zmiennoprzecinkowa | Podpisać | Wykładnik potęgowy | Mantysa |
| Wejście zmiennoprzecinkowe 1 ain (0x4e989680) | 0 | 10011101 | 00110001001011010000000 |
| Wejście zmiennoprzecinkowe 2 bin (0x4f191b40) | 0 | 10011110 | 00110010001101101000000 |
| Wyjście dodawania zmiennoprzecinkowego pout (0x4f656680) | 0 | 10011110 | 11001010110011010000000 |
Tabela 2-5. Byłyample dla operacji dodawania zmiennoprzecinkowego (64-bit)
| Wartość zmiennoprzecinkowa | Podpisać | Wykładnik potęgowy | Mantysa |
| Wejście zmiennoprzecinkowe 1
ain (0x3ff4106ee30caa32) |
0 | 01111111111 | 0100000100000110111011100011000011001010101000110010 |
| Wejście zmiennoprzecinkowe 2
bin (0x40020b2a78798e61) |
0 | 10000000000 | 0010000010110010101001111000011110011000111001100001 |
| Wyjście dodawania zmiennoprzecinkowego pout (0x400c1361e9ffe37a) | 0 | 10000000000 | 1100000100110110000111101001111111111110001101111010 |
Odejmowanie zmiennoprzecinkowe (operacja arytmetyczna)
CoreFPU skonfigurowany jako FP SUB wnioskuje o module odejmowania zmiennoprzecinkowego. Odejmuje dwie liczby zmiennoprzecinkowe (ain i bin) i dostarcza dane wyjściowe (pout) w formacie zmiennoprzecinkowym. Dane wejściowe i wyjściowe to liczby zmiennoprzecinkowe pojedynczej lub podwójnej precyzji. Dane wejściowe są prawidłowe dla sygnału di_valid, a dane wyjściowe są prawidłowe dla sygnału do_valid. Rdzeń generuje flagi 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) na podstawie operacji odejmowania.
ExampW poniższych tabelach wymieniono pliki do operacji odejmowania zmiennoprzecinkowego.
Tabela 2-6. Byłyample dla operacji odejmowania zmiennoprzecinkowego (32-bit)
| Wartość zmiennoprzecinkowa | Podpisać | Wykładnik potęgowy | Mantysa |
| Wejście zmiennoprzecinkowe 1 ain (0xac85465f) | 1 | 01011001 | 00001010100011001011111 |
| Wejście zmiennoprzecinkowe 2 bin (0x2f516779) | 0 | 01011110 | 10100010110011101111001 |
| Wyjście odejmowania zmiennoprzecinkowego pout (0xaf5591ac) | 1 | 01011110 | 10101011001000110101011 |
| Wartość zmiennoprzecinkowa | Podpisać | Wykładnik potęgowy | Mantysa |
| Wejście zmiennoprzecinkowe 1
ain (0x405569764adff823) |
0 | 10000000101 | 0101011010010111011001001010110111111111100000100011 |
| Wejście zmiennoprzecinkowe 2
bin (0x4057d04e78dee3fc) |
0 | 10000000101 | 0111110100000100111001111000110111101110001111111100 |
| Wyjście odejmowania zmiennoprzecinkowego pout (0xc02336c16ff75ec8) | 1 | 10000000010 | 0011001101101100000101101111111101110101111011001000 |
Mnożenie zmiennoprzecinkowe (operacja arytmetyczna)
CoreFPU skonfigurowane jako FP MULT wnioskuje o module mnożenia zmiennoprzecinkowego. Mnoży dwie liczby zmiennoprzecinkowe (ain i bin) i dostarcza dane wyjściowe (pout) w formacie zmiennoprzecinkowym. Dane wejściowe i wyjściowe to liczby zmiennoprzecinkowe pojedynczej lub podwójnej precyzji. Dane wejściowe są prawidłowe dla sygnału di_valid, a dane wyjściowe są prawidłowe dla sygnału do_valid. Rdzeń generuje flagi 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) na podstawie operacji mnożenia.
ExampW poniższych tabelach wymieniono pliki do operacji mnożenia zmiennoprzecinkowego.
Tabela 2-8. Byłyample dla operacji mnożenia zmiennoprzecinkowego (32-bit)
| Wartość zmiennoprzecinkowa | Podpisać | Wykładnik potęgowy | Mantysa |
| Wejście zmiennoprzecinkowe 1 ain (0x1ec7a735) | 0 | 00111101 | 10001111010011100110101 |
| Wejście zmiennoprzecinkowe 2 bin (0x6ecf15e8) | 0 | 11011101 | 10011110001010111101000 |
| Wyjście mnożenia zmiennoprzecinkowego pout (0x4e21814a) | 0 | 10011100 | 01000011000000101001010 |
| Wartość zmiennoprzecinkowa | Podpisać | Wykładnik potęgowy | Mantysa |
| Wejście zmiennoprzecinkowe 1
ain (0x40c1f5a9930be0df) |
0 | 10000001100 | 0001111101011010100110010011000010111110000011011111 |
| Wejście zmiennoprzecinkowe 2
bin (0x400a0866c962b501) |
0 | 10000000000 | 1010000010000110011011001001011000101011010100000001 |
| Wyjście mnożenia zmiennoprzecinkowego pout (0x40dd38a1c3e2cae9) | 0 | 10000001101 | 1101001110001010000111000011111000101100101011101001 |
Tablica prawdy dla dodawania i odejmowania
Poniższe tabele prawdy zawierają wartości dla operacji dodawania i odejmowania. Tabela 2-10. Tabela prawdy dla dodawania
| Dane A | Dane B | Znak bitowy | Wynik | Przelewowy | Niedomiar | 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 | pozaskończony(y) | 0 | pozaskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| zero | nieskończony(y) | 1 | nieskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| zero | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| zero | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| pozaskończony(y) | zero | 0 | pozaskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| Tabela 2-10. Tablica prawdy dla dodawania (ciąg dalszy) | |||||||||
| Dane A | Dane B | Znak bitowy | Wynik | Przelewowy | Niedomiar | SNaN | QNaN | PINF | NINF |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony(y) | zero | 1 | nieskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| pozaskończony | zero | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | zero | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | pozaskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | pozaskończony | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | nieskończony | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| Dane A | Dane B | Znak bitowy | Wynik | Przelewowy | Niedomiar | 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 | pozaskończony(y) | 1 | nieskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| zero | nieskończony(y) | 0 | pozaskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| zero | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| zero | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony(y) | zero | 0 | pozaskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| nieskończony(y) | zero | 1 | nieskończony(y) | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| Tabela 2-11. Tabela prawdy dla odejmowania (ciąg dalszy) | |||||||||
| Dane A | Dane B | Znak bitowy | Wynik | Przelewowy | Niedomiar | SNaN | QNaN | PINF | NINF |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | zero | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| nieskończony | zero | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | nieskończony | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | pozaskończony | 0/1 | QNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | pozaskończony | 0/1 | SNaN | 0 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
Ważny:
- W poprzednich tabelach oznaczają one dowolną liczbę.
- W poprzednich tabelach oznacza stan obojętny.
Tabliczka prawdy dla mnożenia
Poniższa tabela prawdy zawiera wartości dla operacji mnożenia.
Tabela 2-12. Tablica prawdy dla mnożenia
| Dane A | Dane B | Znak bitowy | Wynik | Przelewowy | Niedomiar | 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 | pozaskończony | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
| zero | nieskończony | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
| zero | pozaskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| zero | nieskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| Tabela 2-12. Tabliczka prawdy dla mnożenia (ciąg dalszy) | |||||||||
| Dane A | Dane B | Znak bitowy | Wynik | Przelewowy | Niedomiar | SNaN | QNaN | PINF | NINF |
| pozaskończony | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | zero | 0 | POSZERO | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | zero | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | zero | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| pozaskończony | pozaskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | POSIADAMY | 0 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | pozaskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| pozaskończony | nieskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| pozaskończony | nieskończony | 0 | POSIADAMY | 0 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| pozaskończony | nieskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 1 | nieskończony | 0 | 0 | 0 | 0 | 0 | 1 |
| nieskończony | pozaskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | pozaskończony | 0 | POSIADAMY | 0 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 0 | POSIADAMY | 1 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | pozaskończony | 0 | POSIADAMY | 0 | 1 | 1 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | pozaskończony | 0 | 0 | 0 | 0 | 1 | 0 |
| nieskończony | nieskończony | 0 | POSQNaN | 0 | 0 | 0 | 1 | 0 | 0 |
| nieskończony | nieskończony | 0 | POSQNaN | 0 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | POSQNaN | 1 | 0 | 1 | 0 | 0 | 0 |
| nieskończony | nieskończony | 0 | POSQNaN | 0 | 1 | 1 | 0 | 0 | 0 |
Ważny:
Bit znaku „0” definiuje wynik dodatni, a „1” definiuje wynik ujemny.
X w poprzedniej tabeli oznacza stan obojętny.
Parametry CoreFPU i sygnały interfejsu
W tej sekcji omówiono parametry ustawień konfiguratora CoreFPU i sygnały I/O.
Parametry GUI konfiguracji
Istnieje szereg konfigurowalnych opcji, które mają zastosowanie do jednostki FPU, jak pokazano w poniższej tabeli. Jeśli wymagana jest inna konfiguracja niż domyślna, okno dialogowe konfiguracji służy do wybierania odpowiednich wartości dla konfigurowalnej opcji.
Tabela 3-1. Parametry graficznego interfejsu użytkownika konfiguracji CoreFPU
| Nazwa parametru | Domyślny | Opis |
| Precyzja | Pojedynczy | Wybierz operację według potrzeb:
Pojedyncza precyzja |
| Typ konwersji | Konwersja stałoprzecinkowa na zmiennoprzecinkową | Wybierz operację według potrzeb:
|
| Szerokość frakcji wejściowej1 | 15 | Konfiguruje punkt ułamkowy w sygnałach wejściowych ain i bin
Zakres prawidłowych wartości wynosi 31–1 |
| Szerokość frakcji wyjściowej2 | 15 | Konfiguruje punkt ułamkowy w sygnałach wyjściowych
Zakres prawidłowych wartości wynosi 51–1 |
Ważny:
- Ten parametr można konfigurować tylko w przypadku konwersji liczby stałoprzecinkowej na zmiennoprzecinkową.
- Ten parametr można konfigurować tylko w przypadku konwersji liczb zmiennoprzecinkowych na stałoprzecinkowe.
Sygnały wejściowe i wyjściowe (zadaj pytanie)
W poniższej tabeli wymieniono sygnały portów wejściowych i wyjściowych CoreFPU.
Tabela 3-2. Opis portu
| Nazwa sygnału | Szerokość | Typ | Opis |
| zegar | 1 | Wejście | Główny zegar systemowy |
| pierwszy | 1 | Wejście | Aktywny-niski asynchroniczny reset |
| nieważny | 1 | Wejście | Aktywny-wysoki sygnał wejściowy ważny
Ten sygnał oznacza, że dane obecne w ain[31:0], ain[63:0] i bin[31:0], bin[63:0] są prawidłowe. |
| nie | 32/64 | Wejście | Szyna wejściowa (służy do wszystkich operacji) |
| kosz1 | 32/64 | Wejście | Szyna wejściowa B (służy wyłącznie do operacji arytmetycznych) |
| na zewnątrz2 | 32/64 | Wyjście | Wartość wyjściowa jest ustawiana, gdy wybrane są operacje konwersji stałej na zmiennoprzecinkową lub zmiennoprzecinkowej na stałoprzecinkową. |
| dąsy1 | 32/64 | Wyjście | Wartość wyjściowa po wybraniu operacji dodawania, odejmowania lub mnożenia. |
| Tabela 3-2. Opis portu (ciąg dalszy) | |||
| Nazwa sygnału | Szerokość | Typ | Opis |
| zrób_ważny | 1 | Wyjście | Sygnał aktywny-wysoki
Sygnał ten oznacza, że dane obecne na magistrali danych pout/aout są prawidłowe. |
| ovfl_fg3 | 1 | Wyjście | Sygnał aktywny-wysoki
Ten sygnał sygnalizuje przepełnienie podczas operacji zmiennoprzecinkowych. |
| niefl_fg | 1 | Wyjście | Sygnał aktywny-wysoki
Sygnał ten wskazuje niedomiar podczas operacji zmiennoprzecinkowych. |
| qnan_fg3 | 1 | Wyjście | Sygnał aktywny-wysoki
Ten sygnał oznacza, że podczas operacji na liczbach zmiennoprzecinkowych wartość QNaN (Quiet Not a Number) jest cicha. |
| snan_fg | 1 | Wyjście | Sygnał aktywny-wysoki
Ten sygnał oznacza sygnalizację Not-a-Number (SNaN) podczas operacji zmiennoprzecinkowych. |
| pinf_fg3 | 1 | Wyjście | Sygnał aktywny-wysoki
Ten sygnał oznacza dodatnią nieskończoność podczas operacji zmiennoprzecinkowych. |
| ninf_fg | 1 | Wyjście | Sygnał aktywny-wysoki
Ten sygnał oznacza ujemną nieskończoność podczas operacji zmiennoprzecinkowych. |
Ważny:
- Ten port jest dostępny wyłącznie do operacji dodawania, odejmowania i mnożenia liczb zmiennoprzecinkowych.
- Ten port jest dostępny wyłącznie w przypadku operacji konwersji liczb stałoprzecinkowych na zmiennoprzecinkowe i liczb zmiennoprzecinkowych na stałoprzecinkowe.
- Ten port umożliwia wykonywanie operacji zamiany liczb zmiennoprzecinkowych na stałoprzecinkowe, dodawanie liczb zmiennoprzecinkowych, odejmowanie liczb zmiennoprzecinkowych i mnożenie liczb zmiennoprzecinkowych.
Implementacja CoreFPU w Libero Design Suite
W tej sekcji opisano implementację CoreFPU w pakiecie Libero Design Suite.
Inteligentny projekt
CoreFPU jest dostępny do pobrania w katalogu Libero IP za pośrednictwem web repozytorium. Po umieszczeniu go w katalogu rdzeń jest tworzony przy użyciu przepływu SmartDesign. Aby uzyskać informacje na temat używania SmartDesign do konfigurowania, łączenia i generowania rdzeni, zobacz pomoc online Libero SoC.
Po skonfigurowaniu i wygenerowaniu instancji rdzenia, podstawowa funkcjonalność jest symulowana przy użyciu testbench dostarczonych z CoreFPU. Parametry testbench automatycznie dostosowują się do konfiguracji CoreFPU. CoreFPU jest instancjonowany jako składnik większego projektu.
Rysunek 4-1. Instancja SmartDesign CoreFPU dla operacji arytmetycznych
Rysunek 4-2. Instancja SmartDesign CoreFPU do operacji konwersji 
Konwersja stałoprzecinkowa na zmiennoprzecinkową
Podczas konwersji stałoprzecinkowej na zmiennoprzecinkową szerokość ułamka wejściowego jest konfigurowalna. Szerokość wyjściowa jest domyślnie ustawiona na 32 bity dla pojedynczej precyzji i 64 bity dla podwójnej precyzji zmiennoprzecinkowej.
Aby dokonać konwersji z stałoprzecinkowego na zmiennoprzecinkowy, wybierz typ konwersji Stały na zmiennoprzecinkowy, jak pokazano na poniższym rysunku.
Zmiennoprzecinkowe na stałoprzecinkowe
Podczas konwersji liczb zmiennoprzecinkowych na stałoprzecinkowe, szerokość ułamkowa wyjścia jest konfigurowalna, natomiast szerokość wejścia jest domyślnie ustawiona na 32 bity dla liczb zmiennoprzecinkowych pojedynczej precyzji i na 64 bity dla liczb zmiennoprzecinkowych podwójnej precyzji.
Aby dokonać konwersji z liczby zmiennoprzecinkowej na stałoprzecinkową, wybierz typ konwersji Zmiennoprzecinkowa na stałą, jak pokazano na poniższym rysunku.
Rysunek 4-4. Konfigurator CoreFPU dla konwersji zmiennoprzecinkowej na stałą
Dodawanie/odejmowanie/mnożenie zmiennoprzecinkowe
Podczas operacji dodawania, odejmowania i mnożenia liczb zmiennoprzecinkowych szerokość ułamka wejściowego i szerokość ułamka wyjściowego nie są konfigurowalne, ponieważ są to operacje arytmetyczne na liczbach zmiennoprzecinkowych, a szerokość wejścia/wyjścia jest domyślnie ustawiona na 32 bity dla pojedynczej precyzji i 64 bity dla operacji zmiennoprzecinkowych podwójnej precyzji.
Poniższy rysunek przedstawia konfigurator CoreFPU dla operacji odejmowania zmiennoprzecinkowego.
Rysunek 4-5. Konfigurator CoreFPU do odejmowania zmiennoprzecinkowego
Symulacja (zadaj pytanie)
Aby uruchomić symulacje, w oknie konfiguracji rdzenia wybierz User Testbench. Po wygenerowaniu CoreFPU, pre-synteza testbench Hardware Description Language (HDL) filesą zainstalowane w Libero.
Formy fal symulacyjnych (Zadaj pytanie)
W tej sekcji omówiono przebiegi symulacyjne dla CoreFPU.
Poniższe rysunki pokazują przebieg konwersji stałoprzecinkowej na zmiennoprzecinkową dla systemów 32- i 64-bitowych.

Integracja systemów
Poniższy rysunek przedstawia example używania rdzenia. W tym example, projekt UART jest używany jako kanał komunikacyjny pomiędzy projektem a komputerem hosta. Sygnały ain i bin (każdy o szerokości 32-bitowej lub 64-bitowej) są wejściami do projektu z UART. Po otrzymaniu sygnału di_valid CoreFPU oblicza wynik. Po obliczeniu wyniku sygnał do_valid przechodzi w stan wysoki i zapisuje wynik (dane aout/pout) w buforze wyjściowym. Ta sama procedura jest stosowana do konwersji i operacji arytmetycznych. W przypadku operacji konwersji wystarczające jest tylko wejście ain, podczas gdy w przypadku operacji arytmetycznych wymagane są zarówno wejścia ain, jak i bin. Wyjście aout jest włączone dla operacji konwersji, a port pout jest włączony dla operacji arytmetycznych.
Rysunek 4-16. Byłyample systemu CoreFPU

- Synteza (Zadaj pytanie)
Aby uruchomić syntezę na CoreFPU, ustaw korzeń projektu na wystąpienie komponentu IP i z panelu przepływu projektu Libero uruchom narzędzie Synteza.
Miejsce i trasa (Zadaj pytanie)
Po syntezie projektu uruchom narzędzie Place-and-Route. CoreFPU nie wymaga żadnych specjalnych ustawień Place-and-Route. - Testbench użytkownika (Zadaj pytanie)
W wydaniu CoreFPU IP udostępniono testbench użytkownika. Za pomocą tego testbench można sprawdzić zachowanie funkcjonalne CoreFPU.
Na poniższym rysunku przedstawiono uproszczony schemat blokowy stanowiska testowego użytkownika. Stanowisko testowe użytkownika tworzy instancję skonfigurowanego projektu CoreFPU (UUT) i zawiera generator danych testowych dla behawioru, niezbędny zegar oraz sygnały resetowania.
Rysunek 4-17. Testbench użytkownika CoreFPU
Ważne: Należy monitorować sygnały wyjściowe w symulatorze ModelSim, patrz sekcja Symulacja.
Dodatkowe odniesienia (Zadaj pytanie)
W tej sekcji znajduje się lista dodatkowych informacji.
Aktualizacje i dodatkowe informacje na temat oprogramowania, urządzeń i sprzętu można znaleźć na stronie
Strony dotyczące własności intelektualnej dotyczące układów FPGA i PLD firmy Microchip webstrona.
- Znane problemy i sposoby ich obejścia (Zadaj pytanie)
Nie są znane żadne problemy ani obejścia dla CoreFPU v3.0. - Wycofane funkcje i urządzenia (Zadaj pytanie)
W tej wersji IP nie ma żadnych wycofanych funkcji ani urządzeń.
Słowniczek
Poniżej znajduje się lista terminów i definicji użytych w dokumencie.
Tabela 6-1. Terminy i definicje
| Termin | Definicja |
| FPU | Jednostka zmiennoprzecinkowa |
| FP DODAJ | Dodawanie zmiennoprzecinkowe |
| FP-SUBSK | Odejmowanie zmiennoprzecinkowe |
| FP WIELOKROTNY | Mnożenie zmiennoprzecinkowe |
Rozwiązane problemy
Poniższa tabela zawiera listę wszystkich rozwiązanych problemów dla różnych wersji CoreFPU.
Tabela 7-1. Rozwiązane problemy
| Uwolnienie | Opis |
| 3.0 | Poniżej znajduje się lista wszystkich rozwiązanych problemów w wersji 3.0:
Numer sprawy: 01420387 i 01422128 Dodano logikę schematu zaokrąglania (zaokrąglanie do najbliższej liczby parzystej). |
| 2.1 | Poniżej znajduje się lista wszystkich rozwiązanych problemów w wersji 2.1: Projekt napotyka problemy ze względu na obecność zduplikowanych modułów w przypadku tworzenia wielu rdzeni. Zmiana nazwy instancji IP CoreFPU skutkuje błędem „Niezdefiniowany moduł”. |
| 1.0 | Pierwsze wydanie |
Wykorzystanie zasobów urządzenia i wydajność
Makro CoreFPU jest zaimplementowane w rodzinach wymienionych w poniższej tabeli.
Tabela 8-1. Wykorzystanie urządzenia FPU PolarFire Unit dla 32-bitowego
| Zasoby FPGA | Wykorzystanie | |||||||
| Rodzina | 4LUT | DFF | Całkowity | Blok matematyczny | Urządzenie | Procenttage | Wydajność | Utajenie |
| Z stałoprzecinkowego na zmiennoprzecinkowy | ||||||||
| PolarFire® | 260 | 104 | 364 | 0 | MPF300T | 0.12 | 310MHz | 3 |
| Zmiennoprzecinkowe na stałoprzecinkowe | ||||||||
| PolarFire | 591 | 102 | 693 | 0 | MPF300T | 0.23 | 160MHz | 3 |
| Dodawanie zmiennoprzecinkowe | ||||||||
| PolarFire | 1575 | 1551 | 3126 | 0 | MPF300T | 1.06 | 340MHz | 16 |
| Odejmowanie zmiennoprzecinkowe | ||||||||
| PolarFire | 1561 | 1549 | 3110 | 0 | MPF300T | 1.04 | 345MHz | 16 |
| Mnożenie zmiennoprzecinkowe | ||||||||
| PolarFire | 465 | 847 | 1312 | 4 | MPF300T | 0.44 | 385MHz | 14 |
| Zasoby FPGA | Wykorzystanie | |||||||
| Rodzina | 4LUT | DFF | Całkowity | Blok matematyczny | Urządzenie | Procenttage | Wydajność | Utajenie |
| Z stałoprzecinkowego na zmiennoprzecinkowy | ||||||||
| RTG4™ | 264 | 104 | 368 | 0 | RT4G150 | 0.24 | 160MHz | 3 |
| Zmiennoprzecinkowe na stałoprzecinkowe | ||||||||
| RTG4 | 439 | 112 | 551 | 0 | RT4G150 | 0.36 | 105MHz | 3 |
| Dodawanie zmiennoprzecinkowe | ||||||||
| RTG4 | 1733 | 1551 | 3284 | 0 | RT4G150 | 1.16 | 195MHz | 16 |
| Odejmowanie zmiennoprzecinkowe | ||||||||
| RTG4 | 1729 | 1549 | 3258 | 0 | RT4G150 | 1.16 | 190MHz | 16 |
| Mnożenie zmiennoprzecinkowe | ||||||||
| RTG4 | 468 | 847 | 1315 | 4 | RT4G150 | 0.87 | 175MHz | 14 |
| Zasoby FPGA | Wykorzystanie | |||||||
| Rodzina | 4LUT | DFF | Całkowity | Blok matematyczny | Urządzenie | Procenttage | Wydajność | Utajenie |
| Z stałoprzecinkowego na zmiennoprzecinkowy | ||||||||
| PolarFire® | 638 | 201 | 849 | 0 | MPF300T | 0.28 | 305MHz | 3 |
| Zmiennoprzecinkowe na stałoprzecinkowe | ||||||||
| PolarFire | 2442 | 203 | 2645 | 0 | MPF300T | 0.89 | 110MHz | 3 |
| Dodawanie zmiennoprzecinkowe | ||||||||
| PolarFire | 5144 | 4028 | 9172 | 0 | MPF300T | 3.06 | 240MHz | 16 |
| Odejmowanie zmiennoprzecinkowe | ||||||||
| PolarFire | 5153 | 4026 | 9179 | 0 | MPF300T | 3.06 | 250MHz | 16 |
| Mnożenie zmiennoprzecinkowe | ||||||||
| PolarFire | 1161 | 3818 | 4979 | 16 | MPF300T | 1.66 | 340MHz | 27 |
| Zasoby FPGA | Wykorzystanie | |||||||
| Rodzina | 4LUT | DFF | Całkowity | Blok matematyczny | Urządzenie | Procenttage | Wydajność | Utajenie |
| Z stałoprzecinkowego na zmiennoprzecinkowy | ||||||||
| RTG4™ | 621 | 201 | 822 | 0 | RT4G150 | 0.54 | 140MHz | 3 |
| Zmiennoprzecinkowe na stałoprzecinkowe | ||||||||
| RTG4 | 1114 | 203 | 1215 | 0 | RT4G150 | 0.86 | 75MHz | 3 |
| Dodawanie zmiennoprzecinkowe | ||||||||
| RTG4 | 4941 | 4028 | 8969 | 0 | RT4G150 | 5.9 | 140MHz | 16 |
| Odejmowanie zmiennoprzecinkowe | ||||||||
| RTG4 | 5190 | 4026 | 9216 | 0 | RT4G150 | 6.07 | 130MHz | 16 |
| Mnożenie zmiennoprzecinkowe | ||||||||
| RTG4 | 1165 | 3818 | 4983 | 16 | RT4G150 | 3.28 | 170MHz | 27 |
Ważne: Aby zwiększyć częstotliwość, zaznacz opcję Włącz retiming w ustawieniach syntezy.
Historia rewizji
Historia rewizji opisuje zmiany, które zostały wprowadzone w dokumencie. Zmiany są wymienione według rewizji, zaczynając od najnowszej publikacji.

Obsługa mikrochipów FPGA
Grupa produktów Microchip FPGA wspiera swoje produkty różnymi usługami wsparcia, w tym Customer Service, Customer Technical Support Center, a webi biura sprzedaży na całym świecie. Klientom sugeruje się odwiedzenie zasobów internetowych firmy Microchip przed skontaktowaniem się z pomocą techniczną, ponieważ jest bardzo prawdopodobne, że na ich pytania zostały już udzielone odpowiedzi.
Skontaktuj się z Centrum Wsparcia Technicznego poprzez webmiejsce na www.microchip.com/support. Podaj numer części urządzenia FPGA, wybierz odpowiednią kategorię obudowy i prześlij projekt files podczas tworzenia zgłoszenia do pomocy technicznej.
Skontaktuj się z działem obsługi klienta, aby uzyskać nietechniczne wsparcie dotyczące produktu, takie jak wycena produktów, aktualizacje produktów, informacje o aktualizacjach, status zamówienia i autoryzacja.
- Z Ameryki Północnej zadzwoń pod numer 800.262.1060
- Z reszty świata zadzwoń pod numer 650.318.4460
- Faks z dowolnego miejsca na świecie: 650.318.8044
Informacje o mikroczipie
Znaki towarowe
Nazwa i logo „Microchip”, logo „M” oraz inne nazwy, loga i marki są zarejestrowanymi i niezarejestrowanymi znakami towarowymi Microchip Technology Incorporated lub jej podmiotów stowarzyszonych i/lub spółek zależnych w Stanach Zjednoczonych i/lub innych krajach („Znaki towarowe Microchip”). Informacje dotyczące znaków towarowych Microchip można znaleźć na stronie https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3
Informacja prawna
Niniejsza publikacja i zawarte w niej informacje mogą być używane wyłącznie z produktami firmy Microchip, w tym do projektowania, testowania i integracji produktów firmy Microchip z aplikacją użytkownika. Wykorzystanie tych informacji w jakikolwiek inny sposób narusza niniejsze warunki. Informacje dotyczące aplikacji urządzenia są podawane wyłącznie dla Twojej wygody i mogą zostać zastąpione aktualizacjami. Twoim obowiązkiem jest upewnienie się, że Twoja aplikacja spełnia Twoje wymagania. Skontaktuj się z lokalnym biurem sprzedaży Microchip, aby uzyskać dodatkowe wsparcie lub uzyskaj dodatkowe wsparcie pod adresem www.microchip.com/en-us/support/design-help/client-support-services
INFORMACJE TE SĄ DOSTARCZANE PRZEZ MICROCHIP „TAKIE, JAKIE SĄ”. MICROCHIP NIE SKŁADA ŻADNYCH OŚWIADCZEŃ ANI GWARANCJI ŻADNEGO RODZAJU, WYRAŹNYCH ANI DOROZUMIANYCH, PISEMNYCH ANI USTNYCH, USTAWOWYCH ANI INNYCH, ZWIĄZANYCH Z INFORMACJAMI, W TYM MIĘDZY INNYMI ŻADNYCH DOROZUMIANYCH GWARANCJI NIENARUSZALNOŚCI, PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU LUB GWARANCJI ZWIĄZANYCH Z ICH STANEM, JAKOŚCIĄ LUB WYDAJNOŚCIĄ.
W ŻADNYM WYPADKU MICROCHIP NIE PONOSI ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK POŚREDNIE, SPECJALNE, KARNE, PRZYPADKOWE LUB WTÓRNE STRATY, USZKODZENIA, KOSZTY LUB WYDATKI JAKIEGOKOLWIEK RODZAJU ZWIĄZANE Z INFORMACJAMI LUB ICH WYKORZYSTANIEM, NIEZALEŻNIE OD PRZYCZYNY, NAWET JEŚLI MICROCHIP ZOSTAŁ POINFORMOWANY O MOŻLIWOŚCI LUB SZKODY SĄ PRZEWIDYWALNE. W PEŁNYM ZAKRESIE DOZWOLONYM PRZEZ PRAWO, CAŁKOWITA ODPOWIEDZIALNOŚĆ MICROCHIP ZA WSZYSTKIE ROSZCZENIA W JAKIKOLWIEK SPOSÓB ZWIĄZANE Z INFORMACJAMI LUB ICH WYKORZYSTANIEM NIE PRZEKROCZY KWOTY OPŁAT, JEŚLI TAKIE BYŁY, KTÓRE ZAPŁACIŁEŚ BEZPOŚREDNIO MICROCHIP ZA INFORMACJE.
Korzystanie z urządzeń Microchip w podtrzymywaniu życia i/lub aplikacjach bezpieczeństwa odbywa się wyłącznie na ryzyko kupującego, a kupujący zgadza się bronić, zabezpieczać i chronić Microchip przed wszelkimi szkodami, roszczeniami, pozwami lub wydatkami wynikającymi z takiego użytkowania. Żadne licencje nie są przekazywane, w sposób dorozumiany lub inny, na mocy jakichkolwiek praw własności intelektualnej Microchip, chyba że zaznaczono inaczej.
Funkcja ochrony kodu mikroprocesorowego
Należy zwrócić uwagę na następujące szczegóły dotyczące funkcji ochrony kodu w produktach Microchip:
- Produkty Microchip spełniają specyfikacje zawarte w ich konkretnych Kartach Danych Microchip.
- Firma Microchip uważa, że jej rodzina produktów jest bezpieczna, gdy jest używana zgodnie z przeznaczeniem, zgodnie ze specyfikacjami roboczymi i w normalnych warunkach.
- Firma Microchip ceni i agresywnie chroni swoje prawa własności intelektualnej. Próby naruszenia zabezpieczeń kodowych produktów Microchip są surowo zabronione i mogą stanowić naruszenie ustawy Digital Millennium Copyright Act.
- Ani Microchip, ani żaden inny producent półprzewodników nie może zagwarantować bezpieczeństwa swojego kodu. Ochrona kodu nie oznacza, że gwarantujemy, że produkt jest „niezniszczalny”. Ochrona kodu stale ewoluuje. Microchip zobowiązuje się do ciągłego ulepszania funkcji ochrony kodu naszych produktów.
Dokumenty / Zasoby
![]() |
MICROCHIP CoreFPU Jednostka zmiennoprzecinkowa [plik PDF] Instrukcja użytkownika v3.0, v2.1, v2.0, v1.0, CoreFPU Jednostka zmiennoprzecinkowa rdzenia, Jednostka zmiennoprzecinkowa rdzenia, Jednostka zmiennoprzecinkowa, Jednostka punktowa |

