Коэффициенты
|
0.269699 (а01,а04)
|
0.809097 (а02-а03)
|
0.503807 (б01)
|
0.586409 (б02)
|
0.0673772 (б03)
|
|
0.349231 (а11,а13)
|
0.698462 (а12)
|
0.275919 (б11)
|
0.121006 (б12)
|
Каноническая форма реализации
фильтра:
Вывод
В данном курсовом проекте
требовалось построить аналоговый ВЧ-фильтр и путём билинейного Z-преобразования
перевести его в цифровую форму. Расчёт показал, что для удовлетворения
требований задания необходимо и достаточно применить фильтр Баттерворта 5
порядка. Для цифровой реализации фильтра потребовалось осуществить выбор
разрядной сетки для хранения коэффициентов передаточной функции. При 16-и
разрядах отклонения укладываются в отведённый диапазон (как видно по графику).
8) Программная реализация цифрового
фильтра верхних частот.
Программа выполняет моделирование
работы цифрового фильтра высоких частот 6 порядка. По результатам обработки
выводятся графики входного аналогового сигнала и выходного цифрового сигнала,
полученного в соответствии с заданием на проектирование цифрового фильтра.
Пример работы программы представлен
ниже:
Filter1;
Forms,
UFilterOne in 'UFilterOne.pas'
{Form1},
UGenerator in 'UGenerator.pas',
{$R *.res}
Application.Initialize;
Application.CreateForm(TForm1,
Form1);
Application.Run;.UFilterOne;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls,
TeeProcs, TeEngine, Chart, Buttons, StdCtrls,, Spin, Ugenerator, Series,Math;
TForm1 = class(TForm)
Button1: TButton;
BitBtn1: TBitBtn;
Label2: TLabel;
SpinEdit3: TSpinEdit;
Label7: TLabel;
Memo2: TMemo;
Label8: TLabel;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
procedure Button1Click(Sender:
TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Form1: TForm1;
{$R *.dfm}TForm1.Button1Click(Sender:
TObject);a,c:real;: tGen;,j:integer;: Tfilter;,y,y1,h: real;:
Comp;:=38;:=StrToInt(SpinEdit3.text);:=tgen.Init1(c,a);:=Tfilter.Init2;.Series[0].Clear;.Series[1].Clear;i:=0
to 200 do begin.Series[0].AddXY(k.getTime(i),k.getValue(i));.Series[1].AddXY(k.getTime(i),F1.getValueP(k.getValue(i)));;i:=1
to 380 do beginx<=k.getValue(i)
then:=k.getValue(i);:=f1.getValueP(k.getValue(i));i>20 theny1<=y
then:=y;:=20*log10(abs(y1/x));.Lines.Add(FloatToStr(res));;;.UGenerator;, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, TeeProcs,
TeEngine, Chart, Buttons, StdCtrls,, Spin, Math;
TGen = class (TObject)
Fample: real; {Амплитуда}
FVhod: real; {Частота входного
сигнала}
Fdec: real; {Частота дескретизации}
Constructor Init1(aVhod,adec: real);
Function getValue(ax: integer):
real;
Function getTime(ax: integer):
real;;
TFilter = class (Tobject)
a01, a02, a03, b01, b02: Real;
a11, a12, a13, b11, b12: Real;
a21, a22, a23, b21, b22:
Real;,e02,e03,e04,e05,e06,e07,e08,e09,e10,,e12,e13,e14,e15,e16,e17,e18,e19,e20,,e22,e23,e24,e25,e26,e27,x1,
x2,y1,y2: real;
Constructor Init2;
Function getValueP(aX: Real)
:Real;;TFilter.Init2;
begin
Inherited Create;:=0.562495;
a02:=-0.562495; b01:=-0.12499;:=0.47947; a12:=-2*0.47947; a13:=0.47947;
b11:=0.378817; b12:=-0.539061;:=0.349231; a22:=-2*0.349231; a23:=0.349231;
b21:=0.275919;
b22:=-0.121006;:=0;e02:=0;e03:=0;e04:=0;e05:=0;e06:=0;e07:=0;e08:=0;e09:=0;e10:=0;e11:=0;:=0;e13:=0;e14:=0;e15:=0;
x1:=0; x2:=0;y1:=0;y2:=0;
end;TGen.Init1(aVhod,adec: real);
begin
inherited Create;
Fample:=1;
Fvhod:=aVhod;
end;TGen.getValue(aX: Integer):
Real;
begin
Result := fAmple * sin(2*Pi *
(Fvhod*1000) * getTime(aX));
end;TGen.getTime(aX: Integer): Real;
begin
Result := ax/(fdec*1000);
end;TFilter.getValueP(aX: Real):
Real;
begin
x2:=x1;
x1:=ax;
y1:=a01*x1+a02*x2-b01*y1;:=e02;
e06:=e03*a13;
e02:=e01;
e05:=e02*a12;
e01:=y1;
e04:=e01*a11;
e09:=e08;
e11:=e09*b12;
e08:=e07;
e10:=e08*b11;
e07:=e04+e05+e06+e10+e11;:=e09*a23;
e13:=e08*a22;
e12:=e07*a21;
e17:=e16;
e19:=e17*b22;
e16:=e15;
e18:=e15*b21;
e15:=e12+e13+e14+e18+e19;:=e15; ; .
Вывод:
В данной программе был реализован
цифровой фильтр верхних частот, в начале временного отчета была произведении
задержка на 20 временных единиц, чтобы не попасть в зону переходных процессов,
при расчете ослабления.
Список литературы
1 Пронин А.С. Лекции - “ Спецпроцессоры в цифровой обработке и
передаче информации ”.
Витязев В.В. - “Цифровая частотная селекция сигналов”. Радио и
связь. 1993г.
3 <http://model.exponenta.ru> - Проектирование цифровых
фильтров.