Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


L-793M Оцифровка сигнала

Вы не вошли.

 Поиск | Регистрация | Вход 

Ярослав
15.02.2010 13:52:48
#1

Гость

L-793M Оцифровка сигнала

Плата 793 с установленным ЦАПом. Выдаем сигнал (пила) с ЦАПа и заводим его на АЦП (с частотой 50 кГц)
Длительность пилы на ЦАП: отсчетов 4096, частота ЦАП 50кГц -> время 81,9 мсек
На приеме АЦП с частотой 50 кГц, тоже показывает длительность 81,9 мсек, вроде все ОК,
Но подключив осцилограф мы увидили что длительнось зуба составляет 49,2 мсек, непонятно в чем проблема

Slot parameters
Base - C200
BaseL - 0080
Mem - FC020000
MemL - 00010000
Type - 14
DSPType - 2185
Irq - 3

ReadPlataDescr status 0
LoadBios status 0

Serial Num. 3R805016
Board Name L783
Revision C
DSP Type 2185
Quartz 20000000
PlataTest status 0
Allocated memory size(word) : 1048576
Buffer size(ADC): 131072
Pages: 128
Rate: 50


Нужны еще какие-нибудь дополнительные данные ?

15.02.2010 14:15:17
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

А пила-то вся вывелась? В смысле амплитуды... нужен весь код инициализации АЦП и ЦАП...

Ярослав
15.02.2010 15:00:10
#3

Гость

Re: L-793M Оцифровка сигнала

Да пилу всю вижу

// const
  FreqADC = 50000;   // Hz
  FreqDAC = 50000;   // Hz

  ADCChanels = 1;
  ADCRate  = ADCChanels *FreqADC;

  DACChanels = 1;
  DACRate  = DACChanels * FreqDAC;

  GenCount = 2048*2;
  sampcnt = GenCount;
//  собчтвенно код

     tm := 1024*1024;  // мы захотели 1M отсчетов
     pLDev.RequestBufferStream(tm,L_STREAM_ADC);
     Memo1.Lines.Add(//'Allocated memory size(word) : //'+IntToStr(tm));
     ap.t1.s_Type := L_ADC_PARAM;
     ap.t1.AutoInit := 1;
     ap.t1.dRate := ADCRAte /1000 ;
     ap.t1.dKadr := 0.0;
     ap.t1.dScale := 0;
     ap.t1.SynchroType := 3;
     ap.t1.SynchroSensitivity := 0;
     ap.t1.SynchroMode := 0;
     ap.t1.AdChannel := 0;
     ap.t1.AdPorog := 0;
     ap.t1.NCh := ADCChanels;
     ap.t1.Chn[0] := $20;
     ap.t1.Chn[1] := $21;
     ap.t1.Chn[2] := $00;
     ap.t1.Chn[3] := $00;

     ap.t1.FIFO := FIFO;
     ap.t1.IrqStep := IrqStep;
     ap.t1.Pages := pages;
     ap.t1.IrqEna := 1;
     ap.t1.AdcEna := 1;
     pLDev.FillDAQparameters(ap.t1);
     pLDev.SetParametersStream(ap.t1, tm, data, sync,L_STREAM_ADC);
     startfrom:=sync;

////////////////////////////////////////////////////////////////////////////////
   dacPar.t1.s_Type    := L_DAC_PARAM;
   dacPar.t1.AutoInit  := 1;
   dacPar.t1.dRate     := DACRate /1000;       // 140 max
   dacPar.t1.FIFO      := 2048; // 512
   dacPar.t1.IrqStep   := 2048; // 512
   dacPar.t1.Pages     := 2;
   dacPar.t1.IrqEna    := 1;
   dacPar.t1.DacEna    := 1;
   dacPar.t1.DacNumber := 0;
   pLDev.FillDAQparameters(dacPar.t1);

   db:=512000;
   data1:=nil;
   sync1:=nil;
   pldev.RequestBufferStream(db, L_STREAM_DAC);
   pldev.SetParametersStream(dacPar.t1, db, data1, sync1,L_STREAM_DAC);

   Nc   := 4096;
   minV := trunc(2047*0.5);
   maxV := trunc(2047*0.99);

   for i:=0 to 4095 do data1[i]:=0;

   for i:=0 to 4095 do begin
     DAC1[i]:=         Trunc( minV + (maxV-minV)/(Nc)*(i mod (Nc)) );
   end;

   i:=0;
   while i<4095 do begin
     data1[i]:=DAC1[i] or $0000;
     inc(i);
   end;

     Memo1.Lines.Add(//'Buffer size(ADC): //'+IntToStr(tm div ap.t1.NCh));
     Memo1.Lines.Add(//'Pages: //'+IntToStr(ap.t1.Pages));
     Memo1.Lines.Add(//'Rate: //'+FloatToStr(ap.t1.dRate));
     Timer1.Enabled:=True;
     pLDev.InitStartLDevice;
     pLDev.StartLDevice;

15.02.2010 16:33:52
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

А тип данных какой у массива с данными цапа. И что будет если FIFO и IrqStep по 512 положить?

Ярослав
16.02.2010 05:26:30
#5

Гость

Re: L-793M Оцифровка сигнала

Массивы все из примера, тип данных SHORT.
Изменил FIFO и IrqStep на 512:
1) Если оставить длину массива данных для ЦАПа 4095, то выводится не весь массив а только четверть, за время ~20 мсек. (1/4 от 81 мсек)
2) Если изменить длину массива для ЦАПа на 1024 - то длинна пилы становиться ~12 мсек.

16.02.2010 10:06:06
#6

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

Тогда все понятно. Посмотрите пример L7XX.OSC и обратите внимени на тип данных при разных режимах вывода на ЦАП. Если из внутреннего буфера то short, а если потоковый ULONG. У Вас похоже вывод потоковый, а данные short и пила не очень удачный тип сигнала чтобы заметить ошибку....

Ярослав
16.02.2010 10:34:25
#7

Гость

Re: L-793M Оцифровка сигнала

Заменил SHORT на ULONG - изменений нет.
type
    WA = array [0..1048576] of SHORT;
    PWA = ^WA;
    WA2 = array [0..1048576] of ULONG;
    PWA2 = ^WA2;
var
  data:PWA; // для АЦП
  data1:PWA2; // для ЦАП

16.02.2010 13:25:22
#8

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

Попробуйте вариант с 512 фифо и Pages =8 для массива в 4096 отсчетов. Данные ULONG

Ярослав
18.02.2010 07:36:01
#9

Гость

Re: L-793M Оцифровка сигнала

Попробовал
длинна пилы на осцилографе 48,79 мсек; по расчетам 1/50000*4096=81 мсек

18.02.2010 10:25:24
#10

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

А счетчик ЦАП sync1 бегает как? Просто из внутреннего буфера у Вас выводится с нормальным временем 20мкс как написали выше...

Ярослав
19.02.2010 04:56:20
#11

Гость

Re: L-793M Оцифровка сигнала

Смотрю значение sync1 раз 50 мсек по таймеру:
sync1^=512
sync1^=512
sync1^=512
sync1^=512
sync1^=1024
sync1^=1024
sync1^=1024
sync1^=1024
sync1^=1536
sync1^=1536
sync1^=1536
sync1^=1536
sync1^=2048
sync1^=2048
sync1^=2048
sync1^=2560
sync1^=2560
sync1^=2560
sync1^=2560
sync1^=3072
sync1^=3072
sync1^=3072
sync1^=3072
sync1^=3584
sync1^=3584
sync1^=3584
sync1^=3584
sync1^=4096
sync1^=4096
sync1^=4096
sync1^=4096
sync1^=512
sync1^=512
sync1^=512
пробегают все значения

19.02.2010 10:18:44
#12

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

осталось проверить что часть пилы на второй канал ЦАП не попадает....

Ярослав
24.02.2010 14:24:30
#13

Гость

Re: L-793M Оцифровка сигнала

Добавил в сигнал пилы, контрольные значения:
в начале выброс и в конце:
   DAC1[4000]:= 500;
   DAC1[10]:= 500;
Эти выбросы вниз хорошо видны на осцилографе: т.е. выводится вся пила и на первый ЦАП.
В чем еще может быть проблема?

24.02.2010 16:26:18
#14

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

а осциллографом на втором цапе ничего не видно?

Ярослав
25.02.2010 10:12:47
#15

Гость

Re: L-793M Оцифровка сигнала

нет, ничего нету.

25.02.2010 11:33:22
#16

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

Тогда не знаю. Тактовка правильная и все отсчеты выводяться, должно и время быть правильное...

25.02.2010 12:11:10
#17

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: L-793M Оцифровка сигнала

Если аналоговый осциллограф, то может, он по времени не откалиброван? Ведь, и такое бывает...

25.02.2010 23:51:11
#18

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: L-793M Оцифровка сигнала

Если осциллограф с полосой более 50 МГц, то наверняка можно рассмотреть также короткие (десятки нс) переходные процессы (гличи), сопровождающие смену значения отсчётов данных, таким образом можно фактически замерить период вывода отсчётов. Кроме того, о правильности вывода данных в определенный момент времени можно судить по осциллографу - по наблюдаемому мгновенному значению напряжения ЦАП. Таким образом, ведь можно разобраться, что в сигнале ЦАП теряется, задав  выводимый сигнал так, чтобы удобно было осциллографом наблюдать по частям длительности и абсолютные напряжения его участков...

Ярослав
27.02.2010 05:52:11
#19

Гость

Re: L-793M Оцифровка сигнала

Осцилограф цифровой. И на осцилографе пила короче (49,2 мсек), чем та которая программируется (81,9 мсек) - т.е. АЦП выводит быстрее чем надо.
Что дальше делаем?

27.02.2010 07:53:30
#20

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L-793M Оцифровка сигнала

сделайте контрольный выброс из N точек в пиле и посмотрите его длительность... Ну или если осциллограф позволяет до длительносить ступеньки пилы посмотрите...