Цифровой фильтр высокой частоты
Разработка, обоснование структурной схемы устройства. Разработка, отладка программы на языке AHDL. Определение быстродействия, импульсной и переходной характеристик цифрового фильтра на основе программируемой логической интегральной схемы EPF10K20RC240-4.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.11.2013 |
Размер файла | 908,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра радиотехнических систем
КУРСОВАЯ РАБОТА
по дисциплине «Основы проектирования цифровых устройств на ПЛИС»
на тему: Цифровой фильтр высокой частоты
Студент
Городничев А.В.
Содержание
Введение
1. Анализ, формализация и декомпозиция задачи
2. Разработка и обоснование структурной схемы устройства
3. Составление и описание принципиальной схемы устройства
4. Разработка и отладка программы на языке AHDL
5. Определение быстродействия, импульсной и переходной характеристик фильтра
Заключение
Список использованных источников
Приложение
Введение
В данной курсовой работе разрабатывается и моделируется цифровой фильтр высокой частоты. Фильтр будет выполнен на основе программируемой логической интегральной схемы EPF10K20RC240-4 из семейства FLEX10K фирмы Altera с помощью специальных программ MAX+plus II 10.2 BASELINE и MATLAB R2008a.
Последние годы характеризуются резким ростом плотности упаковки элементов на кристалле. Многие ведущие производители либо начали серийное производство, либо анонсировали ПЛИС с эквивалентной емкостью более 1 миллиона логических вентилей. Различают два вида реализации цифрового фильтра: аппаратный и программный. Аппаратные цифровые фильтры реализуются на элементах интегральных схем, а программные - с помощью программ, выполняемых процессором или микроконтроллером. Преимуществом программных средств перед аппаратными являются лёгкость воплощения, настройки изменений, в себестоимость такого фильтра входит в большей степени только труд программиста. Недостаток -- низкая скорость обработки данных, зависящая от быстродействия процессора, а также трудная реализуемость цифровых фильтров высокого порядка.
ПЛИС семейств FLEX10K - одна из элементных баз для реализации алгоритмов ЦОС. Их часто используют, поскольку они имеют большую логическую емкость, удобную архитектуру с встроенными блоками памяти (EAB, Embedded Array Block), высокую надежность и относительно невысокую цену.
1. Анализ, формализация и декомпозиция задачи
Согласно ТЗ фильтр проектируется на базе ПЛИС EPF10K20RC240-4, рассмотрим ее основные характеристики (таблица 1) [1, стр. 26]
Таблица 1. Характеристики ПЛИС EPF10K20RC240-4.
Особенности |
EPF10K20 |
|
Логическая емкость |
20000 вентилей |
|
Число логических элементов |
1152 шт. |
|
Число логических блоков |
144 шт. |
|
Встроенные блоки памяти |
6 шт. |
|
Объем памяти |
12288 бит |
|
Максимальное число выводов |
189 |
Математическое описание цифровых фильтров.
Реакция рекурсивного фильтра в некоторый момент времени зависит как от входного воздействия, так и от значений реакции в другие моменты времени и для линейного стационарного физически реализуемого фильтра имеет вид [2]
Схемы цифровых фильтров.
Основными элементами цифрового фильтра являются элементы задержки на один такт T (элементы единичной задержки), сумматор и умножитель. Их характеристики и обозначения даны в таблице 2. Реализация этих элементов может быть различна в зависимости от представления обрабатываемых сигналов.
. По техническому заданию уравнение фильтра имеет следующий вид
Для M=3:
После применения z-преобразования:
уравнение фильтра примет следующий вид:
Тогда передаточная функция фильтра описывается выражением:
программа цифровой фильтр устройство
Это выражение позволяет реализовать прямую форму I фильтра.
Рисунок 1. Прямая форма I
При этом способе реализации фильтра число задержек=6, число сумматоров=6, число умножителей = 7. Обозначим задержки, вносимые блоком конвейера tz, умножителем tm и сумматором ts. Тогда, с учётом параллельной работы умножителей и блоков конвейера, получаем быстродействие фильтра: tz+tm+4*ts.
Передаточную функцию можно записать иначе:
От перемены мест составляющих передаточной функции ничего не меняется, и этому выражению соответствует прямая форма II фильтра (рисунок 2).
Рисунок 2. Прямая форма II
В этом случае число задержек=3, число сумматоров=6, число умножителей=7. Несмотря на меньшее число используемых элементов, из-за невозможности параллельной работы всех умножителей быстродействие ухудшается: tz+2*tу+4*ts.
Воспользуемся алгоритмом Горнера для преобразования полинома степени M:
Раскроем знак суммы:
Для M=3 получаем:
Такой записи соответствует транспонированная прямая форма II фильтра (рисунок 3).
Рисунок 3. Транспонированная прямая форма II
Для этого типа структуры фильтра число задержек=3, число сумматоров=6 (двa сумматорa, расположенные в середине схемы являются трёхвходовыми, поэтому мы их представляем как четыре двухвходовых), число умножителей=7. Данная структура имеет встроенный конвейер и называется конвейерной. По этой причине она является самой быстродействующей из рассмотренных трёх схем: тaкты подаются через tz+tm+ts(и блоки конвейера, и умножители, и сумматоры работают параллельно).
Именно этот тип структуры выбран для проектирования фильтра, так как он легко реализуется при использовании библиотечной LPМ функции (lpm_mult) для описания его звеньев - двухвходовых сумматоров с предшествующим умножителем и последующим блоком конвейера.
Для построения фильтра будем использовать коэффициенты из ТЗ. Они представлены в виде десятичных чисел, но САПР MAX II Plus обрабатывает только целочисленные значения, коэффициенты подлежат округлению. Данную операцию над числами произведем в пакете прикладных программ Matlab версии R2010b. Разрядность коэффициентов должна быть минимальна в целях экономии ресурсов ПЛИС. Чтобы сравнять разрядность коэффициентов a и b, выясним, во сколько раз они расходятся. , 22<<23. Таким образом, коэффициенты b сдвигаем влево на 2 разряд больше.
В Matlab получим графики АЧХ при различных округлениях. Примем для начала m = 6 n = m-2=4.
Таблица 2. Коэффициенты фильтра Ie0H3-04-06-30-1-11
Целые |
Двоичные |
Разрядность |
||
a1 |
16 |
0 10000 |
4 |
|
a2 |
14 |
0 1110 |
5 |
|
a3 |
14 |
0 1110 |
5 |
|
a4 |
4 |
0 100 |
4 |
|
b1 |
8 |
0 1000 |
5 |
|
b2 |
-13 |
1 1101 |
5 |
|
b3 |
13 |
0 1101 |
5 |
|
b4 |
-8 |
1 1000 |
5 |
На рисунках 4, 5 получены графики АЧХ при различных типах округления и при выбранном типе округлении в полосе пропускания и полосе непропускания.
В таблицу 4 сведем данные по неравномерности АЧХ и затуханию АЧХ и выберем оптимальный тип округления, при котором данные будут соответствовать требованиям ТЗ.
Таблица 3. Неравномерность и затухание АЧХ при различных способах округления
Вид округления |
Неравномерность АЧХ, дБ |
Затухание АЧХ, дБ |
|
precise |
1 |
30 |
|
fix |
1,4 |
29,7 |
|
round |
2,1 |
31,1 |
|
floor |
1,55 |
28,9 |
|
ceil |
1,85 |
28,5 |
Рисунок 4. Графики АЧХ фильтра в полосе пропускания.
Рисунок 5. Графики АЧХ в полосе непропускания.
Из таблицы 4 видно, что оптимальным типом округления является с отбрасыванием дробной части (зеленая кривая).
Построим в Matlab графики импульсной и передаточной характеристик (рисунки 6, 7).
Рисунок 6. Импульсная характеристика.
Рисунок 7. Передаточная характеристика.
Отсчеты импульсной и переходной характеристик, построенные в среде Matlab, более точно рассчитаны в программе Microsoft Excel версии 2003 года (таблица 5).
Таблица 5. Значения отсчетов импульсной и переходной характеристик.
n |
g(n), целочисленные |
g(n) |
h(n), целочисленные |
h(n) |
|
1 |
1600 |
0,125000 |
1600 |
0,125000 |
|
2 |
-4000 |
-0,312500 |
-2400 |
-0,187500 |
|
3 |
4700 |
0,367188 |
2300 |
0,179688 |
|
4 |
-2613 |
-0,204102 |
-313 |
-0,024414 |
|
5 |
-827 |
-0,064575 |
-1139 |
-0,088989 |
|
6 |
1834 |
0,143295 |
695 |
0,054306 |
|
7 |
-229 |
-0,017855 |
467 |
0,036451 |
|
8 |
-1198 |
-0,093617 |
-732 |
-0,057165 |
|
9 |
790 |
0,061714 |
58 |
0,004548 |
|
10 |
414 |
0,032379 |
473 |
0,036927 |
В разностном уравнении выравниваем разрядность коэффициентов
Xnbnmax = 8 +5 = 13 - максимальная разрядность при умножении входных данных на коэффициенты bi
Ynanmax = 16 + 5 = 21 - максимальная разрядность при умножении выходных данных на коэффициенты ai
21 - 13 = 8 - разница между разрядностью произведений Xnbnmax и Ynanmax
Запас = 3 - из-за возможности переполнения введём дополнительно 3 разряда.
k = 8 - 3 = 5 - сдвиг коэффициентов числителя для выравнивания разрядностей произведений.
На рисунке 8 изображена карта нулей и полюсов.
Можно сделать вывод, что фильтр является устойчивым по критерию Найквиста, т.к. все полюса лежат внутри окружности.
Рисунок 8. Карта нулей и полюсов.
2. Разработка и обоснование структурной схемы устройства
filtr
Обработку входящих данных будет осуществлять блок filtr, являющий непосредственно фильтром высоких частот, преобразующим 8-разрядные данные в 16-разрядные.
xn, yn - последовательности 8-разрядных входных и 16-разрядных выходных данных.
pkdk
Поскольку MaxII plus работает с числами в дополнительном коде, а входные данные требуется подавать в прямом коде, то необходим преобразователь чисел из прямого кода в дополнительный.
dkabs
Он необходим для того, чтобы отрицательные значения корректно отображались, например, вместо числа -322 = 1111 1110 1011 1110 = мы получим 33090. Поэтому добавим блок dkabs, который будет являться модулем выходных значений.
reg8, reg16
Входная последовательность подается на фильтр асинхронно, с различными задержками, а сам фильтр является синхронным устройством, поэтому для синхронизации входных и выходных данных требуются регистры, с разрядностью 8 и 16 соответственно.
btn
После нажатия кнопки происходит ряд ложных отскоков, следовательно требуется установить антидребезговое устройство для формирования из асинхронного сигнала f_dis синхронный се.
Dtr
Для задержки сигнала на выходе на 1 такт требуется 1 D-триггер.
7seg_h, 7seg_l
Контроль выходных данных осуществляется на семисегментных индикаторах, 7seg_h - отображает старший (high) разряд, 7seg_l - отображает младший разряд (low).
Ttr
Т-триггер используется для проверки выработки ce. Выход триггера подключается к разъему hh одного из семисегментных индикаторов. Получается, что при каждом новом такте ce потенциал на разъеме будет менять своё состояние. Сигнал се разрешает прием входных данных. Контроль каждого сигнала позволяет судить о том, что мы считываем именно реальные данные, а не ложные, например, результаты переработки.
noreset
Для управления триггерами требуются внешние установочные сигналы [3]. При назначении 0 сигналу noreset, триггеры устанавливаются в начальное состояние (0, 0 - на входах R и S соответственно)
tr[].(clk, clrn, ena) = (clk, noreset, ce)
Структурная схема устройства изображена на рисунке 9.
Рисунок 9. Структурная схема фильтра.
3. Составление и описание принципиальной схемы устройства
Рисунок 10. Принципиальная схема устройства.
Обработку данных осуществляет цифровая микросхема DD1 ПЛИС EPF10K20RC240-4 (по ТЗ), на которую с разъема Х1.1 подаются 8-разрядные входные данные, а снимаются с разъема Х1.4 16-разрядные выходные данные.
Вывод данных реализован на цифровых индикаторах DD2 и DD3.
Выберем индикаторы типа SA56-21SRWA.
Parameter |
Super Bright Red |
Units |
|
Power dissipation |
100 |
mW |
|
DC Forward Current |
30 |
mA |
|
Peak Forward Current |
155 |
mA |
|
Reverse Voltage |
5 |
V |
|
Operating / Storage Temperature |
-40°C To +85°C |
||
Lead Solder Temperature |
260°C For 5 Seconds |
||
Working Voltage |
2 |
V |
Из справочных данных [7] получаем необходимую разводку контактов для этих индикаторов и электрические параметры: питающее напряжение Eп=5 В, напряжение на горящем светодиоде Us=2 В и ток, протекающий через светодиод Is=100 мВт / 5 В = =20 мА. Перед каждым входом индикатора необходимо поставить ограничивающие резисторы R6..R20, которые обеспечат заданные параметры электропитания светодиодов. Их номиналы одинаковы и находятся по формуле:
С учётом этого сопротивление резисторов будет равно: R = (5-2) /20*10-3 = 150 Ом.
Конфигурирование FPGA после каждого включения питания схемы дает возможность менять конфигурацию FPGA в Run-time, получая гибкие и многофункциональные системы.
Основные режимы конфигурирования:
- пассивный последовательный
- пассивный параллельный синхронный
- пассивный параллельный асинхронный
- пассивный последовательный асинхронный
- JTAG конфигурирование [6].
В курсовом проекте используется JTAG конфигурирование, поскольку использованная в нем BST-технология позволяет выполнить эффективное тестирование компонентов на прецизионных печатных платах. BST-технология может тестировать выводы без использования вспомогательных устройств, таких как щупов и пробников и выполняет сбор необходимых функциональных данных в нормальном режиме функционирования микросхемы. Этот режим используется для загрузки конфигурационных данных в микросхемы. Для работы в JTAG-режиме используются четыре выделенных вывода: TDI, TDO, TMS, и TCK, также вспомогательный вывод TRSТ. Все остальные выводы во время JTАG-конфигурирования находятся в третьем состоянии. JTAG - конфигурирование нельзя начинать до завершения других режимов конфигурирования. Для конфигурирования посредством JTАG выводы MSEL0, MSEL1 необходимо подключить к земле (GND). Вообще они используются для изменения режимов конфигурирования. [8]
TCK - Test Clock (тактовый вход JTAG).
TDI - Test Data Input (вход тестовых данных JTAG).
TDО - Test Data Output (выход тестовых данных JTAG).
TMS - Test Machine State Control (управление конечным автоматом JTAG) [1].
Согласно присвоенным значениям pin, обозначим их на принципиальной схеме.
Конденсаторы С2..С23 - для защиты от паразитной обратной связи по цепям питания и расположены у контактов ПЛИС. Конденсатор С1 используется для фильтрации низкочастотной помехи.
4. Разработка и отладка программы на языке AHDL
Рисунок 11. Иерархическая схема устройства.
На рисунке 11, к проекту фильтра plis высоких частот подключаются модули: pkdk, reg, filter, dkabs, btn, 7seg. Опишем программную реализацию каждого из них.
(pkdk) - преобразователь работает таким образом: оценивается старший разряд, если он отрицательный, то знаковая часть остается, а остальная часть числа инвертируется, а ко всему числу прибавляется 1, в противном случае число записывается также.
IF in[width -1] THEN
out[] = (in[width-1], !in[width -2..0])+1; - антидребезговое устройство.
(btn)
Ввод логических сигналов от механических ключей -- одно из типовых действий, позволяющее оператору воздействовать на цифровое устройство. Механические ключи (кнопки) имеют упругость, их коммутация -- сложный процесс. После первого соударения контактов происходит ряд упругих отскоков, называемых дребезгом контактов, поэтому вместо однократного перепада напряжения ключи создают целую серию импульсов.
Длительность упругих колебаний ключей зависит от их конструкции, обычно она лежит в диапазоне 1...10 мс. Такой сигнал нельзя вводить в цифровое устройство, т.к. он может создать множество ложных переключений [4, стр. 117].
Для получения "очищенного" от дребезга контактов сигнала принимают специальные меры -- программные или схемные. Программные методы вводят паузу между каждым нажатием ключа и использованием формируемого ключом сигнала. В схемных методах борьбы с дребезгом контактов используются свойства триггеров. С помощью триггеров выходное напряжение ключа очищается от паразитных колебаний и превращается в стандартный логический сигнал. При изменении состояния ключа возникают упругие отскоки от контактов. Первое же соударение приводит триггер в соответствующее состояние, а при отскоке ключа, когда он находится в воздухе, оба входа триггера получают пассивные сигналы логической единицы (высокие напряжения от цепочек "источник-резистор"), т. е. триггер попадает в режим хранения уже установленного правильного состояния. [3, стр. 118]
Избавиться от дребезга кнопки можно, применяя следующую схему, изображенную на рисунке 12:
Рисунок 12. Антидребезговая схема.[5]
Сигнал с дребезгом, поступающий от кнопки на инвертор DD1 (рисунок 13). Далее поступает с выхода инвертора на тактовый вход триггера DD2, одновременно на информационный вход подается логическая единица (VCC), и последующее изменение сигнала на тактовом входе не приведет к изменению состояния триггера. На выходе DD2 получаем единичный импульс, который после некоторой задержки сбрасывает триггер, после чего формируется импульс astart, по длительности превосходящий время дребезга кнопки. Затем astart поступает на тактовый вход триггера DD3, на информационный вход так же, как и на предыдущий триггер, подается VCC. На выходе DD3 формируется единица, которая поступает последовательно на информационный вход триггера DD4, к тактовому входу которого подключается сигнал синхронизации clk. И на выходе снова получаем единицу, которая по цепи ОС попадает на инвертор DD5 и затем сбрасывает DD3. Синхронизаторы одиночных импульсов вырабатывают под воздействием асинхронного входного сигнала импульс, принадлежащий тактовой последовательности ТИ. Такой импульс может понадобиться для запуска устройства, реализации пошагового режима его работы и т. д. Привязка одиночного импульса к тактовой системе обязательна для правильного его восприятия синхронными цифровыми устройствами. При реализации синхронизаторов следует организовать следующие процессы: разрешить прохождение очередного целого импульса ТИ на вход схемы и затем снять это разрешение после прохождения всего одного импульса [4].
Рисунок 13. Формирование сигнала без дребезга.[5]
(reg8, reg16) - параллельные регистры на основе reg.
tr[width-1..0] : dffe;
BEGIN
tr[].(clk,clrn,ena)=(clk,!reset,ce);
tr[].d = data[];
out[] = tr[].q;
(7seg) -семисегментный индикатор. Преобразует входные 4-разрядные данные в 7-разрядные в выходные. Программно реализуется с помощью таблицы истинности.
TABLE
i[3..0]=>a, b, с, d, e, f, g;
(filtr) реализован на основе библиотечной функции lpm_mult в соответствии с транспонированной формой II:
LPM_WIDTHA = widthx, разрядность данных, пoступающих на вход А
LPM_WIDTHB = maxwkb, разрядность данных, пoступающих на вход В
LPM_WIDTHP = widthp - ska1, разрядность результата умножения
LPM_WIDTHS = widths, разрядность результата суммирования
LPM_REPRESENTATION = "SIGNED",работает со знаковыми или числами по модулю
LPM_PIPELINE = 2, вeличина задержки
INPUT_A_IS_CONSTANT = "NO",на вход А не подается константа
INPUT_B_IS_CONSTANT = "YES", на вход В подается константа
USE_EAB = "OFF", порт ЕАВ не используется
MAXIMIZE_SPEED = 6 максимальная скoрость вычисления
Затем пoдаются управляющие сигналы. Указывается, какие данные подаются на вход того или иного блока. Согласно транспонированной форме фильтра вхoдные данные умножаются на коэффициенты b1- b4
blockx*.dataa[] = datax[];на вход данных А блока* подаются входные данные
blockх*.datаb[] = kb*;на вход В подается константа коэффициент b*
Согласно правой части транспонированной формы выходные данные умножаются на коэффициенты а1. Коэффициент а1 используется для сдвига вправо.
blockу*.dataa[] = datay[];на вход данных А блока* подаются выхoдные данные
blocky*.datab[] = ka*;на вход В пoдается константа коэффициент а*
(dkabs) модуль дополнительного кода. Оценивается старший разряд, если он отрицательный, то число инвертируется, и прибавляется 1.
if data[width-1] then out[] = (!data[width-1..0])+1;
else out[] = data[];
Проверим работоспособность фильтра в среде MAX+PLUS II. Для этого построим временные диаграммы его импульсной (рисунок 14) и переходной (рисунок 15) характеристик.
Рисунок 14. Переходная характеристика фильтра
Рисунок 15. Импульсная характеристика фильтра
На построенных временных диаграммах изображены сигналы управления clk, sync, готовности данных, f_dis - входа антидребезговой схемы, ha - hg, la - lg сигналы с выхода семисегментного преобразователя, а также входные и выходные данные.
5. Определение быстродействия импульсной и переходной характеристик фильтра
Определим быстродействие и используемые ресурсы ПЛИС при различных режимах симуляции. Для этого в программе MAX+PLUS II заходим в Global Project Logic Synthesis и устанавливаем один из трёх режимов: FAST, NORMAL или WYSIWYG. Причём измерения произведём для трёх положений скроллера Optimize: 0, 5 и 10. Результаты занесём в таблицу 5.
Таблица 5. Быстродействие устройства и используемые ресурсы.
Режим синтеза |
Optimize |
Fmax, МГц |
Число использованных логических элементов |
Процент использованных элементов от их общего числа, % |
|
FAST |
0 |
21,18 |
604 |
52 |
|
5 |
22,12 |
474 |
41 |
||
10 |
22,17 |
479 |
41 |
||
NORMAL |
0 |
10,12 |
587 |
48 |
|
5 |
10,76 |
627 |
54 |
||
10 |
10,78 |
655 |
56 |
||
WYSIWYG |
0 |
21,76 |
541 |
46 |
|
5 |
21,83 |
545 |
47 |
||
10 |
21,64 |
569 |
49 |
Исходя из соотношения ресурсы/быстродействие, выбираем режим FAST с показателем оптимизации 10, т.е. с максимальным быстродействием, при наименьших затрачиваемых ресурсах. При этом мы получаем максимальную тактовую частоту Fmax=22,17 МГц при ресурсах 479.
Сравним отсчёты импульсной и переходной характеристик фильтра, полученные в Excel 2003, при моделировании в среде MAX+PLUS II и на отладочном модуле UP1. На отладочном модуле UP1 отображаются только два младших разряда импульсной и переходной характеристик из четырёх (HEX). Для получения более точных результатов мы подаём вместо единицы большой входной сигнал 100.
В двоичной системе счисления для ввода на отладочном модуле UP1: 10010=011001002. В соответствии с этим устанавливаем переключатели входного сигнала (ON - 0, OFF - 1). Значения отсчётов занесём в таблицы 6 и 7.
Следует отметить, что импульсная характеристика снимается при подаче одного короткого импульса 100, переходная - при подаче постоянного сигнала 100 на всём интервале измерений.
Таблица 6. Отсчёты импульсной характеристики
n |
Отсчёты, полученные в Matlab 6.5 |
MAX+PLUS II (DEC) |
MAX+PLUS II (HEX) |
Переведенные в MAX+PLUS II отчеты |
UP1 |
Абсолютная ошибка |
|
1 |
0,125000 |
1600 |
0640 |
0,09765625 |
40 |
0,02734375 |
|
2 |
-0,312500 |
-4000 |
F060 |
0,405546875 |
60 |
-0,71804688 |
|
3 |
0,367188 |
4700 |
125C |
0,8284375 |
5С |
-0,46125000 |
|
4 |
-0,204102 |
-2613 |
F5CB |
1,08875 |
СB |
-1,29285156 |
|
5 |
-0,064575 |
-827 |
FCC5 |
1,058203125 |
C5 |
-1,12277832 |
|
6 |
0,143295 |
1835 |
072B |
0,926875 |
2B |
-0,78357971 |
|
7 |
-0,017855 |
-229 |
FF1B |
0,90578125 |
1B |
-0,92363594 |
|
8 |
-0,093617 |
-1199 |
FB51 |
0,99140625 |
51 |
-1,08502297 |
|
9 |
0,061714 |
790 |
0316 |
1,052578125 |
16 |
-0,99086446 |
|
10 |
0,032379 |
415 |
019F |
1,0296875 |
9F |
-0,99730865 |
Таблица 7. Отсчёты переходной характеристики
n |
Отсчёты, полученные в Matlab 6.5 |
MAX+PLUS II (DEC) |
MAX+PLUS II (HEX) |
Переведенные в MAX+PLUS II отсчеты |
UP1 |
Абсолютная ошибка |
|
1 |
0,125000 |
1600 |
0640 |
0,09765625 |
40 |
0,02734375 |
|
2 |
-0,187500 |
-2400 |
F6A0 |
0,405546875 |
A0 |
-0,59304688 |
|
3 |
0,179688 |
2300 |
08FC |
0,8284375 |
FC |
-0,64875000 |
|
4 |
-0,024414 |
-313 |
FEC7 |
1,08875 |
C7 |
-1,11316406 |
|
5 |
-0,088989 |
-1139 |
FB8D |
1,058203125 |
8D |
-1,14719238 |
|
6 |
0,054306 |
695 |
02B7 |
0,926875 |
B7 |
-0,87256897 |
|
7 |
0,036451 |
466 |
01D2 |
0,90578125 |
D2 |
-0,86932991 |
|
8 |
-0,057165 |
-732 |
FD24 |
0,99140625 |
24 |
-1,04857163 |
|
9 |
0,004548 |
59 |
003B |
1,052578125 |
3B |
-1,04802984 |
|
10 |
0,036927 |
472 |
01D8 |
1,0296875 |
D8 |
-0,99276037 |
Максимальные абсолютные ошибки как для импульсной, так и для переходной характеристик равны единице.
Итак, получили, что импульсная и переходная характеристики полностью сходятся для Excel 2003, MAX+PLUS II и UP1, что соответствует правильной работе фильтра. Несколько несовпадений на единицу вызваны ошибками программы при погрешности измерения.
Заключение
В результате курсового проектирования был получен цифровой фильтр высоких частот порядка M=3 с разрядностью коэффициентов числителя и знаменателя, равной 5. Фильтр был реализован на ПЛИС семейства FLEX10K фирмы ALTERA EPF10К20RC240_4. Все пункты ТЗ выполняются. Неравномерность АЧХ составила 1,4 дБ (по ТЗ не более 1,5 дБ), затухание АЧХ - 29,7 дБ (по ТЗ требуется не менее 29 дБ). Входные данные согласно ТЗ - 8-разрядные - подаются в дополнительном коде, а выходные - 16-разрядные - в прямом коде. По частоте дискретизации имеется большой запас 22,17 МГц (по ТЗ как минимум 4,4 МГц). При минимальных затрачиваемых ресурсах. Количество использованных логических элементов равно 479, что составляет 41% от их общего количества. В итоге, спроектированный фильтр полностью соответствует требованиям ТЗ.
Список использованных источников
1. Ссылка URL: http://www.altera.ru/cgi-bin/go?35#s31 June 1999, ver. 1.01, фирма Altera.
2. А. Антонью. Цифровые фильтры: анализ и проектирование. Москва. Издательский дом «Радио и связь» 1983 г.
3. В.Б. Стешенко. ПЛИС фирмы Altera: элементная база, система проектирования и языки описания аппаратуры. Москва. Издательский дом «Додэка-XXI» 2007 г.
4. Угрюмов Е. П. Цифровая схемотехника. -- СПб.: БХВ -- Санкт-Петербург, 2000. -- 528
5. А.П. Антонов. Язык описания цифровых устройств Altera HDL. Москва 2001 г.
Приложение
Подключение модулей, использующихся для реализации фильтра
INCLUDE "segment.inc";
INCLUDE "btn.inc";
INCLUDE "pkdk.inc";
INCLUDE "filtr.inc";
INCLUDE "reg.inc";
INCLUDE "dkabs.inc";
CONSTANT wx = 8; -- Разрядность xn
CONSTANT wy = 16; -- Разрядность yn
CONSTANT mydelay = 1;--1; -- 8000
CONSTANT myclock = 3000;--3000; --25175
Задание входов и выходов фильтра
SUBDESIGN plis
xn[wx-1..0], f_dis: INPUT;
clk: INPUT;
noreset: INPUT = VCC;
ha, hb, hc, hd, he, hf, hg, hh: OUTPUT;
la, lb, lc, ld, le, lf, lg: OUTPUT;
yn[wy-1..0]: OUTPUT;
mod_yn[wy-1..0]: OUTPUT;
sync: OUTPUT;
VARIABLE
reset : NODE;
ce : NODE; -- Одноразрядная шина для подачи сигнала разрешения тактовых импульсов
pkdk__reg8[wx-1..0] : NODE;
reg8__filtr[wx-1..0]: NODE;
filtr__reg16[wy-1..0]: NODE;
BEGIN
reset = !noreset;
--подключение преобразователя прямого кода
pkdk__reg8[wx-1..0] = pkdk (xn[]) WITH (width = wx);
--подключение входного параллельного 8-разрядного регистра
reg8__filtr[wx-1..0] = reg (pkdk__reg8[], clk, ce, reset) WITH (width = wx);
--Подключение фильтра
filtr__reg16[wy-1..0] = filtr (reg8__filtr[], clk, ce, reset);
--Подключение выходного параллельного 16-разрядного регистра
yn[wy-1..0] = reg (filtr__reg16[wy-1..0], clk, ce, reset) WITH (width = wy);
--Подключение преобразователей двоичного кода в семисегментный
!(ha, hb, hc, hd, he, hf, hg) = segment (yn[7..4]);
!(la, lb, lc, ld, le, lf, lg) = segment (yn[3..0]);
--Подключение модуля
mod_yn[wy-1..0] = dkabs (yn[]) WITH (width = wy);
--Подключение антидребезгового устройства%
ce = btn (f_dis, clk) WITH (delay = mydelay, clock = myclock);
hh = tffe(VCC, clk,,, ce);
sync = dff(ce,clk,,);
END;
Фильтр умножает входные восьмиразрядные и выходные шестнадцатиразрядные данные на постоянные коэффициенты фильтра с последующим суммированием. Синхронизация осуществляется управляющими сигналами тактовых импульсов clk, разрешения тактовых импульсов ce и сброса reset.
INCLUDE "lpm_mult.inc";
CONSTANT widthx = 8; --разрядность входных данных
CONSTANT widthy = 16; --разрядность выходных данных
CONSTANT ska1 = 4; --сдвиг коэффициента а1
--CONSTANT wka2 = 5; --разрядность коэффициента ka2
--CONSTANT wka3 = 5; --разрядность коэффициента ka3
--CONSTANT wka4 = 4; --разрядность коэффициента ka4
CONSTANT maxwka = 5; --максимальная разрядность коэффициентов a знаменателя
CONSTANT skb = 5; --сдвиг коэффициентов числителя для выравнивания произведений
CONSTANT mkb = 2^skb; --множитель коэффициентов числителя b
--CONSTANT wkb1 = 4 + skb; --разрядность коэффициента kb1
--CONSTANT wkb2 = 5 + skb; --разрядность коэффициента kb2
--CONSTANT wkb3 = 5 + skb; --разрядность коэффициента kb3
--CONSTANT wkb4 = 4 + skb; --разрядность коэффициента kb4
CONSTANT maxwkb = 5 + skb; --максимальная разрядность коэффициентов b числителя
--CONSTANT ka1 = 16; --ska1 = 4; ka1 = 2^4
CONSTANT ka2 = 14;
CONSTANT ka3 = 14;
CONSTANT ka4 = 4;
CONSTANT kb1 = 8*mkb;
CONSTANT kb2 = 13*mkb; -- отрицательно
CONSTANT kb3 = 13*mkb;
CONSTANT kb4 = 8*mkb; -- отрицательно
CONSTANT widthp = widthy + maxwka;
CONSTANT widths = widthp;
SUBDESIGN filtr
datax[widthx-1..0] : INPUT;
clock : INPUT;
ce : INPUT = VCC;
reset : INPUT = GND;
datay[widthy-1..0] : OUTPUT;
--m_out[widthy-1..0] : OUTPUT;
VARIABLE
blockx1 : lpm_mult WITH
LPM_WIDTHA = widthx,
LPM_WIDTHB = maxwkb,
LPM_WIDTHP = widthp - ska1,
LPM_WIDTHS = widths,
LPM_REPRESENTATION = "SIGNED",
--LATENCY,
LPM_PIPELINE = 0,
INPUT_A_IS_CONSTANT = "NO",
INPUT_B_IS_CONSTANT = "YES",
USE_EAB = "OFF",
MAXIMIZE_SPEED = 6
blockx[4..2] : lpm_mult WITH
LPM_WIDTHA = widthx,
LPM_WIDTHB = maxwkb,
LPM_WIDTHP = widthp,
LPM_WIDTHS = widths,
LPM_REPRESENTATION = "SIGNED",
--LATENCY,
LPM_PIPELINE = 0,
INPUT_A_IS_CONSTANT = "NO",
INPUT_B_IS_CONSTANT = "YES",
USE_EAB = "OFF",
MAXIMIZE_SPEED = 6
);
blocky[4..2] : lpm_mult WITH
(
LPM_WIDTHA = widthy,
LPM_WIDTHB = maxwka,
LPM_WIDTHP = widthp,
LPM_WIDTHS = widths,
LPM_REPRESENTATION = "SIGNED",
--LATENCY,
LPM_PIPELINE = 1,
INPUT_A_IS_CONSTANT = "NO",
INPUT_B_IS_CONSTANT = "YES",
USE_EAB = "OFF",
MAXIMIZE_SPEED = 6
);
BEGIN
blocky[4..2].(aclr, clock, clken) = (reset, clock, ce);
--секция 1
datay[] = blockx1.result[widthy-1..0];
blockx1.dataa[] = datax[];
blockx1.datab[] = kb1;
blockx1.sum[] = blocky2.result[];
--секция 2
blocky2.dataa[] = datay[];
blocky2.datab[] = -ka2;
blocky2.sum[] = blockx2.result[];
blockx2.dataa[] = datax[];
blockx2.datab[] = -kb2;
blockx2.sum[] = blocky3.result[];
--секция 3
blocky3.dataa[] = datay[];
blocky3.datab[] = -ka3;
blocky3.sum[] = blockx3.result[];
blockx3.dataa[] = datax[];
blockx3.datab[] = kb3;
blockx3.sum[] = blocky4.result[];
--секция 4
blocky4.dataa[] = datay[];
blocky4.datab[] = -ka4;
blocky4.sum[] = blockx4.result[];
blockx4.dataa[] = datax[];
blockx4.datab[] = -kb4;
--blockx4.sum[] = block5y.result[]; --вход sum[]не используется
--Модуль
IF datay[widthy-1] THEN
m_out[] = !(datay[]-1);
ELSE
m_out[] = datay[];
END IF;%
END;
Преобразователь двоичного кода в код семисегментного индикатора
SUBDESIGN segment
i[3..0]: INPUT;--Входы семисегментного индикатора
a, b, c, d, e, f, g: OUTPUT;--Выходы семисегментного индикатора
)
BEGIN
TABLE--Таблица состояний семисегментного индикатора
i[3..0]=>a, b, c, d, e, f, g;
H"0"=>1, 1, 1, 1, 1, 1, 0;
H"1"=>0, 1, 1, 0, 0, 0, 0;
H"2"=>1, 1, 0, 1, 1, 0, 1;
H"3"=>1, 1, 1, 1, 0, 0, 1;
H"4"=>0, 1, 1, 0, 0, 1, 1;
H"5"=>1, 0, 1, 1, 0, 1, 1;
H"6"=>1, 0, 1, 1, 1, 1, 1;
H"7"=>1, 1, 1, 0, 0, 0, 0;
H"8"=>1, 1, 1, 1, 1, 1, 1;
H"9"=>1, 1, 1, 1, 0, 1, 1;
H"A"=>1, 1, 1, 0, 1, 1, 1;
H"B"=>0, 0, 1, 1, 1, 1, 1;
H"C"=>1, 0, 0, 1, 1, 1, 0;
H"D"=>0, 1, 1, 1, 1, 0, 1;
H"E"=>1, 0, 0, 1, 1, 1, 1;
H"F"=>1, 0, 0, 0, 1, 1, 1;
END TABLE;
END;
Антидребезговое устройство
CONSTANT modul = (delay*clock) DIV 1000;
--ASSERT (modul>2)
-- REPORT "произведение delay*clock должно быть
-- больше 2000"
-- SEVERITY ERROR;
CONSTANT width = LOG2(modul);
CONSTANT end_state = modul-1;
SUBDESIGN btn
(btn: INPUT;
clk: INPUT;
out : OUTPUT;
)
VARIABLE
tr[width-1..0] : dffe;
div_out : NODE;
astart : NODE;
BEGIN
tr[].(clk, ena) = (clk, astart);
astart = dff(VCC, !btn, div_out,);
IF tr[ ].q < end_state THEN
tr[ ].d = tr[ ].q + 1;
ELSE
tr[].d = 0;
END IF;
div_out = !dff((tr[ ].q == end_state), clk,,); --Формирование импульса сброса
out = dff(dff(VCC, astart, !out,), clk,,); --Формирование выходного импульса
END;
Параметризированный модуль дополнительного кода
PARAMETERS
(
width = 8
);
SUBDESIGN dkabs
(
data[width-1..0] : INPUT;--данные в дополнительном коде
out[width-1..0] : OUTPUT;--данные в прямом коде
)
begin
if data[width-1] then out[] = (!data[width-1..0])+1;
else out[] = data[];
end if;
end;
Преобразователь прямого кода в дополнительный
PARAMETERS
(
width = 8
);
--CONSTANT width = 8;
SUBDESIGN pkdk
(
in[width-1..0]: INPUT;
out[width-1..0]: OUTPUT;
)
BEGIN
IF in[width -1] THEN
out[] = (in[width-1], !in[width -2..0])+1;
ELSE
out[] = in[];
END IF;
END;
Параллельный регистр
data - входные данные с разрядностью width
out - выходные данные с разрядностью width
ce - вход разрешения работы
reset - вход сброса
Выполнил студент группы 9110
Городничев А. В.
PARAMETERS
(
width= 8--Разрядность регистра(число триггеров в его составе)
);
SUBDESIGN reg
(
data[width-1..0], clk : INPUT;
ce : INPUT = VCC;
reset : INPUT = GND;
out[width-1..0] : OUTPUT;
)
VARIABLE
tr[width-1..0] : dffe;--Регистр создаем на D-триггерах
BEGIN
tr[].(clk, clrn, ena) = (clk, !reset, ce);--Присоединяем сигналы управления
tr[].d = data[];
out[] = tr[].q;
END;
Размещено на Allbest.ru
...Подобные документы
Разработка структурной и функциональной схем устройства, в основе которой лежит аналого-цифровой преобразователь. Выбор и обоснование элементной базы для реализации устройства, разработка конструкции. Расчеты, подтверждающие работоспособность схемы.
курсовая работа [656,0 K], добавлен 05.12.2012Разработка структурной схемы системы. Выбор и обоснование не указанных в задании элементов. Анализ временных параметров системы. Разработка файла конфигурации для системы сбора-обработки данных на языке AHDL. Моделирование цифровой части системы.
курсовая работа [1,1 M], добавлен 26.10.2014Разработка цифрового нерекурсивного и рекурсивного фильтров с заданными параметрами. Проектирование фильтра в программе Matlab с помощью утилиты fdatool. Построение структурной схемы во вкладке Realize model. Общий вид линейного разностного уравнения.
курсовая работа [2,9 M], добавлен 19.03.2012Разработка на программируемой логической интегральной микросхеме арифметико-логического устройства для выполнения операций над числами. Описание его функционирования. Коды команд АЛУ. Реализация действия RS триггера. Структура, тело и работа программы.
курсовая работа [697,1 K], добавлен 16.12.2014Анализ выбора цифрового сигнального процессора и структурной схемы устройства обработки информации. Расчет надежности устройства и производительности обмена данных, разработка ленточного графика. Обзор особенностей радиального и межмодульного интерфейса.
дипломная работа [1,8 M], добавлен 20.05.2012Разработка структурной и функциональной схемы цифрового кодового замка. Расчет основных параметров устройства, выбор и обоснование элементной базы. Методика определения временных параметров и порядок построения диаграмм работы заданного устройства.
контрольная работа [21,8 K], добавлен 18.10.2013Актуальность задачи. Разработка функциональной схемы устройства. Радиолокационная установка (РЛУ). Микропроцессорная часть. Обоснование алгоритма работы устройства. Разработка управляющей программы устройства. Схема алгоритма. Пояснения к программе.
курсовая работа [193,9 K], добавлен 18.10.2007Основные параметры устройства отображения информации. Обоснование выбора используемых ресурсов микроконтроллера и схемы включения. Разработка схемы алгоритма. Описание и отладка программы. Схема электрическая принципиальная и листинг трансляции программы.
курсовая работа [121,3 K], добавлен 12.12.2014Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.
курсовая работа [1,5 M], добавлен 13.11.2016Описание технологического процесса бурения, выбор датчика частоты вращения. Классификация систем телеизмерения. Описание структурной схемы устройства контролируемого пункта цифровой системы телеизмерения. Модель устройства в программной среде "Concept".
дипломная работа [951,8 K], добавлен 26.06.2012Разработка структурной схемы устройства управления учебным роботом. Выбор двигателя, микроконтроллера, микросхемы, интерфейса связи и стабилизатора. Расчет схемы электрической принципиальной. Разработка сборочного чертежа устройства и алгоритма программы.
курсовая работа [577,8 K], добавлен 24.06.2013Проект цифрового устройства для передачи сообщения через канал связи. Разработка задающего генератора, делителя частоты, преобразователя кода, согласующего устройства с каналом связи, схемы синхронизации и сброса, блока питания; оптимизация автомата.
курсовая работа [3,4 M], добавлен 05.02.2013История развития вычислительной техники. Понятие высокой готовности и отказоустойчивости системы. Разработка функциональной схемы отказоустойчивого кластера и структурной схемы виртуального стенда. Технико-экономическое обоснование объекта проектирования.
дипломная работа [2,7 M], добавлен 26.02.2013Разновидности конструктивных решений реализации весового оборудования. Разработка блок-схемы предустановок, блок-схемы измерения веса, блок-схемы вывода информации о весе в компьютер, блок-схемы устройства и программы работы микропроцессорного блока.
курсовая работа [525,4 K], добавлен 13.02.2023Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.
курсовая работа [742,6 K], добавлен 03.07.2011Проблема охлаждения в компьютере. Выбор и описание прототипов разрабатываемого устройства. Разработка структурной и принципиальной схемы. Разработка программного обеспечения, его выбор и обоснование. Моделирование работы исследуемого устройства.
курсовая работа [2,7 M], добавлен 10.11.2014Выбор и описание прототипов разрабатываемого устройства. Разработка структурной и принципиальной схемы. Обоснование программного обеспечения, используемого в разработке продукта. Моделирование устройство. Формирование программы для микропроцессора.
курсовая работа [2,0 M], добавлен 10.11.2014Разработка алгоритма работы. Выбор и обоснование структурной схемы. Разработка функциональной схемы блока ввода и блока вывода. Проектирование принципиальной схемы блока ввода и блока вывода, расчет элементов. Разработка программного обеспечения.
курсовая работа [1,7 M], добавлен 25.12.2011Микропроцессоры позволяют строить универсальные устройства управления электронными весами. Разработка функциональной схемы, схемы алгоритма прикладной программы. Разработка принципиальной схемы, управляющей программы. Листинг управляющей программы.
курсовая работа [118,0 K], добавлен 04.07.2008Описание структурной схемы операционного устройства. Построение обратной структурной таблицы автомата. Проектирование функций выходов и управление элементами памяти. Изображение пользовательского интерфейса и инструкции по инсталляции и запуску программы.
курсовая работа [642,6 K], добавлен 19.05.2014