DMA FIFOで固定小数点データを使用する

更新しました Nov 6, 2020

使用製品

ソフトウェア

  • LabVIEW Full
  • LabVIEW FPGA Module

問題

  • DMA FIFOを介して固定小数点データの移動したいです。
  • FIFO読み取りでは、FIFOまたはメモリが読み取られたときに整数だけを受け取ります。
  • データの小数部(仮数部)がそのまま残るように、データを転送する必要があります。

解決策

  • LabVIEW 8.6以降の場合
    • 固定小数点データタイプをサポートするようにDMA FIFOをセットアップできます。
       
  • LabVIEW 8.5.xの場合
    • DMA FIFOは、符号なし32ビットデータタイプのみをサポートします。
    • 固定小数点の両方の部分を渡すには、この制限を回避する必要があります。
       
  • 一般に、FIFOデータタイプを入力に一致させる必要があります。
    • ターゲットおよびVIスコープのFIFOおよびメモリは、さまざまなタイプのデータを渡すことができます
    • FIFOまたはメモリのタイプを固定小数点データのワード長と一致させるために、FIFOまたはメモリのデータタイプを丸め込みます。
    • たとえば、ワード長20の固定小数点数を渡す場合、符号なし32ビットFIFOを使用します。

追加情報

LabVIEW 8.6以降で固定小数点をサポートするようにDMA FIFOをセットアップする方法は、以下のとおりです。
 

  1. FIFOを作成するか、Inを右クリックしてプロパティを選択し、プロジェクトのプロパティを編集します。
  2. FIFOのデータタイプとして固定小数点(FXP)を選択します。
  3. これにより、固定小数点データを変更せずにFIFOに渡すことができます。

 

 

FPGAでの変換

  1. 数値をブール配列に変換関数を使用して、固定小数点データをブール配列データに変換します。
  2. ブール配列を数値に変換関数を使用して、ブール配列データを符号なし倍長整数 (U32) に変換します。
  3. ブール配列を数値に変換関数の出力をFIFO WriteノードのElement入力端子へ接続します。
     

 

 

ホストでの変換

  1. インボークノードのFIFO.Readを使用し、DMA FIFOから値を読み出します。
  2. 読み出した値を自動指標付けに入力トンネルを設定したForループに接続し、Forループ内にて各要素に対して値をブール配列に変換関数を使用してブールの配列データに変換します。
  3. さらにForループ内にブール配列を数値に変換関数を配置し、ブール配列入力端子へ接続します。
  4. ブール配列を数値に変換関数を右クリックし、プロパティを選択します。表記法を固定小数点に設定し、固定小数点の構成をFPGA側の固定小数点データタイプに合わせて設定します。
     

     
  1. ブール配列を数値に変換関数の固定小数点データタイプ出力をForループの自動指標付けに設定された出力端子へ接続します。
     

     
  • メモ: ホスト上で数を変換するには、FPGA側の固定小数点データの設定を把握しておく必要があります。
     
  • メモ: この変換には、上述のようにブール配列を数値に変換関数は、プロパティで出力データタイプを固定小数点データタイプに設定して使用する必要があります。プロパティを変更せずに、そのままのブール配列を数値に変換関数と 固定小数点へ変換関数を組み合わせて使用すると、小数点以下の情報を失ってしまいます。
     


固定小数点データが変換されると、数値変換VIを使用して、ホストで必要な表現にデータを変換できます。