Параметры функции: hDeviceHandle — дескриптор открытой платы.
Пример использования функции в среде Delphi показан при описании функции XDSPDigExtStartDisable (см. следующую страницу).
Function XDSPDigExtStartDisable – Выключение режима внешнего запуска по цифровому сигналу
Декларация: Function XDSPDigExtStartDisable(hDeviceHandle:TDeviceHandle):DWORD
Функция предназначена для выключения на выбранной плате режима внешнего запуска от цифровых входов.
Параметры функции: hDeviceHandle — дескриптор открытой платы.
Пример использования функций XDSPDigExtStartEnable и XDSPDigExtStartDisable в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
// Работа с платой
// Проверка настроек интерфейса (EnableDigExtStartCheckBox — параметр отвечающий за выбор режима внешнего запуска по цифровому сигналу)
if EnableDigExtStartCheckBox = true then
XDSPDigExtStartEnable(device); // включение режима внешнего запуска по цифровому сигналу
else
XDSPDigExtStartDisable(device); // выключение режима внешнего запуска по цифровому сигналу
end;
// Работа с платой
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XdspSetProcessLength - Установить количество отсчетов дискретизации и длинну DMA транзакции
Декларация: Function XdspSetProcessLength(hDeviceHandle:TDeviceHandle;
dwLength:DWORD):DWORD
Функция предназначена для установки длинны (в отсчетах) процесса дискретизации и DMA транзакции. По запуску дискретизации плата осуществляет оцифровку входных сигналов и заполнение внутренней буферной памяти заданным этой функцией количеством отсчетов. Запуск DMA транзакции активизирует процесс копирования диапазона внутренней памяти заданной длинны в буфер компьютера.
Примечание: Значение задаваемое этой функцией не должно превышать 16 M (16*220 = ).
Параметры функции: hDeviceHandle - дескриптор открытой платы;
dwLength - длинна.
Пример использования функции в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Const
TransactionLength = 1048576; //1M отсчетов на канал
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
// Устанавливаем длину оцифровки и длину передаваемого DMA буфера 1M (отсчетов)
XdspSetProcessLength(device, TransactionLength);
...
// Работа с платой
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XdspSetSampleFrequencyDivider - Установить делитель частоты процесса оцифровки
Декларация: Function XdspSetSampleFrequencyDivider(hDeviceHandle:TDeviceHandle;
dwDivider:DWORD):DWORD
Функция предназначена для установки коэффициента дискретизации. При делителе равном 1 плата производит оцифровку сигнала с максимальной частотой дискретизации — 100 МГц.
Увеличивая этот параметр можно снижать частоту дискретизации. По умолчанию значение делителя частоты принимается равным 1.
Параметры функции: hDeviceHandle - дескриптор открытой платы;
dwDivider - делитель частоты дискретизации.
Примечание: Значение dwDivider должно находится в диапазоне от 1 до 256.
Пример использования функции в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
// Устанавливаем делитель частоты дискретизации равным 2 (частота дискретизации при этом будет равна 50 МГц)
XdspSetSampleFrequencyDivider(device,2);
...
// Работа с платой
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XdspAddrCntrToADCDataEnable – включение режима подмены данных АЦП адресным счетчиком
Декларация: FunctionXdspAddrCntrToADCDataEnable (hDeviceHandle: TdeviceHandle): DWORD
Функция предназначена для включения режима диагностики работы канала данных между платой и копьютером, посредством интерфейса PСI-Еxpress. При этом отсекаются данные со входа АЦП и в канал поступает циклически генерируемая возрастающая последовательность(адресный тест).
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функции в среде Delphi показан при описании функции XdspAddrCntrToADCDataDisable (см. следующую страницу).
Function XdspAddrCntrToADCDataDisable – выключение режима подмена данных АЦП адресным счетчиком
Декларация: FunctionXdspAddrCntrToADCDataDisable (hDeviceHandle:TDeviceHandle): DWORD
Функция предназначена выключения режима диагностики работы канала данных между платой и копьютером.
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функций XdspAddrCntrToADCDataEnable и XdspAddrCntrToADCDataDisable в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Флаг разрешения подмены данных АЦП счетчиком
AddrCntrTestCheckBox : boolean;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
if AddrCntrTestCheckBox = true then begin
// Включаем режим подмены данных АЦП адресными счетчиком
XdspAddrCntrToADCDataEnable(device);
else
// Выключаем режим подмены данных АЦП адресными счетчиком
XdspAddrCntrToADCDataDisable(device);
end;
//Работа с платой
...
// Закрываем плату перед завершением работы, номер подключенной платы опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPSetDAC1Default – запись в ЦАП1 значения по умолчанию
Декларация: Function XDSPSetDAC1Default(hDeviceHandle:TDeviceHandle; dwData:DWord):DWORD
Функция устанавливает значение сигнала для ЦАП1 которое генерируется при простое платы, т. е. когда процесс генерации сигнала не активен.
Параметры функции: hDeviceHandle – дескриптор открытой платы;
dwData – значение записываемое в ЦАП.
Function XDSPSetDAC2Default – запись в ЦАП2 значения по умолчанию
Декларация: Function XDSPSetDAC2Default(hDeviceHandle:TDeviceHandle; dwData:DWord):DWORD
Функция устанавливает значение сигнала для ЦАП2 которое генерируется при простое платы, т. е. когда процесс генерации сигнала не активен.
Параметры функции: hDeviceHandle – дескриптор открытой платы;
dwData – значение записываемое в ЦАП.
Пример использования функций XDSPSetDAC1Default и XDSPSetDAC2Default в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TDeviceHandle;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
// Настройка устройства
// Запись в ЦАП1 значения по умолчанию
XdspSetDAC1Default(device,5000);
// Запись в ЦАП2 значения по умолчанию
XdspSetDAC2Default(device,4000);
...
// Работа с платой
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPHistBuffEnable – включить буфер предистории
Декларация: Function XDSPHistBuffEnable(hDeviceHandle:TDeviceHandle):DWORD
Функция включает работу буфера предыстории на плате. При работе с платой в режиме внешнего запуска может возникнуть необходимость обработки данных предшествовавших сигналу внешнего запуска. Включение буфера предыстории позволяет получить 1024 (из 16 М) отсчетов данных предшествовавших сигналу внешнего запуска, по каждому каналу. Размер буфера предыстории имеет фиксированную длину – 1024 отсчета.
Функция возвращает XDSP_STATUS_SUCCESS в случае успешного выполнения или XDSP_STATUS_ERROR (см. константы и типы для работы с API функциями библиотеки, описанные в файле "xdspapi. pas"), код ошибки можно получить используя стандартную Windows API функцию GetLastError.
Параметры функции: hDeviceHandle – дескриптор открытой платы
Пример использования функции в среде Delphi показан при описании функции XDSPHistBuffDisable (см. следующую страницу).
Function XDSPHistBuffDisable – выключить буфер истории
Декларация: Function XDSPHistBuffDisable(hDeviceHandle:TDeviceHandle):DWORD
Функция выключает работу буфера предыстории на плате.
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функций XDSPHistBuffEnable и XDSPHistBuffDisable в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Флаг включения буфера предистории
HistBuffCheckBox : boolean;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
// Работа с платой
// Проверка настроек программы
if HistBuffCheckBox = true then
XDSPHistBuffEnable(device); // Включение режима ведения предистории
else
XDSPHistBuffDisable(device); // Выключение режима ведения предистории
end;
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPDACCounterEnable – включение счетчика ЦАП
Декларация: Function XDSPDACCounterEnable(hDeviceHandle:TDeviceHandle):DWORD
Функция вместо сгенерированного сигнала подключает к входам ЦАП на плате адресный счетчик. Режим используется для диагностики канала данных ЦАП. При таком режиме на выходе ЦАП-ов должен наблюдаться пилообразный сигнал(адресный тест).
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функции в среде Delphi показан при описании функции XDSPDACCounterDisable (см. следующую страницу).
Function XDSPDACCounterDisable – отключение счетчика ЦАП
Декларация: Function XDSPDACCounterDisable(hDeviceHandle:TDeviceHandle):DWORD
Функция выключает режим диагностики канала данных ЦАП и возвращает нормальный режим генерации сигнала.
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функций XDSPDACCounterEnable и XDSPDACCounterDisable в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// флаг режима диагностики канала данных ЦАП
DACCheckBox : boolean;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
// Проверка настроек программы
if DACCheckBox = true then
XDSPDACCounterEnable(device); // Подключение счетчика к ЦАП
else
XDSPDACCounterDisable(device); // Отключение счетчика от ЦАП
end;
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPDACtoADCEnable – включение передачи данных с ЦАП на АЦП
Декларация: Function XDSPDACtoADCEnable(hDeviceHandle:TDeviceHandle):DWORD
Функция предназначена для диагностики памяти. Данная функция включает режим, при котором данные записанные в память ЦАП передаются в память АЦП на той же плате. А затем данные из памяти АЦП поступают на ПК. Таким образом проверяются основные внутренние каналы передачи данных на плате.
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функции в среде Delphi показан при описании функции XDSPDACtoADCDisable (см. следующую страницу).
Function XDSPDACtoADCDisable - выключение передачи данных с ЦАП на АЦП
Декларация: Function XDSPDACtoADCDisable(hDeviceHandle:TDeviceHandle):DWORD
Данная функция выключает режим диагностики, при котором данные записанные в память ЦАП передаются в память АЦП на той же плате.
Параметры функции: hDeviceHandle – дескриптор открытой платы.
Пример использования функций XDSPDACtoADCEnable и XDSPDACtoADCDisable в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Флаг включения режима подключения счетчика ко входам ЦАП
CheckBox : boolean;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
// Проверка настроек программы
if CheckBox = true then
XDSPDACtoADCEnable(device); //Включение режима диагностики
else
XDSPDACtoADCDisable(device); // Выключение режима диагностики
end;
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPWriteToADCDAC – запись управляющего слова в АЦП и ЦАП
Декларация: Function XDSPWriteToADCDAC(hDeviceHandle:TDeviceHandle; data:Word; adc_flag:boolean; dac_flag:boolean):DWORD
Функция предназначена для диагностики АЦП и ЦАП.
Управляющие регистры АЦП и ЦАП описаны в соответствующей документации на них.
Ее использование пользователем не рекомендуется.
Параметры функции: hDeviceHandle – дескриптор открытой платы;
data – записываемые данные;
adc_flag – флаг выбора АЦП;
dac_flag – флаг выбора ЦАП.
Примечание: функция в один момент времени может передавать данные только в АЦП или в ЦАП. Этот выбор делается при помощи флагов, выставляя соответствующий в состояние «true».
Пример использования функции в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Данные регистра управления.
adc_data, dac_data : Word;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
adc_data := $0011;
dac_data := $2000;
// Передача данных для АЦП
XdspWriteToADCDAC(device, adc_data, true, false);
// Передача данных для ЦАП
XdspWriteToADCDAC(device, dac_data, false, true);
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию xdspCloseDevice)
XdspCloseDevice(device);
Function XdspDACEnable — включение генерации сигнала ЦАП
Декларация: Function XdspDACEnable(hDeviceHandle:TDeviceHandle):DWORD
Функция включает режим генерации сигнала ЦАП.
Параметры функции: hDeviceHandle — дескриптор открытой платы.
Пример использования в среде Delphi показан при описании функции XdspDACDisable (см. следующую страницу).
Function XdspDACDisable — выключение генерации сигнала ЦАП
Декларация: Function XdspDACDisable(hDeviceHandle:TDeviceHandle):DWORD
Функция выключает генерацию сигнала ЦАП.
Параметры функции: hDeviceHandle — дескриптор открытой платы.
Пример использования функций XdspDACEnable и XdspDACDisable в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Флаг включения режима генерации сигнала ЦАП
DACEnable : boolean;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
if DACEnable = true then
XdspDACEnable(device); // Включение генерации сигнала ЦАП
else
XdspDACDisable(device); // Выключение генерации сигнала ЦАП
end;
...
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPReadDigInData — чтение цифровых сигналов
Декларация: Function XDSPReadDigInData(hDeviceHandle:TDeviceHandle; pdwData:PDWord):DWORD
Функция выполняет чтение значений на цифровых выводах выбранного устройства.
Параметры функции: hDeviceHandle — дескриптор открытой платы;
pdwData — значение, прочитанное с цифровых выводов платы.
Анализ полученных данных «dwData»:
if ((dwData and $) = 0) then
//на входе FPGA-IN0 сигнал в нуле
else
//на входе FPGA-IN0 сигнал в единице
if ((dwData and $) = 0) then
//на входе FPGA-IN1 сигнал в нуле
else
//на входе FPGA-IN1 сигнал в единице
if ((dwData and $) = 0) then
//на входе FPGA-IN2 сигнал в нуле
else
//на входе FPGA-IN2 сигнал в единице
if ((dwData and $) = 0) then
//на входе FPGA-IN3 сигнал в нуле
else
//на входе FPGA-IN3 сигнал в единице
if ((dwData and $) = 0) then
//на входе FPGA-IN4 сигнал в нуле
else
//на входе FPGA-IN4 сигнал в единице
if ((dwData and $) = 0) then
//на входе FPGA-IN5 сигнал в нуле
else
//на входе FPGA-IN5 сигнал в единице
Примечание: Подробнее о цифровых разьемах см. «Описание сигнальных выводов платы».
Пример использования функции в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Переменная для хранения значение цифровых сигналов
dwData : DWORD;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
...
// Чтение цифровых сигналов с платы
XDSPReadDigInData(device,@dwData);
// Обработка полученных данных (см. выше «анализ полученных данных»).
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Function XDSPWriteDigOutData — запись цифровых сигналов
Декларация: Function XDSPWriteDigOutData(hDeviceHandle:TDeviceHandle; dwData:DWord):DWORD
Функция выполняет запись, определенных пользователем значений, которые будут отображаться на цифровых выводах установленной платы.
Параметры функции: hDeviceHandle — дескриптор открытой платы;
dwData — значение, записываемое в цифровые выводы платы.
Примечание: цифровые выходы платы мультиплексируются с некоторыми внутренними сигналами платы*. При этом на выход подается либо сигнал пользователя записанный с помощью функции XDSPWriteDigOutData, либо один из внутренних сигналов (используется для диагностики).
Структура параметра dwData(bit 31 – 0):
bit 0 – N/A
bit 1 – значение цифрового выхода FPGA-OUT0 заданное пользователем
bit 2 – значение цифрового выхода FPGA-OUT1 заданное пользователем
bit 3 – значение цифрового выхода FPGA-OUT2 заданное пользователем
bit 4 – значение цифрового выхода FPGA-OUT3 заданное пользователем
bit 5 – значение цифрового выхода FPGA-OUT4 заданное пользователем
bit 6 – значение цифрового выхода FPGA-OUT5 заданное пользователем
bit 7 – флаг мультиплексора для выхода FPGA-OUT0
bit 8 – флаг мультиплексора для выхода FPGA-OUT1
bit 9 – флаг мультиплексора для выхода FPGA-OUT2
bit 10 – флаг мультиплексора для выхода FPGA-OUT3
bit 11 – флаг мультиплексора для выхода FPGA-OUT4
bit 12 – флаг мультиплексора для выхода FPGA-OUT5
bit (13 – 31) – N/A
При значении «1», соотвествующего бита, флаг мультиплексора переключает на цифровой выход соотвествующий внутренний сигнал платы*. При значении «0», на цифровой выход передается значение заданное пользователем посредством это функции.
Примечание: цифровой выход FPGA-OUT5 не конфигурируется с помощью функции XDSPWriteDigOutData. На выход FPGA-OUT5 всегда поступает сигнал «временное окно»*.
*Подробнее о внутренних сигналах платы см. Закладка «DigitControl».
Пример использования функции в среде Delphi:
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
Var
// Переменная для хранения дескриптора устройства
device : TdeviceHandle;
// Переменная для хранения значения цифровых сигналов
dwData : DWORD;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
...
// Открываем плату, проверка ошибок и выбор номера устройства опущены (см. функцию XdspOpenDevice)
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
// Запись значений цифровых сигналов в плату
dwData := $;
// если отмеченно пользователем, на цифровой выход FPGA-OUT0 подается сигнал лог «1» иначе «0»
if DOUT0CheckBox. Checked then
dwData := dwData or $;
// если отмеченно пользователем, на цифровой выход FPGA-OUT1 подается сигнал лог «1» иначе «0»
if DOUT1CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT2
if DOUT2CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT3
if DOUT3CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT4
if DOUT4CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT5
if DOUT5CheckBox. Checked then
dwData := dwData or $;
// если отмеченно пользователем, флаг переключает цифровой выход FPGA-OUT0 на внутренний сигнал платы
if XDSP_NotProcessFlag_TO_DOUT0CheckBox. Checked then
dwData := dwData or $;
// если отмеченно пользователем, флаг переключает цифровой выход FPGA-OUT1 на внутренний сигнал платы
if XDSP_ProcessFlag_TO_DOUT1CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT2
if XDSP_ExtPuskEnable_TO_DOUT2CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT3
if XDSP_NotExtPuskEnable_TO_DOUT3CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT4
if XDSP_PCI_enable_TO_DOUT4CheckBox. Checked then
dwData := dwData or $;
// аналогично для FPGA-OUT5
if XDSP_NotPCI_enable_TO_DOUT5CheckBox. Checked then
dwData := dwData or $;
//конфигурирование цифровых выходов по выбранным настройкам
XDSPWriteDigOutData(device, dwData);
// Закрываем плату перед завершением работы, выбор номера устройства опущен (см. функцию XdspCloseDevice)
XdspCloseDevice(device);
Рекомендованный алгоритм работы с платой
// Проверка ошибок опущена.
// Подключаем модуль с описанием констант, типов и импортируемых функций
Uses xdspapi;
...
Const ADCBufLen = ; полный размер 1-го буфера АЦП, 16М слов
Var
// Переменные для хранения дескриптора устройства
device:TDeviceHandle;
// Переменная для хранения результата работы функций
result : DWord;
// параметры для инициализации платы
phInterruptEventHandle:PHandle;
ppDmaBuffer1:PPDmaMemoryBuffer;
ppDmaBuffer2:PPDmaMemoryBuffer;
ppDmaBuffer3:PPDmaMemoryBuffer;
ppDmaBuffer4:PPDmaMemoryBuffer;
pDmaBufferAddr1:PDWord;
pDmaBufferAddr2:PDWord;
pDmaBufferAddr3:PDWord;
pDmaBufferAddr4:PDWord;
Chanel1 : Array[0..ADCBufLen] of SmallInt; //буфер для оцифрованного сигнала 1 канала
Chanel2 : Array[0..ADCBufLen] of SmallInt; //буфер для оцифрованного сигнала 2 канала
// значение, записываемое в ЦАП по умолчанию
DACdefault : integer = 8192;
Begin
// Открытие устройства и инициализация. Получение указателей на 4-ре буфера памяти (2 для АЦП, 2 для ЦАП).
device:=XdspOpenDevice(0, @phInterruptEventHandle,
@ppDmaBuffer1, @ppDmaBuffer2, @ppDmaBuffer3, @ppDmaBuffer4,
@pDmaBufferAddr1, @pDmaBufferAddr2, @pDmaBufferAddr3, @pDmaBufferAddr4);
// сброс платы
XdspResetAll(device);
// запись в ЦАП1 и ЦАП2 значений по умолчанию
XdspSetDAC1Default(device(k),DACdefault);
XdspSetDAC2Default(device(k),DACdefault);
// установка длинны транзакции
XdspSetProcessLength(hnd, ADCBufLen);
// установка делителя частоты дискретизации
XdspSetSampleFrequencyDivider(hnd,1);
// сброс платы
XdspResetAll(device);
// включение необходимых настроек и режимов работы платы
// Если разрешен внешний (ExtStartCheckBox : boolean) старт, то Time_Out равняется INFINITE (время неограничено), если нет – то 3с)
if ExtStartCheckBox = true then begin
// разрешаем внешний старт
XdspExternalStartEnable(device);
Time_Out := INFINITE; // Время ожиданя неограничено
else
// запрещаем внешний старт
XdspExternalStartDisable(device);
Time_Out := 3000;
end;
...
...
...
// сброс платы
XdspResetAll(device(k));
// Запуск процесса чтения данных с АЦП
result:=XdspStartRead(device, TimeOut,0);
// Проверка на наличие ошибок (XDSP_STATUS_ERROR если интервал времени ожидания прерывания от платы истек)
if result = XDSP_STATUS_ERROR then
// сброс платы и обработка ишибки
XdspResetAll(device);
else
// обработка полученных данных
// запись данных на плату для ЦАП
// формирование сигнала(по указателям ppDmaBuffer3 и ppDmaBuffer4 заполняются 3-й и 4-й DMA буфер)
For i:=0 To ADCBufLen-1 Do
ppDmaBuffer3^[i+1]:=8192 + GenSignal(i);
For i:=0 To ADCBufLen-1 Do
ppDmaBuffer4^[i+1]:=8192 + GenSignal(i);
// Передача данных в ЦАП
result:=XDspStartWrite(device,2,2,TimeOut);
// Проверка на наличие ощибок
if result = XDSP_STATUS_ERROR then
// обработка ошибки
end;
result:=XDspStartWrite(device(k),3,3,TimeOut);
// Проверка на наличие ошибок
if result = XDSP_STATUS_ERROR then
// обработка ошибки
end;
...
// разбор данных по каналам полученных из АЦП
for i:=0 to ADCBufLen do Begin
Chanel1[i]:=SmallInt(ppDmaBuffer1^[i+1]);
Chanel2[i]:=SmallInt(ppDmaBuffer2^[i+1]);
End;
// дальнейшая обработка полученных данных
...
...
// Закрытие устройства
XdspCloseDevice(device(k));
...
end;
End.
Описание сигнальных выводов платы
Цифровые выводы платы
На плате установлено два разъема цифровых сигналов J10 и J12
![]() |
Рис. 12. Разъем цифровых сигналов AMP IPC2-16M
В таблице 9 приведены наименование цифровых выводов разъема AMP IPC2-16M
Таблица 9. Наименование выводов разъемов AMP IPC2-16M
Обозначение разъема на плате | Имя сигнала | Назначение | Номер контакта | Номер контакта GND |
J12 | FPGA-IN0 | Контакты не используются, могут назначаться по требованию заказчика | 1 | 2 |
J12 | FPGA-IN1 | 3 | 4 | |
J12 | FPGA-IN2 | 5 | 6 | |
J12 | FPGA-OUT0 | Инвертированное значение флага оцифровки данных («временное окно») | 7 | 8 |
J12 | FPGA-OUT1 | Значение флага оцифровки данных («временное окно») | 9 | 10 |
J12 | FPGA-OUT2 | Сигнал внешнего запуска оцифровки данных | 11 | 12 |
J12 | 3,3V | Питание 3,3 V * | 13,15 | 14,16 |
J10 | FPGA-IN3 | Контакты не используются, могут назначаться по требованию заказчика | 1 | 2 |
J10 | FPGA-IN4 | 3 | 4 | |
J10 | FPGA-IN5 | Цифровой сигнал внешнего запуска | 5 | 6 |
J10 | FPGA-OUT3 | Инвертированное значение сигнала внешнего запуска оцифровки данных | 7 | 8 |
J10 | FPGA-OUT4 | Сигнал начала DMA-транзакции | 9 | 10 |
J10 | FPGA-OUT5 | Инвертированное значение сигнала начала DMA-транзакции | 11 | 12 |
J10 | 3,3V | Питание 3,3 V * | 13,15 | 14,16 |
* В случае подключения аппаратуры с питанием 3,3 В на плату необходимо установить два резистора R114 и R98 номиналом 0 Ом (перемычка).
Примечание: все данные, передаваемые или получаемые с цифровых выводов, подвергаются аппаратному инвертированию (лог. «0» на цифровом разъеме соответствует лог. «1» на ПК).
После старта процесса транзакции сигнал FPGA-OUT4 устанавливается в состояние лог. «1» (FPGA-OUT5 в состоянии лог. «0»).
Если режим внешнего запуска выключен, то оцифровка данных начинается автоматически. При этом сигнал FPGA-OUT1 переходит в состояние лог. «1» (FPGA-OUT0 в состоянии лог. «0»), сигнал FPGA-OUT4 переходит в состояние лог. «0», (FPGA-OUT5 в состоянии лог. «1»).
В случае, если режим внешнего запуска включен, то система ожидает появления сигнала внешнего запуска. При этом сигнал FPGA-OUT4 находится в состоянии лог «1» (FPGA-OUT5 в состоянии лог. «0»). Как только появляется сигнал внешнего запуска, FPGA-OUT2 в состоянии лог. «1» (FPGA-OUT3 в состоянии лог. «0»), начинается процесс оцифровки данных, что сигнализируется переходом сигнала FPGA-OUT1 в состояние лог. «1» (FPGA-OUT0 в состоянии лог. «0»), сигнал FPGA-OUT4 в состояние лог. «0» (FPGA-OUT5 в состоянии лог. «1»).
Примечание: в скобках указаны соответствующие инвертированные цифровые сигналы.
Аналоговые выводы платы
![]() |
Рис. 13. Аналоговые выводы платы SMB
Тип разъема, используемый для аналоговых вводов — SMB.
В таблице 10 укажем назначение аналоговых выводов платы.
Таблица 10. Аналоговые выводы платы
Номер вывода | Имя сигнала | Назначение |
1 | Сигнал АЦП1 | Входы аналоговых сигналов на преобразователи АЦП |
2 | Сигнал АЦП2 | |
3 | Сигнал ЦАП1 | Выходы аналоговых сигналов с преобразователей ЦАП |
4 | Сигнал ЦАП2 | |
5 | Сигнал внешнего запуска | Вход аналогового сигнала на компаратор |
Компаратор, установленный на плате, используется для формирования сигнала внешнего аналогового запуска. Уровень срабатывания компаратора задается цифро-аналоговым преобразователем (ЦАП3). На вход компаратора поступает сигнал с выхода преобразователя DAC3 и аналоговый сигнал 5 (рис. 13).
На основе сигнала 5 (рис. 13) формируется импульсный сигнал с фронтами в точках пересечения сигнала 5 (синусоидальная форма) с опорным напряжением на выходе преобразователя DAC3.
Изменение напряжения на выходе DAC3, изменяет уровень срабатывания компаратора. Это приводит к изменению длительности лог. «1» и лог. «0» (период импульсного сигнала при этом остается неизменным), а, следовательно, и время срабатывания от переднего или от заднего фронта. Момент срабатывания зависит от сделанных пользователем настроек в поставляемой с платой программном обеспечении «WIN_DO_Oscilloscope» (вкладка View, компонент ExternalPuskEdgeNegative).
Накопление с усреднением.
Режим накопления с усреднением включается флажком Average на вкладке View. Число накапливаемых (суммируемых) выборок соответствует Average Number (вкладка View), где Average Number – положительное целое число.
Изменение значений флага Average и строки Average Number считываются программой при нажатии кнопки Start .
Для сохранения корректности результатов при нажатии на кнопку Stop программа выполняет следующие действия:
1. Кнопка Stop окрашивается серым цветом
2. Программа продолжает накопление данных до достижения значения Average Number выборок.
3. Программа прекращает накопление данных и выводит последний результат накопления на экран.
4. Кнопка Start окрашивается черным цветом. Разрешается повторный старт.
При этом в памяти сохраняются корректные данные. Которые могут быть сохранены в файл (меню File, пункт Save Signal…).
Для экстренного останова программы (без сохранения корректности данных) необходимо выключить флаг Average и нажать кнопку Stop. В этом случае останов процесса накопления выполняется непосредственно по нажатию кнопки Stop.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |




