SigCalcUtil.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Ips.Library.Entity;
  2. namespace Ips.Library.SigLoc
  3. {
  4. public static class SigCalcUtil
  5. {
  6. public static int CalcMutil(long fs, int bandWidth, bool sup4m = true)
  7. {
  8. int mutil;
  9. var num = Convert.ToInt32(fs / (bandWidth * 1.25));
  10. if (!sup4m || num <= 16)
  11. {
  12. var num1 = (int)(Math.Log10(num) / Math.Log10(2));
  13. mutil = (int)Math.Pow(2, num1);
  14. }
  15. else
  16. {
  17. mutil = ((int)(num / 4)) * 4;
  18. }
  19. return mutil;
  20. }
  21. public static int CalcFs(long clockFreq, int bandWidth, int adcMutil = 1)
  22. {
  23. if (adcMutil == 0) return (int)clockFreq;
  24. var adfreq = clockFreq / adcMutil;
  25. var mutil = CalcMutil(adfreq, bandWidth, adcMutil <= 1);
  26. var fs = (int)(adfreq / mutil);
  27. return fs;
  28. }
  29. public static FreqPointInfo GetFreqPointBySigFreq(long sigFreq, SatType satType, long satTurn, long cfqTurn)
  30. {
  31. long upFreq, satDownFreq, downFreq;
  32. if (sigFreq < 400 * 1e6 && sigFreq > 200 * 1e6)
  33. {
  34. upFreq = sigFreq;
  35. if (satType == SatType.WarSat)
  36. {
  37. satDownFreq = WarSatFreq.GetDownFreq(upFreq);
  38. downFreq = satDownFreq + cfqTurn;
  39. }
  40. else
  41. {
  42. satDownFreq = upFreq + satTurn;
  43. downFreq = satDownFreq + cfqTurn;
  44. }
  45. }
  46. else if (sigFreq > 1000 * 1e6 && sigFreq < 2000 * 1e6)
  47. {
  48. downFreq = sigFreq;
  49. satDownFreq = sigFreq + cfqTurn;
  50. upFreq = satDownFreq + satTurn;
  51. }
  52. else if (sigFreq > 4000 * 1e6 && sigFreq < 6000 * 1e6)
  53. {
  54. downFreq = sigFreq - cfqTurn;
  55. satDownFreq = sigFreq;
  56. upFreq = sigFreq + satTurn;
  57. }
  58. else
  59. {
  60. satDownFreq = sigFreq - satTurn;
  61. downFreq = satDownFreq - cfqTurn;
  62. upFreq = sigFreq;
  63. }
  64. FreqPointInfo freqInfo = new FreqPointInfo()
  65. {
  66. SigFreq = sigFreq,
  67. UpFreq = upFreq,
  68. SatDownFreq = satDownFreq,
  69. DownFreq = downFreq
  70. };
  71. return freqInfo;
  72. }
  73. //public static long GetDownFreq(long upFreq, SatType satType, long satTurn, long cfqTurn)
  74. //{
  75. // long downFreq = 0;
  76. // if (upFreq < 400 * 1e6 && upFreq > 200 * 1e6)
  77. // {
  78. // if (satType == SatType.WarSat)
  79. // {
  80. // downFreq = WarSatFreq.GetDownFreq(upFreq) + cfqTurn;
  81. // }
  82. // else
  83. // {
  84. // downFreq = upFreq + satTurn + cfqTurn;
  85. // }
  86. // }
  87. // else
  88. // {
  89. // downFreq = upFreq - satTurn - cfqTurn;
  90. // }
  91. //}
  92. }
  93. }