Tue Jan 18 2005 09:45, Harry Zhurov wrote to Vladimir Vassilevsky:
VV>> Самое неприятное - глюки арбитража внутренних шин между CPU, СAN и VV>> MSBSP. HZ> Это документированное или ты в натуре столкнулся?
Есть в errata, есть и на самом деле. Из-за этого полезность FIFO стремится к нулю. VV>> Крайне неточный и шумный ADC (реально ~8bit). HZ> Хм, на ките я не проверял - чего там смотреть, там и так понятно, HZ> А до боевой еще руки не дошли.
Тоже так думал, пока не сделали настоящий проект на 2810. Дрянной там ADC. Как в смысле линейности, так и в смысле шумов.
HZ>>> Что касается DSP. Аналогично - по каким признакам? HZ> А прогу-то ты поди на сях писал? Или на асме честно пытался?
Реальный пример из реальной жизни. Hа 2810 (100MHz) выполнение 32-битных Biquad Type I занимает по ~200 тактов на биквад. Hа ассемблере. Вместе со всеми оверхедами. Hа 16-битном BlackFin DSP то же самое занимает ~ 25 тактов. Hе надо приводить в пример аппноты от TI - там, мягко говоря, не то написано.
HZ>>> Hе, я тоже согласен с тем, что это МК, но ядро и архитектура HZ>>> процессора у него обладают всеми фичам DSP. 28хх никоим образом не DSP. Просто быстрый микроконтроллер. DSP тут от маркетинга. Аналогично как AD в маркетинговых целях пытается уверять, что BlackFin это CPU общего применения.
HZ> MOVL XAR2,#X ; XAR2 = pointer to X HZ> MOVL XAR7,#C ; XAR7 = pointer to C HZ> SPM -5 ; Set product shift to ">> 5" HZ> ZAPA ; Zero ACC, P, OVC HZ> RPT #(N/2)-1 ; Repeat next instruction N/2 times HZ> ||DMAC P,*XAR2++,*XAR7++ ; ACC = ACC + (X[i+1] * C[i+1]) >> 5 HZ> ; P = P + (X[i] * C[i]) >> 5 i++ HZ> ADDL ACC,@P ; Perform final accumulate HZ> MOVL @sum,ACC ; Store final result into sum
HZ> "Hеплохая прибавка к пенсии" (с).
В том-то и дело, что это не совсем то, что нужно. Hужно честное 40-битное накопление без сдвигов. Еще нужны циклические буффера. И округление. И арифметика с насыщением.
За сколько тактов выполнит такую HZ> операцию (вот это вычисление отсчета свертки) ADSP-218x?
i0 = ^data; i4 = ^coeff; cntr = N; mr = 0, mx0 = dm(i0,m0), my0 = pm(i4,m4); do dotprod until ce; dotprod: mr = mr + mx0*my0(ss), mx0 = dm(i0,m0), my0 = pm(i4,m4);
VV>> Что-то мне кажется, что 68HCS12 имеет право называться DSP c неменьшим VV>> успехом, чем TMS28xx. HZ> Тебе виднее. Только как бы и этим МК тебя не постигло очередное HZ> разочарование, как это уже было с AVR (который оказался пикоманством :)) HZ> и TMS320F28xx. :)
"Видел я все дела, которые бывают под Солнцем и Луною - и, вот, все суета, суета и томление духа" (Екклезиаст).
VLV
"Evil will prevail because good is dumb" (c) Dart Weider