Научная статья на тему 'Системы обработки сигналов на базе ПЛИС и цифровых сигнальных процессоров'

Системы обработки сигналов на базе ПЛИС и цифровых сигнальных процессоров Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1764
320
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЦИФРОВАЯ ОБРАБОТКА СИГНАЛОВ (ЦОС) / ЦИФРОВОЙ ФИЛЬТР (ЦФ) / ПРОГРАММИРУЕМЫЕ ЛОГИЧЕСКИЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ (ПЛИС) / ЦИФРОВЫЕ СИГНАЛЬНЫЕ ПРОЦЕССОРЫ (ЦСП) / БИХ-ФИЛЬТР / DIGITAL SIGNAL PROCESSING (DSP) / FIELD-PROGRAMMABLE GATE ARRAY (FPGA) / DIGITAL SIGNAL PROCESSORS (DSP) / IIR FILTER

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Галанина Наталия Андреевна, Охоткин Григорий Петрович, Иванова Надежда Николаевна, Алексеев Александр Георгиевич

Методы цифровой обработки сигналов, в частности цифровая фильтрация, находят применение во многих радиоэлектронных устройствах. В статье предложены наиболее перспективные подходы к реализации фильтров на базе ПЛИС и сигнальных процессоров, обеспечивающие разработчику возможность маневра при создании новых систем обработки. В качестве тестового примера выбран полосовой фильтр Чебышева 2-го рода. Проектирование ЦФ проводилось в программном пакете GNU Octave. Последующая реализация на ПЛИС осуществлялась с использованием программного пакета Quartus и системы моделирования цифровых схем ModelSim; в случае синтеза ЦФ на ЦСП в среде программирования сигнальных процессоров компании Analog Devices VisualDSP++.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Галанина Наталия Андреевна, Охоткин Григорий Петрович, Иванова Надежда Николаевна, Алексеев Александр Георгиевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE SIGNAL PROCESSING SYSTEMS BASED ON FPGA AND DIGITAL SIGNAL PROCESSORS

Methods of digital signal processing, in particular digital filtering are used in many electronic devices. The article offers the most promising approaches to the implementation of FPGA-based and DSP-based filters, providing the developer with an opportunity to maneuver when creating new signal processing systems. The Chebyshev bandpass filter, type 2 is selected as a test example. Filter design was carried out in software package GNU Octave. Subsequent implementation on FPGA was conducted using Quartus software package and digital circuits modelling system ModelSim; in the case of synthesis of the filter on the DSP in VisualDSP++ IDE from Analog Devices.

Текст научной работы на тему «Системы обработки сигналов на базе ПЛИС и цифровых сигнальных процессоров»

УДК 621.391.037.37:004.31 ББК З811.3-043

НА. ГАЛАНИНА, Г.П. ОХОТКИН, Н.Н. ИВАНОВА, А.Г. АЛЕКСЕЕВ

СИСТЕМЫ ОБРАБОТКИ СИГНАЛОВ НА БАЗЕ ПЛИС И ЦИФРОВЫХ СИГНАЛЬНЫХ ПРОЦЕССОРОВ*

Ключевые слова: цифровая обработка сигналов (ЦОС), цифровой фильтр (ЦФ), программируемые логические интегральные схемы (ПЛИС), цифровые сигнальные процессоры (ЦСП), БИХ-фильтр.

Методы цифровой обработки сигналов, в частности цифровая фильтрация, находят применение во многих радиоэлектронных устройствах. В статье предложены наиболее перспективные подходы к реализации фильтров на базе ПЛИС и сигнальных процессоров, обеспечивающие разработчику возможность маневра при создании новых систем обработки. В качестве тестового примера выбран полосовой фильтр Чебышева 2-го рода. Проектирование ЦФ проводилось в программном пакете GNU Octave. Последующая реализация на ПЛИС осуществлялась с использованием программного пакета Quartus и системы моделирования цифровых схем ModelSim; в случае синтеза ЦФ на ЦСП - в среде программирования сигнальных процессоров компании Analog Devices VisualDSP++.

Оценка эффективности применения ПЛИС и ЦСП для задач ЦОС представляет интерес для разработчиков высокопроизводительных устройств вычислительной техники как в теоретическом, так и практическом аспекте.

При рассмотрении вопросов разработки систем обработки сигналов, в частности связанных с цифровой фильтрацией, следует отметить, что методы расчета ЦФ и программные инструменты в настоящее время весьма разнообразны. Поскольку существующие математические пакеты предоставляют большие возможности для моделирования и анализа систем ЦОС, естественно было произвести ориентацию на них. Примером интеграции с готовым математическим пакетом является связка GNU Octave с VisualDSP и Quartus Prime Lite. Интерес представляют реализация устройств цифровой фильтрации на базе ПЛИС и ЦСП, сравнительный анализ полученных результатов и дальнейшая выработка практических рекомендаций.

Цифровые фильтры по принципу выполнения фильтрации могут быть разделены на два класса - рекурсивные (БИХ-фильтры) и нерекурсивные (КИХ-фильтры) [4]. БИХ-фильтры являются наиболее эффективными с точки зрения реализации. Известно, что разностное уравнение БИХ-фильтра имеет вид

M N

y(n) = X b ' x(n - i) - X ai ' y(n - i), (1)

i=0 i=1

где x(n - i) и y(n - i) - значение входного и выходного сигнала в момент времени n - i, соответственно; M(N) - порядок фильтра.

В соответствии с уравнением (1) структурную схему БПФ можно реализовать как прямую реализацию фильтра типа 1 (рис. 1).

В дискретных системах соотношение между выходом и входом не зависит от порядка каскадного соединения блоков, поэтому можно вначале реали-

* Исследование выполнено при финансовой поддержке РФФИ и Кабинета министров Чувашской Республики в рамках научного проекта № 17-47-210790 р_а.

зовать блоки, соответствующие правой части схемы, а затем - левой (рис. 2). Такой вариант называют прямой реализацией типа 2.

г-1

г-1

Е Л

Л

г-1

г-1

г 1 г 1

т

Рис. 1. Прямая реализация БИХ-фильтра типа 1

г-1

г-1

Е Л

<1—V л

г-1

г-1

1 1

г 1 г 1

Рис. 2. Прямая реализация БИХ-фильтра типа 2

Объединив линии задержки левой и правой частей, получим каноническую форму БИХ-фильтра (рис. 3).

Рис. 3. Каноническая реализация БИХ-фильтра

В качестве тестового примера выбрана реализация полосового фильтра Чебышева 2-го рода. Параметры фильтра:

- частота дискретизации FS = 20 КГц;

- полоса частот пропускания FP1 = 7 КГц, FP2 = 7,2 КГц;

- уровень пульсаций в полосе непропускания RS = 5 дБ;

- уровень пульсаций в полосе пропускания RP = 0,1 дБ.

Дополнительно при проектировании ЦФ требуется учитывать эффекты

квантования, связанные с ограниченной величиной регистров ПЛИС, содержащих коэффициенты фильтра и результаты вычислений.

Проектирование фильтров в GNU Octave. GNU Octave - свободная система для математических вычислений, использующая совместимый с MATLAB язык высокого уровня. Она является альтернативой коммерческому пакету MATLAB и доступна для реализации для ОС Windows, MacOS, Linux и BSD [7].

Для проектирования фильтров дополнительно понадобятся пакеты:

- signal (пакет для цифровой обработки сигналов, включая фильтрацию);

- control (пакет для проектирования систем автоматического управления; используется пакетом signal).

Загруженные пакеты достаточно поместить в рабочую директорию и выполнить команды установки пакетов:

>> pkg install control-3.0.0.tar.gz

>> pkg install signal-1.3.2.tar.gz

Данную операцию достаточно выполнить один раз для каждой установленной версии. А вот загрузку пакетов перед их использованием придется делать в каждом сеансе работы. Для этого необходимо выполнить команду:

>> pkg load signal

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

>> addpath(pwd)

Сначала вводятся исходные данные для проектирования. Частоты полосы пропускания и непропускания необходимо нормализовать линейным преобразованием к диапазону [0, '], где ' эквивалентна половине частоты дискретизации (максимальная частота в спектре входного сигнала):

SR=20000; # Частота дискретизации

Rp=0.1; # Коэффициент затухания в полосе пропускания

Rs=5; # Коэффициент затухания в полосе непропускания

# Нормализованные частоты пропускания

Wp=[7000/(SR/2) 7200/(SR/2)];

# Нормализованные частоты непропускания

Ws=[6900/(SR/2) 7300/(SR/2)];

После этого определяется порядок фильтра и вычисляются коэффициенты передаточной функции (разностного уравнения):

[n,Ws]=cheb2ord(Wp,Ws,Rp,Rs);

[b,a]=cheby2(n, Rs, Ws);

Для проектирования фильтра Чебышева 2-го рода необходимо воспользоваться функциями cheb2ord и cheby2. Полученные коэффициенты в дальнейшем будут использованы при реализации фильтра на DSP и ПЛИС.

>> a a =

1.00000 3.47544 6.68441 7.71066 5.91450 2.71818 0.69059

>> b b =

1.0813e-001 2.6423e-001 2.6813e-001 4.8021e-017 -2.6813e-001 -2.6423e-001 -1.0813e-001

Построим АЧХ и ФЧХ полученного фильтра:

[H,w]=freqz(b,a); # Получение частотных характеристик w1=w/pi*SR/2; # Перевод частоты в Гц subplot (2, 1, 1);

plot(w1,abs(H)); # Построение АЧХ

title('Magnitude response'); # Заголовок подграфика xlabel('Frequency (Hz)'); # Метка по оси Х ylabel('Amplitude'); # Метка по оси Y subplot (2, 1, 2)

plot(w1,unwrap(angle(H))); # Построение ФЧХ title('Phase response'); # Заголовок подграфика xlabel('Frequency (Hz)'); # Метка по оси Х ylabel('Phase'); # Метка по оси Х

Для получения частотных характеристик ЦФ достаточно воспользоваться функцией freqz. Для построения АЧХ используются модули комплексных чисел, а для ФЧХ - угол. Функция unwrap используется для приведения угла в диапазон от [-л, л]. Для большей наглядности приведем частоту в Гц. Полученный результат представлен на рис. 4. Можно отметить, что в полосе пропускания АЧХ имеет довольно «гладкий» вид, чего нельзя сказать о ФЧХ. Эта черта - одна из особенностей БИХ-фильтров.

Magnitude response

Phase response

Рис. 4. Частотные характеристики фильтра

Чтобы убедиться, что полученный фильтр удовлетворяет заданным характеристикам, построим ЛАЧХ (рис. 5):

plot(w1,mag2db(abs(H))); # Построение ЛАЧХ xlabel('Frequency (Hz)'); # Метка по оси Х ylabel('Attenuation (dB)'); # Метка по оси Y grid; # Вывод сетки

title('Magnitude Response'); # Вывод заголовка графика

Magnitude Response

6600 6BQ0 7000 7200 7400 7600 7800

Frequency (Hz)

Рис. 5. ЛАЧХ

На графике ЛАЧХ (рис. 5) видно, что уровни пульсаций в полосе пропускания и непропускания соответствуют заданным.

Проведем проверку ЦФ на стабильность, для чего отобразим на графике нули и полюсы передаточной функции на комплексной плоскости с помощью функции zplane (рис. 6):

zplane(b,a);

title('Zeroes & Poles'); # Вывод заголовка графика

Zeroes & Poles

-1 -0.5 0 0.5 1

Рис. 6. Нули и полюсы передаточной функции

На рис. 6 видно, что все нули и полюсы находятся внутри единичной окружности: это означает, что полученный фильтр стабилен.

Далее построим импульсную и переходную характеристики системы. Для этого надо сформировать входные сигналы, представляющие собой единичный импульс и ступенчатую функцию. Для этих целей можно воспользоваться функциями eye и ones. Реакцию системы на входной сигнал получим при помощи функции filter:

# Формируем вектор, у которого первый отсчет - единица,

# а остальные 199 отсчетов - нули.

# Определяем реакцию системы на этот сигнал x=eye(1, 200);

y1=filter(b,a,x);

# Формируем вектор, у которого 200 единичных отсчетов.

# И определяем реакцию системы на этот сигнал x=ones(1, 2 00);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

y2=filter(b,a,x);

# График 4 - Импульсная и передаточная характеристика figure(4);

subplot (2, 1, 1);

stairs(y1); # Построение импульсной характеристики title('Impulse Response'); # Заголовок подграфика xlabel('Sample index'); # Метка по оси Х subplot (2, 1, 2)

stairs(y2); # Построение передаточной характеристики title('Step Response'); # Заголовок подграфика xlabel('Sample index'); # Метка по оси Х

На графике (рис. 7) видно, что импульсная характеристика фильтра носит бесконечный характер.

0.15 0,1 0.05

0

-0.05 -0.1 -0.15

0 50 100 150 200

Sample indes

Step Response

0.15

Impulse Response

I

0 50 100 150 200

Sample index

Рис. 7. Импульсная и передаточная характеристики фильтра

В завершение сформируем входной сигнал с частотами ниже полосы пропускания (5 КГц) из полосы пропускания (7,1 КГц) и выше полосы пропускания (8 КГц):

# формируем входной сигнал for i=1:2 00, x(i)=i; end f1=5000; # частота 5000 Гц si = 0.5*sin(2*pi*f1/SR*x); f2=7100; # частота 7100 Гц s2 = 0.5*sin(2*pi*f2/SR*x); f3=8000; # частота 8000 Гц s3 = 0.5*sin(2*pi*f3/SR*x); source = cat(2, s1, s2, s3); result = filter(b,a,source);

# получаем реакцию системы на входной сигнал

figure(5); subplot (2, 1, 1);

stairs(source); # построение входного сигнала title('Source (Filter input)'); # Заголовок подграфика xlabel('Sample index'); # Метка по оси Х subplot (2, 1, 2)

# построение реакции системы на входной сигнал stairs(result);

title('Result (Filter output)');# Заголовок подграфика xlabel('Sample index'); # Метка по оси Х

На рис. 8 представлен сигнал на входе и выходе фильтра. На графике отчетливо видно, что частоты из полосы непропускания подавляются.

Source (Filter input)

О 100 1100 300 400 500 600

Рис. 8. Сигнал на входе и выходе фильтра

Проектирование фильтров на базе ПЛИС с использованием системы моделирования цифровых схем MODELSIM. Одной из характерных черт современного этапа развития технологий проектирования цифровых систем является применение языков описания аппаратуры HDL (Hardware Description Language) высокого уровня, среди которых наибольшее распространение получили VHDL и Verilog [5, 8].

В настоящее время одной из наиболее распространенных систем HDL-моделирования является пакет программных средств ModelSim корпорации Model Technology [1-3].

Для реализации фильтра на ПЛИС можно воспользоваться прямой (рис. 1, 2) или канонической формой (рис. 3). Второй вариант предпочтительнее, так как в этом случае требуется меньше элементов задержки. Очень часто для реализации выбирают так называемую транспонированную каноническую форму (рис. 9).

Блоки D (см. рис. 9) представляют собой задержку в один период и реализуются при помощи синхронных операций. Остальные операции являются асинхронными. Также часто передаточную функцию фильтра преобразовывают, чтобы представить в виде последовательно соединенных звеньев второго порядка. Эту операцию можно проделать в GNU Octave при помощи функции tf2sos:

>> sos = tf2sos(b,a)

sos =

1.0813e-001 1.4450e-001 1.0813e-001 1.0000e+000 1.3075e+000 9.7405e-001

1.0000e+000 1.1072e+000 1.0000e+000 1.0000e+000 1.1055e+000 9.7136e-001

1.0000e+000 -1.3323e-015 -1.0000e+000 1.0000e+000 1.0624e+000 7.2989e-001

x(n)

Каждый ряд результирующей матрицы представляет собой коэффициенты передаточной функции звена второго порядка [b0, b1, b2, a0, a1, a2], причем ao =1.

Приведем код программы на языке описания аппаратуры Verilog, реализующей звено второго порядка. Вход, выход и коэффициенты определим как 16-битное знаковое целое число. Для произведений будем использовать 32-битные знаковые целые, а для накопленных сумм - 40-битные знаковые числа. Это позволит избежать потери точности при вычислениях. На вход модуля подается тактовый сигнал clk и сигнал сброса reset:

module SOS(clk, reset, x, y, b0, b1, b2, a1, a2); output signed [15:0] y; input clk, reset;

input signed [15 0] x;

input signed [15 0] b0

input signed [15 0] b1

input signed [15 0] b2

input signed [15 0] a1

input signed [15 0] a2

reg s igned [39:0] delay [1:0]

wire signed [31 0 b0 mul;

wire signed [31 0 b1 mul;

wire signed [31 0 b2 mul;

wire signed [31 0 a1 mul;

wire signed [31 0 a2 mul;

wire signed [39 0 sum0;

wire signed [39 0 sum1;

wire signed [39 0 sum1 temp;

wire signed [39 0 sum2;

always@(posedge clk or posedge reset) begin if (reset) begin

delay[1] <= 40'b0; delay[0] <= 40'b0; end else begin

delay[0] <= sum2; delay[1] <= sum1;

end

end

assign b0_mul = x * b0;

assign sum0 = delay[1] + b0_mul;

assign y = {sum0[39], sum0[28:14]};

assign b1_mul = x * b1; assign a1_mul = y * a1;

assign sum1_temp = b1_mul - a1_mul;

assign sum1 = sum1_temp + delay[0];

assign b2_mul = x * b2; assign a2_mul = y * a2; assign sum2 = b2_mul - a2_mul;

endmodule

Тогда реализация всего фильтра сводится к последовательному соединению трех таких модулей:

module FIR(clk, reset, filter_in, filter_out);

output signed [15:0] filter_out;

input clk, reset;

input signed [15:0] filter_in;

wire signed [15:0] y0; wire signed [15:0] y1;

SOS sos0(clk, reset, filter_in, y0, 16'd1771, 16'd2367, 16'd1771, 16'd21423, 16'd15959); SOS sos1(clk, reset, y0, y1,

16'd16384, 16'd18141, 16'd16384, 16'd18113, 16'd15915);

SOS sos2(clk, reset, y1, filter_out, 16'd16384, 16'd0, -16'd1638 4, 16'd17406, 16'd11959);

endmodule

Коэффициенты a и b необходимо перевести в формат целых чисел, умножив на степень двойки (214 = 16 384).

Тестовая программа для испытания разрабатываемого модуля выглядит следующим образом. Для начала необходимо сформировать входной сигнал в формате 16-битных целых чисел со знаком. Для этого можно взять сигнал из GNU Octave (рис. 8) и умножить его на 215 = 32 768. Далее отформатируем его для удобства импорта в ModelSim: fid = fopen('source.v', 'w'); for i=1:length(source) s = '';

if (source(i) < 0) s = '-'; endif

fprintf(fid, "source[%3d] <= %s16'd%d;\n", i-1, s,

round(abs(source(i))*32768));

endfor

fclose (fid);

В каждом новом периоде будем подавать на вход фильтра новое значение входного сигнала. По окончании отсчетов во входном сигнале (всего их 600) остановим симуляцию:

4timescale 1us/ 1us

module FIR_testbench();

reg clk; reg reset;

reg signed [15:0] filter_in; reg [10:0] sample_index; reg signed [15:0] source [0:599]; wire [15:0] filter_out;

// тестируемый модуль (Device Under Test) FIR DUT (

.clk(clk), .reset(reset), .filter_in(filter_in), .filter_out(filter_out)

);

initial begin

// инициализация входного сигнала source[ 0] <= 16'd16384; source[ 1] <= 16'd0;

// Reset the device #200;

reset = 1'b1; #400;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

reset = 1'b0; end

always #25 clk = ~clk;

always @(posedge clk) begin if (reset) begin

filter_in <= 1'h0; sample_index <= 1'h0; end else begin

sample_index <= sample_index + 1'b1; filter_in <= source[sample_index]; if (sample_index == 600) begin $stop;

end

end end

endmodule

Результаты симуляции в ModelSim представлены на рис. 10. Как видно, они аналогичны результатам симуляции в GNU Octave (рис. 8).

II ■I UVSDP . nBfai ilf - - ..... ;+| J

1

{ Air testoenchrtaJTft* sto

i ^IR testtjendiAXJT/reset sto

wl

С i /FIRtesttjenchflXTT/filter Jn III IliUii niliiiil llllllllllllllli

liilli iWfflN iwiimp liplllfil m

П-'- /FlR_testoench£HJT/filter_out -5020 wiiiihM lllilil ¡Uk JiHHiintH 11Ш.ШШШ и

1ЯШР

30625000000 P! IS_lOOODO - тамга MJ

■ <l 'J J jJ <

I n| Wave | | I FIR_testbendi.vt |

Рис. 10. Результаты симуляции в ModelSim

Проектирование фильтров на ЦСП в среде VisualDSP++. Процессоры цифровой обработки сигналов специально предназначены для реализации фильтрации и других задач из области цифровой обработки сигналов. В процессорах серии ADSP-21xx имеется специальный блок MAC [6]. Он имеет входные регистры, разрядность которых 16 бит. В результате перемножения содержимого этих регистров получается 32-битный результат, который прибавляется или вычитается из накопленной суммы разрядностью 40 бит. Эти операции оптимизированы таким образом, чтобы была возможность выполнения их за один такт вместе с чтением последующих операндов из памяти. Таким образом, ПЦОС идеально подходит для реализации фильтра в прямой форме (рис. 1, 2).

Предварительно необходимо произвести масштабирование коэффициентов a и b, а также сгенерировать входной сигнал для тестирования правильности функционирования:

fid = fopen('x.dat', 'w'); for i=1:length(source)

fprintf(fid, "%d\n", round(source(i)*32768)); endfor

fclose (fid);

В среде программирования сигнальных процессоров компании Analog Devices VisualDSP++ существует возможность проинициализировать память из текстовых файлов, поэтому используем ее для загрузки коэффициентов a и b. Полный текст программы приведен ниже:

#define n 7

#define z_in 0x101 #define z_out 0x100

. s e ct i on/pm pm_da;

.section/data datal;

.VAR a_coeff[n-1] = "a.dat"; .VAR b_coeff[n] = "b.dat";

.VAR x[n]; .VAR y[n-1];

.section/pm interrupts; /*---Interrupt vector table------*/

__reset : JUMP start; nop; nop; nop; /* 0x0000 : Reset vector*/

RTI; nop; nop ; nop; /* 0x0004 IRQ2*/

RTI; nop; nop ; nop; /* 0x0008 IRQL1*/

RTI; nop; nop ; nop; /* 0x000C IRQL0*/

RTI; nop; nop ; nop; /* 0x0010 SPORTO transmit */

RTI; nop; nop ; nop; /* 0x0014 SPORTO receive* /

RTI; nop; nop ; nop; /* 0x0018 IRQE*/

RTI; nop; nop ; nop; /* 0x001C BDMA*/

RTI; nop; nop ; nop; /* 0x0020 SPORT1 transmit */

RTI; nop; nop ; nop; /* 0x0024 SPORT1 receive* /

RTI; nop; nop ; nop; /* 0x0028 Timer*/

RTI; nop; nop ; nop; /* 0x002C Power down*/

.section/pm program;

start: I1 = x; L1 = n; M0 = 1;

I2 = y; L2 = n-1;

I3 = b_ coeff; L3 = n;

I4 = a_ coeff; L4 = n- 1;

CNTR = n;

DO zerox until CE; zerox: DM(I1, M0) = 0;

CNTR = n-1; DO zeroy until CE; zeroy: DM(I2, M0) = 0;

CNTR = 600; DO filter UNTIL CE;

AX0 = io(z_in); DM(I1, M0) = AX0;

CNTR=n;

MR = 0; MX0 = DM(I1, DO sumx UNTIL CE; sumx: MR = MR + MX0 * MY0(SS); MX0 MR = MR + MX0 * MY0(SS);

CNTR=n-1;

MX0 = DM(I2, M0); MY0 = DM(I4, DO sumy UNTIL CE; sumy: MR = MR + MX0 * MY0 (SS) ; MX0 = DM(I2, M0); MY0

M0); MY0 = DM(I3, M0);

DM(I1, M0) ; MY0 = DM(I3, M0);

M0);

DM(I4, M0) ;

MR = MR + MX0 * MY0(SS);

DM(I2, M0) = MR1;

filter: io(z_out)=MR1;

i o(z_out)=MR1;

IDLE;

Для подачи входного сигнала и получения выходного сигнала воспользуемся потоками: они позволяют настроить связь между файлом и периферийным устройством. В рамках тестирования были использованы порты ввода-вывода с адресом 0x101 (z_in) и 0x100 (z_out) для входного и выходного сигналов, соответственно, в формате "Signed Integer".

Результатом работы программы будет файл y.dat. Его можно импортировать обратно в GNU Octave и построить график:

>> y = load("y.dat");

>> stairs(y);

>> title('Result (Filter output)');

>> xlabel('Sample index');

В результате получается график сигнала на выходе фильтра (рис. 11).

Result (Filter output)

О 100 HDD ЗОО 400 5DO VHI

Sample index

Рис. 11. Выходной сигнал фильтра

Сравнительный анализ полученных реализаций цифрового фильтра.

В данной работе описан процесс проектирования цифрового БИХ-фильтра с реализацией на ПЛИС (Cyclone V) и ПЦОС (ADSP-2181). Первый этап проектирования выполнялся в программе GNU Octave v. 4.2.1, которая имеет весь необходимый для этого инструментарий.

При проектировании на ПЛИС использовались пакеты программ Quartus Prime Lite Edition v. 16.1.0 и ModelSim Intel FPGA Starter Edition v. 10.5b. Данные программные продукты также имеют весь необходимый набор инструментов для проектирования и симуляции. Для проектирования на ПЦОС использовался программный продукт Visual DSP v. 3.5.

Цифровой фильтр является типовой задачей и хорошо подходит для реализации как на ПЦОС, так и на ПЛИС.

Реализации на ПЛИС и ПЦОС используют 16-битные числа со знаком для представления входного и выходного сигналов, а также коэффициентов передаточной функции, поэтому обе реализации не отличаются по точности обработки данных. Дополнительно ПЦОС имеет специальную архитектуру, позволяющую избежать потери точности при внутренних расчетах.

Существенным отличием является частота тактового сигнала этих двух реализаций: на ПЛИС она равна частоте дискретизации, в то время как для

ПЦОС необходима тактовая частота, значение которой выше частоты дискретизации в несколько раз (зависит от порядка фильтра, обычно в 10-100 раз выше). Однако за снижение частоты тактового сигнала приходится расплачиваться задержкой сигнала на выходе фильтра, зависящей от количества элементов задержки в секциях второго порядка, умноженного на количество таких секций. Другими словами, задержка равна периоду частоты дискретизации, умноженной на порядок фильтра.

Таким образом, для низких частот можно выбирать исполнение фильтра на ПЦОС, как более простое в реализации, а при работе с частотами от нескольких десятков МГц и выше предпочтительней использование для этих целей ПЛИС, отличительной чертой которых является возможность аппаратного ускорения вычислений в алгоритмах высокопроизводительной обработки данных.

Литература

1. Галанина Н.А. Анализ непозиционных цифровых фильтров по квазипозиционной модели // Вестник Чувашского университета. 2000. № 3-4. С. 116-121.

2. Галанина Н.А., Дмитриев Д.Д. Разработка конфигурационного файла для реализации дискретного преобразования Фурье в системе остаточных классов на ПЛИС // Вестник Чувашского университета. 2011. № 3. С. 119-125.

3. Галанина Н.А., Песошин В.А., Иванова Н.Н. Разработка устройств цифровой фильтрации и спектрального анализа с индексированием данных в системе остаточных классов // Вестник Чувашского университета. 2014. № 2. С. 93-97.

4. Фильтр с бесконечной импульсной характеристикой [Электронный ресурс]. URL: Ьйр8://га^Шре^а.о^М1к1/Фильтр_с_бесконечной_импульсной_характеристикой (дата обращения: 01.06.2017).

5. #8 -- Digital filtering on FPGA [Электронный ресурс]. URL: https://www.youtube.com/ watch?v=YqcV9SdmVOU (дата обращения: 01.06.2017).

6. ADSP-2100 Family Users' Manual. [Электронный ресурс]. URL: ftp://ftp.emt.jku.at/ PR%20Rechnergesteuerte%20Messdatenerfassung/ADSP-2181/ADSP-2100%20Family%20User% 27s%20Manual/ADSP-2100%20Family%20User%27s%20Manual.pdf (дата обращения: 01.06.2017).

7. GNU Octave Manual [Электронный ресурс]. URL: https://www.gnu.org/software/oc-tave/doc/v4.0.3/index.html#Top (дата обращения: 01.06.2017).

8. Transposed Direct-Forms [Электронный ресурс]. URL: https://ccrma.stanford.edu/~jos/ fp/Transposed_Direct_Forms.html (дата обращения: 01.06.2017).

ГАЛАНИНА НАТАЛИЯ АНДРЕЕВНА - доктор технических наук, профессор кафедры математического и аппаратного обеспечения информационных систем, Чувашский государственный университет, Россия, Чебоксары (galaninacheb@mail.ru).

ОХОТКИН ГРИГОРИЙ ПЕТРОВИЧ - доктор технических наук, профессор, декан факультета радиоэлектроники и автоматики, заведующий кафедрой автоматики и управления в технических системах, Чувашский государственный университет, Россия, Чебоксары (elius@list.ru).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

ИВАНОВА НАДЕЖДА НИКОЛАЕВНА - кандидат технических наук, доцент кафедры математического и аппаратного обеспечения информационных систем, Чувашский государственный университет, Россия, Чебоксары (naadeezdaa@rambler.ru).

АЛЕКСЕЕВ АЛЕКСАНДР ГЕОРГИЕВИЧ - старший преподаватель кафедры вычислительной техники, Чувашский государственный университет, Россия, Чебоксары (alexander_alexeyev@hotmail.com).

N. GALANINA, G. OKHOTKIN, N. IVANOVA, A. ALEKSEEV THE SIGNAL PROCESSING SYSTEMS BASED ON FPGA AND DIGITAL SIGNAL PROCESSORS

Key words: digital signal processing (DSP), field-programmable gate array (FPGA), digital signal processors (DSP), IIR filter.

Methods of digital signal processing, in particular digital filtering are used in many electronic devices. The article offers the most promising approaches to the implementation of FPGA-based and DSP-based filters, providing the developer with an opportunity to maneuver when creating new signal processing systems. The Chebyshev bandpass filter, type 2 is selected as a test example. Filter design was carried out in software package GNU Octave. Subsequent implementation on FPGA was conducted using Quartus software package and digital circuits modelling system ModelSim; in the case of synthesis of the filter on the DSP - in VisualDSP++ IDE from Analog Devices.

References

1. Galanina N.A. Analiz nepozitsionnykh tsifrovykh fil'trov po kvazipozitsionnoi modeli [Non-positional digital filters analysis on quasipositive model]. Vestnik Chuvashskogo universiteta, 2000, no. 3-4, pp. 116-121.

2. Galanina N.A., Dmitriev D.D. Razrabotka konfiguratsionnogo faila dlya realizatsii diskret-nogo preobrazovaniya Fur'e v sisteme ostatochnykh klassov na PLIS [Development of a configuration file for the Implementation Discrete Fourier Transform in Residue Number System on FPGA]. Vestnik Chuvashskogo universiteta, 2011, no. 3, pp. 119-125.

3. Galanina N.A., Pesoshin V.A., Ivanova N.N. Razrabotka ustroistv tsifrovoifil'tratsii i spek-tral'nogo analiza s indeksirovaniem dannykh v sisteme ostatochnykh klassov [Development of devices of Digital Filtration and Spectral Analysis with the index of the data in Residue Number System]. Vestnik Chuvashskogo universiteta, 2014, no. 2, pp. 93-97.

4. Fil'tr s beskonechnoi impul'snoi kharakteristikoi [Infinite Impulse Response Filter]. Available at: https://ru.wikipedia.org/wiki/Фильтр_с_бесконечной_импульсной_характеристикой (дата обращения: 01.06.2017).

5. #8 -- Digital filtering on FPGA. Available at: https://www.youtube.com/watch?v=Yqc-V9SdmVOU (Accessed 1 June 2017).

6. ADSP-2100 Family Users' Manual. Available at: ftp://ftp.emt.jku.at/ PR%20Rechnergesteu-erte%20Messdatenerfassung/ADSP-2181/ADSP-2100%20Family %20User% 27s%20Manual/ADSP-2100%20Family%20User%27s%20Manual.pdf (Accessed 1 June 2017).

7. GNU Octave Manual Available at: https://www.gnu.org/software/octave/doc/v4.0.3/in-dex.html#Top (Accessed 1 June 2017).

8. Transposed Direct-Forms Available at: https://ccrma.stanford.edu/~jos/ fp/Transposed_Di-rect_Forms.html (Accessed 1 June 2017).

GALANINA NATALIA - Doctor of Technical Sciences, Professor, Information Systems Math and Hardware Department, Chuvash State University, Russia, Cheboksary.

OKHOTKIN GRIGORY - Doctor ofTechnical Sciences, Professor, Dean ofRadio-electronics and Automatics Faculty, Head of Department of Automation and Management in Technical Systems, Chuvash State University, Russia, Cheboksary (elius@list.ru).

IVANOVA NADEZHDA - Candidate of Technical Sciences, Assistant Professor, Information Systems Math and Hardware Department, Chuvash State University, Russia, Cheboksary (naadeezdaa@rambler.ru).

ALEKSEEV ALEKSANDER - Senior Lecturer, Department of Computer Science, Chuvash State University, Russia, Cheboksary (alexander_alexeyev@hotmail.com).

Ссылка на статью: Галанина Н.А., Охоткин Г.П., Иванова Н.Н., Алексеев А.Г. Системы обработки сигналов на базе ПЛИС и цифровых сигнальных процессоров // Вестник Чувашского университета. - 2017. - № 3. - С. 180-194.

i Надоели баннеры? Вы всегда можете отключить рекламу.