Сравнение реализации цифровой фильтрации на FPGA и DSP

Цифровой фильтр на FPGA1. Быстродействие.                        
  Для работы в реальном масштабе времени, DSP-процессор должен быть рассчитан на выполнение всех шагов в программе фильтрации в пределах промежутка времени, соответствующего одному такту дискретизации, то есть 1/fs. Высокопроизводительный универсальный DSP-процессор с фиксированной точкой типа ADSP-2189M, обладающий быстродействием 75MIPS, способен выполнить операцию умножения с накоплением при реализации одного каскада фильтра за 13,3 нс.

DSP-процессор ADSP-2189M затрачивает N+5 инструкций при реализации фильтра с количеством каскадов N. Для 100-каскадного фильтра полное время вычисления составляет приблизительно 1,4 мкс. Это соответствует максималь-нo возможной частоте дискретизации 714 кГц, ограничивая, таким образом, ширину полосы частот обрабатываемого сигнала несколькими сотнями килогерц [1].
С другой стороны, при реализии того же фильтра на  FPGA, возможно сокращение времени
вычисления для  N каскадов за счет распараллеливания выполнения операций. Коэффициент
распараллеливания (M) будет определяться количеством встроенных в FPGA перемножите-лей.
Так, например, для FPGA “Spartan3E”  в зависимости от типа кристалла, сокращение времени
составит  от 0 до 800% . Еще большей эффективности можно достичь при использовании FPGA “VirtexXX”,  ориентированных на цифровую обработку сигналов. Величина сокраще-ния  времени при этом будет составлять до 8000%.

  1. Программирование.

   Алгоритм DSP-фильтрации представляет собой блок:
1. Получение отсчета от АЦП (обычно по прерыванию)
2. Помещение отсчета в циклический буфер входного сигнала
3. Обновление указателя циклического буфера входного сигнала
4. Обнуление аккумулятора
5. Осуществление фильтрации (цикл по всем коэффициентам)
6. Выборка коэффициента из циклического буфера коэффициентов
7. Обновление указателя циклического буфера коэффициентов
8. Выборка отсчета из циклического буфера входного сигнала
9. Обновление указателя циклического буфера входного сигнала
10. Умножение коэффициента на отсчет
11. Добавление нового слагаемого к промежуточному результату
12. Выдача отфильтрованного отсчета на ЦАП
Для DSP-процессоров компании Analog Devices все операции, выполняемые за один цикл фильтра, производятся за один командный цикл процессора, благодаря чему существенно увеличивается эффективность вычислений. Данное преимущество известно как реализация циклов без дополнительных операций [2] и представлено в программном обеспечении как
convolution - функция. Проблема заключается в почти полном отсутствии оптимизации в
трансляторах с ЯВУ и необходимости программировать на ассемблере, что в свою очередь
требует от программиста знание всех тонкостей архитектуры DSP.  
ADSP-21xx Пример кода:
 CNTR = N-1;
 DO convolution UNTIL CE;
convolution: MR = MR + MX0 * MY0(SS), MX0 = DM(I0,M1), MY0 = PM(I4,M5);

Для реализации систем на FPGA  программирование заменяется на построение структуры,
реализующей выполнение алгоритма. Эффективность же работы структуры будет полностью
определяться заложенными в нее принципами и искусством схемотехника(ов), реализующим эти принципы.
FPGA Пример структуры - аналога DSP функции convolution:
Структура представляет устройство управления адресацией  памяти коэффициентов (addrc) и отсчетов (addrtapx) цифрового фильтра с порядком N = taps. Для 4-х кратного ускорения опе-раций (M = 4), память коэффциентов расщеплена на 4-е банка длины N/4, а память отсчетов – на 4-е банка длины N. Одновременно обрабатываются 4-е отсчета цифрового фильтра за один цикл.

--временной интервал активности операции convolution
process(clk,tap,addrc,taps)
begin
if tap = '1' then
f_c <= false;
elsif clk'event and clk = '0' then
if (addrc < (taps – (M - 1))) then
f_c <= true;
else
f_c <= false;
end if;
end if;
end process;
--адрес группы коэффиентов
process(clk,tap,taps,waddrtap,addrc,f_c)
begin
if tap = '1' then
addrc <= "000000000";--taps coef begin
elsif clk'event and clk = '0' then
if ((addrc <= taps) and (f_c)) then
addrc <= addrcc + M;
end if;
end if;
taddrc <= addrc;
end process;
--адрес первого в группе отсчета
process(clk,tap,taps,waddrtap,addrtapa,f_c)
begin
if tap = '1' then
addrtapa <= waddrtap;--tap's begin
elsif clk'event and clk = '0' then
if (f_c) then
if addrtapa > (M - 1) then
addrtapa <= addrtapa - M;
else
addrtapa <= taps + addrtapa – (M - 1);
end if;
end if;
end if;
taddrtapa <= addrtapa;
end process;
--адрес второго в группе отсчета
process(clk,tap,taps,waddrtap,addrtapb,f_c)
begin
if tap = '1' then
if waddrtap >= 1 then
addrtapb <= waddrtap - 1;
else
addrtapb <= taps;
end if;
elsif clk'event and clk = '0' then
if (f_c) then
if addrtapb > (M - 1) then
addrtapb <= addrtapb - M;
else
addrtapb <= taps + addrtapb – (M - 1);
end if;
end if;
end if;
taddrtapb <= addrtapb;
end process;
--адрес третьего в группе отсчета
process(clk,tap,taps,waddrtap,addrtapc,f_c)
begin
if tap = '1' then
if waddrtap >= 2 then
addrtapc <= waddrtap - 2;
else
addrtapc <= taps - 1 + waddrtap;
end if;
elsif clk'event and clk = '0' then
if (f_c) then
if addrtapc > (M - 1) then
addrtapc <= addrtapc - M;
else
addrtapc <= taps + addrtapc – (M - 1);
end if;
end if;
end if;
taddrtapc <= addrtapc;
end process;
--адрес четвертого в группе отсчета
process(clk,tap,taps,waddrtap,addrtapd,f_c)
begin
if tap = '1' then
if waddrtap >= 3 then
addrtapd <= waddrtap - 3;
else
addrtapd <= taps - 2 + waddrtap;
end if;
elsif clk'event and clk = '0' then
if (f_c) then
if addrtapd > (M - 1) then
addrtapd <= addrtapd - M;
else
addrtapd <= taps + addrtapd – (M - 1);
end if;
end if;
end if;
taddrtapd <= addrtapd;
end process;

  1. Оперативная память(ОП).

Структурирование ОП в DSP не приводит к ускорению выполнения фильтрации.
FPGA структурированная ОП, наряду с увеличением числа перемножителей, как
видно из примера, приводит к существенному ускорению выполнения операции
convolution. Наибольшим быстродействием будут обладать фильтры, построенные
на FPGA семейства Virtex-5, имеющие 192 перемножителя и достаточный для их структурного обеспечения объем ОП [3].    

СПИСОК ЛИТЕРАТУРЫ
1. Steven W. Smith, The Scientist and Engineer’s Guide to Digital Signal
Processing, Second Edition, 1999, California Technical Publishing,
P.O. Box 502407, San Diego, CA 92150. Also available for free download at:
http://www.dspguide.com or http://www.analog.com
2. Digital Signal Processing Applications Using the ADSP-2100
Family, Vol. 1 and Vol. 2, Analog Devices, Free Download at:
http://www.analog.com
3.DS100 (v1.1) May 12, 2006 Advance Product Specification http://www.xilinx.com  

Автор Карпухин Б.В.

   К данной статье нет комментариев
* Заполните все поля
* Тема

* Ваше имя

* Ваш email: (нигде не публикуется)

*Новость (реплика)

Введите код подтверждения с картинки (проверка от автороботов):

 

email при указании не будет опубликован. Адреса с http:// преобразуются в ссылки автоматически. Теги запрещены.
Перейти и растаять в своей любимой социалке