Проектирование параллельных КИХ-фильтров в базисе ПЛИС

PDF версия
Перемножители сигналов играют ключевую роль в проектировании высокопроизводительных цифровых фильтров. В статье показаны различные варианты реализации КИХ-фильтров с использованием перемножителей на мегафункциях ALTMULT_ACCUM, ALTMULT_ADD и ALTMEMMULT САПр Quartus II компании Altera [1] в базисе ПЛИС. Авторы также сосредоточили свое внимание на реализации умножения методом правого сдвига с накоплением, применяемого для разработки масштабирующего аккумулятора.

Рассмотрим уравнение КИХ-фильтра (нерекурсивного цифрового фильтра с конечно-импульсной характеристикой), которое представляется как арифметическая сумма произведений:

где y — отклик цепи; xkk-ая входная переменная; Ck — весовой коэффициент k-ой входной переменной, который является постоянным для всех n; K — число отводов фильтра.

В качестве простейшего примера рассмотрим три варианта проектирования параллельного КИХ-фильтра на четыре отвода:

y = C0x0+C1x1+C2x2+C3x3 (2)

с использованием мегафункций САПР ПЛИС Quartus II компании Altera [1], объединенных общей идеей использования перемножителей цифровых сигналов и «дерева сумматоров». Коэффициенты фильтра и входные отсчеты возьмем из работы [2]. В [2] рассматривалось проектирование КИХ-фильтра на четыре отвода с использованием последовательной распределенной арифметики.

Предположим, что коэффициенты фильтра целочисленные, со знаком, известны и равны: C0 = –2, C1 = –1, C2 = 7 и C3 = 6. На вход КИХ-фильтра поступают входные отсчеты –5, 3, 1 и 0. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6 и т. д., то есть согласно формуле (2).

Первый вариант

Это параллельная реализация КИХ-фильтра на четыре отвода с помощью четырех блоков умножения с накоплением. В проекте используется четыре мегафункции ALTMULT_ACCUM (рис. 1). Каждый блок использует один перемножитель и один сумматор-аккумулятор. Для параллельной реализации фильтра на четыре отвода требуется четыре блока и три дополнительных однотипных многоразрядных сумматора, связанных по принципу «дерево сумматоров». Для того чтобы фильтр работал корректно, необходимо осуществлять синхронную загрузку каждого произведения в каждый сумматор-аккумулятор каждого блока. Для этого служит дополнительный вход мегафункции accum_sload. На рис. 1 также показана внешняя линия задержки на четыре отвода из трех 4-разрядных регистров, тактируемых фронтом синхросигнала. Коэффициенты фильтра представляются в двоичном виде с учетом знака числа и загружаются с помощью мегафункции LPM_CONSTANT.

Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех блоков в САПР ПЛИС Quartus II (мегафункция ALTMULT_ACCUM)

Рис. 1. Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех блоков в САПР ПЛИС Quartus II (мегафункция ALTMULT_ACCUM)

Второй вариант

Параллельная реализация КИХ-фильтра на четыре отвода с помощью четырех перемножителей в блоке на мегафункции ALTMULT_ADD (функция умножения и сложения) в САПР ПЛИС Quartus II показана на рис. 2. В мегафункции ALTMULT_ACCUM используется три встроенных сумматора. Профильтрованные значения приведены на рис. 3. Сравнивая временные диаграммы, видим, что профильтрованные значения на выходе у двух фильтров, построенных на разных мегафункциях, совпадают.

Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех перемножителей в блоке (мегафункция ALTMULT_ADD). Линия задержки такая же, как и на рис. 1

Рис. 2. Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех перемножителей в блоке (мегафункция ALTMULT_ADD). Линия задержки такая же, как и на рис. 1

Временные диаграммы работы параллельных фильтров на четыре отвода с использованием мегафункций ALTMULT_ACCUM и ALTMULT_ADD

Рис. 3. Временные диаграммы работы параллельных фильтров на четыре отвода с использованием мегафункций ALTMULT_ACCUM и ALTMULT_ADD

Значительно упростить разработку КИХ-фильтра позволяет иное использование мегафункции ALTMULT_ACCUM (модификация первого варианта). Фактически это одна мегафункция (один блок с четырьмя перемножителями), в которой линия задержки организована на внутренних регистрах четырех перемножителей. В мегафункции используются встроенные два сумматора и один сумматор-аккумулятор (рис. 4). Временные диаграммы, показанные на рис. 5, не отличаются от диаграмм на рис. 3.

Параллельная реализация КИХ-фильтра на четыре отвода с использованием одного блока с четырьмя перемножителями в САПР ПЛИС Quartus II (мегафункция ALTMULT_ACCUM). Линия задержки построена на внутренних регистрах перемножителей MULT0-MULT3

Рис. 4. Параллельная реализация КИХ-фильтра на четыре отвода с использованием одного блока с четырьмя перемножителями в САПР ПЛИС Quartus II (мегафункция ALTMULT_ACCUM). Линия задержки построена на внутренних регистрах перемножителей MULT0-MULT3

Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMULT_ACCUM

Рис. 5. Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMULT_ACCUM

Рассмотрим умножение десятичного числа 11 на 10 на примере мегафункции ALTMEMMULT (рис. 6). Мегафункция ALTMEMMULT предназначена для умножения числа на константу, которая хранится в блочной памяти ПЛИС (M512, M4K, M9K и MLAB-блоки), обеспечивая наивысшее быстродействие, лимитируемое латентностью. Однако константу можно загрузить и из внешнего порта. Считаем, что 10 — это константа, которая загружается из внешнего порта. По умолчанию в мегафункцию загружена, например, константа 3. Латентность мегафункции — 2, то есть доступность результата умножения числа на константу, если константа хранится в памяти мегафункции, возможна уже после двух синхроимпульсов (высокий уровень сигнала done, соответствующий порту load_done). Число «3», загруженное в мегафункцию по умолчанию, умноженное на число 11 с входного порта data_in[3..0], дает результат — 33.

Умножение 11 на 10 с помощью мегафункции ALTMEMMULT

Рис. 6. Умножение 11 на 10 с помощью мегафункции ALTMEMMULT

Далее, синхронный сигнал загрузки load (порт sload_coeff) разрешает загрузку числа 10 в перемножитель. Низкий уровень сигнала done в течение 16 тактов синхрочастоты говорит о том, что идет процесс умножения. И лишь спустя два синхроимпульса при высоком уровне сигнала done на выходе появляется требуемое число — 110. Таким образом, процесс умножения составляет 20 синхроимпульсов от момента появления сигнала load (рис. 7).

Временные диаграммы умножения 11 на 10. По умолчанию в мегафункцию загружена константа 3. Результат — 110

Рис. 7. Временные диаграммы умножения 11 на 10. По умолчанию в мегафункцию загружена константа 3. Результат — 110

Третий вариант

 Применяя мегафункцию ALTMEMMULT, разработаем параллельную реализацию КИХ-фильтра на четыре отвода с использованием четырех перемножителей (четыре блока по одному перемножителю в каждом) в САПР ПЛИС Quartus II и «дерева сумматоров» (рис. 8).

Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех умножителей в САПР ПЛИС Quartus II (мегафункция ALTMEMMULT). Линия задержки построена на четырех регистрах, коэффициенты фильтра загружаются из внешнего порта

Рис. 8. Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех умножителей в САПР ПЛИС Quartus II (мегафункция ALTMEMMULT). Линия задержки построена на четырех регистрах, коэффициенты фильтра загружаются из внешнего порта

Внешняя линия задержки состоит не из трех регистров, как в первых двух вариантах, а из четырех регистров. Дополнительно требуется, как и в первом варианте, три однотипных многоразрядных сумматора. Латентность каждого умножителя — 2. В каждый умножитель по умолчанию загружено число 0. Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMEMMULT показаны на рис. 9.

Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMEMMULT. Коэффициенты фильтра загружаются из внешнего порта

Рис. 9. Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMEMMULT. Коэффициенты фильтра загружаются из внешнего порта

Коэффициенты фильтра C0 = –2, C1 = –1, C2 = 7 и C3 = 6 загружаются из внешнего порта. Для этих целей используется мегафункция LPM_CONSTANT.

Рассмотрим вариант, когда коэффициенты фильтра загружаются из блочной памяти в ПЛИС. В мегафункции ALTMEMMULT коэффициенты представляются как целочисленные значения со знаком (рис. 10).

Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех перемножителей в САПР ПЛИС Quartus II (мегафункция ALTMEMMULT). Линия задержки построена на четырех регистрах, коэффициенты фильтра загружаются из блочной памяти

Рис. 10. Параллельная реализация КИХ-фильтра на четыре отвода с использованием четырех перемножителей в САПР ПЛИС Quartus II (мегафункция ALTMEMMULT). Линия задержки построена на четырех регистрах, коэффициенты фильтра загружаются из блочной памяти

Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMEMMULT показаны на рис. 11. Сравнивая рис. 9 и 11, видим, что быстродействие фильтра в этом случае значительно увеличивается за счет хранения коэффициентов в блочной памяти.

Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMEMMULT. Коэффициенты фильтра загружаются из блочной памяти ПЛИС

Рис. 11. Временные диаграммы работы фильтра на четыре отвода с использованием мегафункции ALTMEMMULT. Коэффициенты фильтра загружаются из блочной памяти ПЛИС

Масштабирующий аккумулятор не только входит в состав последовательных КИХ-фильтров, его можно применять и для других целей. Рассмотрим проектирование масштабирующего аккумулятора с помощью метода правого сдвига с накоплением на примере умножения числа 11 на константу 10 (целочисленные беззнаковые значения).

Идея схемы умножения методом правого сдвига с накоплением: а) алгоритм умножения десятичного числа 11 на 10; б) структурная схема метода

Рис. 12. Идея схемы умножения методом правого сдвига с накоплением: а) алгоритм умножения десятичного числа 11 на 10; б) структурная схема метода

На рис. 12 показана идея схемы умножения методом правого сдвига с накоплением [3]. Для практической реализации в базисе ПЛИС потребуется преобразователь параллельного кода в последовательный со сдвигом вправо (мегафункция LPM_SHIFTREG), умножитель 1-разрядного числа на 4-разрядное (мегафункция LPM_MULT, старший значащий разряд игнорируется) и масштабирующий аккумулятор (рис. 13).

Схема умножения методом правого сдвига с накоплением

Рис. 13. Схема умножения методом правого сдвига с накоплением

На рис. 14 показан масштабирующий аккумулятор, который состоит из 4-разрядного сумматора (мегафункция LPM_ADD_SUB), сдвиговых регистров lpm_shiftreg0 и shift_LSB, вспомогательного регистра ff5 и регистра результата ff8. Регистр ff5 объединяет результат суммирования 2p[3..0] и разряд переноса Coutсумматора. Младший значащий разряд накапливается в регистре shift_LSB. Полученный 5-разрядный сигнал сдвигается вправо на один разряд с помощью сдвигового регистра lpm_shiftreg0, при этом старший значащий разряд отбрасывается, а оставшиеся, более младшие разряды вновь поступают на один из входов сумматора. В регистре ff8 происходит сохранение результата преобразования, который представляет собой 8-разрядный сигнал, полученный объединением сигналов p[3..0] и LSB[3..0].

Масштабирующий аккумулятор

Рис. 14. Масштабирующий аккумулятор

На рис. 15 показаны временные диаграммы умножения числа 11 на 10. Результат — 110. Сравнивая результат умножения числа 11 на 10 с помощью мегафункции ALTMEMMULT, показанный на рис. 7 и 15, с использованием метода правого сдвига с накоплением, видим, что для умножения во втором случае потребовалось 18 синхроимпульсов. Если в разработанном варианте в качестве перемножителя использовать мультиплексор многоразрядных сигналов, то можно получить бесперемножительную схему умножения и построить КИХ-фильтр без операции явного умножения.

Временные диаграммы умножения числа 11 на 10 методом правого сдвига с накоплением. Результат —110

Рис. 15. Временные диаграммы умножения числа 11 на 10 методом правого сдвига с накоплением. Результат —110

 

Выводы

Рассмотрены различные варианты проектирования параллельных КИХ-фильтров с использованием мегафункций САПР ПЛИС Quartus II компании Altera, а также умножение методом правого сдвига с накоплением.

Фильтр на мегафункции ALTMULT_ACCUM (вариант 1) является самым затратным, так как требует 16 аппаратных перемножителей, три дополнительных сумматора и внешнюю линию задержки (таблица).

Таблица. Анализ задействованных ресурсов ПЛИС серии Stratix при реализации параллельных КИХ-фильтров на четыре отвода с использованием мегафункций ALTMULT_ACCUM, ALTMULT_ADD и ALTMEMMULT

Ресурсы ПЛИС cерии Stratix

Мегафункция ALTMULT_ACCUM. Четыре блока по одному перемножителю в каждом, внешняя линия задержки из трех регистров /один блок (четыре перемножителя в блоке, встроенная линия задержки)

Мегафункция ALTMULT_ADD.

Четыре перемножителя в блоке, внешняя линия задержки из трех регистров

Мегафункция ALTMEMMULT.

Четрые блока по одному перемножителю в каждом (коэффициенты фильтра загружаются из внешнего порта)

Мегафункция ALTMEMMULT.

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

Вариант 1

Модификация

варианта 1

Вариант 2

Вариант 3

Количество АЛМ для выполнения комбинационных функций

18

0

0

181

18

Количество АЛМ с памятью

0

0

0

64

36

АЛМ

18

0

8

152

4

Количество выделенных регистров

12

0

12

248

68

Аппаратные перемножители (ЦСП 18×18)

16

4

4

0

0

Количество АЛМ для выполнения комбинационных функций без использования регистров

18

0

0

49

36

Количество АЛМ под регистерные ресурсы

12

0

12

50

196

Количество АЛМ под комбинационные и регистерные ресурсы

0

0

0

196

18

Рабочая частота в наихудшем случае, МГц

400

400

400

331

400

Примечание. АЛМ — адаптивные логические модули.

Наиболее оптимальным по числу ресурсов ПЛИС является модификация первого варианта, которая позволяет построить параллельный КИХ-фильтр на четыре отвода с использованием всего лишь одного блока с четырьмя перемножителями, встроенными двумя сумматорами, сумматором-аккумулятором и линией задержки.

Мегафункции ALTMULT_ADD также позволяет построить параллельный КИХ-фильтр с помощью всего лишь одного блока с четырьмя перемножителями и встроенными тремя сумматорами. Использование внешней линии задержки из трех регистров приводит к незначительному увеличению ресурсов и не сказывается на быстродействии. Экономия ресурсов ПЛИС в первом, модифицированном и во втором вариантах достигается за счет встроенных четырех аппаратных перемножителей 18×18.

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

Литература
  1. altera.com. Integer Arithmetic Megafunctions. UG-01063-3.0. Altera Corporation. Feb. 2012.
  2. Строгонов А., Быстрицкий А. КИХ-фильтр на распределенной арифметике: проектируем сами // Компоненты и технологии. 2013. № 3.
  3. Computer Arithmetic: Algorithms and Hardware Designs. Oxford U. Press, 2010.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

live bedroom sex video pornview.org monalisa hot video full color hentai manga hentaicity.org kayle hentai 仙台 ニューハーフ javmobile.mobi 日常生活の着爆乳 美奈子編 xx video janwar indianpornmms.net xxxsexfilms なりすまし文系女子痴女ntr~sex狂の美少女が見た目を変えて清純好き男を寝取りまくった~ 麻里梨夏 javshare.info 咲坂あいり
نيك بكل الاوضاع xenival.com سكساوى عرب birpara college mecoporn.com marathi video sax نكت اختي pornovuku.info سكس عربى امهات sri lankan hot sex hdtubefucking.com hot sex vedio.com سكساحترافي gratisfucktube.com كايلاني لي
نيك دلع thogor.com رقص مع خلع الملابس نيك صور realpornmovies.net صورسكس نيك カリスマ読者モデル史上最悪の恥辱 愛波りりか javlibrary.pro 乙葉ののか 岬ななみ 動画 ero-video.mobi 中条カノン av اغتصاب بورنو arabianmotion.com نيك هند صبرى