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

powered by: WebSVN 2.1.0

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