SParams.bsv
上传用户:aoptech
上传日期:2014-09-22
资源大小:784k
文件大小:5k
源码类别:

3G开发

开发平台:

Others

  1. //----------------------------------------------------------------------//
  2. // The MIT License 
  3. // 
  4. // Copyright (c) 2007 Alfred Man Cheuk Ng, mcn02@mit.edu 
  5. // 
  6. // Permission is hereby granted, free of charge, to any person 
  7. // obtaining a copy of this software and associated documentation 
  8. // files (the "Software"), to deal in the Software without 
  9. // restriction, including without limitation the rights to use,
  10. // copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. // copies of the Software, and to permit persons to whom the
  12. // Software is furnished to do so, subject to the following conditions:
  13. // 
  14. // The above copyright notice and this permission notice shall be
  15. // included in all copies or substantial portions of the Software.
  16. // 
  17. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  18. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  19. // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  20. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  21. // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  22. // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  23. // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  24. // OTHER DEALINGS IN THE SOFTWARE.
  25. //----------------------------------------------------------------------//
  26. import Complex::*;
  27. import FixedPoint::*;
  28. import FPComplex::*;
  29. import Vector::*;
  30. import Parameters::*;
  31. //  ////////////////////////////////////////
  32. //  // Synchronizer parameters (changable)
  33. //  ////////////////////////////////////////
  34. //  // specific for OFDM specification
  35. //  typedef 16  SSLen;        // short symbol length (auto correlation delay 16)
  36. //  typedef 64  LSLen;        // long symbol length (auto correlation delay 64)
  37. //  typedef 160 LSStart;      // when the long symbol start
  38. //  typedef 320 SignalStart;  // when the signal (useful data) start
  39. //  typedef 80  SymbolLen;    // one symbol length
  40. //  typedef 64  NoCPLen;      // symbol length after removing CP
  41. //  // implementation parameters
  42. //  typedef 96  SSyncPos;      // short symbol synchronization position ( 2*SSLen <= this value < LBStart)
  43.  
  44. //  typedef 224 LSyncPos;      // long symbol synchronization position  ( LSStart <= this value < SinglaStart)       
  45. //  typedef 2   SyncIntPrec;   // number of integer bits for internal arithmetic
  46. //  typedef 14  SyncFractPrec; // number of fractional bits for internal arithmetic 
  47. //  typedef 16  FreqMeanLen;   // how many samples we collect to calculate CFO (power of 2, at most 32, bigger == more tolerant to noise)
  48. //  typedef 480 TimeResetPos;  // reset time if coarCounter is larger than this, must be bigger than SignalStart
  49. //  typedef 2   CORDICPipe;    // number of pipeline stage of the cordic
  50. //  typedef 16  CORDICIter;    // number of cordic iterations (max 16 iterations, must be multiple of CORDICPIPE)
  51. //////////////////////////////////////////////////
  52. // Types automatic defined by parameters
  53. /////////////////////////////////////////////////
  54. // for all
  55. typedef TLog#(TimeResetPos)                          CounterSz;
  56. typedef TAdd#(TMul#(2,SyncIntPrec),1)                MulIntPrec;
  57. // types for auto-correlator
  58. typedef TSub#(LSLen, SSLen)                          LSLSSLen;              // LSLen - SSLen
  59. typedef TSub#(TAdd#(SSLen, SSLen),1)                 CoarTimeCorrPos;       // first pos to able detect high correlation
  60. typedef TAdd#(TSub#(SSyncPos, CoarTimeCorrPos),1)    CoarTimeAccumDelaySz;  //
  61. typedef TAdd#(TLog#(SSLen), MulIntPrec)              CoarTimeAccumIntPrec;  // int precision
  62. typedef TAdd#(TMul#(2,CoarTimeAccumIntPrec),1)       CoarTimeCorrIntPrec;   // precision for power and correlation square
  63. typedef TLog#(TAdd#(CoarTimeAccumDelaySz,1))         CoarTimeAccumIdx;      // no of bit to hold the accumulated value
  64. // types for fine time estimator
  65. typedef TSub#(LSyncPos, LSStart)                     FineTimeCorrDelaySz;   // no of element to delay
  66. typedef TAdd#(FineTimeCorrDelaySz, 1)                FineTimeCorrSz;        // no of element to cross correlate
  67. typedef TAdd#(TLog#(FineTimeCorrSz), 3)              FineTimeCorrResSz;     // the type for corr result 
  68. typedef TAdd#(1,TMul#(2,FineTimeCorrResSz))          FineTimeCorrFullResSz; // 
  69. typedef TAdd#(TLog#(LSLen), MulIntPrec)              CorrIntPrec;
  70. typedef FPComplex#(CorrIntPrec, SyncFractPrec)       CorrType;
  71. // Freq. Offset Estimator
  72. typedef TLog#(FreqMeanLen)                           FreqMeanLenIdxSz;
  73. typedef TAdd#(FreqMeanLenIdxSz, 1)                   FreqOffAccumIntPrec;
  74. typedef TLog#(SymbolLen)                             RotAngCounterSz;
  75. typedef TAdd#(FreqMeanLenIdxSz,TLog#(SSLen))         CoarFreqOffAccumRShift;
  76. typedef TAdd#(FreqMeanLenIdxSz,TLog#(LSLen))         FineFreqOffAccumRShift;
  77.