bit_analyzer.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:2k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = bit_analyzer.cpp
  3. //
  4. #include <stdlib.h>
  5. #include <fstream>
  6. #include "parmfile.h"
  7. #include "bit_analyzer.h"
  8. #include "typedefs.h"
  9. #include "model_graph.h"
  10. #include "syst_graph.h"
  11. extern ParmFile *ParmInput;
  12. extern ofstream *DebugFile;
  13. extern SystemGraph CommSystemGraph;
  14. extern int PassNumber;
  15. extern int MaxPassNumber;
  16. //======================================================
  17. BitSeqAnalyzer::BitSeqAnalyzer( char* instance_name,
  18.                         PracSimModel* outer_model,
  19.                         Signal<bit_t>* bit_seq )
  20.           :PracSimModel(instance_name,
  21.                         outer_model)
  22. {
  23.   MODEL_NAME(BitSeqAnalyzer);
  24.   In_Sig = bit_seq;
  25.   OPEN_PARM_BLOCK;
  26.   GET_INT_PARM(Report_Intvl_In_Blocks);
  27.   MAKE_INPUT(In_Sig);
  28.   Symb_Count = 0;
  29. }
  30. //======================================================
  31. BitSeqAnalyzer::~BitSeqAnalyzer( void ){ };
  32. //======================================================
  33. void BitSeqAnalyzer::Initialize(void)
  34. {
  35.   Block_Size = In_Sig->GetBlockSize();
  36.   Zeros_Count = 0;
  37.   Ones_Count = 0;
  38. };
  39. //======================================================
  40. int BitSeqAnalyzer::Execute()
  41. {
  42.    bit_t *in_bit_ptr, in_bit;
  43.    int is;
  44.    int ones_count, zeros_count;
  45.    in_bit_ptr = GET_INPUT_PTR( In_Sig );
  46.    zeros_count = Zeros_Count;
  47.    ones_count = Ones_Count;
  48.    for( is=0; is < Block_Size; is++)
  49.    {
  50.       in_bit = *in_bit_ptr++;
  51.       if( in_bit == 0 )
  52.          zeros_count++;
  53.       else
  54.          ones_count++;
  55.    }
  56.   if( (PassNumber % Report_Intvl_In_Blocks) == 0)
  57.     {
  58.     float total_count = float(ones_count + zeros_count);
  59.     BasicResults << Instance_Name << ": "
  60.               << PassNumber << "  zeros_percent = " 
  61.               << (zeros_count/total_count) << " -- "
  62.               << "  ones_percent = " 
  63.               << (ones_count/total_count) << endl;
  64.     }
  65.    Ones_Count = ones_count;
  66.    Zeros_Count = zeros_count;
  67.    return(_MES_AOK);
  68. }