ЭУМК по дисциплине "Проектирование проблемно-ориентированных вычислительных средств" › Практика › Лабораторная работа "ДЕМОДУЛЯТОР FSK-МОДЕМА"

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

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

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

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

ЛАБОРАТОРНАЯ РАБОТА № 8.
ДЕМОДУЛЯТОР FSK-МОДЕМА.

ЦЕЛЬ РАБОТЫ: Разработка алгоритма и программы демодулятора FSK-модема на ассемблере процессора TMS320VC5402 и отладка программы на лабораторном макете TMS320VC5402 DSP Starter Kit.

8.1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
8.1.1. Фильтрация высокочастотных составляющих в демодуляторе FSK-модема

Сигнал с выхода фильтра (фазосдвигателя) 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 всегда рассчитывает коэффициенты фильтра для каскадного соединения фильтров второго порядка с максимальным коэффициентом передачи на любой частоте не более единицы. Таким образом, для фильтра четвертого порядка должно получиться два каскада (звена). Если при расчете фильтра получается больше двух каскадов, необходимо повторить расчет, немного уменьшив частоту пропускания фильтра или значение затухания в полосе подавления.
При заданных ранее исходных значениях после расчета получаются следующие коэффициенты фильтров, приведенные в табл. 8.1.

Таблица 8.1 - Коэффициенты передаточной функции фильтра

Звено | 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) . | (8.1)

Для реализации двухкаскадного фильтра формулу (8.1) необходимо запрограммировать дважды. В качестве входного сигнала первого каскада используется сигнал с выхода умножителя, а в качестве входного сигнала второго каскада – сигнал с выхода первого каскада. Поскольку при поступлении на вход фильтра первого отсчета 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).
Если на вход ФНЧ поступает сигнал с выхода умножителя, представленный на рис. 7.3, то сигнал после ФНЧ будет иметь вид, приведенный на рис. 8.1.

######

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

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

8.1.2. Построение детектора для демодулятора FSK-модема

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

8.1.3. Замечания по программированию фильтра и детектора

При программировании фильтра и детектора демодулятора FSK-модема необходимо учесть следующие замечания:

- поскольку обычно коэффициент b1 в уравнении (8.1) по модулю больше единицы (см. табл. 8.1), то прямое программирование данного уравнения невозможно;
- для физической реализации уравнения (8.1) произведение b1·y(n – 1) необходимо разбить на две части: b1/2·y(n – 1) и b1/2·y(n – 1);
- поскольку при суммировании шести произведений в преобразованном уравнении (8.1) может произойти переполнение промежуточных результатов, то программа фильтра должна выполняться при выключенном бите OVM;
- так как из-за погрешностей задания коэффициентов и вычислений может произойти незначительное переполнение окончательного результата на выходе фильтра, необходимо установить бит SST в регистре режима работы процессора PMST (коррекция переполнения при записи результата в память);
- при любом способе детектирования данных выделение «стартового» бита производится путем обнаружения непрерывной последовательности из отрицательных значений сигнала на выходе ФНЧ, длина которой равна (или несколько меньше) числу отсчетов синуса на один бит передаваемых данных.

8.2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Изучить теоретические сведения по теме лабораторной работы (подразд. 8.1).
2. Получить у преподавателя задание для выполнения практической части работы.
3. Согласно заданию рассчитать значения всех переменных, необходимых для работы программы.
4. Разработать алгоритм работы программы.
5. Написать, оттранслировать, отладить и выполнить программу.
6. Продемонстрировать результат трансляции и работы программы преподавателю.
7. Оформить и защитить отчет по лабораторной работе.

8.3. СОДЕРЖАНИЕ ОТЧЕТА

1. Цель работы и исходные данные.
2. Используемые аналитические формулы и выполненные расчеты.
3. Алгоритм работы программы.
4. Листинг программы с комментариями.
5. Результат работы программы.
6. Выводы по работе.

8.4. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Назначение демодулятора модема.
2. Принцип работы демодулятора FSK-модема.
3. Назначение фильтра нижних частот демодулятора.
4. Определение полосы пропускания и подавления ФНЧ.
5. Расчет коэффициентов фильтра нижних частот.
6. Способы детектирования принятых данных.
7. Бит режима умножения дробных чисел.
8. Команды загрузки данных в аккумулятор.
9. Команды умножения данных.
10. Команды для организации линии задержки данных.
11. Команды сохранения данных.
12. Команды модификации регистров.
13. Команды управления битами состояния.
14. Команды условных переходов.
15. Команды сдвига данных.
16. Команды организации циклов.

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