ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
по дисциплине «Основы проектирования цифровых устройств на ПЛИС» Студент Иванов А. В. кодIe0L3_04_07_1_40 группа ХХХ 1. Тема Цифровой фильтр низкой частоты 2. Срок представления проекта к защите ХХ ноября 2009 г. 3. Исходные данные для проектирования: 3.1. Линейное разностное уравнение фильтра: 3.2. Порядок фильтра: M = 3 3.3. Коэффициенты фильтра:
3.4. Разрядность коэффициентов: выбрать (см.п.3.5 и 3.6. ТЗ) 3.5. Неравномерность АЧХ в полосе пропускания: не более 1,5 дБ 3.6. Затухание АЧХ в полосе непропускания: не менее 39 дБ 3.7. Входные данные: 8-разрядный параллельный обратный код 3.8. Выходные данные: 16-разрядный параллельный прямой код 3.9. Частота дискретизации: 3,6 МГц 3.10. Тактовая частота синхронизации: 25,175 МГц 3.11. ПЛИС: EPF10K20RC240-4 (семейство FLEX10K фирмы Altera) 4. Содержание пояснительной записки курсового проекта 4.1. Титульный лист 4.2. Задание на курсовую работу 4.3. Содержание 4.4. Введение 4.5. Анализ, формализация и декомпозиция задачи 4.6. Разработка и обоснование структурной схемы устройства 4.7. Составление и описание принципиальной схемы устройства 4.8. Разработка и отладка программы на языке AHDL 4.9. Определение быстродействия, импульсной и переходной характеристик фильтра 4.10. Заключение 4.11. Список использованных источников 4.12. Приложение 5. Перечень графического материала: схема принципиальная электрическая
precise (синий): без округления fix (зеленый) –округление усечением - отбрасыванием дробной части; round (красный) – округление до ближайшего целого; floor (голубой) – округление до ближайшего меньшего целого; ceil (сиреневый) – округление до ближайшего большего целого.
Таблица 3. Основные параметры фильтров
INCLUDE "lpm_mult.inc"; INCLUDE "dk_mod.inc"; %PARAMETERS ( );%
CONSTANT widthy = 16; --разрядность выходных данных CONSTANT ska1 = 6; --сдвиг коэффициента а1 CONSTANT wka2 = 7; --разрядность коэффициента ka2 CONSTANT wka3 = 7; --разрядность коэффициента ka3 CONSTANT wka4 = 6; --разрядность коэффициента ka4 CONSTANT maxwka = 7; --максимальная разрядность коэффициентов a знаменателя
CONSTANT widthx = 8; --разрядность входных данных CONSTANT skb = 5; --сдвиг коэффициентов числителя для --выравнивания произведений CONSTANT mkb = 2^skb; --множитель коэффициентов числителя b CONSTANT wkb1 = 6+skb; --разрядность коэффициента kb1 CONSTANT wkb2 = 7+skb; --разрядность коэффициента kb2 CONSTANT wkb3 = 7+skb; --разрядность коэффициента kb3 CONSTANT wkb4 = 6+skb; --разрядность коэффициента kb4 CONSTANT maxwkb = 7+skb; --максимальная разрядность коэффициентов --b числителя
CONSTANT widthp = widthy + maxwka; CONSTANT widths = widthp;
--CONSTANT ka1 = 64; -ska1 = 6 ka1 = 2^6 CONSTANT ka2 = 61; --wa2 = 7 CONSTANT ka3 = B"1001000"; --wa3 = 7; ka3 = -56; CONSTANT ka4 = 19; --wa4 = 6
CONSTANT kb1 = 25*mkb; --wb1 = 6 CONSTANT kb2 = 55*mkb; --wb1 = 7 CONSTANT kb3 = 55*mkb; --wb1 = 7 CONSTANT kb4 = 25*mkb; --wb1 = 6
SUBDESIGN filter_1 ( datax[widthx-1..0], clock : INPUT; reset : INPUT = GND; ce : INPUT = VCC;
mdatay[widthy-1..0] : OUTPUT; datay[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 blocky2.(aclr, clock, clken) = (reset, clock, ce); blocky[3..1].(aclr, clock, clken) = (reset, clk, ce); blocky3.(aclr, clock, clken) = (reset, clock, ce); blocky4.(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[]не используется
--вычисление модуля выходного сигнала datay[] mdatay[] = dk_mod(datay[]) with (width = widthy);
END;
datax[] = 100 m = 8; n = 6, d = 5. M = 2^8; N = 2^6; D = 2^5. Результат увеличен в 100*M*D/N = 100*2^7 раз.
ПЛИС EPF10K20RC240-4; Использовано МЯ 648; % использованых МЯ 56% Входных контактов 11; Выходных контактов 32;
Таблица 3. Сравнение отсчетов импульсной ипереходной характеристик фильтра
G(n) – Значения отсчетов импульсной характеристики, полученные симулятором MAX+plus II gп(n) – Значения отсчетов импульсной характеристики, рассчитанные для округленных коэффициентов фильтра в Excel 2003 H(n) – Значения отсчетов переходной характеристики, полученные симулятором MAX+plus II hп(n) – Значения отсчетов переходной характеристики, рассчитанные для округленных коэффициентов фильтра в Excel 2003
Таблица 4. Сравнение стилей синтеза по быстродействию и ресурсам
Примечание:Синим цветом выделены результаты анализа проекта с табличным умножителем (в блоке blockx1 установлен параметр USE_EAB = "ON"). ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|