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] - Diff between revs 6 and 54

Only display areas with differences | Details | Blame | View Log

Rev 6 Rev 54
/**     \file
/**     \file
        \brief Функции формирования и проверки массива данных
        \brief Функции формирования и проверки массива данных
 
 
        В файле содержится объявления функций для формирования и проверки массива данных.
        В файле содержится объявления функций для формирования и проверки массива данных.
 
 
        \author Dmitry Smekhov
        \author Dmitry Smekhov
        \version 1.0
        \version 1.0
 
 
 
 
*/
*/
 
 
#ifndef TF_TestBufM2H
#ifndef TF_TestBufM2H
#define TF_TestBufM2H
#define TF_TestBufM2H
 
 
//!  Проверка массива данных
//!  Проверка массива данных
/**     Класс содержит функции для проверки произвольных
/**     Класс содержит функции для проверки произвольных
        массивов.
        массивов.
 
 
                Тестовая последовательность представляет собой набор блоков.
                Тестовая последовательность представляет собой набор блоков.
                Размер блока задаётся кратным страницы размером 4 килобайта
                Размер блока задаётся кратным страницы размером 4 килобайта
                (512 слов по 64 бита)
                (512 слов по 64 бита)
                Первое 64-х разрядное слово в блоке содержит сигнатуру и порядковый номер.
                Первое 64-х разрядное слово в блоке содержит сигнатуру и порядковый номер.
                    31..0  - сигнатура 0xA5A50123
                    31..0  - сигнатура 0xA5A50123
                        63..32 - порядковый номер блока
                        63..32 - порядковый номер блока
 
 
                Содержимое блока зависит от его порядкового номера в последовательности.
                Содержимое блока зависит от его порядкового номера в последовательности.
 
 
                Содержимое блока:
                Содержимое блока:
                0 - Бегущая единица по 64-м разрядам
                0 - Бегущая единица по 64-м разрядам
                1 - Бегущий ноль по 64-м разрядам
                1 - Бегущий ноль по 64-м разрядам
                2 - Бегущая единица с инверсией по 64-м разрядам
                2 - Бегущая единица с инверсией по 64-м разрядам
-                       Чётные номера слов - бегущая единица по 64-м разрядам
-                       Чётные номера слов - бегущая единица по 64-м разрядам
                        Нечётные номера - инверсия предыдущего слова
                        Нечётные номера - инверсия предыдущего слова
                3 - Бегущая единица в блоке
                3 - Бегущая единица в блоке
                        Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов)
                        Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов)
                        При совпадении - в слово записывается бегущая 1.
                        При совпадении - в слово записывается бегущая 1.
                        Остальные слова - значение ноль.
                        Остальные слова - значение ноль.
                4 - Бегущий ноль с инверсией по 64-м разрядам
                4 - Бегущий ноль с инверсией по 64-м разрядам
                        Чётные номера - бегущий ноль по 64-м разрядам
                        Чётные номера - бегущий ноль по 64-м разрядам
                        Нечётные номера - инверсия предыдущего слова
                        Нечётные номера - инверсия предыдущего слова
                5 - Бегущий ноль а в блоке
                5 - Бегущий ноль а в блоке
                        Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов)
                        Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов)
                        При совпадении - в слово записывается бегущий 0.
                        При совпадении - в слово записывается бегущий 0.
                        Остальные слова - значение 0xFFFFFFFFFFFFFFFF.
                        Остальные слова - значение 0xFFFFFFFFFFFFFFFF.
                6,7 - Счётчик по 64-м разрядам
                6,7 - Счётчик по 64-м разрядам
                        Чётные номера - значение счётчика
                        Чётные номера - значение счётчика
                        Нечётные номера - инверсия предыдущего слова
                        Нечётные номера - инверсия предыдущего слова
                8,9 - Псевдослучайная последовательность
                8,9 - Псевдослучайная последовательность
                        Формируется М-последовательность по 64 разрядам.
                        Формируется М-последовательность по 64 разрядам.
                        Начальное значение - 1
                        Начальное значение - 1
                        Слово формируется сдвигом на один разряд вправо.
                        Слово формируется сдвигом на один разряд вправо.
                        В младший разряд слова записывается значение x[63] xor x[62] xor x[60] xor x[59]
                        В младший разряд слова записывается значение x[63] xor x[62] xor x[60] xor x[59]
 
 
 
 
                Для режима счётчика и псевдослучайной последовательности начальное значение
                Для режима счётчика и псевдослучайной последовательности начальное значение
                формируется при инициализации тестовой последовательности.
                формируется при инициализации тестовой последовательности.
                Для остальных режимов - при инициализации проверки блока
                Для остальных режимов - при инициализации проверки блока
 
 
        Функция buf_set() производит формирование массива.
        Функция buf_set() производит формирование массива.
 
 
         Функция buf_check() производит проверку массива на соответствие
         Функция buf_check() производит проверку массива на соответствие
         ожидаемому значению.
         ожидаемому значению.
 
 
         Функция buf_check_start() подготавливает внутренние переменные
         Функция buf_check_start() подготавливает внутренние переменные
         для проверки группы массивов.
         для проверки группы массивов.
 
 
         Функция check_result() возвращает результаты проверки группы
         Функция check_result() возвращает результаты проверки группы
         массивов.
         массивов.
 
 
         Функции report_word_error() и report_bit_error() подготавливают
         Функции report_word_error() и report_bit_error() подготавливают
         текстовую строку с отчётом в выполнении проверки группы массивов.
         текстовую строку с отчётом в выполнении проверки группы массивов.
 
 
*/
*/
class TF_TestBufM2 {
class TF_TestBufM2 {
 
 
    U32     bit_error0[64]; //!< Число ошибок типа принят 0
    U32     bit_error0[64]; //!< Число ошибок типа принят 0
    U32     bit_error1[64]; //!< Число ошибок типа принят 1
    U32     bit_error1[64]; //!< Число ошибок типа принят 1
 
 
    U32     max_cnt_error;  //!< Заданное максимальное число ошибок
    U32     max_cnt_error;  //!< Заданное максимальное число ошибок
    U32     max_bit_cnt;    //!< Число бит в слове
    U32     max_bit_cnt;    //!< Число бит в слове
    U32     buf_cnt_ok;     //!< Число правильных массивов.
    U32     buf_cnt_ok;     //!< Число правильных массивов.
    U32     buf_cnt_error;  //!< Число неправильных массивов.
    U32     buf_cnt_error;  //!< Число неправильных массивов.
    U32     word_cnt_error; //!< Число неправильных слов.
    U32     word_cnt_error; //!< Число неправильных слов.
    U32     buf_current;    //!< Номер текущего массива.
    U32     buf_current;    //!< Номер текущего массива.
    __int64 word_error[4*32];  //!< Список ошибок
    __int64 word_error[128];//!< Список ошибок
 
 
    char   str[10240];       //!< Буфер сообщений
    char   str[10240];       //!< Буфер сообщений
    U32     block_mode;     //!< Тип блока
    U32     block_mode;     //!< Тип блока
    __int64 data_ex_cnt;
    __int64 data_ex_cnt;
    __int64 data_ex_noise;
    __int64 data_ex_noise;
    __int64 data_ex_psd;
    __int64 data_ex_psd;
        __int64 data_ex_inv;
        __int64 data_ex_inv;
 
 
public:
public:
 
 
    TF_TestBufM2();      //!< Конструктор
    TF_TestBufM2();      //!< Конструктор
    ~TF_TestBufM2();     //!< Деструктор
    ~TF_TestBufM2();     //!< Деструктор
 
 
 
 
    //! Формирование массива
    //! Формирование массива
    void buf_set( U32 *buf, U32 n, U32 size, U32 mode ) ;
    void buf_set( U32 *buf, U32 n, U32 size, U32 mode ) ;
 
 
    inline U32 check( U32 index, __int64 d0, __int64 di0 );
    inline U32 check( U32 index, __int64 d0, __int64 di0 );
 
 
    //! Проверка массива
    //! Проверка массива
    U32  buf_check( U32 *buf, U32 n, U32 size, U32 mode );//, U32 *err, U32 size_err, U32 *bit_err, U32 bit_cnt );
    U32  buf_check( U32 *buf, U32 n, U32 size, U32 mode );//, U32 *err, U32 size_err, U32 *bit_err, U32 bit_cnt );
 
 
    //! Начало проверки группы массивов
    //! Начало проверки группы массивов
    void  buf_check_start( U32 n_error, U32 bit_cnt );
    void  buf_check_start( U32 n_error, U32 bit_cnt );
 
 
    //! Результаты проверки группы массивов
    //! Результаты проверки группы массивов
    U32   check_result( U32 *cnt_ok, U32 *cnt_error, U32 **error, U32 **bit0, U32 **bit1 );
    U32   check_result( U32 *cnt_ok, U32 *cnt_error, U32 **error, U32 **bit0, U32 **bit1 );
 
 
    //! Формирование отчёта по ошибкам
    //! Формирование отчёта по ошибкам
    char*  report_word_error( void );
    char*  report_word_error( void );
 
 
    //! Формирование отчёта распределения ошибок по битам
    //! Формирование отчёта распределения ошибок по битам
    char*  report_bit_error( void );
    char*  report_bit_error( void );
 
 
    //! Проверка псевдослучайной последовательности
    //! Проверка псевдослучайной последовательности
    U32 buf_check_psd( U32 *buf, U32 size  );
    U32 buf_check_psd( U32 *buf, U32 size  );
 
 
    //! Проверка двоично-инверсной последовательности
    //! Проверка двоично-инверсной последовательности
    U32 buf_check_inv( U32 *buf, U32 size  );
    U32 buf_check_inv( U32 *buf, U32 size  );
};
};
 
 
#endif
#endif
 
 

powered by: WebSVN 2.1.0

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