История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2020-04-01 | 91 |
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
|
|
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!