- •Система регистрации быстрых сигналов на базе пэвм и интеллектуального усо с dsp-процессором
- •Содержание
- •Список обозначений и сокращений
- •1 Введение
- •2 Назначение и технические характеристики стенда
- •3 Архитектура стенда ммссд
- •3.1 Структура технических средств стенда ммссд
- •3.2 Структура модуля ацп adp60pci
- •4.1 Общий алгоритм работы стенда
- •4.2 Алгоритм настройки стенда
- •4.3 Алгоритм регистрации данных
- •5 Структура по ммссд
- •5.1 Перечень по стенда ммссд
- •4 Алгоритмы работы стенда
- •5.2 Программный модуль взаимодействия эвм с dsp процессором платы hostdaq
- •5.3 Программный модуль взаимодействия dsp с эвм dspdaq
- •5.4 Программные модули настройки ацп ConfigAdc/InitAdc
- •6. Руководство оператора стенда
- •7 Руководство программиста стенда ммссд
- •7.1 Структура файлов и директорий
- •7.2 Руководство программиста программного модуля hostdaq
- •7.3 Руководство программиста программного модуля dspdaq
- •7.3.1 Структура программы dspdaq для dsp
- •7.4 Руководство программиста модулей настройки стенда ConfigAdc/dspConfigAdc
- •8. Индивидуальные задания для лабораторных работ
- •8. Требования к оформлению отчета.
- •9 Список использованных источников
- •Приложение а (Список функций модуля спо эвм)
- •Int brd_init (char *regFile);
- •Void brd_close(brd_Board board);
- •Int brd_load(brd_Board board, long node, char *fname, int argc, char *argv[])
- •Int brd_start(brd_Board board, long node);
- •Void brd_iack(brd_Board brd);
- •Приложение б (Список функций модуля спо dsp)
- •Void drv_close(drv_Handle drv);
- •Int drv_ctrl(drv_Handle drv, int cmd, void *args);
- •Int drv_read(drv_Handle drv, void **buf, int size);
- •Int drv_write(drv_Handle drv, void **buf, int size);
- •Приложение в (Таблица параметров настройки стенда)
7.3.1 Структура программы dspdaq для dsp
Пример программы dspdaq для DSP платы ADP60PCI с мезонином ADM212x40M в общем случае имеет вид, изображенный во Вставке 7.3.1.
#include <system60.h>
#include <db.h>
#include <drv.h>
#include <drvcmd.h>
#include “DspConfigADC.c”
DRV_Handle hBrd; //Дескрипторы DRV
DRV_Handle hDrv; //
int main (void)
{
long* pdata = NULL;
long* pbuf = NULL;
/*Инициализация host драйвера*/
hBrd = DRV_open(“host”, 0);
if(hBrd == NULL)
return -1;
hDrv = DRV_open(“adm212x40m”, OR_DMACONT);
if(hDrv == NULL)
{
DRV_close(hBrd);
return -1;
}
//Блок, реализующий ввод параметров настройки АЦП
if(!InitADC (hBrd, hDrv))// {
DRV_close(hBrd);
DRV_close(hDrv);
return -1;
}
и
dsp_pc_int();
async_buf[0] = (long)pdata; //Адрес первого буфер памяти
async_buf[1] = (long)(pdata + BUFSIZE); // Адрес второго буфер памяти
async_buf[2] = BUFSIZE; //Размер буферов
pbuf = pdata + 2*BUFSIZE;
//Передача буферов данных на ADM интерфейс
if(DRV_ctrl(hDrv, INGETASYNCBUF, async_buf) < 0)
return -1;
/*Блок настройки Link порта */
LinkInit(0); //reset link port
LinkSetup(1, 1, 0, 1);
k = IOP(LCOM);
IOP(LCOM) = k&~0x80000;
i = 0; k =0;
dsp_pc_int();
//Посылаем сигнал готовности
DRV_ctrl(hDrv, ADCSTART, NULL); //Запуск АЦП
DRV_ctrl(hDrv, INSTARTASYNC, NULL); //Запуск DMA-ввода в выделенные буферы
/*Здесь размещается блок заполнения буферов данными с последующей передачей на Link порт*/
free(pdata);
dsp_pc_int();
DRV_close(hDrv); //Закрытие платы
DRV_close(hBrd);
return 1;
}
Вставка 7.3.1 Общий вид программы для DSP (dspdaq)
Описание используемых функций для СПО DSP библиотеки Bardy находится в Приложении Б.
Программа dspdaq, загруженная с ЭВМ модулем hostdaq на DSP-процессор, начинает свою работу по сигналу с управляющей ЭВМ. Проведя инициализацию драйвера и завершив открытие ADM-интерфейса dspdaq запускает на выполнение модуль настройки платы АЦП на стороне DSP (dspConfigADC).
После настройки платы АЦП по сигналу управляющей ЭВМ в памяти DSP-процессора выделяется место для трех буферов данных и эти буферы заполняются информацией поступающей с ADM-интерфейса.
Далее модуль dspdaq настраивает Link-порт для последующей передачи данных и, по сигналу с управляющей ЭВМ, запускает преобразование на АЦП. Одновременно с преобразованием происходит передача данных в режиме DMA через Link-порт. После завершения преобразования необходимого объема данных программа завершает свою работу.
В результате выполнения программного модуля dspdaq, программный модуль hostdaq получает необходимый объем считанных данных с АЦП. Проверка выполнения программы может быть осуществлена путем анализа полученных данных на одноплатную ЭВМ.
7.4 Руководство программиста модулей настройки стенда ConfigAdc/dspConfigAdc
Параметры настройки АЦП содержатся в текстовом файле adc.ini.
Структура INI файла с параметрами инициализации для АЦП приведена ниже во Вставке 7.4.
Для считывания параметров настройки из файла adc.ini и их передачу в память DSP-процессора используются два программных модуля: ConfigADC и dspConfigADC.
Для интегрирования программных модулей в проект необходимо в рабочую директорию проекта ПО одноплатной ЭВМ (C:\ADI_DSP\BIN\ADC_M1\, см. 7.1) включить файлы ConfigADC.c, ConfigADC.h из C:\labs\source\. В директорию проекта ПО также требуется включить файлы dspConfigADC.c, dspConfigADC.c из той же директории. Содержимое всех необходимых файлов в директории проекта подробно описано ранее в пункте 7.1.
Ф
ункции
настройки модулей ConfigADC/dspConfigADC
выглядят следующим образом:
ConfigADC (const char *IniFileName, BRD_Board brd); Входные переменные для функций
InitADC (DRV_Handle hBrd, DRV_Handle hDrv); настройки
Входными переменными для функции ConfigADC одноименного модуля ConfigADC на одноплатной ЭВМ являются указатель на ini-файл и дескриптор платы АЦП. После получения входных данных параметры инициализации считываются функцией ConfigADC из файла adc.ini в локальную структуру данных BOARD_INI_PARAM. Указатель на считанные параметры инициализации передается на плату АЦП ADP60PCI.
Входными переменными для функции InitADC модуля dspConfigADC DSP-процессора являются дескрипторы одноплатной ЭВМ и ADM-интерфейса: hBrd и hDrv. После получения дескрипторов функция InitADC считывает в локальную структуру параметры настройки АЦП, а затем устанавливает их.
GEN= 2 ; Generator 0,1,2 (60MHz,50MHz,CPU CLOCK) // номер тактового генератора 0,1,2 //(60 MHz,50 MHz, CPU clock – 40MHz)
FDIV= 80 ; ADC divider // делитель тактовой частоты генератора для АЦП
GAIN0= 0 ; Gain (0,1,2,3 <-> 1,2,4,8) // код для коэффициента усиления 0,1,2,3 //(коэф – 1,2,4,8) канала 0
GAIN1= 0 ; Gain (0,1,2,3 <-> 1,2,4,8) // код для коэффициента усиления 0,1,2,3 //(коэф – 1,2,4,8) канала 1
MUX= 0 ; MUX 0,1,2 // номер канала мультиплексора 0,1,2 (1-й, 2-й, оба)
MUXCNT= 0 ; Channel 0,1,2,3,4,5,6,7 // число входов на одном канале 0..7
MUX0= 0 0 ; MUXMEM 0 // номера каналов в регистре мультиплексора 0
MUX1= 1 1 ; MUXMEM 1 // номера каналов в регистре мультиплексора 1
MUX2= 2 2 ; MUXMEM 2 // номера каналов в регистре мультиплексора 2
MUX3= 3 3 ; MUXMEM 3 // номера каналов в регистре мультиплексора 3
MUX4= 4 4 ; MUXMEM 4 // номера каналов в регистре мультиплексора 4
MUX5= 5 5 ; MUXMEM 5 // номера каналов в регистре мультиплексора 5
MUX6= 6 6 ; MUXMEM 6 // номера каналов в регистре мультиплексора 6
MUX7= 7 7 ; MUXMEM 7 // номера каналов в регистре мультиплексора 7
MUXMODE= 0 ; Compare multiplexor mode // режим мультиплексора компараторов //старта
PRETRIGMODE= 0 ; Pretrigger Mode //режим претриггера
TRIGSTART= 0 ; Triggered start // триггерный старт
INV0= 0 ; Inverse comparator 0 // инверсия компаратора 0
INV1= 0 ; Inverse comparator 1 // инверсия компаратора 1
STARTMODE= 0 ; ADC start mode // режим старта АЦП
STOPMODE= 0 ; Stop mode for triggered start // режим останова при триггерном старте
U_SCALE= 2.5 ; Scale 2.5 Volts // шкала преобразования в вольтах
U_OFFSET0= 0.0 ; Offset for channel 0 0.0 Volts // смещение канала 0 в вольтах
U_OFFSET1= 0.0 ; Offset for channel 1 0.0 Volts // смещение канала 1 в вольтах
U_COMP= 2.5 ; Scale 2.5 Volts // диапазон регулировки компараторов старта
U_COMP0= 2.0 ; Comparate 0 Volts // напряжение срабатывания для компаратора 0
U_COMP1= 2.0 ; Comparate 1 Volts // напряжение срабатывания для компаратора 1
Вставка 7.4 Структура ini-файла с параметрами настройки АЦП
В данном случае установлены типовые значения параметров настройки. Описание каждого параметра приведено в Приложении В.
Проверить работу модулей настройки можно лишь косвенно после включения их в проект и запуска сбора данных. В случае хорошего визуального соответствия экспериментальных данных известной форме сигнала эталонного генератора можно сделать вывод о том, что параметры настройки установлены верно. Признаками неудовлетворительной работы являются либо отсутствие изменений уровня сигнала, либо наличие характерных нелинейностей.
