_mult_par3 : umnoj WITH (koefficient = H"115");
_mult_par4 : umnoj WITH (koefficient = H"127");
--- Зададим сумматоры
_summat1 : summ_dop;
_summat2 : summ_dop;
_summat3 : summ_dop;
_summat4 : summ_osnov;
--- Зададим устройство формирования одиночноого импульса
_drebezg : drebezg;
---Зададим два 7-сегментных индикатора
_s7segment : 7segment;
_m7segment : 7segment;
---Зададим преобразователи кода из прямого в обратный и из обратного в прямой код
_preobr : preobr;
_dekoder : preobr;
--Зададим сдвигающий регистр 8-ми разрядный для 7отсчетов
_reg_sdvig : reg_sdvig WITH (width = 8, number =7);
--- Сдвигающий регистр 8-ми разрядный на 1 отсчет
_reg : registr;
clk_en : NODE;
BEGIN
_drebezg.(PB2, PB1, clk) = (PB2, PB1, clk);
clk_en = _drebezg.(ce);
--Зададим дополнительный выход для возможности просмотра импульсов запуска
clk_e = _drebezg.(ce);
_preobr.(vxod[], clk, reset, setn, clock_en) = (q[], clk, GND, VCC, clk_en);
_reg_sdvig.(data[], clk, reset, setn, clock_en) = (_preobr.vyxod[], clk, GND, VCC, clk_en);
--Присоединим к умножителю №1 и сумматору №1 управляющих входов,
--На вход сумматора поступают 0 и 6 отсчеты с выхода сдвигающего регистра,и далее
--сумма будет подаваться на умножитель.
_summat1.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_mult_par1.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_summat1.(dataa[], datab[]) = _reg_sdvig.(q[0][], q[6][]) ;
_mult_par1.dataa[] = _summat1.(result[]) ;
--Выход для просмотра результатов после 1ого перемножителя:
data_1_mult[16..0] =_mult_par1.result[];
--Присоединим к сумматору №2 и умножителю №2 управляющих входов,
--На вход сумматора поступают 1,5 отсчеты с выхода сдвигающего регистра,
--Результат подается на умножитель.
_summat2.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_mult_par2.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_summat2.(dataa[], datab[]) = _reg_sdvig.(q[1][], q[5][] ) ;
_mult_par2.dataa[] = _summat2.(result[]) ;
--Выход для просмотра результатов после ого перемножителя:
data_2_mult[16..0] =_mult_par2.result[];
--Подключение к сумматору №3 и умножителю №3 управляющих входов,
--На вход сумматора поступают 2 и 4 отсчеты с выхода сдвигающего регистра,
--Сумма подается на умножитель.
_summat3.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_mult_par3.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_summat3.(dataa[], datab[]) = _reg_sdvig.(q[2][], q[4][]);
_mult_par3.dataa[] = _summat3.(result[]) ;
--Выход для просмотра результатов после 3его перемножителя:
data_3_summ[8..0] =_summat3.(result[]);
data_3_mult[16..0] =_mult_par3.result[];
--Подключение к регистру и умножителю №4 управляющих входов,
--На вход умножителя поступает 3 отсчет,который дополнительно задержан регистром на один такт
_reg.(dataa[], clk, reset, setn, clok_en) = (_reg_sdvig.(q[3][]), clk, GND, VCC, clk_en);
_mult_par4.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_mult_par4.(dataa[]) = (_reg.(result[7]), _reg.(result[])) ;
--Выход для просмотра результатов после 4ого перемножителя:
data_4_mult[16..0] =_mult_par4.result[];
--Подключение к основному сумматору управляющих входов,
--На вход сумматора поступают отсчеты с выхода перемножителей,
_summat4.(clk, reset, setn, clock_en) = ( clk, GND, VCC, clk_en);
_summat4.(dataa[], datab[], datac[], datad[]) =
((_mult_par1.result[]), (_mult_par2.result[]), (_mult_par3.result[]), (_mult_par4.result[]));
--16-9 разряды суммы поступают на преобразователь кода
_dekoder.(vxod[], clk, reset, setn, clock_en) = ((_summat4.result[17..10]), clk, GND, VCC, clk_en);
--Выходы для просмотра результатов после 4ого сумматора и dekodera
data_v[18..0] = _summat4.result[18..0];
vixoddek[7..0] = _summat4.result[17..10] ;
--Результат вычислений фильтра поступают на выход
vixod[7..0] = (_dekoder.(vyxod[])) ;
--4 старших разряда после преобразователя поступают на индикатор
_s7segment.i[] = (_dekoder.(vyxod[7..4])) ;
(a_y, b_y, c_y, d_y, e_y, f_y, g_y) = !_s7segment.(a, b, c, d, e, f, g);
--4 младщих разряда после преобразователя поступают на индикатор
_m7segment.i[] = (_dekoder.(vyxod[3..0])) ;
(a_x, b_x, c_x, d_x, e_x, f_x, g_x) = !_m7segment.(a, b, c, d, e, f, g);
END;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.