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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [soft/] [linux/] [application/] [wb_test/] [src/] [work/] [wb_teststrm.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
 
2
#include "tf_testbufm2.h"
3
#include "tf_workparam.h"
4
#include "tf_test.h"
5
 
6
class CL_WBPEX;
7
 
8
 
9
class WB_TestStrm : public TF_WorkParam, public TF_Test
10
{
11
 
12
 
13
    struct ParamExchange
14
    {
15
        U32 Strm;
16
        U32 Mode;
17
        U32 BlockWr;
18
        U32 BlockRd;
19
        U32 BlockOk;
20
        U32 BlockError;
21
        U32 TotalError;
22
        U32 DataType;           // Тип данных при фиксированном типе блока, 6 - счётчик, 8 - псевдослучайная последовательность
23
        U32 DataFix;            // 1 - фиксированный тип блока, 0 - данные в блоке записят от номера блока
24
        U32     trd;
25
        float   VelocityCurrent;
26
        float   VelocityAvarage;
27
        float   fftTime_us;
28
        TF_TestBufM2 testBuf;
29
 
30
        U32 time_start;
31
        U32 time_last;
32
        U32 BlockLast;
33
        U32 freeCycle;
34
        U32 freeCycleZ;
35
 
36
 
37
        ParamExchange()
38
        {
39
            Strm=0;
40
            Mode=0;
41
            BlockWr=0;
42
            BlockRd=0;
43
            BlockOk=0;
44
            BlockError=0;
45
            TotalError=0;
46
            DataType=0;
47
            DataFix=0;
48
            trd=0;
49
            VelocityCurrent=0;
50
            VelocityAvarage=0;
51
            time_start=0;
52
            time_last=0;
53
            BlockLast=0;
54
            freeCycle=0;
55
            freeCycleZ=0;
56
        }
57
    };
58
 
59
    UINT ThreadId;
60
    UINT ThreadIdIsvi;
61
 
62
    pthread_t hThread;
63
    pthread_attr_t  attrThread_;
64
 
65
    pthread_t hThreadIsvi;
66
    pthread_attr_t  attrThreadIsvi_;
67
 
68
    CL_WBPEX  *pBrd;
69
 
70
    static void* ThreadFunc( void* lpvThreadParm );
71
    static void* ThreadFuncIsvi( void* lpvThreadParm );
72
 
73
public:
74
 
75
    WB_TestStrm( BRDCHAR* fname, CL_WBPEX *fotr );
76
    virtual ~WB_TestStrm();
77
 
78
    virtual void Prepare( void );
79
    virtual void Start( void );
80
    virtual void Stop( void );
81
    virtual int isComplete( void );
82
    virtual void GetResult( void );
83
    virtual void Step( void );
84
 
85
    U32 Execute( void );
86
    U32 ExecuteIsvi( void );
87
 
88
 
89
    //! Установка параметров по умолчанию
90
    virtual void SetDefault( void );
91
 
92
    //! Расчёт параметров
93
    virtual void CalculateParams( void );
94
 
95
    //! Отображение параметров
96
    virtual void ShowParam( void );
97
 
98
 
99
    U32 Terminate;
100
    U32 BlockRd;
101
    U32 BlockOk;
102
    U32 BlockError;
103
    U32 TotalError;
104
 
105
    U32 CntBuffer;                      // Число буферов стрима
106
    U32 CntBlockInBuffer;       // Число блоков в буфере
107
    U32 SizeBlockOfWords;       // Размер блока в словах
108
    U32 SizeBlockOfBytes;       // Размер блока в байтах
109
    U32 SizeBuferOfBytes;       // Размер буфера в байтах
110
    U32 SizeStreamOfBytes;      // Общий размер буфера стрима
111
    U32 isCycle;                        // 1 - циклический режим работы стрима
112
    U32 isSystem;                       // 1 - системная память
113
    U32 isAgreeMode;            // 1 - согласованный режим
114
 
115
    U32 trdNo;          // номер тетрады
116
    U32 strmNo;         // номер стрима
117
    U32 isTest;         // 1 - проверка псевдослучайной последовательности, 2 - проверка тестовой последовательности
118
    U32 isMainTest; // 1 - включение режима тестирования в тетараде MAIN
119
 
120
    U32   lowRange;
121
    U32   topRange;
122
    U32   fftSize;
123
 
124
    U32 isFifoRdy;      // 1 - генератор тестовой последовательности анализирует флаг готовности FIFO
125
    U32 Cnt1;           // Число тактов записи в FIFO, 0 - постоянная запись в FIFO
126
    U32 Cnt2;           // Число тактов паузы при записи в FIFO
127
    U32 DataType;       // Тип данных при фиксированном типе блока, 6 - счётчик, 8 - псевдослучайная последовательность
128
    U32 DataFix;        // 1 - фиксированный тип блока, 0 - данные в блоке записят от номера блока
129
 
130
    U32 BlockMode;      // режим проверки
131
 
132
    U32 isTestCtrl;     // 1 - подготовка тетрады TEST_CTRL
133
 
134
    char*       fnameAdcParam;  // Имя файла параметров для режима АЦП
135
    char*       fnameDdcParam;  // Имя файла параметров для режима DDC
136
    char*       fnameIsvi;              // Имя файла данных ISVI
137
 
138
    char*       fnameAdmReg;    // Имя файла регистров
139
    U32         isAdmReg;               // 1 - разрешение записи регистров из файла fnameAdmReg
140
 
141
    char*       fnameAdmReg2;   // Имя файла регистров (выполняется после старта стрима)
142
    U32         isAdmReg2;              // 1 - разрешение записи регистров из файла fnameAdmReg2
143
 
144
    U32         isIsvi;                 // 1 - вывод в ISVI
145
    U32*        bufIsvi;                // Буфер данных ISVI
146
    char        IsviHeaderStr[1024]; // суффикс ISVI
147
    U32         IsviHeaderLen;
148
    U32         IsviHeaderMode;                 // режим формирования суффикса ISVI, 0 - нет, 1 - DDC, 2 - ADC
149
    U32         IsviStatus;                     // состояние вывода в ISVI
150
    U32         IsviCnt;                        // число выведенных кадров в ISVI
151
 
152
    void IsviStep( U32* ptr );
153
    void WriteFlagSinc(int flg, int isNewParam);
154
    int  ReadFlagSinc(void);
155
    void WriteDataFile( U32 *pBuf, U32 sizew );
156
 
157
    U32 lc_status;
158
    float cpuFreq;
159
 
160
    ParamExchange       rd0;
161
 
162
 
163
 
164
    //void SendPkg( ParamExchange *pr );
165
    //void ReceivePkg( ParamExchange *pr );
166
    //void SendData( ParamExchange *pr );
167
    void ReceiveData(  ParamExchange *pr );
168
 
169
    U32  TestSeq;       // Региср управления режимом формирования тестовой последовательности
170
 
171
 
172
private :
173
 
174
    bool isFirstCallStep;
175
 
176
    void PrepareAdm( void );
177
 
178
    void PrepareAdmReg( char* fname );
179
 
180
 
181
    //! Подготовка MAIN
182
    void PrepareMain( void );
183
 
184
    //! Подготовка TEST_CTRL
185
    void PrepareTestCtrl( void );
186
 
187
    //! Запуск TestCtrl
188
    void StartTestCtrl( void );
189
 
190
 
191
};

powered by: WebSVN 2.1.0

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