Курсовая работа по дисциплине: Основы проектирования цифровых устройств на ПЛИС
Студент Горюнов Д.Ю.
Рязанский государственный радиотехнический университет
Рязань 2008 г.
Введение
В данном курсовой работе я(?!) буду разрабатывать и моделировать цифровой фильтр высокой частоты (БИХ). Характеристики этого фильтра указаны в выданном преподавателем задании.
Фильтр будет выполнен на основе программируемой логической интегральной схемы EPF10K20RC240-4 из семейства FLEX10K фирмы Altera с помощью специальных программ MAX+plus II 10.2 BASELINE и MATLAB 6.5.
ПЛИС семейств FLEX10K - самая популярная элементная база для реализации алгоритмов ЦОС. Их часто используют так, как они имеют большую логическую емкость, удобную архитектуру с встроенными блоками памяти(EAB, Embedded Array Block), высокую надежность и приемлемую цену, относительно других ПЛИС. Этого достаточно для решения проблем, возникающих у разработчиков.
Анализ, формализация и декомпозиция задачи
В данной работе я(?!) буду проектировать цифрой фильтр с бесконечной импульсной характеристикой третьего порядка.
Запишем линейное разностное уравнение для БИХ-фильтра:
Преобразуем данное уравнение и получаем три формы реализации БИХ-фильтра:
1)Прямая форма 1
2)Прямая форма 2
3)Транспонированная прямая форма 2
Для фильтра порядка М=3 получим:
Проанализировав формы реализаций фильтров, прихожу к выводу, что нужно использовать транспонированную прямую форму 2,так как имеет встроенный конвейер и наименьшее количество сумматоров(?!). Данную форму можно представить в виде трех блоков, которые мы в последствии и будем использовать при программировании:
Рис.4 Блок Mult_a
Рис.5 Блок Mult_b Рис.6 Блок Mult_c
Программировать будем ПЛИС фирмы Altera FLEX10K20RC240-4.Укажем характеристики этой схемы:
Логическая емкость | 20000 |
Число логических элементов | 1152 |
Число логических блоков | 144 |
Память (бит) | 12288 |
Используемые выводы | 189 |
Число строк | 6 |
Каналов в строке | 144 |
Число столбцов | 24 |
Каналов в столбце | 24 |
Таблица 1
В задании были получены коэффициенты фильтра. Но они дробные и поэтому MAX+plus с ними работать не может. Необходимо их перевести в целые числа. Это производится с помощью масштабирования. Масштабирование коэффициентов производится путем умножения заданных коэффициентов ai на 2m и bi на 2n. Выбираем n и m так, чтобы выполнялись условия технического задания(отклонение АЧХ в полосе пропускания и затухание АЧХ в полосе непропускания). С учетом этого выберем m=n=6.
Используем MATLAB и получаем характеристики фильтра при различных округлениях:
-без округления
-с отбрасыванием дробной части (fix);
-с округлением до ближайшего целого (round);
-с округлением до ближайшего меньшего целого (floor);
-с округлением до ближайшего большего целого (ceil);
Выбираем округление до ближайшего целого, так как это единственное округление, которое удовлетворяет техническому заданию. Оно соответствует красному графику.
(Отклонение АЧХ в полосе пропускания: не более ± 0,6 дБ
Затухание АЧХ в полосе непропускания: не менее 29 дБ)
(Определите реальные величины отклонений!!)
Рис.10 Импульсная характеристика фильтра
Рис.11 Переходная характеристика фильтра
Рис.12 ФЧХ фильтра
Рис.13 Карта нулей и полюсов фильтра
Данный фильтр является устойчивый, так как все полюса находятся внутри единичной окружности.
Выпишем округленные и отмасштабированные коэффициенты:
№ | Заданные коэффициенты(DEC) | Округлённые коэффициенты(DEC) | Округлённые коэффициенты вдополнительном коде(BIN) |
b1 | 0.126464868216455 | 8 | 1000 |
b2 | -0.211575649599258 | -14 | 10010 |
b3 | 0.211575649599257 | 14 | 1110 |
b4 | -0.126464868216455 | -8 | 11000 |
a1 | 1.000000000000000 | -64 | 1000000 |
a2 | 0.927241545063816 | -59 | 1000101 |
a3 | 0.888040485768699 | -57 | 1000111 |
a4 | 0.284717905073458 | -18 | 1101110 |
Таблица 2(??)
(Все коэффициенты отрицательные??)
Выпишем значения импульсной и переходной характеристик:
№ | g(t) | h(t) |
0 | 0,125 | 0.125 |
1 | -0,334 | -0,209 |
2 | 0,415 | 0,206 |
3 | -0,244 | -0,0401 |
4 | -0,0488 | -0,0882 |
5 | 0,148 | 0.0588 |
6 | -0,0236 | 0,0354 |
7 | -0,0957 | -0,0595 |
8 | 0,0678 | 0,00865 |
9 | 0,0302 | 0,0354 |
10 | -0,0607 | -0,0235 |
Таблица 3
Разработка и обоснование структурной схемы устройства
Фильтр-это основной блок для реализации технического задания.
Для работы фильтр использует дополнительный код. По техническому заданию на входе имеем 8-разрядный параллельный прямой код. Поэтому перед фильтром целесообразно поставить преобразователь прямого кода в дополнительный код.
Так как данные на вход фильтра поступают с различными задержками, для безошибочной работы требуется поставить 8-разрядный параллельный регистр. Также регистры нужны для снижения логической нагрузки на логические элементы, вследствие чего освобождаются ресурсы ПЛИС для выполнения других функций. Так как фильтр тоже задерживает сигнал, то на выходе так же поставим параллельный регистр (разрядность определяется техническим заданием, т.е выходной параллельный регистр будет 16-разрядным).
Семисегментные индикаторы(их два) позволяют контролировать работу ПЛИС. Они указывают младшие разряды выходного сигнала в удобной для пользователя форме. Антидребезговая система убирает дребезг в кнопке управления ПЛИС.
Краткое описание блоков структурной схемы :
1. btn – антидребезговая схема и преобразователь асинхронного сигнала в синхронный.
2. reg_in и reg_out –параллельные параметризированные регистры
3. preobr_cod – преобразователь кода , предназначен для преобразования входного прямого кода в дополнительный код;
4. filter_gor – основной блок преобразования
5. tffe-триггер
6. l7segment и h7segment – семисегментные индикаторы(?!), необходимы для проверки работы устройства.
Рис.14 Структурная схема устройства
Составление и описание принципиальной схемы устройства.
Разработка и отладка программы на языке AHDL
Для конфигурирования ПЛИС семейства FLEX10K существуют следующие способы:
Пассивная последовательная (последовательное ПЗУ, ByteBlaster, BiteBlaster, JTAG, микроконтроллер);
Пассивная параллельная синхронная (микроконтроллер);
Пассивная параллельная синхронная (микроконтроллер);
В проекте будет использовано JTAG конфигурирование. Для конфигурирования посредством JTAG выводы MSEL0, MSEL1 необходимо подключить к земле.
JTAG (Joint Test Action Group) - объединенная группа по вопросам тестирования – разработала спецификации для периферийного сканирования (BST – Boundary Scan Test). BST-технология позволяет выполнить эффективное тестирование компонентов на прецизионных печатных платах. BST-технология может тестировать выводы без использования щупов и пробников и выполняет сбор необходимых функциональных данных в нормальном режиме функционирования микросхемы. Для работы в JTAG-режиме используются четыре выделенных вывода: TDI, TDO, TMS, и TCK, и вспомогательный вывод TRST. Все остальные выводы во время JTAG-конфигурирования находятся в третьем состоянии. JTAG-конфигурирование нельзя начинать до завершения других режимов конфигурирования. Во время JTAG-конфигурирования конфигурационные данные загружаются в микросхему на печатной плате через разъемы кабелей MasterBlaster или ByteBlasterMV.
1)TDI – Вход тестовых данных.( Вход последовательной загрузки инструкций, программирующих и тестовых данных. Данные синхронизируются фронтом импульсов на выводе TCK.)
2)TDO – Выход тестовых данных.( Последовательный выход инструкций, программирующих и тестовых данных. Данные синхронизируются спадом импульсов на выводе TCK. Если данные из микросхемы не поступают - вывод находится в третьем состоянии)
3)TMS – Выбор режима тестирования (режим контроллера BST)( Вход управления режимом конечного автомата (контроллера) TAP. Конечный автомат синхронизируется фронтом сигнала на входе TCK. Поэтому состояние вывода TMS должно быть установлено перед фронтом сигнала TCK.)
4)TCK – Тактовый вход контроллера BST(Тактовый синхровход схемы BST. Некоторые операции синхронизируются фронтом, а некоторые спадом сигнала на TCK.)
5) TRST– Вход прекращения тестирования (дополнительный)( Вход асинхронного сброса схемы периферийного сканирования."0" на выводе – сбрасывает BST-схему периферийного сканирования. Вывод TRST является дополнительным в соответствии со стандартом IEEE STD. 1149.1.)[2]