ЭУМК по дисциплине "Проектирование проблемно-ориентированных вычислительных средств" › Теория › Тема 6. Отладочный модуль TMS320С5x и FSK-модем на его основе

# Электронный учебно-методический
комплекс по дисциплине
"Проектирование проблемно-ориентированных вычислительных средств"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

6.2. Реализация демодулятора FSK-модема
6.2.1. Принцип работы демодулятора

Задачей демодулятора является определение частоты принимаемого сигнала и формирование соответствующего цифрового кода. Для этого можно применить, например, аналоговую или цифровую фильтрацию. Однако, учитывая небольшую разницу частот «1» и «0», а также малую выборку сигнала с одной частотой, данный метод является неэффективным.
Другой метод основан на перемножении двух сигналов, принятого и задержанного на некоторое время (формула произведения двух углов).
Согласно выражению (6.1) принятый из канала сигнал в момент времени t = n × Δt равен (для упрощения формул коэффициент Δt опущен)

| x(n) = cos((ωc ± δω)n + φ) . | (6.3)

Этот сигнал умножается на такой же, но задержанный на время τ = m ×Δt сигнал:

| y(n) = x(n – m) = cos((ωc ± δω)(n – m) + φ) . |

В результате после умножения получаем выражение для произведения косинусов, которое может быть преобразовано в сумму косинусов:

| 2 × x(t) × x(t – τ) = = 2 × cos[(ωc ± δω)t + φ] × cos[(ωc ± δω)(t – τ) + φ] = = cos[2(ωc ± δω)t – (ωc ± δω)τ + 2φ] + cos[(ωc ± δω)τ] , | (6.4)

где τ – время задержки, Δt – период дискретизации.
Если выбрать τ таким, что ωc × τ = π/2, то после низкочастотной фильтрации (ФНЧ) удвоенной несущей частоты ωc получается

| cos[(ωc±δω)τ] = cos(π/2±δωτ) = –sin(±δωτ) = –[±sin(δωτ)] . |

Отсюда следует, что по знаку сигнала после низкочастотной фильтрации (в блоке детектора) можно определить значение передаваемой информации. Отрицательный результат соответствует передаче «0», а положительный – «1».
Таким образом, структурная схема демодулятора имеет следующий вид (рис. 6.6):

######

###### Рисунок 6.6 – Структурная схема демодулятора модема

6.2.2. Расчет фазосдвигателя

Принимая во внимание, что фазовая задержка задана как ωc × τ = π/2 , можно определить величину τ = π/2ωc = 1/4fc. Для частоты fc = 1700 Гц величина τ = 147.06 мкс, что примерно в 1.5 раза больше периода дискретизации Δt = 104.167 мкс. Для минимизации ошибки детектирования сигнала необходимо как можно точнее задать задержку π/2. Для реализации задержки можно использовать цифровой нерекурсивный фильтр с одним нулем:

| y(n) = x(n) + β × x(n – 1) . | (6.5)

Передаточная функция такого фильтра равна

| H(z) = 1 + β × z –1 , |

а групповая задержка фильтра определяется как

######

где φ(ω) – фазочастотная функция фильтра:

######

Воспользовавшись подстановкой

######

и переходя к относительным частотам и задержкам, получаем:

######

откуда

|  | (6.6)

В данном выражении в качестве ω используется относительная круговая частота

| ω = 2π ( fC / fД ) = 2π ( 1700 / 9600 ) = 1,1126474 рад | (6.7)

и относительная задержка D, равная

| D = τ / Δt = ( fД / fC ) / 4 = ( 9600 / 1700 ) / 4 = 1,4117647 такта . | (6.8)

Так как задержку на один такт можно легко получить, взяв вместо x(n) значение x(n – 1), то в качестве задержки для цифрового фильтра берем дробную часть (6.8), которая равна 0,4117647.
Учитывая (6.7) и (6.8), из выражения (6.6) получаем

######

Таким образом, имеем два значения коэффициента β, равные +0,77295 и –0,90663. Из двух коэффициентов необходимо выбрать тот, который дает лучшую форму сигнала. Обычно это положительный коэффициент. Использование отрицательного коэффициента чаще всего дает на выходе функцию, смещенную относительно нуля и перевернутую. В данном примере нужно выбрать коэффициент, равный +0,77295.
Структура фильтра для выбранного примера представлена на рис.6.7.

######

###### Рисунок 6.7 – Структура фильтра для сдвига фазы сигнала

Форма сигнала на выходе фазовращателя и умножителя представлена ниже на рис.6.8.

######

###### Рисунок 6.8 – Вид сигнала на выходе умножителя демодулятора

6.2.3. Расчет фильтра НЧ

Сигнал с выхода фильтра (фазосдвигателя) y(n) после умножения на входной сигнал демодулятора x(n) поступает на вход фильтра нижних частот (ФНЧ). В качестве ФНЧ можно использовать цифровой эллиптический рекурсивный фильтр четвертого порядка. Расчет коэффициентов фильтра может быть выполнен в системе MATLAB или с использованием специальной программы skif.exe, которая требует задания следующих исходных данных: тип фильтра и аппроксимация амплитудно-частотной характеристики (АЧХ), граничные частоты подавления (Fa) и пропускания (Fp), максимальное затухание в полосе пропускания (Ap) и минимальное затухание в полосе подавления (Aa).
Первые два параметра (фильтр нижних частот и эллиптическая аппроксимация) выбираются из списков, а вторые два задаются в долях частоты Найквиста ( fН = fД / 2 = 4800 Гц ).
Частота пропускания фильтра определяется скоростью передачи информации V:

| Fp = ( V / fН ) = ( 1200 / 4800 ) = 0,25 , |

а частота подавления – удвоенной минимальной частотой принимаемого сигнала 2f1:

| Fa = ( 2f1 ) / fН = ( 2 × 1300 ) / 4800 = 0,54 . |

Оставшиеся два параметра выбираются по умолчанию (Ap = 0,1 дБ и Aa = 45 дБ).
Программа skif.exe всегда рассчитывает коэффициенты фильтра для каскадного соединения фильтров второго порядка с максимальным коэффициентом передачи на любой частоте не более единицы. Таким образом, для фильтра четвертого порядка должно получиться два каскада (звена). Если при расчете фильтра получается больше двух каскадов, необходимо повторить расчет, немного уменьшив частоту пропускания фильтра или значение затухания в полосе подавления.
При заданных ранее исходных значениях после расчета получаются следующие коэффициенты фильтров, приведенные в табл. 6.2. Таблица 6.2 - Коэффициенты передаточной функции фильтра

Звено | a0 | a1 | a2 | b0 | b1 | b2
0 | 0,078582 | 0,123258 | 0,078582 | 1,000000 | –1,065679 | 0,346102
1 | 0,261106 | 0,103099 | 0,261106 | 1,000000 | –1,088755 | 0,721309

Передаточная функция одного каскада рекурсивного фильтра второго порядка описывается уравнением

| y(n) = a0×x(n) + a1×x(n – 1) + a2×x(n – 2) – – b1×y(n – 1) – b2×y(n – 2) . | (6.9)

Для реализации двухкаскадного фильтра формулу (6.9) необходимо запрограммировать дважды. В качестве входного сигнала первого каскада используется сигнал с выхода умножителя, а в качестве входного сигнала второго каскада – сигнал с выхода первого каскада. Поскольку при поступлении на вход фильтра первого отсчета x(n) значения предыдущих отсчетов входного сигнала x(n – 1), x(n – 2) и выходного сигнала y(n – 1), y(n – 2) не определены, то они предварительно должны обнуляться. После каждого такта работы фильтра его предыстория обновляется, т. е.x(n – 1) записывается на место x(n – 2), x(n) – на место x(n – 1), y(n – 1) – на место y(n – 2) и y(n) – на место y(n – 1). Обычно при работе каждого каскада в памяти сдвигаются только входные отсчеты, так как выходные отсчеты будут сдвинуты следующим каскадом, поскольку они для него являются входными. И только после последнего каскада необходимо произвести сдвиг его выходных отсчетов. Если расположить в памяти данные предыстории в следующем порядке: x(n),x(n – 1),x(n – 2), то их сдвиг можно выполнить с помощью специальной команды DELAY, применив ее сначала к ячейке памяти с переменной x(n – 1), а затем – с переменной x(n).

Сигнал после ФНЧ имеет следующую форму (рис.6.9):

######

###### Рисунок 6.9 – Вид сигнала на выходе ФНЧ демодулятора

6.2.4. Принципы детектирования частот единицы и нуля

Последним элементом демодулятора является детектор, который путем подсчета числа положительных и отрицательных отсчетов сигнала после ФНЧ за время передачи одного бита информации определяет, какой бит – «1» или «0» был принят.
Для синхронизации приемника и передатчика каждое слово данных сопровождается битами синхронизации. Передача начинается всегда со «стартового» бита, который в нашем случае равен «0».
При отсутствии передачи данных в линию обычно передаются посылки, соответствующие передаче «1» и на входе детектора будет положительный сигнал.
Первая задача детектора – синхронизировать прием данных. Для этого он должен четко определить момент приема «стартового» бита, которому соответствует последовательность из n отрицательных отсчетов (в нашем примере значение n = 8). Определение момента приема «стартового» бита можно реализовать с помощью простейшего счетчика, который в случае положительного входного сигнала обнуляется, а в случае отрицательного – увеличивается на единицу. Момент достижения счетчиком значения n и будет определять завершение приема «стартового» бита.
После приема «стартового» бита детектор должен принять заданное число битов данных (в нашем случае 16). Детектирование и прием битов данных можно выполнять разными способами. Рассмотрим для примера два простых способа детектирования данных.
Первый способ заключается в анализе амплитуды и знака сигнала в середине интервала приема очередного бита данных. Для этого после приема «стартового» бита необходимо пропустить n/2 отсчетов, чтобы попасть точно на середину интервала приема первого бита данных и проанализировать знак сигнала на выходе ФНЧ. Если сигнал положительный, то первый принимаемый бит – «1», если отрицательный – «0». Для обеспечения лучшей помехозащищенности можно проанализировать также амплитуду сигнала, которая должна быть выше определенного порога. Для детектирования каждого следующего бита данных необходимо пропускать n отсчетов, чтобы попадать на середину интервала приема очередного бита данных, и снова анализировать знак сигнала на выходе ФНЧ.
Второй способ заключается в подсчете положительных и отрицательных значений сигнала на интервале приема очередного бита данных T. Для этого после приема «стартового» бита необходимо в течение n тактов считать число положительных и отрицательных отсчетов сигнала. Для этого в свою очередь можно использовать один счетчик, который при положительном сигнале увеличивается на единицу, а при отрицательном – уменьшается. Если после n тактов в счетчике будет положительное значение, то принимаемый бит – «1», если отрицательное – «0». Для обеспечения лучшей помехозащищенности можно проанализировать и абсолютное значение счетчика, которое должно быть равно n (все отсчеты одного знака), n – 2 (один отсчет другого знака) или n – 4 (два отсчета другого знака).
При любом способе детектирования необходимо также сформировать слово из принимаемых битов. Для этого можно использовать различные команды сдвига, устанавливая предварительно нужное состояние бита переноса по результатам работы детектора.

Оглавление | Программа | Теория| Практика | Контроль знаний | Об авторах
© БГУИР , 2012