KURS

Задание.

Создать МП систему управления настройкой приемника. Упрощенная схема приемника изображена на рис. 1.

Рис 1

Контур приемника состоит из индуктивности L> и емкости варикапа VD1. Эта емкость зависит от подаваемого на варикап постоянного напряжения Uупр (зависимость обратнопропорциональная). Выделенное контуром ВЧ напряжение U> детектируется амплитудным детектором (АД) и при настройке на станцию на выходе АД получается сигнал U>вых>. Необходимо подключить МПС к приемнику так, чтобы МП измеряя величину U>вых> мог воздействовать на варикап с целью настройки входного контура. МПС должна обеспечить:

— точную настройку на заданную станцию (величина рассогласования по частоте не должна превышать 3% от ширины полосы контура 2f,

— поиск станций в диапазоне частот F>min>...F>max>.

1. Описание алгоритма.

Напряжение на контуре детектируется амплитудным детектором (АД), преобразуется в АЦП в двоичный код и поступает на МП. МП оценивает сигнал и выдает управляющее напряжение U>упр>, которое после ЦАП поступает на варикап для изменения частоты настройки контура. Задача, решаемая МП, состоит в поиске экстремума функции U>упр>(F). Из всех известных алгоритмов поиска вследствие малой разрядности МП выбирается метод нулевого порядка - метод случайного пошагового поиска экстремума с запоминанием верного шага.

Суть алгоритма состоят в следующем. Так как напряжение на контуре является функцией расстройки {F>k>-F>o>}, то пря изменении F изменяется и U>k>. МП формирует приращение U>упр> (может быть и положительным и отрицательным). Происходит сравнение U>kn>=f(U>y>) и U>kn+1>=f(U>y>+U>y>).Если U>kn+1>>U>kn>, то делается шаг в ту же сторону, в противном случае - в противоположную. Одноэкстремальный вид функции настройки позволяет одновременно осуществить операцию автоматического поиска частоты F>o>. АЦП и ЦАП подсоединяются к МПС через порты ввода/вывода. Для построения портов ввода/вывода используются порты Р1 и Р2 ОЭВМ. Это позволяет использовать для ввода/вывода команды ОЭВМ работы портами. Предположим, что для АЦП осуществляется программная задержка на время, большее времени преобразования, чтобы избежать ввода еще одного регистра для опроса сигнала готовности АЦП. Сигнал на ЦАП подается сразу из ОЭВМ через порт. Однако при регулировании необходимо организовать программную задержку на время установления переходных процессов в контуре. Кроме того, для исключения влияния шума на процесс регулирования нужно установить нижний предел изменения U>k>.

2. Структурная схема алгоритма.


3. Математическое описание.

3.1 Исходные данные:

Диапазон частот поиска

F>min>=1 мГц

F>max>=1,5 мГц

Полоса частот

f=3кГц

Параметры варикапа:

Начальное значение частоты контура

F>k>>0>=1 мГц

Управляющее напряжение

U>упр0>=2В

Крутизна характеристики преобразования

S=25 кГц/В

Параметры ЦАП (БИС ЦАП К572ПА1):

Опорное напряжение

U>ЦАП>=10,24В

Количество разрядов

n=10

Параметры АЦП (AD7575):

Опорное напряжение

U>АЦП>=2,56В

Количество разрядов

n=8

3.2 Расчёт.

Частота настройки контура зависит от управляющего напряжения следующим образом:

F>k>=F>k0>+S(U>упр>-U>упр>>0>) (1)

где F>k>>0> — начальное значение частоты контура при U>упр>=U>упр0>

S — крутизна характеристики преобразования.

U>упр>=U>упр2>-U>упр1> (2)

Из (1) следует, что

Т.к f=3кГц, то при

F>1>=F>min>+f=1000+3=1003 (кГц),  (В)

F>2>=F>min>+2f=1006 (кГц)  (В)

U>упр>=U>упр2>-U>упр1>=1,24-1,12=0,12 (В)

> > (В) — минимальное значение напряжения на входе, которое даёт 1 в младшем разряде кода.

U>упр>>U>ЦАП>  десятиразрядный ЦАП подходит для выполнения данной задачи. U>ЦАП>=0,01 В  на вход надо подавать по 12k импульсов (как бы проскакивая по 12 импульсов сразу), где k — номер шага > >. 12>10> = 0000001100>2>,  2 первых разряда всегда равны 0,  их можно заземлить,  к порту подключается 8 разрядов (старших) и вместо 12 на ЦАП подается 3 (11>2>=3>10>).  можно охватить весь диапазон без использования дополнительных разрядов.

> > — количество шагов для того чтобы пройти всю область настройки.

12∙K>n>=2004 — нужно 10 разрядов

8∙K>n>=501 — нужно 8 разрядов.

> > (В)

Если U>k> возрастает на постоянно на всей области настройки, то > > (В)

U>k>>U>АЦП>  8-ми разрядный ЦАП подходит для решения данной задачи.

4. Распределение ресурсов МП системы

Регистр ОЭВМ R2 будет хранить значения U>упр>, в R3 помещаются значения предыдущего шага U>k>>-1>, а в A (аккумулятор) — значения последующего шага U>k>. В R4 в процессе работы программы будем помещать только N — параметр программной задержки. В B будет храниться количество шагов для прогона всей области настройки. Выбираем N=135, т.к время программной задержки равно 400 мкс, а вся процедура реализуется в 3 цикла,  > >.

5. Подробная структурная схема алгоритма.


6. Программа работы МК.

Кол-во циклов

Метка

Мнемоники

Комментарий

NAME P78

имя модуля программы

CSEG AT 0H

абсолютный кодовый сегмент

ORG 0H

псевдокоманда задания адреса памяти

1

MOV R2, #3

в R2 помещается U>упр>

1

MOV B, #167

в B помещается количество шагов

1

MOV A P1

в A помещается содержимое U>k> из порта P1

1

MOV R3, A

в R3 помещается значение U>k> из A

1

M1:

MOV R4, #135

инициализация счетчика программной задержки

1

MOV A, R2

в A помещается значение U>упр> из R2

1

MOV P2, A

в порт P2 помещается значение U>упр> из A

1

SETB 3.7

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

1

CLR 3.7

1

SETB 3.7

1

M2:

NOP

оператор задержки

2

DJNZ R4, M2

значение R4 (счетчик программной задержки) уменьшается на 1 и при R4> >0 осуществляется переход на метку M2

1

MOV A, P1

в A записывается U>k>>+1> из порта P1

1

sub>B A, R3

из A вычитается R3 (U>k>>+1> сравнивается с U>k>)

2

JC M3

если флаг C=0 (U>k>>+1>>U>k>), то осуществляется переход на метку M3

1

MOV A, P1

в A помещается значение U>k>>+1> из порта P1

1

MOV R3, A

в R3 помещается значение U>k>>+1> из A

1

INC R2

значение R2 (U>упр>) увеличивается на 1

1

INC R2

значение R2 (U>упр>) увеличивается на 1

1

INC R2

значение R2 (U>упр>) увеличивается на 1

2

DJNZ B, M1

значение B (счетчик шагов) уменьшается на 1 и при B> >0 осуществляется переход на метку M1

2

AJMP M5

осуществляется безусловный переход на метку M5

1

M3:

MOV R4, #135

инициализация счетчика программной задержки

1

CLR C

флаг С устанавливается в 0

1

DEC R2

значение R2 (U>упр>) уменьшается на 1

1

MOV A, R2

в A помещается значение U>упр> из R2

1

MOV P2, A

в порт P2 помещается значение U>упр> из A

1

SETB 3.7

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

1

CLR 3.7

1

SETB 3.7

1

M4:

NOP

оператор задержки

2

DJNZ R4, M4

значение R4 (счетчик программной задержки) уменьшается на 1 и при R4> >0 осуществляется переход на метку M4

1

MOV A, P1

в A помещается содержимое U>k>>+1> из порта P1

1

sub>B A, R3

из A вычитается R3 (U>k> сравнивается с U>k>>+1>)

1

MOV A, P1

в A записывается U>k>>+1> из порта P1

1

MOV R3, A

в R3 помещается значение U>k> из A

2

JC M3

если флаг C=0 (U>k>>U>k>>+1>), то осуществляется переход на метку M3

1

M5:

NOP

оператор задержки

END

конец модуля программы

7. Контрольный пример.

Для просмотра результатов вместо порта P1 будем значения U>k>, будут помещаться во внутреннюю память, начиная с адреса 20H и заканчивая адресом 27H ,  в R0 будет размещаться адрес внутренней памяти и “MOV A, P1” заменяется на “MOV A, @R0”. Так же уменьшим количество шагов и время программной задержки.

NAME 78

CSEG AT 0H

ORG 0H

MOV 21H, #1

задаются значения U>k>

MOV 22H, #3

MOV 23H, #6

MOV 24H, #9

MOV 25H, #6

MOV 26H, #7

MOV 27H, #9

MOV R0, #20H

в R0 помещается адрес 20H

MOV R2, #3

в R2 помещается начальное значение U>упр>

MOV B, #10

в B помещается количество шагов

MOV A @R0

в A помещается содержимое ячейки с адресом R0

MOV R3, A

в R3 помещается содержимое А (ячейки с адресом 20H)

M1:

INC R0

значение R0 (адрес внутренней памяти) увеличивается на 1

MOV R4, #3

инициализация счетчика программной задержки

MOV A, R2

MOV P2, A

M2:

NOP

DJNZ R4, M2

значение R4 (счетчик программной задержки) уменьшается на 1 и при R4> >0 осуществляется переход на метку M2

MOV A, @R0

в A помещается содержимое ячейки с адресом R0 (U>k>>+1>)

sub>B A, R3

из A вычитается R3 (U>k>>+1> сравнивается с U>k>)

JC M3

если флаг C=0 (U>k>>U>k>>+1>), то осуществляется переход на метку M3

MOV A, @R0

в A помещается содержимое ячейки с адресом R0

MOV R3, A

в R3 помещается значение U>k>>+1> из A

INC R2

значение R2 (U>упр>) увеличивается на 1

INC R2

значение R2 (U>упр>) увеличивается на 1

INC R2

значение R2 (U>упр>) увеличивается на 1

DJNZ B M1

значение B (счетчик шагов) уменьшается на 1 и при B> >0 осуществляется переход на метку M1

AJMP M5

осуществляется безусловный переход на метку M5

M3:

INC R0

значение R0 (адрес внутренней памяти) увеличивается на 1

DEC R2

значение R2 (U>упр>) уменьшается на 1

MOV R4, #3

инициализация счетчика программной задержки

CLR C

флаг С устанавливается в 0

MOV A, R2

MOV P2, A

M4:

NOP

MOV A, @R0

в A помещается содержимое ячейки с адресом R0 (U>k>>+1>)

sub>B A, R3

из A вычитается R3 (U>k>>+1> сравнивается с U>k>)

MOV A, @R0

в A помещается содержимое ячейки с адресом R0 (U>k>>+1>)

MOV R3, A

в R3 помещается значение U>k>>+1> из A

JC M3

если флаг C=0 (U>k>>U>k>>+1>), то осуществляется переход на метку M3

M5

NOP

END

8. Определение быстродействия программы.

Найдём, сколько времени потребуется для поиска станции, которая находится в середине диапазона. F>0>=1,25 мГц и при условии что придётся делать один шаг назад.

T=N>ц1>t>ц1>+N>ц2>t>ц2>+t>пер>+t>

N>ц1>=250 — количество шагов в первом цикле

N>ц2>=1 — количество шагов во втором цикле

t>ц1>=417 мкс

t>ц2>=414 мкс

t>пер>=424 — время перехода из одного цикла в другой

t>=4 мкс — время ввода начальных данных

 T=250417+1414+424+4=104717 мкс

9. Листинг отлаженной программы.

A51 MACRO ASSEMBLER 78 24/12/01 13:46:28 PAGE 1

DOS MACRO ASSEMBLER A51 V5.10

OBJECT MODULE PLACED IN 78.OBJ

ASSEMBLER INVOKED BY: M:\KEILTEST\BIN\A51.EXE 78.A51 DB EP

LOC

OBJ

LINE

SOURCE

1

NAME P78

----

2

CSEG AT 0H

0000

3

ORG 0H

0000

7A03

4

MOV R2, #3

0002

75F0A7

5

MOV B, #167

0005

E590

6

MOV A, P1

0007

FB

7

MOV R3, A

0008

7C87

8

M1:

MOV R4, #135

000A

EA

9

MOV A, R2

000B

F5A0

10

MOV P2, A

11

000D

00

12

M2:

NOP

000E

DCFD

13

DJNZ R4, M2

0010

E590

14

MOV A, P1

0012

9B

15

sub>B A, R3

0013

400B

16

JC M3

0015

E590

17

MOV A, P1

0017

FB

18

MOV R3, A

0018

0A

19

INC R2

0019

0A

20

INC R2

001A

0A

21

INC R2

001B

D5F0EA

22

DJNZ B, M1

001E

0132

23

AJMP M5

0020

7C87

24

M3:

MOV R4, #135

0022

C3

25

CLR C

0023

1A

26

DEC R2

0024

EA

27

MOV A, R2

0025

F5A0

28

MOV P2, A

29

0027

00

30

M4:

NOP

0028

DCFD

31

DJNZ R4, M4

002A

E590

32

MOV A, P1

002C

9B

33

sub>B A, R3

002D

E590

34

MOV A, P1

002F

FB

35

MOV R3, A

0030

40EE

36

JC M3

0032

00

37

M5:

NOP

38

END

A51 MACRO ASSEMBLER 78 24/12/01 13:46:28 PAGE 2

SYMBOL

TABLE

LISTING

------------

-------------

------------

NAME

T Y P E

VALUE

ATTRIBUTES

B. . . . . . . . . . .

D

ADDR

00F0H

A

M1 . . . . . . . . .

C

ADDR

0008H

A

M2 . . . . . . . . .

C

ADDR

000DH

A

M3 . . . . . . . . .

C

ADDR

0020H

A

M4 . . . . . . . . .

C

ADDR

0027H

A

M5 . . . . . . . . .

C

ADDR

0032H

A

P1 . . . . . . . . . .

D

ADDR

0090H

A

P2 . . . . . . . . . .

D

ADDR

00A0H

A

P78. . . . . . . . .

N

NUMB

-----

REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)

TYPE=RANDOM FORMAT=PAGE>14


P2

P1

CP

ALE

PSEN

RD

Приложение 1

Амплитудный детектор

U>упр>

VD1

L1

К572ПА1

AD 7575

8 р

8 р

~

D B0

D B1

D B2

D B3

D B4

D B5

D B6

D B7

BUSY

W

CS

RD

C1

U>k>

U>k>>+1>

Структурная схема управления настройкой приёмника.

TYPE=RANDOM FORMAT=PAGE>16


МГАПИ

Курсовой проект

Группа ПР-7

Специальность 2008

Студент Розенфельд А.

2001г.