Subversion Repositories dashGPS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "ref.h"
  2.  
  3. void ref_float_to_q31(
  4.   float32_t * pSrc,
  5.   q31_t * pDst,
  6.   uint32_t blockSize)
  7. {
  8.         uint32_t i;
  9.         float32_t in;
  10.        
  11.         for(i=0;i<blockSize;i++)
  12.         {
  13.                 in = pSrc[i];
  14.                 in *= 2147483648.0f;                            //scale up
  15.                 in += in > 0.0f ? 0.5f : -0.5f;         //round
  16.                 pDst[i] = ref_sat_q31((q63_t)in);       //cast and saturate
  17.         }
  18. }
  19.        
  20. void ref_float_to_q15(
  21.   float32_t * pSrc,
  22.   q15_t * pDst,
  23.   uint32_t blockSize)
  24. {
  25.         uint32_t i;
  26.         float32_t in;
  27.        
  28.         for(i=0;i<blockSize;i++)
  29.         {
  30.                 in = pSrc[i];
  31.                 in *= 32768.0f;
  32.                 in += in > 0.0f ? 0.5f : -0.5f;
  33.                 pDst[i] = ref_sat_q15((q31_t)in);
  34.         }
  35. }
  36.        
  37. void ref_float_to_q7(
  38.   float32_t * pSrc,
  39.   q7_t * pDst,
  40.   uint32_t blockSize)
  41. {
  42.         uint32_t i;
  43.         float32_t in;
  44.        
  45.         for(i=0;i<blockSize;i++)
  46.         {
  47.                 in = pSrc[i];
  48.                 in *= 128.0f;
  49.                 in += in > 0.0f ? 0.5f : -0.5f;
  50.                 pDst[i] = ref_sat_q7((q15_t)in);
  51.         }
  52. }
  53.