РЕФЕРАТ 3
ABSTRACT 4
ВВЕДЕНИЕ 9
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 11
1.1. Виды цифровых фильтров 11
1.2. Особенности реализации БИХ-фильтров на ПЛИС 15
1.3. Адаптивность цифровых фильтров 16
1.4. Адаптивные алгоритмы 21
1.5. Вывод 23
2. ОБЗОР СРЕДЫ РАЗРАБОТКИ LATTICE DIAMOND 24
2.1. Средства синтеза 26
2.1.1. Lattice LSE 26
2.1.2. Synplify pro 27
2.2. Библиотека IPexpress 28
2.3. Логический анализатор Reveal Analyzer 29
2.4. Процесс создания проекта 30
2.5. Сводная таблица входов и выходов ПЛИС Spreadsheet View ... 33
2.6. Симулятор Active HDL 34
2.7. Вывод 36
3. АППАРАТНАЯ ПЛАТФОРМА 37
4. ОБЗОР СУЩЕСТВУЮЩИХ ИНСТРУМЕНТОВ ОПИСАНИЯ АП-ПАРАТНЫХ СРЕДСТВ 40
4.1. Обоснование выбора языка Chisel для разработки цифровых филь-тров 44
5. ЯЗЫК ОПИСАНИЯ АППАРАТНЫХ СРЕДСТВ CHISEL 45
5.1. Представление данных 45
5.2. Комбинаторные схемы 47
5.3. Использование функций Scala в Chisel 49
5.4. Работа с интерфейсами ввода/вывода 50
5.5. Сравнение Chisel и Verilog 52
5.6. Преимущества Chisel для разработки цифровых фильтров 54
6. РАЗРАБОТКА ЦИФРОВЫХ ФИЛЬТРОВ НА ЯЗЫКЕ CHISEL 56
6.1. Разработка простого КИХ-фильтра 56
6.2. Разработка алгоритмического умножителя для фильтров 59
6.3. Разработка алгоритмического БИХ-фильтра 62
6.4. Разработка алгоритмического адаптивного БИХ-фильтра 64
ЗАКЛЮЧЕНИЕ 74
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 76
ПРИЛОЖЕНИЯ 78
В этой работе мы рассматриваем возможности синтеза цифровых фильтров при помощи высокоуровневых средств проектирования, при этом в качестве целевой платформы рассматривается ПЛИС компании Lattice Semiconductor. Рассматриваются разные виды и конструкции цифровых фильтров.
Цели работы: изучить доступные средства высокоуровневого синтеза, совместимые с ПЛИС Lattice Semiconductor и пригодные для синтеза цифровых фильтров. Создать описание разных видов цифровых фильтров и проверить их работоспособность. Так как целевой платфрормой является ПЛИС, рассматриваются только варианты фильтров, пригодные для аппаратной реализации.
Задачи: Провести анализ разных типов цифровых фильтров, возможности их реализации на ПЛИС и особенности аппаратной реализации фильтров. Рас-смотреть принципы работы адаптивных цифровых фильтров. Рассмотреть инструменты для работы с ПЛИС Lattice Semiconductor - среду разработки Lattice Diamond и её составные части - некоторые из инструментов от компании Lattice. Провести сравнительный анализ различных средств высокоуровневого синтеза и их пригодность для работы с цифровыми фильтрами. Создать описание разных типов цифровых фильтров, учитывая особенности целевой платформы. Рассматриваются простые (параллельные) и алгоритмические фильтры, адаптивные и неадаптивные.
В этой работе для синтеза цифровых фильтров используется язык описания аппаратных средств Chisel. Для того, чтобы скомпилировать описание устройства на ПЛИС Lattice из кода на Chisel синтезируется описание на Verilog, а Verilog синтезируется средствами САПР Lattice Diamond. Сравнивая созданные устройства, мы используем отчёты компилятора в среде Lattice Diamond, а также отчёты симулятора кода на Verilog - ActiveHDL.
Актуальность темы дипломной работы объясняется тем, что цифровые фильтры - один из наиболее частоиспользуемых аппаратных блоков в задачах ЦОС. Появляются новые инструменты для описания аппаратных устройств, многие из них распространяются как свободное ПО и поддерживаются сообществом. Новые возможности языков описания аппаратных средств позволяют создавать более гибкие и параметризуемые шаблоны для описания цифровых фильтров, что в перспективе должно экономить время разработчиков описаний на ПЛИС. Цифровые фильтры часто реализуют на процессоре, но иногда производить фильтрацию сигнала на процессоре нецелесообразно. Это может быть слишком трудоёмко или слишком долго. В некоторых устройствах вообще отсутствует процессор, и тогда легче создать аппаратный фильтр на ПЛИС. В этой работе рассмотрены разные конструкции фильтров: для ситуаций, когда важнее создать быстрый фильтр, либо когда важнее затратить меньше аппаратных ресурсов. Предполагается, что современные средства высокоуровневого синтеза помогут создать более гибкое и параметризуемое описание устройства, чем традиционные сейчас языки разработки: Verilog и VHDL.
В этой работе я рассмотрел возможности синтеза цифровых фильтров при по¬мощи высокоуровневых средств проектирования.
Был проведён анализ разных типов цифровых фильтров и особенности их аппаратной реализации. Проведён сравнительный анализ средств высокоуровневого синтеза устройств на ПЛИС, их сильные и слабые стороны. Для разработки описаний для этой работы я выбрал язык Chisel, так как этот язык сейчас набирает популярность, он позволяет использовать возможности Scala для параметризации модулей и автоматической генерации устройства, но при этом оставляет разработчику возможность контролировать работу устройства на уровне регистровых передач.
Рассмотрен процесс разработки проектов в среде Lattice Diamond и составные части этой среды. Для того, чтобы получить прошивку для ПЛИС, из кода на Chisel сначала был я генерировал код Verilog, который поддерживается САПР Lattice Diamond. Отчёты САПР были использованы для сравнения результатов синтеза фильтров. Также синтезированные модули были проанализированы в симуляторе Aldec ActiveHDL.
В результате я получил параметризуемые модули на Chisel: простой нерекурсивный фильтр, вычисляющий результат параллельно, алгоритмический БИХ- фильтр и алгоритмический адаптивный БИХ-фильтр.
В ходе работы обнаружено, что на ПЛИС, имеющих аппаратные умножите-ли, использование параллельных умножителей (встроенных в язык операторов умножения *) позволяет задействовать меньше логических ячеек. С другой стороны, на ПЛИС без поддержки аппаратных умножителей наоборот, использование алгоритмических умножителей позволяет задействовать меньше логических ячеек.
Результаты работы синтезированных цифровых фильтров проверены в симуляторе, они совпадают с теоретическими значениями и результатами, полученными в Matlab.
В будущем я планирую усовершенствовать созданные описания: добавить возможность переключаться между типами умножителей, параллельным и последовательным, а также завести больше сигналов извне в адаптивную функцию. Также можно создать набор готовых адаптивных функций, реализующих разные адаптивные алгоритмы.