регистрация / вход

Методы расчета цифровых БИХ-фильтров и вид целевой функции

Основные понятия о передаточных функциях БИХ-фильтров, их структурная схема, преимущества по сравнению с аналоговыми. Описание и результаты метода синтеза фильтра, два варианта их создания из отдельных биквадратных блоков: каскадная; параллельная.

Содержание

Введение

1. Основные понятия о передаточных функциях БИХ-фильтров

2. Структурная схема БИХ-фильтра

3. Методы расчета цифровых БИХ-фильтров и вид целевой функции

4. Описание метода синтеза фильтра

5. Результаты синтеза

Выводы

Список используемой литературы

Введение

Непрерывно развивающаяся цифровая техника, увеличение скорости вычислений и номенклатуры выполняемых операций приводит к широкому внедрению различных методов цифровой обработки сигналов в радиоэлектронных системах. Применение этих методов позволяет во многих случаях использовать для обработки сигналов точные оптимальные алгоритмы. Такие алгоритмы были получены уже давно, исходя из статистических свойств сигналов и шумов, но их реализация в аналоговом виде была невозможна. Область применения цифровых методов неуклонно расширяется и одной из основных является цифровая фильтрация.

Фильтрацией называется процесс изменения частотного спектра сигнала в некотором желаемом направлении. Этот процесс может привести к усилению или ослаблению частотных составляющих в некотором диапазоне частот. К подавлению или выделению какой-либо частотной составляющей и т.п. Фильтрация нашла многочисленные применения, например, для подавления шума, маскирующего сигнал, для устранения искажения сигнала, для разделения двух или более различных сигналов, для разложения сигналов на частотные составляющие, для демодуляции сигналов, для преобразования дискретных сигналов в аналоговые, для ограничения полосы частот, занимаемой сигналами.

Любой аналоговый сигнал, ограниченный по частоте, можно преобразовать в дискретный, используя теорему Котельникова, проквантовать его и, получив цифровой сигнал, подвергнуть его цифровой фильтрации. Использование цифровых фильтров обусловлено следующими их преимуществами по сравнению с аналоговыми:

1. Возможность реализации фильтров с любыми импульсными и частотными характеристиками в пределах полосы частот, обеспечиваемой преобразователями АЦП и арифметических устройств. При этом можно построить устройства, реализация которых в аналоговом виде невозможна.

2. Отсутствие негативных факторов (инерционность энергоемких элементов, влияние паразитных связей между отдельными узлами, несогласование узлов по входному сопротивлению).

3. Повторяемость характеристик.

4. Высокая точность воспроизведения операторов преобразования и стабильность характеристик.

5. Нечувствительность к изменениям внешних условий.

6. Высокая надежность в работе.

7. Возможность диагностики и самодиагностики.

8. Модернизация в процессе эксплуатации.

9. Простота осуществления устройств памяти.

10. Малые габариты и вес.


1. Основные понятия о передаточных функциях БИХ-фильтров

Дискретным фильтром называется устройство, точно реализующее следующий алгоритм:

где ) и ) – n-е отсчеты входного и выходного сигналов фильтра соответственно, а aj и bl – коэффициенты. Выражение (1) представляет собой разностное уравнение.

Если коэффициенты aj и bl зависят только от текущего индекса n (то есть являются функция времени) и не зависят от значений {xn } и {yn }, то фильтр называется линейным импульсным фильтром, а уравнение (1) – линейным разностным уравнением. Если же aj и bl - просто постоянные коэффициенты, то фильтр называется линейным инвариантным во времени дискретным фильтром, а (1) – линейным разностным уравнением с постоянными коэффициентами.

Для вычисления yn при n=0,1,2,3, необходимо задать начальные условия – значения y(-Дt), y(-2Дt),..., y(-MДt) и значений x(-Дt), x(-2Дt), ,x(-MДt). В дальнейшем предполагается, что заданы нулевые начальные условия.

Из выражения (1) видно, что для вычисления выходных отсчетов фильтра необходимо выполнять лишь три операции:

· задержку (запоминание) N и M отсчетов соответственно входного и выходного сигналов;

· умножение;

· алгебраическое сложение.

Реализация выражения (1) с малыми погрешностями, не зависящими от температуры, влажности и т.д., возможна только с помощью цифрового устройства.

Цифровое устройство, реализующее алгоритм (1), называется цифровым фильтром. В таких фильтрах входной и выходной сигналы являются цифровыми, представленными двоичными кодами. Поскольку при цифровом представлении сигналов xn , yn и коэффициентов aj и bl используется конечное число двоичных разрядов, вычисления по алгоритму (1) происходит с погрешностью. Строго говоря, цифровые фильтры представляют собой нелинейные устройства, к которым не применимы методы анализа и синтеза линейных систем. Однако количество разрядов в кодах, как правило, настолько велико, что погрешностью представления указанных величин в цифровой форме можно пренебречь и при анализе считать их точными, то есть представленными бесконечным числом двоичных разрядов. Конечность числа разрядов обычно учитывается при определении точности цифровых фильтров.

Существуют цифровые фильтры двух классов:

· рекурсивные;

· нерекурсивные.

Если в выражении (1) хотя бы один из коэффициентов aj не равен нулю, то реализуемый цифровой фильтр называется рекурсивным. Если же в выражении (1) все коэффициенты aj равны нулю, то есть то фильтр, реализующий этот алгоритм, называется нерекурсивным.

(2)

Нерекурсивный фильтр является устройством без обратной связи, а рекурсивный фильтр – устройством с обратной связью. Нерекурсивный фильтр принято называть фильтром с конечной импульсной характеристикой (КИХ-фильтр), а рекурсивный фильтр - фильтром с бесконечной импульсной характеристикой (БИХ-фильтр).

Так как в курсовой работе рассматривается синтез БИХ-фильтра, то в дальнейшем будем рассматривать только фильтры данного типа.

Анализ свойств цифровых фильтров производится в рамках теории z-преобразования, которое имеет такое же значение, как теория преобразования Лапласа при изучении аналоговых фильтров.

Передаточной функцией H(z) фильтра называется отношение z-образа выходного сигнала {yn } к z-образу входного сигнала {xn } при нулевых начальных условиях:

(3)

Применив к выражению (1) z-преобразование и учтя нулевые начальные условия у-М+1 =…=у-1- N- N +1 =…=x-1 =0, получим передаточную функцию рекурсивного цифрового фильтра:

(4)

Выражение (3) можно преобразовать к следующему виду:

(5)

Где


Y(z) – z-образ вспомогательного дискретного сигнала {yn }. Из этих соотношений видно, что алгоритм работы фильтра можно задать в виде системы разностных уравнений вместо одного уравнения:

(6)

Первое уравнение соответствует передаточной функции H1 (z), а второе – передаточной функции H2 (z).

Формы реализации рекурсивного цифрового фильтра, построенные на основании формул (1) и (5), называются прямой и канонической соответственно.

Обычно рекурсивные фильтры большого порядка (при большом М) в прямой и рекурсивной формах не реализуют, так как при этом наблюдается значительный уровень шумов на выходе, обусловленных конечной разрядностью кодов, циркулирующих в фильтре. Поэтому фильтры большого порядка реализуют в виде совокупности отдельных звеньев, каждое из которых соответствует простому разностному уравнению. Универсальным, пригодным для построения любых фильтров, является биквадратный блок с передаточной функцией

фильтр синтез передаточная функция


, (7)

где и - постоянные коэффициенты.

Возможны два варианта создания фильтров из отдельных биквадратных блоков: каскадная; параллельная.

Каскадной схеме соответствует разложение передаточной функции (4) на множители типа

(8)

Реализация рекурсивного фильтра в параллельной форме соответствует представлению передаточной функции (4) в виде суммы простых дробей:

(9)

Это выражение соответствует случаю отсутствия кратных корней в правой части (4). Каждое слагаемое реализуется в виде биквадратных блоков. Все эти блоки соединяются параллельно. Если же есть кратные корни, то может понабиться последовательное соединение биквадратных звеньев для кратных корней.

2. Структурная схема БИХ-фильтра

Исходя из технического задания необходимо привести структурную схему фильтра в каноническом виде и в виде последовательного соединения звеньев первого и второго порядка.

Каноническая форма реализации рекурсивного фильтра выглядит следующим образом:


Форма реализации рекурсивного фильтра в виде последовательного соединения звеньев первого и второго порядка представлена на следующем рисунке:


3. Методы расчета БИХ-фильтров и вид целевой функции

Расчет БИХ-фильтров можно вести в частотной и временной областях. При расчете в частотной области используется синтез по аналоговому и цифровому прототипам. Численные методы расчета разработаны для применения в частотной и временной областях.

Синтез по аналоговому прототипу основан на преобразовании p -плоскости в z -плоскость, а характеристик и параметров аналоговых фильтров - в соответствующие характеристики и параметры цифровых фильтров. Передаточная функция аналогового фильтра на p -плоскости в общем виде может быть записана так:

. (1)

Для перехода к функции и разностному уравнению ЦФ существуют следующие четыре метода.

Метод 1. Отображение дифференциалов. Это наиболее простой метод, сущность которого заключается в замене дифференциалов на конечные разности. В операторном уравнении (1), если дифференциалы заменяются прямыми разностями, то

или ,

а если обратными, то


или .

Недостатком метода является неполное соответствие частотно-избирательных свойств ЦФ свойствам аналогового прототипа. Кроме того, при использовании прямых разностей устойчивый аналоговый фильтр - прототип отображается в неустойчивый ЦФ. Поэтому, несмотря на простоту, применять этот метод не рекомендуется.

Метод 2. Инвариантное преобразование импульсной характеристики (стандартное Z -преобразование). Сущность метода заключается в расчете импульсной характеристики (ИХ) ЦФ по аналоговому прототипу и вычислении системной (передаточной) функции ЦФ.

Достоинством данного метода является подобие импульсных характеристик ЦФ и аналогового прототипа; простота. Недостатком же является наличие эффекта наложения частотных характеристик ЦФ, если полоса пропускания аналогового прототипа превышает . Поэтому точность расчетов ЦФ по данному методу тем выше, чем меньше отношение , где - верхняя частота полосы пропускания ЦФ; - частота дискретизации.

Метод 3. Согласованное Z -преобразование. Полюсы и нули аналогового прототипа на p -плоскости отображаются в полюсы и нули ЦФ на z -плоскости по правилу:

.

Для реализации этого метода передаточную функцию аналогового прототипа представляют в виде произведения сомножителей


,

где , - действительные или комплексно-сопряженные коэффициенты. Метод согласованного Z -преобразования не применим, если передаточная функция аналогового прототипа имеет только полюсы (нули расположены в бесконечности). Для устранения этого недостатка при расчетах фильтров с нулями в бесконечности рекомендуется вводить полюс того же порядка, что и нуль, в точке .

Метод 4. Билинейное (дробно-линейное) Z -преобразование. При отображении p -плоскости в z -плоскость вся мнимая ось , отображается в единичную окружность. Для этого необходимо выбирать нелинейную монотонную функцию частоты. Эта функция должна изменяться в пределах от до на оси частот дискретизации при изменении от до . В качестве такой функции комплексных частот можно выбрать гиперболический тангенс

или , (2)

которому при соответствует обычный тангенс

.

Гиперболический тангенс в выражении (2) можно представить следующим образом:


. (3)

Таким образом, комплексная плоскость p преобразуется в комплексную z -плоскость заменой переменных (3).

С помощью билинейных Z -преобразований можно от аналогового ФНЧ - прототипа перейти к ЦФ нижних частот (НЧ), верхних частот (ВЧ), полосовому, режекторному, гребенчатому и др.

Билинейное Z -преобразование обладает следующими достоинствами: во-первых, физически реализуемый и устойчивый аналоговый фильтр отображается в физически реализуемый и устойчивый ЦФ: во-вторых, отсутствуют проблемы, связанные с наложениями: в-третьих, нелинейность шкалы частот ЦФ, преобразованного из прототипа, можно учесть для широкого класса фильтров.

Недостатком этого метода является не совпадение импульсной и фазовой характеристик рассчитанного прототипа, поэтому необходимо вводить корректоры и усложнять конструкцию ЦФ. Тем не менее метод билинейного Z -преобразования является самым распространенным аналитическим методом расчета ЦФ.

Для синтеза БИХ ЦФ по цифровому прототипу используются преобразования ЦФ НЧ с безразмерной частотой среза в ЦФ НЧ с другой частотой среза, ЦФ ВЧ, полосовой, режекторный или гребенчатый фильтры. Методика расчета по цифровому прототипу проще, чем методика расчета по аналоговому прототипу, так как в ней отсутствует этап перехода от аналогового фильтра - прототипа к ЦФ.

Применение методов оптимизации для расчета БИХ-фильтров .

В последние годы широкое распространение получил другой класс методов расчета БИХ-фильтров, называемых методами оптимизации. Отличительной чертой этих методов является то, что система уравнений, составленная относительно коэффициентов фильтра, не может быть решена в явной форме. Поэтому для нахождения коэффициентов приходится использовать численные методы оптимизации, минимизирующие, согласно выбранному критерию, некоторую ошибку.

В качестве такого критерия используется критерий минимума среднеквадратической ошибки. При этом целевая функция задачи имеет вид

,

где - ()-мерный вектор искомых коэффициентов, - получаемая амплитудная характеристика фильтра, - заданная амплитудная характеристика фильтра, , - дискретный ряд частот, на которых вычисляются отклонения получаемой и заданной характеристик фильтра.

Минимизация функции сводится к нахождению оптимального значения параметрического вектора весовых коэффициентов фильтра . Так как функция является нелинейной, для ее минимизации необходимо использовать эффективные методы оптимизации.

При использовании методов оптимизации учитывается поведение только амплитудной характеристики, поэтому некоторые полюсы или нули после завершения итераций могут оказаться за пределами единичного круга. В этом случае можно прежде всего заменить полюс с полярными координатами , оказавшийся вне единичного круга, на полюс с координатами , находящийся внутри единичного круга. Амплитудная характеристика фильтра при такой замене остается неизменной, так как полюс заменяется своим зеркальным отображением. После того, как все полюсы оказываются внутри единичного круга, появляется возможность с помощью дополнительного анализа еще больше оптимизировать квадрат ошибки. Такая ситуация возникает достаточно часто, и в этих случаях оптимизация должна производиться двумя этапами:

1. Использование программы оптимизации для минимизации функции без каких-либо ограничений на расположение нулей и полюсов.

2. После завершения итераций инвертирование всех полюсов и нулей, оказавшихся вне единичного круга. После этого продолжение оптимизации для нахождения нового минимума .

4. Описание метода синтеза фильтра

При разработке современных систем (в том числе и цифровых фильтров) возникает задача оптимального проектирования. Под этим термином понимается процесс разработки наилучшего, оптимального устройства (в каком-то смысле), как правило с помощью ЭВМ. Большинство методов оптимизации являются итерационными по своей природе.

Как было уже сказано, большинство методов оптимизации, в том числе и методов безусловной оптимизации, носит итерационный характер. Это значит, что начиная с какой-либо точки х0 , называемой начальным приближением, алгоритм оптимизации генерирует последовательность точек х1 , х2 ,…хn , которая в принципе должна сходиться к точке . На практике процесс генерирования точек прекращается после конечного S числа шагов. И точка выдается в качестве приближения к точке . При этом вычисление очередной точки называется к-той итерацией, а точку - к-ым приближением.

Вектор называется к-тым шагом. Отсюда , к=0,1,2…

В основу всех методов оптимизации положено следующее правило: значение целевой функции от итерации к итерации должно убывать. То есть должно выполняться следующее условие:


Данное условие называется условием спуска.

Методы оптимизации, которые удовлетворяют этому условию, называются допустимыми или методами спуска. Основу всех методов спуска составляет следующая модельная схема:

1. к=0, выбирается начальное приближение ;

2. Проверяются критерий останова. Если критерий выполняется, то расчеты прекращаются и точка выдается как приближение . В противном случае осуществляется переход к следующему пункту.

3. Рассчитывается ненулевой n-мерный вектор , называемый направлением поиска или направлением шага.

4. Вычисляется малое положительное число (длина шага) такое, что должно выполняться условие спуска:

5. Выполнение к-той итерации , к=к+1 и происходит переход к пункту 2.

Шаг 4 в модельной схеме предполагает решение задачи одномерной минимизации – нахождение длины шага hk . Чтобы решить эту задачу, необходимо, чтобы вектор был допустимым направлением поиска или направлением спуска, условием чего является следующее выражение : , то есть угол между вектором-градиентом и направлением поиска должен быть тупым.

В модельной схеме значение целевой функции F(x) убывает от итерации к итерации. Тем не менее монотонно убывающая последовательность {F(x)} может не сойтись к минимуму по следующим причинам:

1. Как бы хорошо не выбиралось направление , все может испортить неудачный выбор длины шага hk , при котором величина убывания целевой функции F(x) по итерациям будет слишком быстро стремиться к нулю.

2. Решение не удастся получить, если алгоритм расчета направления поиска выдает векторы почти касательные к линиям уровня целевой функции, где ее значение постоянно. В результате угол между вектором-градиентом и направлением поиска будет стремиться к 90 градусам, то есть их скалярное произведение будет близким к нулю.

Следовательно, для того, чтобы получить гарантированно сходящуюся последовательность в соответствии с модельной схемой необходимо, чтобы длина шага hk обеспечивала бы существенное убывание целевой функции от итерации к итерации и, чтобы угол между вектором-градиентом и направлением поиска на каждой итерации был больше 90 градусов.

Помимо этих двух требований для обеспечения сходимости модельной схемы необходимо еще одно условие, которое накладывается на множество уровней целевой функции. Для функции F(x) и числа множеством уровней называется совокупность всех точек, для которых справедливо выражение F() . Дополнительное условие заключается в том, чтобы данное множество L(F()) было бы ограничено и замкнуто.

Таким образом, если

· функция F(x) непрерывна и дважды дифференцируема;

· ее множество уровней ограничено и замкнуто;

· функция F(x) существенно убывает от итерации к итерации и на каждом шаге угол между вектором-градиентом и направлением поиска всегда не равен 90 градусам на фиксированную положительную величину,

то алгоритм модельной схемы генерирует последовательность точек, для которых справедливо .

Сходимость такого рода называется глобальной, так как она не предполагает близости начального приближения точки к стационарной точке .

Четвертый шаг модельной схемы предполагает вычисление длины шага, то есть скалярной величины , которая должна удовлетворять условию спуска:

Для того, чтобы выбрать , удовлетворяющий этому условию, необходимо минимизировать значение целевой функции вдоль направления как функцию одной переменной (скалярной) h. То есть минимизировать функцию:

Чем точнее будет находиться минимум функции , тем быстрее будет сходиться алгоритм модельной схемы. С другой стороны очень точное нахождение минимума потребует больших вычислений функции, а следовательно вычисления целевой функции.

Для нахождения минимума используются две группы методов одномерной оптимизации:

1. Эффективные методы одномерного поиска (метод Золотого сечения и метод Фибоначчи);

2. Методы полиномиальной интерполяции (Пауэлл, Ньютон, сплайн-интерполяция).

Для конкретизации модельной схемы помимо процедуры вычисления длины шага hk необходимо также задавать алгоритм расчета требуемого направления поиска .

В отличие от одномерного случая, где возможно всего лишь два направления движения ( вперед и назад), уже в двумерной задаче множество направлений поиска является бесконечным.

В этом случае возникает проблема выбора направления поиска . Именно способ вычисления и определяет «лицо» алгоритма безусловной минимизации. Поэтому названия алгоритмам оптимизации даются по реализованным в них процедурам вычисления .

В данной курсовой работе в качестве метода синтеза применяется метод сопряженных градиентов. В группе данных методов процедура вычисления направления поиска не предполагает решения каких либо СЛАУ. Эти методы принципиально отличаются от методов Ньютна и квазиньютоновских методов.

Рассмотрим задачу поиска минимума квадратичной функции вида:

с,G - вектор и полноопределенная матрица, независящие от вектора .

Предполагается, что нам известно к-тое приближение в точке минимума и (к+1) линейно независимых векторов .

Будем искать точку минимума целевой функции Ф() на линейном множестве векторов +Рк , где Рк – (к+1)-мерное множество, образованное линейно независимыми векторами.

Множества, образованные вида +Рк называются линейными многообразиями.

Задача сводится к нахождению точки минимума Ф() на этом линейном многообразии.

Для решения этой задачи сначала вводится матрица Рк =[]. Введение такой матрицы позволяет сформулировать задачу поиска минимума функции Ф() на многообразии +Рк следующим образом: найти

То есть надо найти вектор , таким образом, чтобы точка была бы точкой минимума функции .

Для решения этой задачи необходимо сначала в функцию Ф(х) вместо , затем продифференцировать получившуюся функцию по вектору , приравнять результат к нулю и оттуда выразить вектор, который является решением задачи.

Если есть функция

, то


Тогда точка минимума

(1)

Формулу (1) можно рассматривать как формулу рекуррентного расчета точки в классических методах спуска. Другими словами, формула (1) описывает процедуру пошаговой минимизации квадратичной функции Ф(х).

Формула (1) обладает рядом свойств:

,

то есть каждая компонента должна быть равна нулю

Так как предполагается, что все точки xj при j=1,к рассчитывается по формуле (1), то справедливо следующее свойство:

i>j

Тогда формулу (1) можно преобразовать


ек – (к+1) столбец единичной матрицы

С учетом всего этого формула (1) примет вид

Последнее выражение можно упростить, если матрица будет ортогональной. Ето возможно сделать, если вектора выбирать специальным образом. Вектора должны быть сопряженными относительно матрицы G, то есть должны выполняться следующие соотношения

Тогда получаем упрощенное выражение


Таким образом мы установили, что среди методов минимизации квадратичных функций, укладывающихся в общую модельную схему, существует метод, к-тая итерация которого приводит в точку минимума функции Ф() на многообразии +Рк-1 .

Теоретически такой метод конечен, то есть он обеспечивает нахождение минимума функции Ф() не более чем за N шагов (N-размерность задачи), так как многообразие +Рк-1 на последнем N-том шаге совпадает с множеством значений аргумента и следовательно, если минимум функции Ф() не был найден ранее, то он обязательно будет найден на этом шаге.

Для того, чтобы полностью определить метод сопряженных градиентов необходимо определить правило выбора вектора . Это правило выглядит следующим образом:

(2)

- скаляр, который выбирается по двум теоретически эквивалентным формулам:

1. - формула Флетчера-Ривса

2. - формула Полака-Рибьера

Метод сопряженных градиентов для квадратических функций легко обобщается на случай целевой функции общего вида. Для этого необходимо ввести процедуру одномерного поиска длины шага hk и определиться, всегда ли направление поиска будет выдаваться по формуле (2) или допустимы отступления от нее. Такие отступления называются восстановлениями или рестартами. В начале рестарта вектор . Метод сопряженных градиентов, использующий такие рестарты, называется традиционным. Традиционный метод сопряженных градиентов сходится в тех же предположениях, что и метод наискорейшего спуска. Он обладает теоретической N-шаговой сверхлинейной сходимостью, но из-за наличия ошибок округления реальная скорость сходимости метода сопряженных градиентов практически всегда линейна.

Таким образом, хотя схема метода сопряженных градиентов далека от идеала, тем не менее этот метод остается единственным разумным средством для решения задачи оптимизации очень большой размерности (число переменных более 1000000).

5. Результаты синтеза

Синтез фильтра в данной курсовой работе был проведен на ЭВМ. В результате были получены следующие характеристики фильтра верхних частот третьего порядка:


Устойчивость фильтра можно оценить по карте нулей и полюсов, полученных в результате синтеза фильтра:

Нули

Полюсы

Модуль

Фаза

Модуль

Фаза

0,4271382

0

-0,5972885

0

0,8485097

82,4483

0,8551201

122,995

0,8485097

-82,4483

0,8551201

-122,995


Коэффициенты фильтра:

ai

bi

-0.4271382

0.5972885

-0.2230246

0.9313478

0.7199687

0.7312304


Заключение

В данной курсовой работе был рассчитан цифровой фильтр высоких частот 3-го порядка. Результаты расчета показали, что фильтр является устойчивым, поскольку нули и полюса фильтра лежат внутри единичной окружности, что иллюстрируется картой нулей и полюсов, а это является достаточным условием устойчивости цифрового фильтра. Также в работе представлены частотные характеристики, которые полностью удовлетворяют требованиям технического задания.


Список использованной литературы

1. Смирнов А.А. Лекции по курсу “Теория проектирования радиоэлектронных систем управления и передачи информации”, 2004г.

2. Езерский В.В. Лекции по курсу “Цифровая обработка сигналов и микропроцессоры в радиоуправлении”, 2003г.

3. Езерский В.В., Паршин В.С. Теоретические основы цифровой обработки сигналов: Учебное пособие. РГРТА, Рязань, 1996г.

ОТКРЫТЬ САМ ДОКУМЕНТ В НОВОМ ОКНЕ

ДОБАВИТЬ КОММЕНТАРИЙ [можно без регистрации]

Ваше имя:

Комментарий

Все материалы в разделе "Коммуникации и связь"