Проектирование КИХ-фильтров в системе визуально-имитационного моделирования Matlab/Simulink с использованием Altera DSP Builder
Рассмотрим вариант проектирования КИХ-фильтра с помощью транспонированной формы, которую можно считать разновидностью параллельного фильтра.
Уравнение фильтрации запишем в следующем виде: y = C0x0+C1x1++C2x2+C3x3. Предположим, что коэффициенты фильтра известны: C0 = –2, C1 = –1, C2 = 7 и C3 = 6. На рис. 1 показана транспонированная реализация дискретного фильтра (direct transposed form II) на четыре отвода. Транспонированная схема позволяет эффективно распараллелить вычисления и поэтому применяется наиболее часто. Например, в САПР ПЛИС Xilinx ISE 14.4 функция FIR Compiler v6.3, входящая в состав генератора параметризированных ядер XLogiCORE IP [4], поддерживает такие структуры фильтров (рис. 2). Они получили название Transpose Multiply-Accumulate architecture (транспонированная структура, основанная на операциях умножения и накопления). В работе [4] рассматривается проектирование односкоростного систолического КИХ-фильтра с конвейеризацией (прямая форма).
При реализации фильтра в транспонированной форме можно одновременно реализовать все операции умножения, но для получения результата фильтрации необходимо дождаться окончания выполнения всех операций сложения. Такие фильтры предполагают использование аппаратных умножителей, входящих в состав ЦОС-блоков ПЛИС.
Мегафункция fir_compiler_v13_1 САПР ПЛИС Altera Quartus II поддерживает структуры фильтров на последовательной и параллельной распределенной арифметике, модификацию последовательной арифметики (Multibit Serial Structure, несколько КИХ-фильтров на последовательной распределенной арифметике, объединенных склеивающей логикой) и структуры с использованием аппаратных умножителей (Multicycle variable, MCV).
Генератор параметризированных ядер Xilinx XLogiCORE IP FIR Compiler v5.0 предлагает на выбор три структуры фильтров: прямую форму систолического КИХ-фильтра, в котором операции умножения и сложения выполняются параллельно с конвейеризацией; транспонированную и на распределенной арифметике [5]. В отличие от мегафункции Altera fir_compiler_v13_1 функция Xilinx FIR Compiler v5.0 в автоматическом режиме определяет, какая структура фильтра на распределенной арифметике наиболее эффективна (последовательная или параллельная) для конкретной серии ПЛИС в зависимости от соотношения частоты взятия входных отсчетов fs и частоты тактирования системы fclk.
Cтруктуры КИХ-фильтров на основе распределенной арифметики обладают рекордным быстродействием, которое не снижается с ростом числа отводов. Такие решения особенно эффективны в низкобюджетных сериях ПЛИС, где существует недостаточное число встроенных аппаратных ЦОС-блоков.
Рассмотрим КИХ-фильтр транспонированной формы с перегружаемыми коэффициентами (обозначения сигналов, используемых в проекте, указаны на рис. 1). Исходный VHDL-код позаимствуем из работы [6]. Первый оператор process используется для загрузки коэффициентов фильтра и дискретных значений сигнала. При Load_x, равном логическому нулю, происходит последовательная загрузка коэффициентов фильтра в регистр с (далее последующий сдвиг), а при Load_x, равном логической единице, происходит загрузка сигнала, подлежащего фильтрации, в регистр x. Второй оператор process формирует сумму произведений (SOP). Для первого отвода фильтра устанавливается y<=a(0). Третий оператор process формирует произведения (p). Входной сигнал x_in и коэффициенты фильтра c_in представляются с 9‑битной точностью (W1), произведения (сигнал p, W2 = 2W1) вычисляются с точностью 18 бит, суммирование (сигнал a, W3 = W2+log2(L), где L = 4, L — число отводов фильтра) осуществляется с точностью 19 бит с учетом возможного переполнения по формуле 9+9+log2(4)–1 = 19. Внутренние сигналы c, p и a представляют собой матрицы разной размерности. Комментарии сохранены в оригинальном обозначении [6] для удобства копирования пользователем, если он захочет реализовать такой проект.
На рис. 3 показан проект КИХ-фильтра на четыре отвода в САПР Quartus II ver.13.1 с применением кода языка VHDL (пример 1), а на рис. 4 представлена импульсная характеристика. Последовательно загружаются коэффициенты –2, –1, 7 и 6, далее подается единичный импульс на вход data, и на следующем такте синхроимпульса на выходе фильтра наблюдаем импульсную характеристику.
LIBRARY ieee; -- Using predefined packages USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; USE ieee.std_logic_signed.ALL; -- -------------------------------------------------------- ENTITY fir_gen IS ------> Interface GENERIC (W1 : INTEGER := 9; -- Input bit width W2 : INTEGER := 18;-- Multiplier bit width 2*W1 W3 : INTEGER := 19;-- Adder width = W2+log2(L)–1 W4 : INTEGER := 11;-- Output bit width L : INTEGER := 4 -- Filter length ); PORT ( clk : IN STD_LOGIC; -- System clock reset : IN STD_LOGIC; -- Asynchron reset Load_x : IN STD_LOGIC; -- Load/run switch x_in : IN STD_LOGIC_VECTOR(W1-1 DOWNTO 0); -- System input c_in : IN STD_LOGIC_VECTOR(W1-1 DOWNTO 0); -- Coefficient data input y_out : OUT STD_LOGIC_VECTOR(W4-1 DOWNTO 0)); END fir_gen; -- System output -- -------------------------------------------------------- ARCHITECTURE fpga OF fir_gen IS SUBTYPE SLVW1 IS STD_LOGIC_VECTOR(W1-1 DOWNTO 0); SUBTYPE SLVW2 IS STD_LOGIC_VECTOR(W2-1 DOWNTO 0); SUBTYPE SLVW3 IS STD_LOGIC_VECTOR(W3-1 DOWNTO 0); TYPE A0_L1SLVW1 IS ARRAY (0 TO L-1) OF SLVW1; TYPE A0_L1SLVW2 IS ARRAY (0 TO L-1) OF SLVW2; TYPE A0_L1SLVW3 IS ARRAY (0 TO L-1) OF SLVW3; SIGNAL x : SLVW1; SIGNAL y : SLVW3; SIGNAL c : A0_L1SLVW1 ; -- Coefficient array SIGNAL p : A0_L1SLVW2 ; -- Product array SIGNAL a : A0_L1SLVW3 ; -- Adder array BEGIN Load: PROCESS(clk, reset, c_in, c, x_in) BEGIN ------> Load data or coefficients IF reset = '1' THEN -- clear data and coefficients reg. x <= (OTHERS => '0'); FOR K IN 0 TO L-1 LOOP c(K) <= (OTHERS => '0'); END LOOP; ELSIF rising_edge(clk) THEN IF Load_x = '0' THEN c(L-1) <= c_in; -- Store coefficient in register FOR I IN L-2 DOWNTO 0 LOOP -- Coefficients shift one c(I) <= c(I+1); END LOOP; ELSE x <= x_in; -- Get one data sample at a time END IF; END IF; END PROCESS Load; SOP: PROCESS (clk, reset, a, p)-- Compute sum-of-products BEGIN IF reset = '1' THEN -- clear tap registers FOR K IN 0 TO L-1 LOOP a(K) <= (OTHERS => '0'); END LOOP; ELSIF rising_edge(clk) THEN FOR I IN 0 TO L-2 LOOP -- Compute the transposed a(I) <= (p(I)(W2-1) & p(I)) + a(I+1); -- filter adds END LOOP; a(3) <= p(3)(W2-1) & p(3); -- First TAP has END IF; -- only a register y <= a(0); END PROCESS SOP; -- Instantiate L multipliers MulGen: FOR I IN 0 TO L-1 GENERATE p(i) <= c(i) * x; END GENERATE; y_out <= y(W4-1 DOWNTO 0); END fpga;
Пример 1. VHDL-код КИХ-фильтра транспонированной формы на четыре отвода
Если применяется САПР Quartus II ver.12.1 без поддержки встроенного векторного редактора или симуляция на уровне регистровых передач (RTL-симуляция) с использованием инструмента ModelSim-Altera, необходимо предварительно разработать испытательный стенд на языке VHDL. Для этого следует зайти в меню Processing/Start/Start Test Bench Template Writer и создать шаблон испытательного стенда. В нашем случае появится файл с именем проекта fir_gen с расширением vht, который в дальнейшем нужно отредактировать в ручном режиме. На рис. 5 показаны настройки САПР Quartus II меню EDA Tool Settings/Simulation для RTL-симуляции. Выбираем инструмент симуляции (ModelSim). Указываем выходной формат нетлиста (VHDL) для симуляции и каталог. Более подробно ознакомиться с системой цифрового моделирования ModelSim-Altera на примере проектирования систолических КИХ-фильтров в базисе ПЛИС можно в работе [7].
Пример 2 демонстрирует испытательный стенд для функционального моделирования импульсной характеристики КИХ-фильтра в системе цифрового моделирования ModelSim-Altera. На рис. 6 показано функциональное моделирование в системе ModelSim-Altera.
-- ************************************************************ -- This file contains a Vhdl test bench template that is freely editable to -- suit user's needs. Comments are provided in each section to help -- the user fill out necessary details. -- ************************************************************ -- Generated on "10/08/2015 15:29:30" -- Vhdl Test Bench template for design : fir_gen -- -- Simulation tool : ModelSim-Altera (VHDL) -- LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY fir_gen_vhd_tst IS END fir_gen_vhd_tst; ARCHITECTURE fir_gen_arch OF fir_gen_vhd_tst IS -- constants -- signals SIGNAL c_in : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL clk : STD_LOGIC; SIGNAL Load_x : STD_LOGIC:= '0'; SIGNAL reset : STD_LOGIC:= '1'; SIGNAL x_in : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL y_out : STD_LOGIC_VECTOR(10 DOWNTO 0); COMPONENT fir_gen PORT ( c_in : IN STD_LOGIC_VECTOR(8 DOWNTO 0); clk : IN STD_LOGIC; Load_x : IN STD_LOGIC; reset : IN STD_LOGIC; x_in : IN STD_LOGIC_VECTOR(8 DOWNTO 0); y_out : OUT STD_LOGIC_VECTOR(10 DOWNTO 0) ); END COMPONENT; BEGIN i1 : fir_gen PORT MAP ( -- list connections between master ports and signals c_in => c_in, clk => clk, Load_x => Load_x, reset => reset, x_in => x_in, y_out => y_out ); clk_process : PROCESS BEGIN clk <= '0'; wait for 40 ns; clk <= '1'; wait for 40 ns; END PROCESS clk_process; res_process : process begin wait for 20 ns; reset <= '0'; end process res_process; ld : PROCESS BEGIN Load_x <= '0'; wait for 320 ns; Load_x <= '1'; wait; END PROCESS ld; coef : process begin c_in <= "000000000"; wait for 20 ns; c_in <= "111111110"; wait for 60 ns; c_in <= "111111111"; wait for 80 ns; c_in <= "000000111"; wait for 80 ns; c_in <= "000000110"; wait; END process coef; delta : process begin x_in <= "000000000"; wait for 320 ns; x_in <= "000000001"; wait for 80 ns; x_in <= "000000000"; wait; END process delta; END fir_gen_arch;
Пример 2. Испытательный стенд для функционального моделирования КИХ-фильтра в системе цифрового моделирования ModelSim-Altera
Проект может быть размещен в базис ПЛИС серии Cyclone III EP3C5F256C6, он занимает логических ячеек — 69, аппаратных умножителей с размерностью операндов 99 — 4, рабочая частота в наихудшем случае с использованием TimeQuest-анализа для модели slow 1100mV 85C оценивается величиной 196,7 МГц.
Проектирование фильтров Добеши с использованием мегафункции FIR Compiler САПР Altera Quartus II
Вейвлет-преобразование одномерного сигнала s(t) состоит в его разложении по базису, сконструированном из обладающей определенными свойствами солитоноподобной функции посредством масштабных изменений и переносов [8, 9]:
где a — масштаб анализа; b — сдвиг вейвлета по времени; W(a,b) — коэффициенты вейвлет-преобразования или двумерный массив амплитуд вейвлет-преобразования; t — время; R — множество действительных чисел; ψ — локализованная по времени и частоте, быстростремящаяся к нулю, двухпараметрическая вейвлет-функция; звездочка над ψ обозначает комплексное сопряжение. Варьируя значения параметров a и b, можно получить вейвлет-спектр (time-scale spectrum (масштабно-временной спектр) или wavelet spectrum). Вейвлет-преобразование обеспечивает двумерную развертку сигнала s(t), при этом частота и координата рассматриваются как независимые переменные.
На практике КИХ-фильтры с небольшим числом отводов могут быть использованы для проектирования фильтров Добеши второго порядка [6]. Для получения информации о вейвлетах Добеши необходимо в командной строке Matlab набрать waveinfo(‘db’). Вейвлеты Добеши dbN относятся к ортогональным вейвлетам с компактным носителем. В системе Matlab вейвлеты Добеши задаются конечно-импульсной характеристикой — набором весовых вейвлет-коэффициентов.
Рассмотрим четырехточечный фильтр Добеши db2. Графики вейвлетов Добеши db2 в системе Matlab можно увидеть следующим образом:
[phi,psi,x]=wavefun('db2',10); subplot(121); plot(x,phi); title('y=\phi(x)'); axis square; grid on; subplot(122); plot(x,psi); title('y=\psi(x)'); axis square; grid on;
phi обозначает масштабирующую функцию — j(x); psi — материнский вейвлет — ψ(x); X — массив значений независимой переменной x; 10 — число итераций (степень итерационного уточнения). Функции j(x) и ψ(x) быстрозатухающие, имеют компактный носитель и не имеют аналитических выражений.
С помощью команд можно также посмотреть масштабирующую функцию j(x) вейвлета Добеши db2 и весовые вейвлет-коэффициенты фильтров декомпозиции и реконструкции сигнала (рис. 7). Коэффициенты фильтра даются с учетом нормировки множителя 1/√2.
load db2; w = db2; iter = 10; wav = 'db2'; wn=sqrt(2)*w; [phi,psi,xval] = wavefun(wav,iter); subplot(321); plot(xval,psi); title('Wavelet'); subplot(322); stem(wn); title('Original scaling filter'); [Lo_D, Hi_D, Lo_R, Hi_R] = orthfilt(wn); subplot(323); stem(Lo_D); title('Decomposition low-pass filter'); subplot(324); stem(Hi_D); title('Decomposition high-pass filter'); subplot(325); stem(Lo_R); title('Reconstruction low-pass filter'); subplot(326); stem(Hi_R); title('Reconstruction high-pass filter');
Посмотреть графики вейвлетов Добеши можно и с помощью команды wavemenu и в появившемся окне с описанием разделов вейвлет-преобразования нажать кнопку Wavelet Display. Выводится следующее окно, в котором, выбрав имя wname, можно просмотреть весовые вейвлет-коэффициенты фильтров декомпозиции (Lo _D — low-pass (ФНЧ), Hi _D — high-pass (ФВЧ)) и реконструкции (Lo _R, Hi_ R) сигнала.
Низкочастотные (h) и высокочастотные (g) коэффициенты фильтра Добеши db2 задаются следующими коэффициентами [8, 9]:
h0 = (1+√3)/(4√2) = 0,483,
h1 = (3+√3)/(4√2) = 0,8365,
h2 = (3–√3)/(4√2) = 0,2241,
h3 = (1–√3)/(4√2) = –0,1294,
g0 = h3, g1 = –h2, g2 = h1, g3 = –h0.
Передаточную функцию фильтра Добеши db2 можно записать в виде [6]:
G(z) = ((1+√3)+(3+√3)z–1+(3–√3)z–2+(1–√3)z–3)/4√2,
G(z) = 0,483+0,8365z–1+0,2241z–2–0,1294z–3.
После умножения на масштабный множитель 256 коэффициенты округлим до ближайшего целого числа:
G(z) = 124+214z–1+57z–2–33z–3.
Для получения правильного результата фильтрации необходимо в дальнейшем предусмотреть деление на масштабный множитель 256:
y/256 = 124x0+214x1+57x2–33x3.
Вейвлет-преобразование сигналов может быть представлено как банк фильтров. Быстрый алгоритм Малла (дискретное вейвлет-преобразование) для трех уровней разложения сигнала s показан на рис. 8, где a1, a2, a3 — аппроксимирующие коэффициенты, а d1, d2 и d3 — детализирующие коэффициенты, цифры 1, 2, 3 обозначают уровни разложения сигнала. Верхняя часть схемы соответствует процедуре декомпозиции, а нижняя — процедуре реконструкции сигнала. Для получения подробной информации следует обратиться к работам [8, 9].
Рассмотрим проектирование односкоростного (Single-Rate FIR) КИХ-фильтра Добеши в САПР Quartus II с использованием мегафункции Altera fir_compiler_v13_1 (рис. 9). Коэффициенты фильтра возьмем целочисленными со знаком 124, 214, 57, –33. Предположим, что они считываются из текстового файла и не подвергаются масштабированию (опция Coefficients Scaling None), так как эта операция была проделана ранее путем умножения на масштабный множитель 256.
Выберем структуру фильтра на последовательной распределенной арифметике с одним уровнем конвейеризации. Предположим, что коэффициенты фильтра и отсчеты будут храниться в логических ячейках ПЛИС и блочная память использоваться не будет. Спецификация по входу следующая: одноканальный фильтр, на вход фильтра поступают целые числа со знаком, точность представления которых в дополнительном коде — девять разрядов. Спецификация по выходу: полная точность представления результата фильтрации — 18 разрядов (определяется в автоматическом режиме по соответствующей нотации, основывается на методе Actual Coefficients). Таким образом для сигнала и коэффициентов фильтра используется формат с фиксированной запятой для целых чисел со знаком (Integer Fixed-Point Representation).
На рис. 10 показан проект КИХ-фильтра Добеши db2 на четыре отвода в САПР Quartus II ver.13.1 с использованием мегафункции FIR Compiler. Латентность фильтра составляет 9 тактов синхроимпульсов (рис. 11). Анализ задействованных ресурсов ПЛИС серии Cyclone III EP3C5F256C6 при реализации КИХ-фильтра Добеши db2 на четыре отвода показан в таблице.
Ресурсы ПЛИС |
Транспонированная форма (проект состоит из единственного VHDL-файла) |
Мегафункция FIR Compiler (последовательная распределенная арифметика) |
---|---|---|
Общее число логических элементов (Total logic elements) |
89 |
312 |
Выделенных триггеров (Dedicated Logic Registers) |
89 |
263 |
Логических элементов для реализации комбинационных функций (total combinational fuctions) |
33 |
183 |
Аппаратных умножителей с размерностью операндов 9×9 |
4 |
– |
Рабочая частота в наихудшем случае с использованием TimeQuest-анализа для модели slow 1100mV 85C, МГц |
196,7 |
250 |
Для учета влияния эффектов квантования на импульсную характеристику фильтра при переходе к формату с фиксированной запятой для дробных чисел со знаком (Fractional Fixed-Point Representation известен как Q‑формат) необходимо загрузить коэффициенты из файла в виде дробных чисел со знаком 0,483, 0,8365, 0,2241, –0,1294 и воспользоваться опцией Signed Binary Fractional (нотация), при этом в поле «Битовая ширина» (Bit Width) выставим формат [10]:
В рассматриваемом случае на знак выделяется
<Знак><Число разрядов целой части>.<Число разрядов дробной части числа>
один разряд, а на дробную часть числа — восемь разрядов, при этом общая длина разрядной сетки будет девять разрядов.
В качестве примера кратко рассмотрим нотацию Qm.n, наиболее часто применяемую для представления чисел в цифровых сигнальных процессорах, m — число разрядов целой части числа, n — число разрядов дробной части (рис. 12). Общее число разрядов N = m+n+1 для чисел со знаком. Для представления чисел со знаком в формате с фиксированной запятой Xilinx System Generator используем нотацию FIX, а для беззнаковых — UFIX. Формат FIX можно рассматривать как пару чисел M.N, где M — общее число двоичных разрядов; N — число разрядов дробной части [11].
Для 16‑разрядного числа N=16 можно записать: Q2.13, где 2 — число разрядов целой части числа, 13 — число разрядов дробной части числа +1 разряд на знак (СЗР, старший значащий разряд). Для целых чисел со знаком N=16 и Q15.0, для дробных чисел со знаком N=16 и Q0.15 также известен как формат Q.15 или Q15. В отечественном учебном пособии по цифровой обработке сигналов (автор А. Б. Сергиенко), основанном в большей части на документации системы Matlab, этот формат известен как формат с фиксированной запятой 1,15 (целые числа необходимо делить на коэффициент 215 = 32 768, равный числу разрядов дробной части). Применительно к нашему случаю это будет формат Q8.
В Altera ir_compiler в САПР Quartus II и в fir_compiler DSP Builder знак включен в целую часть числа. Из справочной документации можно узнать, что нотация Signed Binary Fractional представления дробных чисел со знаком в Altera fir_compiler следующая [10]:
<Знак><Число разрядов целой части>.<Число разрядов дробной части числа>
Формат представления сигнала, подлежащего фильтрации, и коэффициентов фильтра следующие:
<Знак><x1 разрядов целой части>.<y1 разрядов дробной части числа> <Знак><x2 разрядов целой части>.<y2 разрядов дробной части числа>.
При этом полная точность представления результата фильтрации:
<Знак><i разрядов целой части>.<y1+y2 разрядов дробной части числа>,
где i=ceil(log2(число коэффициентов))+x1+x2.
Полная точность представления результата фильтрации в случае, если сигнал и коэффициенты фильтра 9‑разрядные (x1=0, x2=0, ceil(log2(4))=2):
<Знак><2+0+0>.<8+8 >,
cоставит 18 разрядов по методу Actual Coefficients (фактически задействованные разряды) и 20 по методу Bit Width Only (только битовая ширина поля).
Если же выбрать опцию Auto with Power 2 в поле Bit Width 9, то получим следующие коэффициенты в формате с фиксированной запятой: 123, 214, 57, –33, что приведет к потере точности.
Проектирование КИХ-фильтров Добеши с использованием мегафункции FIR Compiler в системе визуально-имитационного моделирования Matlab/Simulink
Рассмотрим разработку имитационной модели КИХ-фильтра с использованием последовательной распределенной арифметики с применением функционального блока fir_compiler_v12_1 пакета расширения Altera DSP Builder системы Matlab/Simulink (рис. 13). Функциональный блок fir_compiler_v12_1 является аналогом мегафункции FIR Compiler САПР Quartus II. Функциональный блок fir_compiler_v12_1 входит в состав библиотеки Altera DSP Builder Standard Blokset/MegaCore Function.
Следует заметить, что в Simulink также существует функциональный блок FIR Compiler v6.3 (FIR Compiler v5.0, распределенная арифметика) пакета расширения System Generator, являющийся аналогом функции FIR Compiler v6.3 (FIR Compiler v5.0) САПР Xilinx ISE, получаемой с помощью генератора параметризированных ядер XLogiCORE IP [11].
На рис. 14 представлена модель КИХ-фильтра Добеши db2 на четыре отвода с использованием функционального блока fir_compiler_v12_1 библиотеки Altera DSP Builder, а на рис. 15 и 16 показано имитационное и функциональное моделирование импульсной характеристики.
Выводы
Пакет расширения Altera DSP Builder системы визуально-имитационного моделирования Matlab/Simulink позволяет быстро и эффективно разрабатывать сложные устройства цифровой обработки сигналов. Так же как и пакет расширения Xilinx System Generator, обеспечивает поддержку работы со сложными функциональными блоками, являющимися аналогами мегафункций САПР ПЛИС, — например, мегафункция fir_compiler. Использование мегафункции fir_compiler при проектировании КИХ-фильтров в проектах пользователя представляется наиболее эффективным решением, так как при этом учитываются архитектурные особенности ПЛИС и влияние эффектов квантования при переходе к формату с фиксированной запятой на импульсную характеристику фильтра.
- Тарасов И. Проектирование для ПЛИС Xilinx: системные аспекты и уровень регистровых передач // Компоненты и технологии. 2015. № 2.
- Строгонов А., Цыбин С., Городков П. Проектирование последовательных КИХ-фильтров в системе визуально-имитационного моделирования Matlab/Simulink с использованием Altera DSP Builder // Компоненты и технологии. 2015. № 11.
- Altera DSP Builder Handbook.Volume 1: Intro-ductio to DSP Builder. Versio № 13.1. November 2013.
- Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров в САПР ПЛИС Xilinx ISE Desig Suite // Компоненты и технологии. 2014. № 11.
- Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров на распределенной арифметике в САПР ПЛИС Xilinx ISE Desig Suite // Компоненты и технологии. 2015. № 2.
- Meyer-Baese U. Digital Signal Processing with Field Programmable Gate Arrays Fourth Edition. Springer, 2014. springer.com/series/4748
- Строгонов А., Быстрицкий А. Проектирование систолических КИХ-фильтров в базисе ПЛИС с помощью системы моделирования ModelSim-Altera // Компоненты и технологии. 2013. № 9.
- Яковлев А. Н. Введение в вейвлет-преобразования: Учеб. пособие. Новосибирск: Изд-во НГТУ, 2003.
- Шоберг А. Г. Современные методы обработки изображений: модифицированное вейвлет-преобразование. Хабаровск: Изд-во ТОГУ, 2014.
- Altera FIR Compiler. User Guide. Software Version: 11.0. Document Date: May 2011.
- Строгонов А., Цыбин С., Городков П. Разработка КИХ-фильтров в системе Xilinx System Generator САПР ISE Desig Suite // Компоненты и технологии. 2015. № 5.