2017-07-28 7 views
0

私はアルテラDE0 nano SoC FPGAを使用しています。私は、HPSからFPGAに浮動小数点数を送る方法を知りたい。HPSから浮動小数点数をFPGAに送信する方法は?

float ex_hps = 6000.9282;をAvalonメモリマッピングインターフェイス経由で送信させます。 Avalon_write_data addressに32ビットのデータ長(Qsysから設定可能)がある場合、FPGA側でこの数値は32ビットのstd_logic_vectorに格納されますか?

このstd_logic_vectorには、元の値の固定小数点タイプ(13 downto -14)の浮動小数点数が含まれていますか? VHDLのFPGA側の固定小数点番号ex_fpga(13 downto -14)にこの番号を戻す方法は?

+2

32ビット浮動小数点のバイナリ表現を定義する標準を見つけて、読んで理解してください。次に、FPGA **とCPUの両方で同じ表現を使用できることを理解します。 –

+0

6 downto -6は13ビット、32ではなく...ここに情報がありません。そして、737692.928203は、6つのダウンタウンのufixedに収まりません-6。 – JHBonarius

+0

@JHBonarius私は質問を修正しました – komto909

答えて

0

これはあなた自身を参照する可能性のあるものです。

システムに関する知識を使用して、floatをCの整数に最初にマップする必要があります。 ufixed(13 downto -14)

#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 */ 
} 

次にVHDLで次のことができ、単にポート符号なしstd_logic_vector(27 downto 0)。あなたは(うまくいけば)それを行う方法を知っています。

+0

fixed_pointパッケージはBishopによって合成可能なのですか? – komto909

+0

@ komto909とは何ですか? – JHBonarius

関連する問題