Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Как было подсчитано ранее число тактов на выполнение умножений равно 2(92+89)=362. Помимо этого в процессе определения выходного отсчета необходимо выполнить 24 операции сложения, которые занимают в общей сложности 24(7+4+7)=432 такта. Т.о. в общее число тактов, необходимых для вычисления одного выходного отсчета равно 794 такта.
Мы дискретизируем входной сигнал с частотой 15 кГц, тогда максимальное время, затрачиваемое на обработку одного выходного отсчета равно
.
При тактовой частоте 1,5 МГц время обработки одного выходного отсчета равно
. Это нас не устраивает, поэтому придется поменять элементную базу. Вместо микропроцессора будет использоваться ПЛИС фирмы ALTERA семейства FLEX10K. Программа разрабатывалась на языке AHDL с помощью пакета MAX+2.
Модуль программы без вычитателя выглядит следующим образом:
*************************************************************"ku";"summator";"n";"nn";filter
([7..0] : INPUT =GND;: INPUT;[15..0]: OUTPUT;
)_HRAN: ku;[3..0]: summator;[1..0]: nn;[1..0]: n;_HRAN.takt = TAKT;[].takt = TAKT;[1..0].takt = TAKT;[1..0].takt = TAKT;_HRAN.vhod[7..0] = VHOD[7..0];[0].vhod[7..0] = REG_HRAN.vihod[15..8];[1].vhod[7..0] = REG_HRAN.vihod[39..32];[0].vhod[7..0] = REG_HRAN.vihod[23..16];[1].vhod[7..0] = REG_HRAN.vihod[31..24];
%суммируем коэффициенты с отрицательным знаком%
SUMMER[0].a[7..0] = REG_HRAN.vihod[7..0];[0].b[7..0] = shesty[0].vihod[7..0];[1].a[7..0] = try[1].vihod[7..0];
SUMMER[1].b[7..0] = SUMMER[0].sum[7..0];
%суммируем коэффициенты с положительным знаком%
SUMMER[2].a[7..0] = REG_HRAN.vihod[47..40];[2].b[7..0] = shesty[1].vihod[7..0];[3].a[7..0] = try[0].vihod[7..0];[3].b[7..0] = SUMMER[2].sum[7..0];[7..0] = SUMMER[3].sum[7..0];
VIHOD[15..8] = SUMMER[1].sum[7..0];;
************************************************************
Модули подпрограмм, использованных в головном проекте:
*************************************************************"summator";"mult";N
([7..0] : INPUT =GND;[7..0] : OUTPUT;: INPUT;
)[2..0]: summator;:mult;
%подсоединен тактовый сигнал%
SUMMER[2..0].takt = TAKT;.takt = TAKT;
%блок домножения входного отсчета на коэффициент 0,280448%
.vhod[7..0] = VHOD[7..0];
%блок суммирования для n-1 отсчета%
SUMMER[0].a[7..0] = VHOD[7..0];[0].b[7..0] = VHOD[7..0];[1].a[7..0] = VHOD[7..0];[1].b[7..0] = MULTI.vihod[7..0];[2].a[7..0] = SUMMER[0].sum[7..0];[2].b[7..0] = SUMMER[1].sum[7..0];
VIHOD[7..0] = SUMMER[2].sum[7..0];;
*************************************************************
%регистр хранения входных отсчетов
последний отсчет по убыванию
предпоследний отсчет по убыванию и т.д.
23..16
n-5 отсчет %ku
([7..0] : INPUT;: INPUT;[47..0]: OUTPUT;
)[47..0]: dffe;[].clk = takt;[].ena = VCC;[7..0] = VHOD[7..0];i in 9 to 48 generate[i-1].d = Tr[i-9].q;generate;
VIHOD[]=Tr[].q;;
*************************************************************
%программа перемножитель 8-битного числа на коэффициент 0,280448%
INCLUDE "summator.inc";mult
([7..0] : INPUT;: INPUT;[7..0] : OUTPUT;
): summator;: summator;.takt=takt;.takt=takt;.a[5..0]=vhod[7..2];.b[1..0]=vhod[7..6];.a[6..0]=su0.sum[6..0];.b[0]=vhod[7];
vihod[7..0]=su1.sum[7..0];;
*************************************************************
%программа перемножитель 8-битного числа на коэффициент 0,66655
10101010%"summator.inc";multt
([7..0] : INPUT;: INPUT;[7..0] : OUTPUT;
): summator;: summator;: summator;.takt=takt;.takt=takt;.takt=takt;.a[6..0]=vhod[7..1];.b[4..0]=vhod[7..3];.a[2..0]=vhod[7..5];.b[0]=vhod[7];.a[7..0]=su0.sum[7..0];.b[7..0]=su1.sum[7..0];[7..0]=su2.sum[7..0];;
*************************************************************"summator";"multt";NN
([7..0] : INPUT =GND;[7..0] : OUTPUT;: INPUT;
)[5..0]: summator;:multt;
%подсоединен тактовый сигнал%
SUMMER[5..0].takt = TAKT;.takt = TAKT;
%блок домножения входного отсчета на коэффициент 0,280448%
.vhod[7..0] = VHOD[7..0];
%блок суммирования для n-1 отсчета%
SUMMER[0].a[7..0] = VHOD[7..0];[0].b[7..0] = VHOD[7..0];[1].a[7..0] = VHOD[7..0];[1].b[7..0] = VHOD[7..0];[2].a[7..0] = VHOD[7..0];[2].b[7..0] = VHOD[7..0];[3].a[7..0] = SUMMER[0].sum[7..0];[3].b[7..0] = MULTTI.vihod[7..0];[4].a[7..0] = SUMMER[1].sum[7..0];[4].b[7..0] = SUMMER[2].sum[7..0];[5].a[7..0] = SUMMER[3].sum[7..0];[5].b[7..0] = SUMMER[4].sum[7..0];[7..0] = SUMMER[5].sum[7..0];;
*************************************************************"summator";"mult";N
([7..0] : INPUT =GND;[7..0] : OUTPUT;: INPUT;
)[2..0]: summator;:mult;
%подсоединен тактовый сигнал%
SUMMER[2..0].takt = TAKT;.takt = TAKT;
%блок домножения входного отсчета на коэффициент 0,280448%
.vhod[7..0] = VHOD[7..0];
%блок суммирования для n-1 отсчета%
SUMMER[0].a[7..0] = VHOD[7..0];[0].b[7..0] = VHOD[7..0];[1].a[7..0] = VHOD[7..0];[1].b[7..0] = MULTI.vihod[7..0];[2].a[7..0] = SUMMER[0].sum[7..0];[2].b[7..0] = SUMMER[1].sum[7..0];
VIHOD[7..0] = SUMMER[2].sum[7..0];;
*************************************************************
%программа сумматор для двух восьмибитных чисел%
SUBDESIGN summator
(
a[7..0],b[7..0] : INPUT = GND;: INPUT;[7..0]: OUTPUT;
)[7..1]:node;[7..0]: dff;:dff;[7..0].clk = takt;[7..0].prn = VCC;[7..0].clrn = VCC;.clk=takt;.prn=VCC;(a[0]&b[0])==VCC then[0]=GND;[1]=VCC;(a[0]#b[0])==GND then[0]=GND;[1]=GND;sum[0]=VCC;[1]=GND;if;i in 1 to 6 generate(a[i]&b[i]&c[i])==VCC then[i]=VCC;[i+1]=VCC;(a[i]#b[i]#c[i])==GND then[i]=GND;[i+1]=GND;
(((a[i]&b[i])#(a[i]&c[i])#(b[i]&c[i]))&!(a[i]&b[i]&c[i]))==VCC then[i]=GND;[i+1]=VCC;sum[i]=VCC;[i+1]=GND;if;generate;(a[7]&b[7]&c[7])==VCC then[7]=VCC;=VCC;(a[7]#b[7]#c[7])==GND then[7]=GND;=GND;(((a[7]&b[7])#(a[7]&c[7])#(b[7]&c[7]))&!(a[7]&b[7]&c[7]))==VCC then[7]=GND;=VCC;sum[7]=VCC;=GND;if;;
*************************************************************
Правильность работы программы можно проверить по временным диаграммам. Время работы программы 3 тактовых импульса. Поэтому тактовая частота должна быть 45 кГц, что вполне реализуемо, если учесть, что границы тактовых частот для ПЛИС семейства FLEX10K исчисляются МГц.

EFP10K10LC84-3
|
|
|
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!