MICROCHIP -logo

Unità a virgola mobile Core FPU di MICROCHIP

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit-prodotto

 

Introduzione 

  • La Core Floating Point Unit (CoreFPU) è progettata per operazioni aritmetiche e di conversione in virgola mobile, per numeri in virgola mobile a precisione singola e doppia. La CoreFPU supporta conversioni da virgola fissa a virgola mobile e da virgola mobile a virgola fissa, nonché operazioni di addizione, sottrazione e moltiplicazione in virgola mobile. Lo standard IEEE® per l'aritmetica in virgola mobile (IEEE 754) è uno standard tecnico per il calcolo in virgola mobile.
  • Importante: CoreFPU supporta calcoli solo con numeri normalizzati ed è supportato solo il linguaggio Verilog; VHDL non è supportato.

Riepilogo
La tabella seguente fornisce un riepilogo delle caratteristiche del CoreFPU.

Tabella 1. Caratteristiche del CoreFPU 

Versione principale Questo documento si applica a CoreFPU v3.0.
Famiglie di dispositivi supportate
  • SoC PolarFire®
  • Fuoco Polare
  • RTG4™
Flusso di strumenti supportato Richiede Libero® SoC v12.6 o versioni successive.
Licenza CoreFPU non è bloccato da una licenza.
Istruzioni per l'installazione CoreFPU deve essere installato automaticamente nel catalogo IP di Libero SoC tramite la funzione di aggiornamento del catalogo IP. In alternativa, CoreFPU può essere scaricato manualmente dal catalogo. Una volta che il core IP è

Una volta installato, viene configurato, generato e istanziato all'interno di SmartDesign per essere incluso nel progetto.

Utilizzo e prestazioni del dispositivo Un riepilogo delle informazioni sull'utilizzo e sulle prestazioni di CoreFPU è riportato in Utilizzo e prestazioni delle risorse del dispositivo.

Informazioni sul registro delle modifiche di CoreFPU
Questa sezione fornisce una panoramica completaview delle nuove funzionalità integrate, a partire dalla versione più recente. Per ulteriori informazioni sui problemi risolti, consultare la sezione Problemi risolti.

Versione Cosa c'è di nuovo
versione 3.0 Implementati flag di output aggiuntivi per migliorare la precisione dell'IP
versione 2.1 Aggiunta la funzionalità di doppia precisione
versione 2.0 Aggiornate le forme d'onda temporali
versione 1.0 Prima versione di produzione di CoreFPU

1 Caratteristiche

CoreFPU presenta le seguenti caratteristiche principali:

  • Supporta numeri in virgola mobile a precisione singola e doppia secondo lo standard IEEE-754
  • Supporta le conversioni elencate:
    • Conversione da virgola fissa a virgola mobile
    • Conversione da virgola mobile a virgola fissa
  • Supporta le operazioni aritmetiche elencate:
    • Addizione in virgola mobile
    • Sottrazione in virgola mobile
    • Moltiplicazione in virgola mobile
  • Fornisce lo schema di arrotondamento (arrotondamento al numero pari più vicino) solo per le operazioni aritmetiche
  • Fornisce flag per overflow, underflow, infinito (infinito positivo, infinito negativo), quiet NaN (QNaN) e signaling NaN (SNaN) per numeri in virgola mobile.
  • Supporta l'implementazione completamente pipelined delle operazioni aritmetiche
  • Fornisce la disposizione per configurare il Core per i requisiti di progettazione

Descrizione funzionale

  • Lo standard IEEE per l'aritmetica in virgola mobile (IEEE 754) è uno standard tecnico per il calcolo in virgola mobile. Il termine "virgola mobile" si riferisce al punto base del numero (punto decimale o punto binario), che si trova in un punto qualsiasi rispetto alle cifre significative del numero.
    Un numero in virgola mobile è solitamente espresso nella notazione scientifica, con una frazione (F) e un esponente (E) di una certa radice (r), nella forma F × r^E. I numeri decimali usano la radice di 10 (F × 10^E); mentre i numeri binari usano la radice di 2 (F × 2^E).
  • La rappresentazione del numero in virgola mobile non è univoca. Ad esempioampAd esempio, il numero 55.66 è rappresentato come 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3 e così via. La parte frazionaria è normalizzata. Nella forma normalizzata, c'è solo una cifra diversa da zero prima del punto di base. Ad esempioampAd esempio, il numero decimale 123.4567 è normalizzato come 1.234567 × 10^2; il numero binario 1010.1011B è normalizzato come 1.0101011B × 2^3.
  • È importante notare che i numeri in virgola mobile soffrono di perdita di precisione quando sono rappresentati con un numero fisso di bit (ad esempioample, 32 bit o 64 bit). Questo perché esiste un numero infinito di numeri reali (anche all'interno di un piccolo intervallo da 0.0 a 0.1). D'altra parte, un
    Un modello binario a n bit rappresenta un numero finito di 2^n numeri distinti. Pertanto, non tutti i numeri reali vengono rappresentati. Viene invece utilizzata l'approssimazione più vicina, con conseguente perdita di accuratezza.

Il numero in virgola mobile a precisione singola è rappresentato come segue:

  • Bit di segno: 1 bit
  • Larghezza esponente: 8 bit
  • Precisione significativa: 24 bit (23 bit sono memorizzati esplicitamente)

Figura 2-1. Frame a 32 bit

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (2)Il numero in virgola mobile a doppia precisione è rappresentato come segue:

  • Bit di segno: 1 bit
  • Larghezza esponente: 11 bit
  • Precisione significativa: 53 bit (52 bit sono memorizzati esplicitamente)

Figura 2-2. Frame a 64 bit MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (3)CoreFPU è l'integrazione di alto livello dei due moduli di conversione (da fisso a virgola mobile e da virgola mobile a virgola fissa) e di tre operazioni aritmetiche (FP ADD, FP SUB e FP MULT). L'utente può configurare una qualsiasi delle operazioni in base alle proprie esigenze, in modo che le risorse vengano utilizzate per l'operazione selezionata.
La figura seguente mostra il diagramma a blocchi CoreFPU di livello superiore con le porte.

Figura 2-3. Diagramma a blocchi delle porte CoreFPU

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (4)La tabella seguente elenca la larghezza delle porte di ingresso e di uscita. Tabella 2-1. Larghezza delle porte di ingresso e di uscita

Segnale Larghezza di precisione singola Larghezza doppia precisione
proprio [31:0] [63:0]
bidone [31:0] [63:0]
circa [31:0] [63:0]
broncio [31:0] [63:0]

Da virgola fissa a virgola mobile (conversione)

La configurazione del CoreFPU come da fisso a virgola mobile implica il modulo di conversione da virgola fissa a virgola mobile. L'input (ain) del CoreFPU è un qualsiasi numero in virgola fissa contenente i bit interi e frazionari. Il configuratore del CoreFPU offre la possibilità di selezionare le ampiezze di input per gli interi e le frazioni. L'input è valido sul segnale di_valid e l'output è valido sul segnale do_valid. L'output (aout) dell'operazione da fisso a float è in formato a virgola mobile a precisione singola o doppia.
Example per l'operazione di conversione da virgola fissa a virgola mobile sono elencate nella tabella seguente.
Tabella 2-2. Example per la conversione da virgola fissa a virgola mobile

Numero a virgola fissa Numero in virgola mobile
proprio Intero Frazione circa Cartello Esponente Mantissa
0x12153524 (32 bit) 00010010000101010 011010100100100 0x4610a9a9 0 10001100 00100001010100110101001
0x0000000000008CCC

(64 bit)

0000000000000000000000000000000000000000000000001 000110011001100 0x3FF199999999999A 0 01111111111 0001100110011001100110011001100110011001100110011010

Da virgola mobile a virgola fissa (conversione) 
CoreFPU configurato come da virgola mobile a virgola fissa deduce il modulo di conversione da virgola mobile a virgola fissa. L'input (ain) di CoreFPU è un qualsiasi numero in virgola mobile a precisione singola o doppia e produce un output (aout) in formato a virgola fissa contenente bit interi e frazionari. L'input è valido sul segnale di_valid e l'output è valido sul segnale do_valid. Il configuratore di CoreFPU offre la possibilità di selezionare le larghezze di output per numeri interi e frazionari.
ExampNella tabella seguente è elencato il file per l'operazione di conversione da virgola mobile a virgola fissa.

Tabella 2-3. Example per la conversione da virgola mobile a virgola fissa

Numero in virgola mobile Numero a virgola fissa
proprio Cartello Esponente Mantissa circa Intero Frazione
0x41bd6783 (32 bit) 0 10000011 01111010110011110000011 0x000bd678 00000000000010111 101011001111000
0x4002094c447c30d3

(64 bit)

0 10000000000 0010000010010100110001000100011111000011000011010011 0x0000000000012095 0000000000000000000000000000000000000000000000010 010000010010101

Addizione in virgola mobile (operazione aritmetica)
Il CoreFPU configurato come FP ADD deduce il modulo di addizione in virgola mobile. Somma i due numeri in virgola mobile (ain e bin) e fornisce l'output (pout) in formato virgola mobile. L'input e l'output sono numeri in virgola mobile a precisione singola o doppia. L'input è valido sul segnale di_valid e l'output è valido sul segnale do_valid. Il core produce i flag ovfl_fg (Overflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) e ninf_fg (Negative Infinity) in base all'operazione di addizione.
Exampi file per l'operazione di addizione in virgola mobile sono elencati nelle tabelle seguenti.
Tabella 2-4. Example per operazione di addizione in virgola mobile (32 bit)

Valore in virgola mobile Cartello Esponente Mantissa
Ingresso in virgola mobile 1 ain (0x4e989680) 0 10011101 00110001001011010000000
Bin di input in virgola mobile 2 (0x4f191b40) 0 10011110 00110010001101101000000
Output di addizione in virgola mobile pout (0x4f656680) 0 10011110 11001010110011010000000

Tabella 2-5. Example per operazione di addizione in virgola mobile (64 bit)

Valore in virgola mobile Cartello Esponente Mantissa
Ingresso in virgola mobile 1

ain (0x3ff4106ee30caa32)

0 01111111111 0100000100000110111011100011000011001010101000110010
Ingresso in virgola mobile 2

bin (0x40020b2a78798e61)

0 10000000000 0010000010110010101001111000011110011000111001100001
Output di addizione in virgola mobile pout (0x400c1361e9ffe37a) 0 10000000000 1100000100110110000111101001111111111110001101111010

Sottrazione in virgola mobile (operazione aritmetica) 
Il CoreFPU configurato come FP SUB deduce il modulo di sottrazione in virgola mobile. Sottrae i due numeri in virgola mobile (ain e bin) e fornisce l'output (pout) in formato virgola mobile. L'input e l'output sono numeri in virgola mobile a precisione singola o doppia. L'input è valido sul segnale di_valid e l'output è valido sul segnale do_valid. Il core produce i flag ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) e ninf_fg (Negative Infinity) in base all'operazione di sottrazione.
Exampi file per l'operazione di sottrazione in virgola mobile sono elencati nelle tabelle seguenti.
Tabella 2-6. Example per operazione di sottrazione in virgola mobile (32 bit)

Valore in virgola mobile Cartello Esponente Mantissa
Ingresso in virgola mobile 1 ain (0xac85465f) 1 01011001 00001010100011001011111
Bin di input in virgola mobile 2 (0x2f516779) 0 01011110 10100010110011101111001
Output di sottrazione in virgola mobile pout (0xaf5591ac) 1 01011110 10101011001000110101011
Valore in virgola mobile Cartello Esponente Mantissa
Ingresso in virgola mobile 1

ain (0x405569764adff823)

0 10000000101 0101011010010111011001001010110111111111100000100011
Ingresso in virgola mobile 2

bin (0x4057d04e78dee3fc)

0 10000000101 0111110100000100111001111000110111101110001111111100
Output di sottrazione in virgola mobile pout (0xc02336c16ff75ec8) 1 10000000010 0011001101101100000101101111111101110101111011001000

Moltiplicazione in virgola mobile (operazione aritmetica)
Il CoreFPU configurato come FP MULT deduce il modulo di moltiplicazione in virgola mobile. Moltiplica i due numeri in virgola mobile (ain e bin) e fornisce l'output (pout) in formato virgola mobile. L'input e l'output sono numeri in virgola mobile a precisione singola o doppia. L'input è valido sul segnale di_valid e l'output è valido sul segnale do_valid. Il core produce i flag ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) e ninf_fg (Negative Infinity) in base all'operazione di moltiplicazione.
ExampNelle tabelle seguenti sono elencati i file per l'operazione di moltiplicazione in virgola mobile.
Tabella 2-8. Example per operazione di moltiplicazione in virgola mobile (32 bit)

Valore in virgola mobile Cartello Esponente Mantissa
Ingresso in virgola mobile 1 ain (0x1ec7a735) 0 00111101 10001111010011100110101
Bin di input in virgola mobile 2 (0x6ecf15e8) 0 11011101 10011110001010111101000
Output di moltiplicazione in virgola mobile pout (0x4e21814a) 0 10011100 01000011000000101001010
Valore in virgola mobile Cartello Esponente Mantissa
Ingresso in virgola mobile 1

ain (0x40c1f5a9930be0df)

0 10000001100 0001111101011010100110010011000010111110000011011111
Ingresso in virgola mobile 2

bin (0x400a0866c962b501)

0 10000000000 1010000010000110011011001001011000101011010100000001
Output di moltiplicazione in virgola mobile pout (0x40dd38a1c3e2cae9) 0 10000001101 1101001110001010000111000011111000101100101011101001

 Tabella di verità per addizione e sottrazione 
Le seguenti tabelle di verità elencano i valori per le operazioni di addizione e sottrazione. Tabella 2-10. Tabella di verità per l'addizione

Dati A Dati B Segno Bit Risultato Traboccare Sottoflusso 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 posfinito(y) 0 posfinito(y) 0 0 0 0 0 0
zero negfinito(y) 1 negfinito(y) 0 0 0 0 0 0
zero posiinfinito 0 posiinfinito 0 0 0 0 1 0
zero neginfinite 1 neginfinite 0 0 0 0 0 1
posfinito(y) zero 0 posfinito(y) 0 0 0 0 0 0
posfinito posiinfinito 0 posiinfinito 0 0 0 0 1 0
Tavolo Telefono: 2-10. Tabella di verità per l'addizione (continua)
Dati A Dati B Segno Bit Risultato Traboccare Sottoflusso SNaN QNaN PINF NINF
posfinito neginfinite 1 neginfinite 0 0 0 0 0 1
negfinito(y) zero 1 negfinito(y) 0 0 0 0 0 0
negfinito posiinfinito 0 posiinfinito 0 0 0 0 1 0
negfinito neginfinite 1 neginfinite 0 0 0 0 0 1
posiinfinito zero 0 posiinfinito 0 0 0 0 1 0
posiinfinito posfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito negfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito posiinfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito neginfinite 0 POSQNaN 0 0 0 1 0 0
neginfinite zero 1 neginfinite 0 0 0 0 0 1
neginfinite posfinito 1 neginfinite 0 0 0 0 0 1
neginfinite negfinito 1 neginfinite 0 0 0 0 0 1
neginfinite posiinfinito 0 POSQNaN 0 0 0 1 0 0
neginfinite neginfinite 1 neginfinite 0 0 0 0 0 1
posfinito posfinito 0 posfinito 0 0 0 0 0 0
posfinito posfinito 0 posiinfinito 0 0 0 0 1 0
posfinito posfinito 0/1 QNaN 0 0 0 1 0 0
posfinito posfinito 0/1 SNaN 0 0 1 0 0 0
posfinito posfinito 0 POSSNaN 1 0 1 0 0 0
posfinito negfinito 0 posfinito 0 0 0 0 0 0
posfinito negfinito 1 negfinito 0 0 0 0 0 0
posfinito negfinito 0 POSSNaN 0 1 1 0 0 0
negfinito posfinito 0 posfinito 0 0 0 0 0 0
negfinito posfinito 1 negfinito 0 0 0 0 0 0
negfinito posfinito 0 POSSNaN 0 1 1 0 0 0
negfinito negfinito 1 negfinito 0 0 0 0 0 0
negfinito negfinito 1 neginfinite 0 0 0 0 0 1
negfinito negfinito 0/1 QNaN 0 0 0 1 0 0
negfinito negfinito 0/1 SNaN 0 0 1 0 0 0
negfinito negfinito 0 POSSNaN 1 0 1 0 0 0
Dati A Dati B Segno Bit Risultato Traboccare Sottoflusso 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 posfinito(y) 1 negfinito(y) 0 0 0 0 0 0
zero negfinito(y) 0 posfinito(y) 0 0 0 0 0 0
zero posiinfinito 1 neginfinite 0 0 0 0 0 1
zero neginfinite 0 posiinfinito 0 0 0 0 1 0
posfinito(y) zero 0 posfinito(y) 0 0 0 0 0 0
posfinito posiinfinito 1 neginfinite 0 0 0 0 0 1
posfinito neginfinite 0 posiinfinito 0 0 0 0 1 0
negfinito(y) zero 1 negfinito(y) 0 0 0 0 0 0
negfinito posiinfinito 1 neginfinite 0 0 0 0 0 1
Tavolo Telefono: 2-11. Tabella di verità per la sottrazione (continua)
Dati A Dati B Segno Bit Risultato Traboccare Sottoflusso SNaN QNaN PINF NINF
negfinito neginfinite 0 posiinfinito 0 0 0 0 1 0
posiinfinito zero 0 posiinfinito 0 0 0 0 1 0
posiinfinito posfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito negfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito posiinfinito 0 POSQNaN 0 0 0 1 0 0
posiinfinito neginfinite 0 posiinfinito 0 0 0 0 1 0
neginfinite zero 1 neginfinite 0 0 0 0 0 1
neginfinite posfinito 1 neginfinite 0 0 0 0 0 1
neginfinite negfinito 1 neginfinite 0 0 0 0 0 1
neginfinite posiinfinito 1 neginfinite 0 0 0 0 0 1
neginfinite neginfinite 0 POSQNaN 0 0 0 1 0 0
posfinito posfinito 0 posfinito 0 0 0 0 0 0
posfinito posfinito 1 negfinito 0 0 0 0 0 0
posfinito posfinito 0 POSSNaN 0 1 1 0 0 0
posfinito negfinito 0 posfinito 0 0 0 0 0 0
posfinito negfinito 0 posiinfinito 0 0 0 0 1 0
posfinito negfinito 0/1 QNaN 0 0 0 1 0 0
posfinito negfinito 0/1 SNaN 0 0 1 0 0 0
posfinito negfinito 0 POSSNaN 1 0 1 0 0 0
negfinito posfinito 1 negfinito 0 0 0 0 0 0
negfinito posfinito 1 neginfinite 0 0 0 0 0 1
negfinito posfinito 0/1 QNaN 0 0 0 1 0 0
negfinito posfinito 0/1 SNaN 0 0 1 0 0 0
negfinito posfinito 0 POSSNaN 1 0 1 0 0 0
negfinito negfinito 0 posfinito 0 0 0 0 0 0
negfinito negfinito 1 negfinito 0 0 0 0 0 0
negfinito negfinito 0 POSSNaN 0 1 1 0 0 0

Importante:

  • Nelle tabelle precedenti indicano un numero qualsiasi.
  • Nelle tabelle precedenti indica una condizione di non importanza.

Tabella della verità per la moltiplicazione 
La seguente tabella di verità elenca i valori per l'operazione di moltiplicazione.

Tabella 2-12. Tabella di verità per la moltiplicazione

Dati A Dati B Segno Bit Risultato Traboccare Sottoflusso 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 posfinito 0 POSZERO 0 0 0 0 0 0
zero negfinito 0 POSZERO 0 0 0 0 0 0
zero posiinfinito 0 POSQNaN 0 0 0 1 0 0
zero neginfinite 0 POSQNaN 0 0 0 1 0 0
Tavolo Telefono: 2-12. Tabella di verità per la moltiplicazione (continua)
Dati A Dati B Segno Bit Risultato Traboccare Sottoflusso SNaN QNaN PINF NINF
posfinito zero 0 POSZERO 0 0 0 0 0 0
posfinito posiinfinito 0 posiinfinito 0 0 0 0 1 0
posfinito neginfinite 1 neginfinite 0 0 0 0 0 1
negfinito zero 0 POSZERO 0 0 0 0 0 0
negfinito posiinfinito 1 neginfinite 0 0 0 0 0 1
negfinito neginfinite 0 posiinfinito 0 0 0 0 1 0
posiinfinito zero 0 POSQNaN 0 0 0 1 0 0
posiinfinito posfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito negfinito 1 neginfinite 0 0 0 0 0 1
posiinfinito posiinfinito 0 posiinfinito 0 0 0 0 1 0
posiinfinito neginfinite 1 neginfinite 0 0 0 0 0 1
neginfinite zero 0 POSQNaN 0 0 0 1 0 0
neginfinite posfinito 1 neginfinite 0 0 0 0 0 1
neginfinite negfinito 0 posiinfinito 0 0 0 0 1 0
neginfinite posiinfinito 1 neginfinite 0 0 0 0 0 1
neginfinite neginfinite 0 posiinfinito 0 0 0 0 1 0
posfinito posfinito 0 posfinito 0 0 0 0 0 0
posfinito posfinito 0 posiinfinito 0 0 0 0 1 0
posfinito posfinito 0 POSQNaN 0 0 0 1 0 0
posfinito posfinito 0 POSSNaN 0 0 1 0 0 0
posfinito posfinito 0 POSSNaN 1 0 1 0 0 0
posfinito posfinito 0 POSSNaN 0 1 1 0 0 0
posfinito negfinito 1 negfinito 0 0 0 0 0 0
posfinito negfinito 1 neginfinite 0 0 0 0 0 1
posfinito negfinito 0 POSQNaN 0 0 0 1 0 0
posfinito negfinito 0 POSSNaN 0 0 1 0 0 0
posfinito negfinito 0 POSSNaN 1 0 1 0 0 0
posfinito negfinito 0 POSSNaN 0 1 1 0 0 0
negfinito posfinito 1 negfinito 0 0 0 0 0 0
negfinito posfinito 1 neginfinite 0 0 0 0 0 1
negfinito posfinito 0 POSQNaN 0 0 0 1 0 0
negfinito posfinito 0 POSSNaN 0 0 1 0 0 0
negfinito posfinito 0 POSSNaN 1 0 1 0 0 0
negfinito posfinito 0 POSSNaN 0 1 1 0 0 0
negfinito negfinito 0 posfinito 0 0 0 0 0 0
negfinito negfinito 0 posiinfinito 0 0 0 0 1 0
negfinito negfinito 0 POSQNaN 0 0 0 1 0 0
negfinito negfinito 0 POSQNaN 0 0 1 0 0 0
negfinito negfinito 0 POSQNaN 1 0 1 0 0 0
negfinito negfinito 0 POSQNaN 0 1 1 0 0 0

Importante:

Il bit di segno '0' definisce un output positivo e '1' definisce un output negativo.
La x nella tabella precedente indica la condizione "non importa".

Parametri CoreFPU e segnali di interfaccia
In questa sezione vengono illustrati i parametri nelle impostazioni del CoreFPU Configurator e i segnali I/O.

Parametri della GUI di configurazione 
Sono disponibili numerose opzioni configurabili applicabili all'unità FPU, come mostrato nella tabella seguente. Se è richiesta una configurazione diversa da quella predefinita, è possibile utilizzare la finestra di dialogo di configurazione per selezionare i valori appropriati per l'opzione configurabile.

Tabella 3-1. Parametri GUI di configurazione CoreFPU 

Nome del parametro Predefinito Descrizione
Precisione Separare Selezionare l'operazione desiderata:

Precisione singola
Doppia precisione

Tipo di conversione Conversione da virgola fissa a virgola mobile Selezionare l'operazione desiderata:
  • Conversione da virgola fissa a virgola mobile
  • Conversione da virgola mobile a virgola fissa
  • Addizione in virgola mobile
  • Sottrazione in virgola mobile
  • Moltiplicazione in virgola mobile
Larghezza della frazione di input1 15 Configura il punto frazionario nei segnali di input ain e bin

L'intervallo valido è 31–1

Larghezza della frazione di output2 15 Configura il punto frazionario nei segnali di uscita aout

L'intervallo valido è 51–1

Importante:

  1. Questo parametro è configurabile solo durante la conversione da virgola fissa a virgola mobile.
  2. Questo parametro è configurabile solo durante la conversione da virgola mobile a virgola fissa.

Segnali di ingresso e uscita (fai una domanda)
Nella tabella seguente sono elencati i segnali delle porte di ingresso e di uscita del CoreFPU.

Tabella 3-2. Descrizione della porta 

Nome del segnale Larghezza Tipo Descrizione
clic 1 Ingresso Orologio di sistema principale
prima 1 Ingresso Ripristino asincrono attivo-basso
di_valid 1 Ingresso Ingresso attivo-alto valido

Questo segnale indica che i dati presenti su ain[31:0], ain[63:0] e bin[31:0], bin[63:0] sono validi.

proprio 32/64 Ingresso Un bus di input (viene utilizzato per tutte le operazioni)
bidone1 32/64 Ingresso B Input Bus (viene utilizzato solo per operazioni aritmetiche)
circa2 32/64 Produzione Valore di output quando vengono selezionate le operazioni di conversione da virgola fissa a virgola mobile o da virgola mobile a virgola fissa.
broncio1 32/64 Produzione Valore di output quando vengono selezionate le operazioni di addizione, sottrazione o moltiplicazione.
Tavolo Telefono: 3-2. Descrizione della porta (continua)
Nome del segnale Larghezza Tipo Descrizione
do_valid 1 Produzione Segnale attivo-alto

Questo segnale indica che i dati presenti sul bus dati pout/aout sono validi.

ovfl_fg3 1 Produzione Segnale attivo-alto

Questo segnale indica l'overflow durante le operazioni in virgola mobile.

unfl_fg 1 Produzione Segnale attivo-alto

Questo segnale indica l'underflow durante le operazioni in virgola mobile.

qnan_fg3 1 Produzione Segnale attivo-alto

Questo segnale indica il QNaN (Quiet Not a Number) durante le operazioni in virgola mobile.

snan_fg 1 Produzione Segnale attivo-alto

Questo segnale indica il segnale SNaN (Signaling Not-a-Number) durante le operazioni in virgola mobile.

pinf_fg3 1 Produzione Segnale attivo-alto

Questo segnale indica l'infinito positivo durante le operazioni in virgola mobile.

ninf_fg 1 Produzione Segnale attivo-alto

Questo segnale indica l'infinito negativo durante le operazioni in virgola mobile.

Importante:

  1. Questa porta è disponibile solo per operazioni di addizione, sottrazione o moltiplicazione in virgola mobile.
  2. Questa porta è disponibile solo per le operazioni di conversione da virgola fissa a virgola mobile e da virgola mobile a virgola fissa.
  3. Questa porta è disponibile per operazioni da virgola mobile a virgola fissa, addizione in virgola mobile, sottrazione in virgola mobile e moltiplicazione in virgola mobile.

Implementazione di CoreFPU in Libero Design Suite

Questa sezione descrive l'implementazione di CoreFPU nella Libero Design Suite.

Smart Design 

CoreFPU è disponibile per il download nel catalogo Libero IP tramite web repository. Una volta inserito nel catalogo, il core viene istanziato utilizzando il flusso SmartDesign. Per informazioni sull'utilizzo di SmartDesign per configurare, connettere e generare core, consultare la guida online di Libero SoC.
Dopo aver configurato e generato l'istanza core, le funzionalità di base vengono simulate utilizzando il testbench fornito con la CoreFPU. I parametri del testbench si adattano automaticamente alla configurazione della CoreFPU. La CoreFPU viene istanziata come componente di un progetto più ampio.
Figura 4-1. Istanza SmartDesign CoreFPU per operazioni aritmetiche

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (5)Figura 4-2. Istanza SmartDesign CoreFPU per operazione di conversione MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (6)

 

Conversione da virgola fissa a virgola mobile
Durante la conversione da virgola fissa a virgola mobile, la larghezza della frazione di input è configurabile. Per impostazione predefinita, la larghezza di output è impostata a 32 bit per la precisione singola e a 64 bit per la precisione doppia in virgola mobile.
Per convertire da virgola fissa a virgola mobile, selezionare il tipo di conversione da virgola fissa a virgola mobile, come mostrato nella figura seguente.

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (7)Da virgola mobile a virgola fissa 
Durante la conversione da virgola mobile a virgola fissa, la larghezza frazionaria di output è configurabile e la larghezza di input è impostata su 32 bit per la precisione singola e 64 bit per la precisione doppia in virgola mobile per impostazione predefinita.
Per convertire da virgola mobile a virgola fissa, selezionare il tipo di conversione da virgola mobile a virgola fissa, come mostrato nella figura seguente.
Figura 4-4. Configuratore CoreFPU per virgola mobile a virgola fissa MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (8)Addizione/sottrazione/moltiplicazione in virgola mobile
Durante le operazioni di addizione, sottrazione e moltiplicazione in virgola mobile, la larghezza della frazione di input e la larghezza della frazione di output non sono configurabili poiché si tratta di operazioni aritmetiche in virgola mobile e la larghezza di input/output è impostata per impostazione predefinita su 32 bit a precisione singola e 64 bit per la virgola mobile a precisione doppia.
La figura seguente mostra il configuratore CoreFPU per l'operazione di sottrazione in virgola mobile.

Figura 4-5. Configuratore CoreFPU per la sottrazione in virgola mobileMICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (9)Simulazione (fai una domanda)
Per eseguire le simulazioni, nella finestra di configurazione del core, selezionare User Testbench. Dopo aver generato il CoreFPU, il testbench di pre-sintesi Hardware Description Language (HDL) filesono installati in Libero.

Forme d'onda di simulazione (fai una domanda)
Questa sezione illustra le forme d'onda di simulazione per CoreFPU.
Le figure seguenti mostrano la forma d'onda della conversione da virgola fissa a virgola mobile sia per 32 bit che per 64 bit.MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (10)

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (11) MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (12) MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (13)

Integrazione del sistema
La figura seguente mostra un exampdi usare il nucleo. In questo esempioampIn questo caso, la UART di progettazione viene utilizzata come canale di comunicazione tra il progetto e il PC host. I segnali ain e bin (ciascuno con larghezza di 32 o 64 bit) sono gli ingressi al progetto dalla UART. Dopo che la CoreFPU riceve il segnale di_valid, calcola il risultato. Dopo aver calcolato il risultato, il segnale do_valid passa allo stato alto e memorizza il risultato (dati aout/pout) nel buffer di output. Questa stessa procedura è applicabile per le operazioni di conversione e aritmetiche. Per le operazioni di conversione, è sufficiente solo l'ingresso ain, mentre per le operazioni aritmetiche sono richiesti entrambi gli ingressi ain e bin. L'uscita aout è abilitata per le operazioni di conversione e la porta pout è abilitata per le operazioni aritmetiche.
Figura 4-16. Example del sistema CoreFPU

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (14)

 

  1. Sintesi (Fai una domanda)
    Per eseguire la sintesi sul CoreFPU, impostare la radice di progettazione sull'istanza del componente IP e dal riquadro del flusso di progettazione Libero, eseguire lo strumento Sintesi.
    Luogo e percorso (Fai una domanda)
    Dopo aver sintetizzato il progetto, esegui lo strumento Place-and-Route. CoreFPU non richiede impostazioni speciali per Place-and-Route.
  2. User Testbench (Fai una domanda)
    Con la versione IP di CoreFPU viene fornito un testbench utente. Utilizzando questo testbench, è possibile verificare il comportamento funzionale di CoreFPU.

Nella figura seguente è mostrato un diagramma a blocchi semplificato del testbench utente. Il testbench utente istanzia il progetto CoreFPU configurato (UUT) e include un generatore di dati di test comportamentali, il clock necessario e i segnali di reset.
Figura 4-17. Testbench utente CoreFPU

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (15)Importante: è necessario monitorare i segnali di uscita nel simulatore ModelSim, vedere la sezione Simulazione.

Riferimenti aggiuntivi (Fai una domanda)
Questa sezione fornisce un elenco di informazioni aggiuntive.
Per aggiornamenti e informazioni aggiuntive su software, dispositivi e hardware, visitare il sito

Pagine sulla proprietà intellettuale sugli FPGA e sui PLD Microchip websito.

  1. Problemi noti e soluzioni alternative (Fai una domanda)
    Non ci sono problemi noti né soluzioni alternative per CoreFPU v3.0.
  2. Funzionalità e dispositivi non più disponibili (fai una domanda)
    Con questa versione IP non ci sono funzionalità o dispositivi fuori produzione.

Glossario

Di seguito è riportato l'elenco dei termini e delle definizioni utilizzati nel documento.
Tabella 6-1. Termini e definizioni

Termine Definizione
FPU Unità in virgola mobile
FP ADD Addizione in virgola mobile
FP SUB Sottrazione in virgola mobile
FP MULT Moltiplicazione in virgola mobile

Problemi risolti 
Nella tabella seguente sono elencati tutti i problemi risolti per le varie versioni di CoreFPU.

Tabella 7-1. Problemi risolti

Pubblicazione Descrizione
3.0 Di seguito è riportato l'elenco di tutti i problemi risolti nella versione v3.0:

Numero di caso: 01420387 e 01422128

Aggiunta la logica dello schema di arrotondamento (arrotondamento al numero pari più vicino).

2.1 Di seguito è riportato l'elenco di tutti i problemi risolti nella versione v2.1:
La progettazione riscontra problemi dovuti alla presenza di moduli duplicati quando vengono istanziati più core.
La ridenominazione dell'istanza IP CoreFPU genera un errore "Modulo non definito".
1.0 Versione iniziale

Utilizzo e prestazioni delle risorse del dispositivo

La macro CoreFPU è implementata nelle famiglie elencate nella tabella seguente.
Tabella 8-1. Utilizzo del dispositivo FPU PolarFire Unit per 32 bit

Risorse FPGA Utilizzo
Famiglia 4LUT DFF Totale Blocco matematico Dispositivo percentualetage Prestazione Latenza
Da virgola fissa a virgola mobile
PolarFire® 260 104 364 0 MPF300T 0.12 310 MHz 3
Da virgola mobile a virgola fissa
Fuoco Polare 591 102 693 0 MPF300T 0.23 160 MHz 3
Addizione in virgola mobile
Fuoco Polare 1575 1551 3126 0 MPF300T 1.06 340 MHz 16
Sottrazione in virgola mobile
Fuoco Polare 1561 1549 3110 0 MPF300T 1.04 345 MHz 16
Moltiplicazione in virgola mobile
Fuoco Polare 465 847 1312 4 MPF300T 0.44 385 MHz 14
Risorse FPGA Utilizzo
Famiglia 4LUT DFF Totale Blocco matematico Dispositivo percentualetage Prestazione Latenza
Da virgola fissa a virgola mobile
RTG4™ 264 104 368 0 RT4G150 0.24 160 MHz 3
Da virgola mobile a virgola fissa
RTG4 439 112 551 0 RT4G150 0.36 105 MHz 3
Addizione in virgola mobile
RTG4 1733 1551 3284 0 RT4G150 1.16 195 MHz 16
Sottrazione in virgola mobile
RTG4 1729 1549 3258 0 RT4G150 1.16 190 MHz 16
Moltiplicazione in virgola mobile
RTG4 468 847 1315 4 RT4G150 0.87 175 MHz 14
Risorse FPGA Utilizzo
Famiglia 4LUT DFF Totale Blocco matematico Dispositivo percentualetage Prestazione Latenza
Da virgola fissa a virgola mobile
PolarFire® 638 201 849 0 MPF300T 0.28 305 MHz 3
Da virgola mobile a virgola fissa
Fuoco Polare 2442 203 2645 0 MPF300T 0.89 110 MHz 3
Addizione in virgola mobile
Fuoco Polare 5144 4028 9172 0 MPF300T 3.06 240 MHz 16
Sottrazione in virgola mobile
Fuoco Polare 5153 4026 9179 0 MPF300T 3.06 250 MHz 16
Moltiplicazione in virgola mobile
Fuoco Polare 1161 3818 4979 16 MPF300T 1.66 340 MHz 27
Risorse FPGA Utilizzo
Famiglia 4LUT DFF Totale Blocco matematico Dispositivo percentualetage Prestazione Latenza
Da virgola fissa a virgola mobile
RTG4™ 621 201 822 0 RT4G150 0.54 140 MHz 3
Da virgola mobile a virgola fissa
RTG4 1114 203 1215 0 RT4G150 0.86 75 MHz 3
Addizione in virgola mobile
RTG4 4941 4028 8969 0 RT4G150 5.9 140 MHz 16
Sottrazione in virgola mobile
RTG4 5190 4026 9216 0 RT4G150 6.07 130 MHz 16
Moltiplicazione in virgola mobile
RTG4 1165 3818 4983 16 RT4G150 3.28 170 MHz 27

Importante: per aumentare la frequenza, selezionare l'opzione Abilita retiming nelle impostazioni di sintesi.

Cronologia delle revisioni

La cronologia delle revisioni descrive le modifiche implementate nel documento. Le modifiche sono elencate per revisione, a partire dalla pubblicazione più recente.

MICROCHIP-CoreFPU-Cor-Floating-Point-Unit- (1)

Supporto FPGA per microchip

Il gruppo di prodotti Microchip FPGA supporta i propri prodotti con vari servizi di supporto, tra cui Servizio clienti, Centro assistenza tecnica clienti, a websito e uffici vendite in tutto il mondo. Si consiglia ai clienti di visitare le risorse online di Microchip prima di contattare l'assistenza poiché è molto probabile che le loro domande abbiano già ricevuto risposta.
Contattare il Centro di assistenza tecnica tramite il websito a www.microchip.com/support. Menziona il numero di parte del dispositivo FPGA, seleziona la categoria di custodia appropriata e carica il design files durante la creazione di un caso di supporto tecnico.
Contatta il servizio clienti per assistenza non tecnica sui prodotti, ad esempio prezzi dei prodotti, aggiornamenti dei prodotti, informazioni sull'aggiornamento, stato dell'ordine e autorizzazione.

  • Dal Nord America, chiamare 800.262.1060
  • Dal resto del mondo, chiamare il 650.318.4460
  • Fax, da qualsiasi parte del mondo, 650.318.8044

Informazioni sul microchip

Marchi
Il nome e il logo "Microchip", il logo "M" e altri nomi, loghi e marchi sono marchi registrati e non registrati di Microchip Technology Incorporated o delle sue affiliate e/o sussidiarie negli Stati Uniti e/o in altri paesi ("Marchi Microchip"). Le informazioni relative ai Marchi Microchip sono disponibili all'indirizzo https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3

Note legali
Questa pubblicazione e le informazioni ivi contenute possono essere utilizzate solo con i prodotti Microchip, anche per progettare, testare e integrare i prodotti Microchip con l'applicazione. L'uso di queste informazioni in qualsiasi altro modo viola questi termini. Le informazioni relative alle applicazioni del dispositivo sono fornite solo per comodità dell'utente e possono essere sostituite da aggiornamenti. È tua responsabilità assicurarti che la tua applicazione soddisfi le tue specifiche. Contattare l'ufficio vendite Microchip locale per ulteriore supporto o ottenere ulteriore supporto all'indirizzo www.microchip.com/en-us/support/design-help/client-support-services

QUESTE INFORMAZIONI SONO FORNITE DA MICROCHIP "COSÌ COME SONO". MICROCHIP NON RILASCIA ALCUNA DICHIARAZIONE O GARANZIA DI ALCUN TIPO, SIA ESSE ESPRESSE O IMPLICITE, SCRITTE O ORALI, STATUTARIE O ALTRO, RELATIVE ALLE INFORMAZIONI, INCLUSE, SENZA LIMITAZIONE, QUALSIASI GARANZIA IMPLICITA DI NON VIOLAZIONE, COMMERCIABILITÀ E IDONEITÀ PER UNO SCOPO PARTICOLARE, O GARANZIE RELATIVE ALLA SUA CONDIZIONE, QUALITÀ O PRESTAZIONI.

IN NESSUN CASO MICROCHIP SARÀ RITENUTA RESPONSABILE PER QUALSIASI PERDITA, DANNO, COSTO O SPESA INDIRETTA, SPECIALE, PUNITIVA, ACCIDENTALE O CONSEGUENTE DI QUALSIASI TIPO CORRELATA ALLE INFORMAZIONI O AL SUO UTILIZZO, COMUNQUE CAUSATA, ANCHE SE MICROCHIP È STATA INFORMATA DELLA POSSIBILITÀ O SE I DANNI SONO PREVEDIBILI. NELLA MISURA MASSIMA CONSENTITA DALLA LEGGE, LA RESPONSABILITÀ TOTALE DI MICROCHIP PER TUTTI I RECLAMI IN QUALSIASI MODO CORRELATI ALLE INFORMAZIONI O AL SUO UTILIZZO NON SUPERERÀ L'IMPORTO DELLE COMMISSIONI, SE PRESENTI, CHE AVETE PAGATO DIRETTAMENTE A MICROCHIP PER LE INFORMAZIONI.

L'uso dei dispositivi Microchip in applicazioni di supporto vitale e/o di sicurezza è interamente a rischio dell'acquirente, il quale accetta di difendere, indennizzare e tenere indenne Microchip da qualsiasi danno, reclamo, causa o spesa risultante da tale uso. Nessuna licenza viene trasferita, implicitamente o in altro modo, in base ai diritti di proprietà intellettuale di Microchip, salvo diversamente specificato.

Funzionalità di protezione del codice dei dispositivi a microchip
Si noti quanto segue in merito alla funzionalità di protezione del codice sui prodotti Microchip:

  • I prodotti Microchip soddisfano le specifiche contenute nella rispettiva scheda tecnica Microchip.
  • Microchip ritiene che la sua famiglia di prodotti sia sicura se utilizzata nel modo previsto, nel rispetto delle specifiche operative e in condizioni normali.
  • Microchip valorizza e protegge in modo aggressivo i propri diritti di proprietà intellettuale. I tentativi di violare le funzionalità di protezione del codice dei prodotti Microchip sono severamente vietati e potrebbero violare il Digital Millennium Copyright Act.
  • Né Microchip né alcun altro produttore di semiconduttori può garantire la sicurezza del suo codice. La protezione del codice non significa che stiamo garantendo che il prodotto sia "indistruttibile". La protezione del codice è in continua evoluzione. Microchip si impegna a migliorare costantemente le funzionalità di protezione del codice dei nostri prodotti.

Documenti / Risorse

Unità a virgola mobile Core FPU di MICROCHIP [pdf] Guida utente
v3.0, v2.1, v2.0, v1.0, CoreFPU Unità a virgola mobile Core, Unità a virgola mobile Core, Unità a virgola mobile, Unità a virgola mobile

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *