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] - Rev 15
Go to most recent revision | Compare with Previous | Blame | View Log
/** \file \brief Функции формирования и проверки массива данных В файле содержится объявления функций для формирования и проверки массива данных. \author Dmitry Smekhov \version 1.0 */ #ifndef TF_TestBufM2H #define TF_TestBufM2H //! Проверка массива данных /** Класс содержит функции для проверки произвольных массивов. Тестовая последовательность представляет собой набор блоков. Размер блока задаётся кратным страницы размером 4 килобайта (512 слов по 64 бита) Первое 64-х разрядное слово в блоке содержит сигнатуру и порядковый номер. 31..0 - сигнатура 0xA5A50123 63..32 - порядковый номер блока Содержимое блока зависит от его порядкового номера в последовательности. Содержимое блока: 0 - Бегущая единица по 64-м разрядам 1 - Бегущий ноль по 64-м разрядам 2 - Бегущая единица с инверсией по 64-м разрядам - Чётные номера слов - бегущая единица по 64-м разрядам Нечётные номера - инверсия предыдущего слова 3 - Бегущая единица в блоке Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов) При совпадении - в слово записывается бегущая 1. Остальные слова - значение ноль. 4 - Бегущий ноль с инверсией по 64-м разрядам Чётные номера - бегущий ноль по 64-м разрядам Нечётные номера - инверсия предыдущего слова 5 - Бегущий ноль а в блоке Номер слова сравнивается с номером блока (сравниваются восемь младший разрядов) При совпадении - в слово записывается бегущий 0. Остальные слова - значение 0xFFFFFFFFFFFFFFFF. 6,7 - Счётчик по 64-м разрядам Чётные номера - значение счётчика Нечётные номера - инверсия предыдущего слова 8,9 - Псевдослучайная последовательность Формируется М-последовательность по 64 разрядам. Начальное значение - 1 Слово формируется сдвигом на один разряд вправо. В младший разряд слова записывается значение x[63] xor x[62] xor x[60] xor x[59] Для режима счётчика и псевдослучайной последовательности начальное значение формируется при инициализации тестовой последовательности. Для остальных режимов - при инициализации проверки блока Функция buf_set() производит формирование массива. Функция buf_check() производит проверку массива на соответствие ожидаемому значению. Функция buf_check_start() подготавливает внутренние переменные для проверки группы массивов. Функция check_result() возвращает результаты проверки группы массивов. Функции report_word_error() и report_bit_error() подготавливают текстовую строку с отчётом в выполнении проверки группы массивов. */ class TF_TestBufM2 { U32 bit_error0[64]; //!< Число ошибок типа принят 0 U32 bit_error1[64]; //!< Число ошибок типа принят 1 U32 max_cnt_error; //!< Заданное максимальное число ошибок U32 max_bit_cnt; //!< Число бит в слове U32 buf_cnt_ok; //!< Число правильных массивов. U32 buf_cnt_error; //!< Число неправильных массивов. U32 word_cnt_error; //!< Число неправильных слов. U32 buf_current; //!< Номер текущего массива. __int64 word_error[4*32]; //!< Список ошибок char str[10240]; //!< Буфер сообщений U32 block_mode; //!< Тип блока __int64 data_ex_cnt; __int64 data_ex_noise; __int64 data_ex_psd; __int64 data_ex_inv; public: TF_TestBufM2(); //!< Конструктор ~TF_TestBufM2(); //!< Деструктор //! Формирование массива void buf_set( U32 *buf, U32 n, U32 size, U32 mode ) ; 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 ); //! Начало проверки группы массивов 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 ); //! Формирование отчёта по ошибкам char* report_word_error( void ); //! Формирование отчёта распределения ошибок по битам char* report_bit_error( void ); //! Проверка псевдослучайной последовательности U32 buf_check_psd( U32 *buf, U32 size ); //! Проверка двоично-инверсной последовательности U32 buf_check_inv( U32 *buf, U32 size ); }; #endif
Go to most recent revision | Compare with Previous | Blame | View Log