OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [soft/] [linux/] [common/] [utils/] [tf_testbufm2.h] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
/**     \file
2
        \brief Функции формирования и проверки массива данных
3
 
4
        В файле содержится объявления функций для формирования и проверки массива данных.
5
 
6
        \author Dmitry Smekhov
7
        \version 1.0
8
 
9
 
10
*/
11
 
12
#ifndef TF_TestBufM2H
13
#define TF_TestBufM2H
14
 
15
 
16
//!  Проверка массива данных
17
/**     Класс содержит функции для проверки произвольных
18
        массивов.
19
 
20
                Тестовая последовательность представляет собой набор блоков.
21
                Размер блока задаётся кратным страницы размером 4 килобайта
22
                (512 слов по 64 бита)
23
                Первое 64-х разрядное слово в блоке содержит сигнатуру и порядковый номер.
24
                    31..0  - сигнатура 0xA5A50123
25
                        63..32 - порядковый номер блока
26
 
27
                Содержимое блока зависит от его порядкового номера в последовательности.
28
 
29
                Содержимое блока:
30
 
31
                1 - Бегущий ноль по 64-м разрядам
32
                2 - Бегущая единица с инверсией по 64-м разрядам
33
-                       Чётные номера слов - бегущая единица по 64-м разрядам
34
                        Нечётные номера - инверсия предыдущего слова
35
                3 - Бегущая единица в блоке
36
                        Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов)
37
                        При совпадении - в слово записывается бегущая 1.
38
                        Остальные слова - значение ноль.
39
                4 - Бегущий ноль с инверсией по 64-м разрядам
40
                        Чётные номера - бегущий ноль по 64-м разрядам
41
                        Нечётные номера - инверсия предыдущего слова
42
                5 - Бегущий ноль а в блоке
43
                        Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов)
44
                        При совпадении - в слово записывается бегущий 0.
45
                        Остальные слова - значение 0xFFFFFFFFFFFFFFFF.
46
                6,7 - Счётчик по 64-м разрядам
47
                        Чётные номера - значение счётчика
48
                        Нечётные номера - инверсия предыдущего слова
49
                8,9 - Псевдослучайная последовательность
50
                        Формируется М-последовательность по 64 разрядам.
51
                        Начальное значение - 1
52
                        Слово формируется сдвигом на один разряд вправо.
53
                        В младший разряд слова записывается значение x[63] xor x[62] xor x[60] xor x[59]
54
 
55
 
56
                Для режима счётчика и псевдослучайной последовательности начальное значение
57
                формируется при инициализации тестовой последовательности.
58
                Для остальных режимов - при инициализации проверки блока
59
 
60
        Функция buf_set() производит формирование массива.
61
 
62
         Функция buf_check() производит проверку массива на соответствие
63
         ожидаемому значению.
64
 
65
         Функция buf_check_start() подготавливает внутренние переменные
66
         для проверки группы массивов.
67
 
68
         Функция check_result() возвращает результаты проверки группы
69
         массивов.
70
 
71
         Функции report_word_error() и report_bit_error() подготавливают
72
         текстовую строку с отчётом в выполнении проверки группы массивов.
73
 
74
*/
75
class TF_TestBufM2 {
76
 
77
        U32     bit_error0[64]; //!< Число ошибок типа принят 0
78
        U32     bit_error1[64]; //!< Число ошибок типа принят 1
79
 
80
        U32     max_cnt_error;  //!< Заданное максимальное число ошибок
81
        U32     max_bit_cnt;    //!< Число бит в слове
82
        U32     buf_cnt_ok;     //!< Число правильных массивов.
83
        U32     buf_cnt_error;  //!< Число неправильных массивов.
84
        U32     word_cnt_error; //!< Число неправильных слов.
85
        U32     buf_current;    //!< Номер текущего массива.
86
         __int64 word_error[4*32];  //!< Список ошибок
87
 
88
        char   str[10240];       //!< Буфер сообщений
89
        U32     block_mode;     //!< Тип блока
90
        __int64 data_ex_cnt;
91
        __int64 data_ex_noise;
92
        __int64 data_ex_psd;
93
        __int64 data_ex_inv;
94
 
95
 
96
 
97
        float *resData;
98
        int FFT_size;
99
        int numberOfSteps;
100
        int numberOfFFTSizeSteps;
101
        int m_chanMask;
102
 
103
        U32   lowRange;
104
        U32   topRange;
105
        U32   fftSize;
106
 
107
 
108
  public:
109
 
110
        TF_TestBufM2();      //!< Конструктор
111
        ~TF_TestBufM2();     //!< Деструктор
112
 
113
 
114
        //! Формирование массива
115
        void buf_set( U32 *buf, U32 n, U32 size, U32 mode ) ;
116
 
117
        inline U32 check( U32 index, __int64 d0, __int64 di0 );
118
 
119
        //! Проверка массива
120
        U32  buf_check( U32 *buf, U32 n, U32 size, U32 mode );//, U32 *err, U32 size_err, U32 *bit_err, U32 bit_cnt );
121
 
122
        //! Начало проверки группы массивов
123
        void  buf_check_start( U32 n_error, U32 bit_cnt );
124
 
125
        //! Результаты проверки группы массивов
126
        U32   check_result( U32 *cnt_ok, U32 *cnt_error, U32 **error, U32 **bit0, U32 **bit1 );
127
 
128
        //! Формирование отчёта по ошибкам
129
        char*  report_word_error( void );
130
 
131
        //! Формирование отчёта распределения ошибок по битам
132
        char*  report_bit_error( void );
133
 
134
        //! Проверка псевдослучайной последовательности
135
        U32     buf_check_psd( U32 *buf, U32 size  );
136
 
137
        //! Проверка двоично-инверсной последовательности
138
        U32     buf_check_inv( U32 *buf, U32 size  );
139
 
140
 
141
};
142
 
143
 
144
 
145
 
146
 
147
//---------------------------------------------------------------------------
148
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.