Цифровой фильтр высокой частоты

Разработка, обоснование структурной схемы устройства. Разработка, отладка программы на языке 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

-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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.