Возникли еще вопросы:
1. Про учет задержки не понимаю. Что имеется в виду?
Детектор выдает результат по В входным значениям и он применяется к (B+1)-ому элементу. Эта задержка имеется в виду?
Из-за этого добавлено сравнение по модулю?
2. Основная проблема при реализации - деление на 2^K. Как Вы указали, результат должен быть дробным (floor, то есть сдвиг, все портит). Не очень представляю, как это деление можно реализовать в FPGA.
Может быть, есть другие пути?
Спасибо.
Вот часть кода, который достаточно понятно реализуется аппаратно (если B - степень двойки) - кроме вычисления diff:
Код
if mod(k-1,B)==0
avg2 = floor(avg/B);
if ( avg2<0 )
avg2 = avg2+1; % imitation of "fix" function
end
avg3 = 2^R-avg2;
diff = avg3/2^K; % floor(avg3/2^K) is not work!
acc = acc + diff;
if(acc > max_gain)
acc = max_gain;
end
if (acc < min_gain);
acc = min_gain;
end
result = acc;
end
Меня не покидает ощущение, что эти вопросы должны быть где-то подробно описаны.
Но поиски дают только общие схемы (аналогичные приведённым в книге Незами).
Никакой конкретики. Никаких примеров выбора коэффициентов.
Никакого учета запаздывания детектора

Посоветуйте, пожалуйста, источники.
Сообщение отредактировал vea - Jan 9 2014, 13:10