Цифровой фильтр высокой частоты — страница 7

  • Просмотров 3585
  • Скачиваний 496
  • Размер файла 332
    Кб

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"