2017-07-28 6 views
0

Ich verwende Altera DE0 Nano SoC FPGA. Ich möchte wissen, wie man eine Gleitkommazahl von HPS an FPGA sendet.So senden Sie eine Gleitkommazahl an FPGA von HPS?

Lassen Sie eine float ex_hps = 6000.9282; über Avalon Memory Mapping-Schnittstelle gesendet werden. Wenn Avalon_write_data address 32 Bit Datenlänge hat (die von Qsys eingestellt werden kann), wird diese Nummer in FPGA-Seite in einem 32-Bit std_logic_vector Recht gespeichert?

Enthält diese std_logic_vector die Fließkommazahl als Festkommatyp (13 downto -14) mit dem ursprünglichen Wert? oder wie man diese Zahl in FPGA-Seite in VHDL auf einen festen Punkt Nummer ex_fpga(13 downto -14) setzen?

+2

Sie sollten den Standard finden, lesen und verstehen, der die binäre Darstellung von 32-Bit-Fließkommawerten definiert. Als Nächstes werden Sie verstehen, dass dieselbe Darstellung sowohl in Ihrem FPGA ** als auch in Ihrer CPU verwendet werden kann. –

+0

6 downto -6 ist 13 Bit, nicht 32 ... Fehlende Informationen hier. Und 737692.928203 passt nicht in 6 von 6 Downto-6. – JHBonarius

+0

@JHBonarius Ich habe die Frage korrigiert – komto909

Antwort

0

Das hätten Sie selbst nachschlagen können.

Sie müssen zuerst den Float auf eine ganze Zahl in C abbilden, indem Sie das Wissen über das System verwenden.

#include <math.h> 

unsigned int PrepareForTransmission(float inputValue) 
{ 
    if (inputValue < 0) return 0; /* underflow error: clip */ 
    if (inputValue >= powf(2.0f, 14)) return (unsigned int)pow(2.0, 28) - 1; /* overflow error: clip */ 
    return (unsigned int)(inputValue * pow(2.0, 14) + 0.5); /* +0.5 to round */ 
} 

dann in VHDL können Sie einfach Port unsigned std_logic_vector(27 downto 0) zum ufixed(13 downto -14). Sie (hoffentlich) wissen, wie man das macht.

+0

Fixed_point-Paket von Bishop ist synthetisierbar oder? – komto909

+0

@ komto909 sagen was? – JHBonarius

Verwandte Themen