(Какое отношение имеет выделенный материал к разделу??)
При разработке программы потребовалось написать на языке AHDL следующие модули:
1)Преобразователь кода из прямого в дополнительный(Имя?):
Если старший бит входных данных равен нулю, то код не изменяется, если равен единице,то все разряды кроме старшего инвертируются, а затем к младшему прибавляется единица.
2)Антидребезговая схема(Имя?):
На выходе триггера схемы (Где он? Привести схему! Неясно, как утраняется дребезг) по тактовому сигналу появляется единица, при появлении следующего тактового импульса на выходе сигнал устанавливается в ноль.В итоге на выходе получаем импульс длительностью в один такт, который поступает на входы СЕ блоков фильтра и который разрешает срабатывание тактового импульса. Кнопка антидребезга нужна для отладки на макете.
3) основной блок схемы-фильтр(Имя?):
Входная 8-ми разрядная последовательность умножается на заданные коэффициенты числителя и складывается с произведением коэффициентов знаменателя, взятых с противоположным знаком, и последовательности 16-ти разрядных переменных. (Как формируется 16-разрядный код?? Как разрабатывался фильтр?)
Составление фильтра состоит в соединении отдельных модулей, в данной работе используются 3 модуля. Они соединены один за другим.
4)Параллельные параметризированные регистры(Имя?) предназначенны для хранения информации в течение периода частоты дискретизации
5)Семисегментный индикатор(?!) (Имя?) отображает четырехразрядные данные.
(Содержание раздела не соответствует названию.)
Определить, каким образом (как) реализовать операции (действия, блоки, модули), представленные на структурной схеме. Это можно сделать в виде:
Алгоритмов работы и их описания . Привести описание алгоритма на языке AHDL с пояснениями;
Структурных схем и их описания. Привести описание структурной схемы на языке AHDL с пояснениями;
Фрагментов программ на языке AHDL и их описание.
При описании работы желательно привести временные диаграммы работы блока (модуля, операции, действия)
Определение быстродействия, импульсной и переходной характеристик устройства
Проанализировав быстродействие(Каким образом??), получены следующие данные:
-период тактовых импульсов-115.8 нс
-частота дискретизации-8.63 МГц
По заданию:
Частота дискретизации: 2,8 МГц
Соответственно, получаем большой запас по частоте:
8.63-2.8=5.83 МГц.
Сравним значения отсчетов импульсной и переходной характеристик,полученных с помощью MAX+PLUS II, MATLAB и отладочного модуля. Это необходимо для проверки правильности работы всего устройства.
№ | Matlab 6.5 | MAX+plus II(DEC) | MAX+plus II(HEX) | MAX+plus II(переведенные) | Отладочныймодуль |
1 | 0,125 | 800 | 0320 | 0.125 | 20 |
2 | -0,334 | 63398 | F7A6 | -0.334 | A6 |
3 | 0,415 | 2658 | 0A62 | 0.4153 | 62 |
4 | -0,244 | 63964 | F9DC | -0.246 | DC |
5 | -0,0488 | 65219 | FEC3 | -0.0491 | C3 |
6 | 0,148 | 994 | 03B0 | 0.1553 | B0 |
7 | -0,0236 | 65390 | FF6E | -0.024 | 6E |
8 | -0,0957 | 64919 | FD97 | -0.0965 | 97 |
9 | 0,0678 | 433 | 01B1 | 0.0676 | B1 |
10 | 0,0302 | 191 | 00BF | 0.0298 | BF |
11 | -0,0607 | 65147 | FE7B | -0.0615 | 7B |
12 | 0,00998 | 66 | 0042 | 0.01 | 42 |
13 | 0,0362 | 231 | 00E7 | 0.0361 | E7 |
14 | -0,0242 | 65373 | FF5D | -0.0254 | 5D |
15 | -0,0108 | 65461 | FFB5 | -0.011 | B5 |
Таблица 4 Отсчеты импульсной характеристики
№ | Matlab 6.5 | MAX+plus II(DEC) | MAX+plus II(HEX) | MAX+plus II(переведенные) | Отладочныймодуль |
1 | 0,125 | 800 | 0320 | 0.125 | 20 |
2 | -0,209 | 64198 | FAC6 | -0.20906 | C6 |
3 | 0,206 | 1320 | 0528 | 0.20625 | 28 |
4 | -0,0401 | 65285 | FF05 | -0.0397 | 05 |
5 | -0,0882 | 64968 | FDC8 | -00875 | C8 |
6 | 0,0588 | 375 | 0177 | 0.05859 | 77 |
7 | 0,0354 | 230 | 00E6 | 0.0359 | E6 |
8 | -0,0595 | 65149 | FE7D | -0.0592 | 7D |
9 | 0,00865 | 46 | 002E | 0.0718 | 2E |
10 | 0,0354 | 237 | 00ED | 0.037 | ED |
11 | -0,0235 | 65385 | FF69 | -0.02375 | 69 |
12 | -0,0133 | 65451 | FFAB | -0.0135 | AB |
13 | 0,0226 | 146 | 0092 | 0.0228 | 92 |
14 | -0,00278 | 65519 | FFEF | -0.00285 | EF |
15 | -0,0141 | 65445 | FFA5 | -0.01425 | A5 |
Таблица 5 Отсчеты переходной характеристики
Переведенные отсчеты получаем путем деления прямых десятичных значений(??), полученных из дополнительного кода) на 6400(так как масштабирующий коэффициент 26 =64 и амплитуда входного воздействия принята равной 100).
(Как получены отрицательные значения?)
Заключение
В данной работе был спроектирован цифровой фильтр высокой частоты, удовлетворяющий всем требованиям технического задания. Проект занял на интегральной схеме 60% ресурсов или 694 логических ячеек. Были получены навыки программирования ПЛИС. Погрешность характеристик фильтра связана с округлением его коэффициентов. (??)
(Как выполнены требования ТЗ?)
Список литературы
Угрюмов Е.П. Цифровая схемотехника: Учебное пособие. Санкт-Петербург(?Издательство?) 2000 г.
Конфигурирование ПЛИС Altera со статической памятью конфигурации. Р.А. Мяльк. Санкт-Петербург (?Издательство?) 2003 г.
Стешенко В.Б. Плис фирмы ALTERA: элементная база, система проектирования и языки описания аппаратуры. М., ДОДЭКА-XXI, 2007 (2002).
Антонов А.П. Язык описания цифровых устройств Altera AHDL. :Практический курс. М., Радио Софт, 2001 г.
Приложение
%
Курсовая работа по дисциплине:
"Основы проектирования цифровых устройств на ПЛИС"
На тему: "Цифровой фильтр высокой частоты"
Выполнил: студент группы 5110
Горюнов Д.Ю.
Проверил: Соколов Ю.П.
%
include "filter.inc";
include "button.inc";
include "ppreg.inc";
include "pk_dk.inc";
include "7segment.inc";
constant razx = 8;--Что означают приведенные константы?
constant razy = 16;--Откуда они появились?
constant razb = 4;
constant raza = 8;
subdesign final
(
data[razx-1..0],clk,knopka : input;
reset : input = gnd;
out[razy-1..0] : output;
synhr,h : output;
la,lb,lc,ld,le,lf,lg : output;
ha,hb,hc,hd,he,hf,hg : output;
)
variable
preobr_cod : pk_dk with (width = razx);
h7seg,l7seg : 7segment;
reg_in : ppreg with (width = razx);
reg_out : ppreg with (width = razy);
btn : button with ( delay = 1, clock = 3175); --8000 25175
filtr_gor : filter with
(
wx = 8, --разрядностьшины xn
wy = 16, --разрядность шины yn—Откуда появились параметры??
wc1 = 5, -- разрядность коэффициентов b
wc2 = 7, -- разрядность коэффициентов a
rs = 6, --расширение коэффициента b
ws = 23, --разрядность шины sum
wp = 23, --разрядность шины result
b1 = 8, --коэффициент b1
b2 = B"10010", --коэффициент b2
b3 = 14, --коэффициент b3
b4 = B"11000", --коэффициент b4
a2 = B"1000101", --коэффициент a2
a3 = B"1000111", --коэффициент a3
a4 = B"1101110", --коэффициент a4
wm = 6 –сдвиг—Что значит параметр?
);--Значения параметров НЕ ПРИВЕДЕНО в пояснительной записке!!
ce : node;
begin
reg_in.(clk,reset)=(clk,!reset);
reg_out.(clk,reset)=(clk,!reset);
btn.clk = clk;
filtr_gor.(clk,reset)=(clk,!reset);
preobr_cod.in[] = data[];
reg_in.data[] = preobr_cod.out[];
filtr_gor.vxod[]=reg_in.out[];
reg_out.data[]=filtr_gor.vixod[];
out[]=reg_out.out[];
l7seg.i[]=out[3..0];
h7seg.i[]=out[7..4];
(la,lb,lc,ld,le,lf,lg) = l7seg.(a,b,c,d,e,f,g);
(ha,hb,hc,hd,he,hf,hg) = h7seg.(a,b,c,d,e,f,g);
btn.btn = knopka;
ce = btn.out;
filtr_gor.ce = ce;
reg_in.ce = ce;
reg_out.ce = ce;
synhr = ce;
h = tffe(VCC,clk, , ,ce);
end;
%
Фильтр
Выполнил ст.гр.№ 5110
ГорюновД.Ю.
%
include "mult_a1.inc";
include "mult_b.inc";
include "mult_c.inc";
PARAMETERS
(
wx = 8, --разрядностьшины xn
wy = 16, --разрядностьшины yn
wc1 = 5, -- разрядность коэффициентов b
wc2 = 7, -- разрядность коэффициентов a
rs = 6, --расширение коэффициента b
ws = 23, --разрядность шины sum
wp = 23, --разрядность шины result
b1 = 8, --коэффициент b1
b2 = B"10010", --коэффициент b2
b3 = 14, --коэффициент b3
b4 = B"11000", --коэффициент b4
a2 = B"1000101", --коэффициент a2
a3 = B"1000111", --коэффициент a3
a4 = B"1101110", --коэффициент a4
wm = 6 --сдвиг
);
subdesign filter
(
vxod[wx-1..0], clk : input;
ce : input=vcc;
reset : input=gnd;
vixod[wy-1..0] : output;
)
variable
sec_up : mult_a1 with (widthx = wx, widthc = wc1+rs, widths = ws, widthp = wp, bn= b1*(2^rs));
sec_mid1 : mult_b with (widthx = wx, widthy = wy, widthc1 = wc1+rs, widthc2=wc2, widthp = wp, an = a2, bn = b2*(2^rs));
sec_mid2 : mult_b with (widthx = wx, widthy = wy, widthc1 = wc1+rs, widthc2=wc2, widthp = wp, an = a3, bn = b3*(2^rs));
sec_down : mult_c with (widthx = wx, widthy = wy, widthc1 = wc1+rs, widthc2=wc2, widthp = wp, an = a4, bn = b4*(2^rs));
V[wy-1..0] : node;
begin
sec_mid1.(clock,clken,aclr) = (clk,ce,reset);
sec_mid2.(clock,clken,aclr) = (clk,ce,reset);
sec_down.(clock,clken,aclr) = (clk,ce,reset);
sec_up.xn[]=vxod[];
sec_mid1.xn[]=vxod[];
sec_mid2.xn[]=vxod[];
sec_down.xn[]=vxod[];
V[] = sec_up.result[wm+wy-1..wm];
sec_mid1.yn[]=V[];
sec_mid2.yn[]=V[];
sec_down.yn[]=V[];
sec_up.sum[]=sec_mid1.result[];
sec_mid1.sum[]=sec_mid2.result[];
sec_mid2.sum[]=sec_down.result[];
vixod[]=V[];
end;
%
Преобразователь кода из прямого в дополнительный
Выполнил ст.гр.№ 5110
Горюнов Д.Ю.
%
parameters
(
width=8
);
subdesign pk_dk
(
in[width-1..0] : input;
out[width-1..0] : output;
)
variable
sign : node;
begin
sign = in[width-1] ;
if sign then out[] = (sign,!in[width-2..0])+1;
else out[] = in[];
end if;
end;
%
Параллельный параметризированный регистр
Выполнил ст.гр.№ 5110
ГорюновД.Ю.
%
PARAMETERS
(
width=8
);
SUBDESIGN ppreg
(
data[width-1..0],clk : input;
ce : input = vcc;
reset : input = gnd;
out[width-1..0] : output;
)
variable
out[width-1..0] : dffe;
begin
out[].(clk,clrn,ena)=(clk,!reset,ce);
out[] = data[];
end;
%
Антидребезг
Выполнилст.гр.№ 5110
Горюнов Д.Ю.
%
PARAMETERS
(
delay = 1 --величина задежки в микросекундах
, clock = 5175 -- тактовая частота в килогерцах
);
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 button
(
btn : INPUT;