Radioavtomatika
.pdf
(рис. 8.4). Если до переноса спектр имел ширину F , то после переноса односторонняя ширина равна 0,5 F . Полоса пропускания ФНЧ также равна 0,5 F , а частота дискретизации выбирается из условия fдискр 2 * 0,5 F F . Известное требование теоремы Котельникова при
квадратурной обработке не нарушается, т.к. дискретизация выполняется одновременно в двух каналах, и суммарная частота дискретизации
2 fдискр 2 * F .
F 2 |
F |
|
0 |
|
|
f |
|
f0 |
||||
|
||||
Рис. 8.4.
В лабораторной работе квадратурная обработка моделируется на частоте 6 кГц, полоса пропускания ФНЧ равна 400 Гц, и частота дискретизации сигналов I и Q равна 1 кГц. Система ФАПЧ отслеживает фазу и доплеровский сдвиг частоты сигнала в пределах 400 Гц.
|
|
|
|
|
ˆ |
Ka |
|
|
Tk
Рис. 8.5 Структура ФАПЧ соответствует следящей системе с двумя интеграто-
рами, непрерывный прототип системы показан на рис. 8.5. Коэффициент усиления системы равен Ka , коэффициент Tk обеспечивает устойчивость следящего контура. При действии ускорения и шума оптимальное значение
40
Tk (
Ka )1 минимизирует средний квадрат ошибки, причем оптимальное значение Ka зависит от ускорения фазы и интенсивности шума на входе системы.
Логарифмическая амплитудная характеристика при таком выборе Tk имеет вид, показанный на рис.8.6. Излом частотной характеристики располагается точно на частотной оси, и система имеет колебательный переходный процесс.
В реальной системе ФАПЧ производится временная дискретизация. При этом непрерывное время t заменяется дискретным временем k . Дискретный вариант системы ФАПЧ показан на рис. 8.7.
Рис.8.7.
Для выделения разности фаз принятого сигнала (k) и фазы на выходе сглаживающего фильтра ˆ (k) , выполняется комплексное умножение сигнала S(k) и сигнала опорного генератора DS(k) , формируемого с помощью прямого цифрового синтеза. Сигнал DS(k) имеет вид
DS(k) cos ˆ (k) j sin( ˆ (k) e ˆ (k) .
В результате умножения получается сигнал S0 (k) , содержащий разность фаз (k) в качестве аргумента:
S0(k) S(k) DS(k) 0,5Ue j(k) e j ˆ (k) 0,5Ue j((k) ˆ (k)) 0,5Ue j(k) .
Комплексное умножение сигналов находит широкое применение при цифровой обработке, т.к. при комплексном умножении не образуются комбинационные частоты, которые необходимо дополнительно фильтровать. Прямой цифровой синтез реализуется с помощью вычисления тригонометри-
41
ческих функций или с помощью запоминающего устройства, в котором хранятся заранее вычисленные функции.
Для |
вычисления |
(k) |
можно |
использовать |
арктангенс |
atan(S0(k).im S0 (k).re) или |
atan2(S0(k).im, S0(k).re) . Функция |
арктангенса |
|||
lnK
Ka |
12 |
дБ |
|
|
|
|
окт |
||||
|
|
|
|
||
|
6 |
дБ |
ln |
||
|
окт |
||||
|
|
|
|
|
|
atan определяет (k) в пределах (
2) , а atan2 – ( ) . Если в системе связи используется модуляция фазы ( ) , то изменение фазы вызывает одновременное изменение знака действительной и мнимой частей S0 (k) , и значение арктангенса не изменяется. Дискриминатор с функцией atan находит применение в спутниковой на-
Рис. 8.6.
вигационной системе. При отсутствии фазовой модуляции используют функцию atan2 .
В сглаживающем фильтре содержится два интегратора – фазы и частоты (рис. 8.8). Операции, выполняемые в сглаживающем фильтре, определяются разностными уравнениями экстраполяции и фильтрации.
(k) |
|
|
|
K2 |
|
|
|
|
|
ˆ (k) |
ˆ (k) |
K1 |
t |
t |
t |
ˆ (i 1)
Рис. 8.8. |
|
|
Экстраполяция оценки фазы на интервале времени t |
определяется вы- |
|
ражением |
|
|
φˆ (k 1) φ(ˆ k) t * ˆ (k) |
, |
(8.1) |
|
||
где ˆ (k) – оценка значения круговой частоты. |
|
|
Уравнения фильтрации имеют вид: |
|
|
ˆ (k 1) ˆ (k) K1 ε(k) , |
(8.2) |
|
42
φ(ˆ k 1) φˆ |
(k 1) K |
2 |
ε(k) |
, |
(8.3) |
|
|
|
где K1 и K2 – коэффициенты усиления интеграторов частоты и, соответственно, фазы.
Если фазовый дискриминатор поменять на частотный (например вида:
I (i 1)Q(i) I (i)Q(i 1) S(i 1).re* S(i).im S(i).re * S(i 1).im ), то получим систему АПЧ. При этом интегратор фазы выполняет функцию аккумулятора фазы и не входит в состав сглаживающей цепи в качестве дополнительного интегратора (корректируется только интегратор частоты).
8.2. Описание лабораторной установки
Лабораторная установка состоит из генератора синусоидального сигнала, осциллографа, отладочной платы EZ-KIT и управляющего компьютера
(рис. 8.9).
Отладочная плата EZ-KIT содержит сигнальный процессор BF533, АЦП для преобразования сигнала генератора в цифровую форму и ввода данных в память процессора, ЦАП для вывода данных из процессора на осциллограф, а также интерфейс USB для связи процессора с управляющим компьютером. Компьютер содержит интегрированную среду разработки программ "Visual DSP" для сигнального процессора, которая позволяет редактировать программы и вводить их в сигнальный процессор. В лабораторной работе используются готовые программы, хранящиеся в памяти компьютера. Компьютер используется также для контроля состояния регистров и памяти процессора. С помощью компьютера строятся графики процессов, записанных в память процессора. При выполнении работы имеется возможность изменять коэффициенты усиления следящей системы и уровень флюктуационной помехи.
Генератор
EZ-KIT
Компьютер
Осциллограф
Рис. 8.9.
Современные сигнальные процессоры, АЦП и ЦАП являются сверхбольшими интегральными схемами, которые при каждом включении требуют
43
инициализации управляющих регистров. Поэтому значительная часть программ содержит команды инициализации процессора, интерфейсов связи с АЦП и ЦАП. После завершения инициализации процессор переходит в режим ожидания получения данных из АЦП. Частота получения данных определяется частотой дискретизации 48 кГц в АЦП. При этой частоте дискретизации возможно высококачественное 24-разрядное преобразование входных сигналов с частотой до 20 кГц. 24-разрядные числа с помощью прямого доступа в память (DMA) поступают в ОЗУ процессора. После записи данных в ОЗУ формируется сигнал прерывания приема, который используется для запуска программы обработки принятых данных. При обработке данных в реальном времени длительность выполнения программы должна быть меньше, чем период дискретизации. Поэтому обработка данных после записи результатов в ОЗУ завершается переходом в режим ожидания следующего прерывания. Результаты обработки из ОЗУ передаются в ЦАП и, затем, на осциллограф.
Для программной реализации системы ФАПЧ используется сигнальный процессор с фиксированной точкой и 16-разрядным словом. В таком процессоре все числа представляются или в дробном виде – fract16 или как целые числа – int. При обработке сигналов используется дробная запись, которая позволяет представлять значения в интервале 1, 1 . Недостатком такой записи является необходимость масштабирования.
В современных сигнальных процессорах для сокращения затрат времени на составление программ широко используется язык программирования С. При этом структура процессора оптимизирована для повышения эффективности компилятора, преобразующего программу С в исполняемый файл.
Программа обработки данных в системе ФАПЧ содержится в файле Process_ pll:
1.//Process_pll
2.#include <btc.h>
3.#include "fc.h"
4.#include "fsm.h"
5.#include <complex.h>
6. complex_fract16 dds; |
//сигнал с частотой 6 кГц |
7. complex_fract16 s; |
//выходной сигнал квадратурного детектора |
8. complex_fract16 ds; |
//опорный сигнал |
9. complex_fract16 er; |
//сигнал ошибки |
44
10.complex_fract16 erd={0,0}; //задержанный сигнал ошибки
11.int time3; //счетчик времени для расчета дисперсии ошибки
12. int time=0; |
//счетчик времени с периодом 8 циклов (частота 6 кГц) |
13. int time2=0; |
//счетчик времени с периодом 48 циклов (частота 1 кГц) |
14. int acc[2]={0,0};//acc[0] – интегратор частоты, acc[1] – интегратор фазы
15. fract32 sigma_2; |
//дисперсия ошибки |
16. fract16 d_ph=0; |
// ошибка измерения фазы |
17. fract16 d_f=0; |
// ошибка измерения частоты |
18. fract16 php; |
//оценка фазы сигнала |
19. fract16 k1=0x2E1; |
//коэффициент усиления интегратора частоты |
20. fract16 k2=0x1333; |
//коэффициент усиления интегратора фазы |
21. fract16 kN=0xC51; |
//множитель помехи |
22. //-------------------------------------------------------------------------- |
// |
23. // Функция Process_Data() |
|
24. //-------------------------------------------------------------------------- |
// |
25.void Process_Data(void)
26.{
27. // |
--------------------------------------------------------------------------// |
28. // |
квадратурный детектор |
29. //-------------------------------------------------------------------------- |
// |
30.dds.re = cos2pi_fr16(time*0x1000);// формирование сигнала cos с частотой
6кГц
31.iChannel0LeftOut = mult_fr1x16(dds.re, iChannel0LeftIn);//умножение сиг-
нала на cos
32.dds.im = -sin2pi_fr16(time*0x1000);//формирование сигнала sin с частотой
6кГц
33.iChannel0RightOut = mult_fr1x16(iChannel0LeftIn, dds.im);//умножение сигнала на sin
34.time=(time+1)%8;
35.fir_fr16(&iChannel0LeftOut, &s.re,1, &state1); // формирование квадратур s.re
36.fir_fr16(&iChannel0RightOut, &s.im,1, &state2);// и s.im с помощью фильтрации
37. |
{ time2=(time2+1)%48; |
// децимация частоты дискретизаци 48 |
кГц – 1 кГц |
|
|
38. // |
-------------------------------------------------------------------------- |
// |
45
39.// фазовая (частотная) автоподстройка частоты
40.//--------------------------------------------------------------------------//
41.if (time2==0) {
42. |
php=(acc[1]>>16)*0.5+0x4000; |
//преобразование интервала |
[-1,1] в |
[0,1] |
|
|
|
43. |
ds.re = cos2pi_fr16(php); |
//вычисление опорного сигнала cos |
|
44. |
ds.im = -sin2pi_fr16(php); |
//вычисление опорного сигнала -sin |
|
45. |
er=cmlt_fr16(s,ds); |
//вычисление комплексного сигнала |
|
ошибки |
|
|
|
46. |
d_ph=atan2_fr16(er.im,er.re); |
//вычисление сигнала ошибки (для |
|
ФАПЧ) |
|
|
|
47. |
//d_f=mult_fr1x16(erd.re, er.im)-mult_fr1x16(er.re, erd.im); |
// (для |
|
АПЧ)
48.signal_probe( p_probe, d_ph, acc[1]>>16); // графики ошибки и фазы
(частоты)
49.time3=(time3+1)%20;
50.if (time3==0) {
51. fract32 temp;
52. temp=mult_fr1x32(d_ph,d_ph);
53.//расчет дисперсии ошибки:
54. |
|
|
sigma_2=add_fr1x32(mult_fr1x32x32(temp, |
0x0020C49B),mult_fr1x32x32(sigma_2, |
|||
0x7FDF3B64)); |
|
|
|
55. |
} // end ‘расчет дисперсии’ |
||
56. |
d_ph+=mult_fr1x16(kN,rand()); //суммирование помехи и сигнала |
||
ошибки |
|
|
|
57. |
//erd=er; |
// запоминание сигнала ошибки (для АПЧ) |
|
58. |
acc[1]+=acc[0]; |
//экстраполяция содержимого интегратора |
|
фазы |
|
|
|
59. |
|
|
|
60. |
acc[0]+=mult_fr1x32(d_ph,k1); |
//коррекция интегратора частоты (для |
|
ФАПЧ) |
|
|
|
61. |
acc[1]+=mult_fr1x32(d_ph,k2); |
//коррекция интегратора фазы (для |
|
ФАПЧ) |
|
|
|
62.//acc[0]+=mult_fr1x32(d_f,k1); // для АПЧ
63. |
} // end ‘автоподстройка частоты’ |
46
64.} // end ‘децимация’
65. |
iChannel1LeftOut = ds.re; |
//передача опорного сигнала в ЦАП |
66. |
iChannel1RightOut =0.8*s.re; |
//передача входного сигнала в ЦАП |
67.} // end ‘void Process_Data’
Вначале программы включены заголовочные файлы с расширением .h, содержащие объявление глобальных переменных и правила работы с комплексными данными. Затем идет список комплексных и целочисленных переменных. Комплексные переменные состоят из двух частей – .re и .im.
Интеграторы acc[] используют переменную типа int для повышения точности потому, что она имеет длину 32 разряда. Остальные переменные содержат 16 разрядов.
Функция Process_Data не имеет аргументов и запускается прерыванием приема данных из АЦП с частотой 48 кГц. При вычислении косинуса и синуса используются функции cos2pi_fr16 и sin2pi_fr16, масштабированные таким образом, что интервалу ( pi ) соответствует интервал (0,1). Приращение фа-
зы в шестнадцатеричной записи 0х1000 равно 1/8. Таким образом, период составляет 8 тактов частоты 48 кГц, и формируются функции косинуса и синуса с частотой 6 кГц. Эти сигналы умножаются на входной сигнал из АЦП – iChannel0LeftIn. Результаты умножения обрабатываются функциями С fir_fr16, в которых содержатся программы ФНЧ с полосой пропускания 400 Гц. Результаты фильтрации содержатся в s.re и s.im. После фильтрации можно снизить частоту дискретизации до 1 кГц путем децимации – исключения части отсчетов. Для децимации используется счетчик n2. Этот счетчик выполняет суммирование единиц по модулю 48, т.е. после достижения суммы 48 производится запись 0. Алгоритм ФАПЧ запускается только при условии n2==0 и действует, соответственно, с частотой 1 кГц.
Для преобразования 32-разрядных данных аккумулятора в 16-разрядные используется сдвиг на 16, а для согласования масштаба – умножение на 0,5. Кроме того, выполняется смещение на 0х4000 (0,5), чтобы попасть в середину интервала (0,1). После вычисления опорного сигнала ds выполняется комплексное умножение на сигнал s – cmlt_fr16. Ошибка измерения фазы определяется с помощью функции atan2_fr16. Эта функция использует 16разрядные числа и также использует масштабирование 1
pi . Таким образом, интервалу углов [ pi,+pi] соответствуют значения [ 1, 1]. Это масштабирование затем компенсируется при вычислении косинуса и синуса и не влияет
47
на коэффициент усиления разомкнутого контура. Однако, из-за масштабиро-
вания в интеграторе частоты (рис.8. 8) вместо значения ˆ |
хранится |
ˆ |
. От- |
2 f |
личие программы от схемы на рис. 8.8 заключается в том, что умножение на
t |
выполняется до интегратора. |
Тогда в интеграторе хранится |
величина |
ˆ |
t , которая согласно теореме Котельникова всегда меньше единицы. Дей- |
||
2 f |
|||
ствительно, частота дискретизации |
ˆ |
ˆ |
|
2 f fдискр , но fдискр 1 t и |
2 f t 1. |
||
Таким образом, в интеграторе хранится приращение фазы (с масштабным множителем 1
pi ) за время t , пропорциональное значению частоты. В ла-
бораторной работе t 0,001мс и для получения истинного значения fˆ необходимо умножить число в интеграторе acc[0] на 500.
Экстраполяция, в соответствии с (8.1), выполняется командой acc[1]+=acc[0], которая добавляет к величине фазы приращение фазы.
Операция фильтрации выполняется в соответствии с (8.2) и (8.3). Значения s.re и ds.re поступают в ЦАП для наблюдения на осциллогра-
фе. При слежении за фазой эти напряжения совмещены. Кроме того, сигналы ошибки и фазы поступают в телеметрический канал системы "Visual DSP" для получения осциллограммы на дисплее компьютера.
8.3.Задание по работе
8.3.1.Расчетная часть работы
1. Уточнить у преподавателя свой вариант исходных данных для расчетной части (см. таблицу). Исходными данными являются: среднеквадратичное значение шума на входе фазового дискриминатора [град], эффективная
полоса системы fэфф 
Ka [Гц], и интервал временной дискретизации
t 103c .
|
|
|
|
|
Таблица |
|
|
|
|
|
|
|
Вариант 1 |
Вариант 2 |
Вариант 3 |
Вариант 4 |
Вариант 5 |
|
|
|
|
|
|
[град] |
10 |
11 |
12 |
13 |
14 |
fэфф [Гц] |
150 |
136 |
125 |
115 |
110 |
2. Расчет коэффициентов усиления интеграторов частоты K1 и фазы K2 . 2.1. Предварительные сведения. Оптимальные параметры непрерывного
эквивалента системы:
48
|
|
4 |
1 |
|
|
|
|
1 |
|
|
Ka (16 |
a |
5 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|||
|
|
) |
T |
|
|
|
|
|
||
σ4 |
t2 |
|
|
|
||||||
|
|
|
|
|
||||||
|
|
, |
k |
|
|
K |
a , |
|||
|
|
|
|
|
|
|
|
|||
причем fэфф 
Ka .
Оптимальные параметры дискретной системы:
K1 t * Ka – коэффициент усиления интегратора частоты,
K2 t * Ka *Tk t * 
Ka – коэффициент усиления интегратора фазы, причем, если умножение на t выполнятся на входе первого интегратора
(см. р.1.2), то:
K t2 |
|
|
|
|
|
)2 |
|
|
|
|
|
|
|
|
|
|
* K |
a |
( t * |
K |
a |
и |
K |
2 |
K t * K |
a . |
(8.4) |
||||||
1 |
|
|
|
|
|
1 |
|
|
||||||||
2.2. С помощью калькулятора (например – калькулятора ЭВМ) выполнить расчет коэффициентов системы (8.4). После выполнения расчета необ-
ходимо преобразовать коэффициенты K1 и K2 в дробный формат fract16.
Для этого следует их умножить на число 215 |
и, с помощью калькулятора, |
|||
преобразовать |
в |
шестнадцатеричный |
формат. |
Например: |
K1 0.029 K1 0x3B6.
2.3. Для экспериментального исследования помехоустойчивости системы ФАПЧ следует также вычислить значения
K1 / 4, K1 / 2, 2K1, 4K1 и K2 / 4, K2 / 2, 2K2, 4K2 , |
(8.5) |
после чего их также преобразовать в шестнадцатеричный формат. 3. Расчет множителя помехи Kn .
Шум в программе вырабатывается датчиком с равномерным распределением в интервале [-1,1]. Дисперсия такого шума равна (2)2 12 1/ 3 . Если шум добавляется после фазового дискриминатора (atan2), то, с учетом масштабного множителя, дисперсия шума датчика, приведенного к входу дискримина-
тора, равна |
σ2 |
pi2 |
3 σ2 |
(180)2 / 3 10800 [град2] и |
|
п |
103,9 |
[град]. |
|
n |
|
n |
|
|
|
|
Для управления уровнем интенсивности шума в программе необходимо ввести масштабный коэффициент (множитель помехи)
Kn |
σ |
, |
(8.6) |
|
σn |
||||
|
|
|
где – заданное значение уровня помехи.
49
