Реализация функций и дискретных автоматов на МК

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

2015-01-14

40.42 KB

2 чел.


Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск


PAGE  5

Дисциплина «Микроконтроллеры в системах управления», 3-й курс, семестр 6.  Модуль 2 – семестр 8

Модуль 2 – Тема 8 Реализация функций и дискретных автоматов на МК

8.1 Особенности реализации табличных функций

Одним из подходов к реализации произвольных слабо формализованных функциональных зависимостей является интерполяция по таблице значений.

В дисциплинах, связанных с изучением численных методов (информатика, исследование операций) рассматривается классический метод линейной интерполяции. Согласно нему, значение функции в произвольной точке Х находится на основании значений функции в двух ближайших узлах интерполяции: Хi XXi+1. Функция задается в виде массива значений аргумента и соответствующих значений функции. Перед вычислением значения функции необходимо найти соответствующий отрезок между узами интерполяции. Применение этого метода требует поисковой процедуры и интерполяционных вычислений.

В некоторых случаях можно существенно упростить интерполяционную процедуру. Предпосылками этого являются:

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

Классическим примером является формирование кодов управления семисегментным индикатором. В этом случае по входному аргументу от 0 до 15 нужно формировать байтовый код для индикатора (7-й бит – сегмент “р”, 6-й бит – сегмент “g”,…,  0-й бит – сегмент “a”). Набор значений аргументов формируется в соответствии с таблицей:

Аргумент
(индекс)

Символ
для
отображения

Результат функции

Сегменты индикатора

HEX-представление
константы

p

g

f

e

d

c

b

a

7

6

5

4

3

2

1

0

0

0

0

0

1

1

1

1

1

1

3F

1

1

0

0

0

0

0

1

1

0

06

2

2

0

1

0

1

1

0

1

1

5B

3

3

0

1

0

0

1

1

1

1

4F

4

4

0

1

1

0

0

1

1

0

66

5

5

0

1

1

0

1

1

0

1

6D

6

6

0

1

1

1

1

1

0

1

7D

7

7

0

0

0

0

0

1

1

1

07

8

8

0

1

1

1

1

1

1

1

7F

9

9

0

1

1

0

1

1

1

1

6F

10

A

0

1

1

1

0

1

1

1

77

11

b

0

1

1

1

1

1

0

0

7C

12

C

0

0

1

1

1

0

0

1

39

13

d

0

1

0

1

1

1

1

0

5E

14

E

0

1

1

1

1

0

0

1

79

15

F

0

1

1

1

0

0

0

1

71

Гашение индикаторов

16

Нет свечения

0

0

0

0

0

0

0

0

00

17

Нет свечения

0

0

0

0

0

0

0

0

00

Другие символы …

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

При реализации такого подхода для MCS-51 удобно воспользоваться командой чтения константы из памяти программ:  MOVC A,@A+DPTR. При этом адрес памяти программ, из которого читается константа, будет вычислен как сумма содержимого А и текущего значения регистра DPTR. Т.е. значение DPTR является базовым адресом начала массива. Сам массив значений может располагаться в любом месте памяти программ (до или после подпрограммы определения функции).

      mov a,#3   ; задание нужного индекса (начиная с 0)

      call F1   ; вызов подпрограммы

     . . .   ; прочие команды

; таблица значений функции (константы в памяти программ)

table: db 3Fh,06h,5Bh,4Fh,66h,6Dh,07Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h 

; подпрограмма получения значения функции по аргументу-индексу

F1: mov dptr,#table ; задание адреса таблицы

       movc a,@a+dptr  ; чтение элемента таблицы в аккумулятор

       ret    ; возврат из подпрограммы

 В результате выполнения приведенного фрагмента подпрограмма F1 вернет в аккумуляторе значение 4Fh (элемент с индексом 3 при нумерации, начиная с 0).

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

Альтернативный вариант решения – использование относительной адресации в таблице. Этот подход основан на том, что таблица значений функции должна располагаться в памяти программ непосредственно после команды RET, т.е. положение таблицы может быть точно определено относительно определенных операторов внутри подпрограммы (при этом абсолютный адрес таблицы знать не нужно). Чтение элемента таблицы выполняется командой MOVC A,@A+PC. При этом адрес памяти программ, из которого читается константа, будет вычислен как сумма содержимого А и текущего значения регистра PC.

      mov a,#3   ; задание нужного индекса (начиная с 0)

      call F1   ; вызов подпрограммы

     . . .   ; прочие команды

 

; подпрограмма получения значения функции по аргументу-индексу

F1: inc  a   ; коррекция индекса (учет команды RET)

       movc a,@a+pc  ; чтение элемента таблицы в аккумулятор

       ret    ; возврат из подпрограммы

; таблица значений функции должна располагаться в памяти программ

; сразу после подпрограммы F1

table: db 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h 

 При чтении команды MOVC A,@A+PC из памяти перед ее выполнением в регистре PC формируется адрес следующей команды, т.е. однобайтовой команды RET.  Адрес начала таблицы на 1 больше адреса команды RET. Именно это учитывается с помощью команды INC A, которая корректирует заданный индекс (смещение от начала таблицы до нужного элемента). Предложенная подпрограмма не использует никакие дополнительные регистры. Заметим, что значение адреса таблицы явно не используется.

Еще один пример использования указанного подхода – реализация функции sin(x). Пусть аргумент функции изменяется в пределах от 0 до , и, следовательно, значение функции нарастает от 0 до 1, затем уменьшается до 0. Значение аргумента и результат можно представлять в однобайтовом формате. В таком случае аргумент может принимать 256 различных значений, и вес единицы младшего разряда в представлении аргумента составляет (/255). При представлении значений функции будем полагать, что запятая располагается перед старшим разрядом, т.е. значению 0 соответствует двоичный код 00000000, а значению 1 – код 11111111. Набор значений функции может быть получен итерационным расчетом по следующей формуле:

 где [ ]  – операция получения целой части числа.

Функция получения значения синуса может выглядеть так:

SIN: inc  a   ; коррекция индекса (учет команды RET)

       movc a,@a+pc  ; чтение элемента таблицы в аккумулятор

       ret    ; возврат из подпрограммы

; таблица значений функции – 256 байт

table: db 00h,01h,...,0FEh,0FFh,0FEh,...,01h,00h    

 

Для вызова функции SIN в основной программе нужно записать в аккумулятор значение индекса – т.е. «взвешенное» значение аргумента:

 mov  a, #arg

 call  SIN

 . . .

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

8.2  Реализация дискретных (конечных) автоматов

Дискретные (конечные) автоматы часто используют в системах управления в случаях, когда набор состояний объекта управления и набор сигналов управления фиксированы, т.е. образуют конечное дискретное множество. Такие устройства обязательно имеют память, т.е. запоминают определенные наборы логических сигналов даже при отсутствии входных сигналов, которые являлись их причиной. Примером простейших автоматов являются триггеры.

Дискретные автоматы подразделяют на:

  •  автоматы Мура, в которых выходные сигналы Y являются функциями только состояний автомата Q:  QH = f1(Q, X), Y = f2(Q); X – входные сигналы;
  •  автоматы Мили, в которых выходы зависят непосредственно как от входных сигналов X, так и от состояния автомата:  QH = f1(Q, X), Y = f2(Q, X);
  •  автономные автоматы, которые не имеют информационных входов Х, а переключаются только под воздействием тактовых импульсов.

Способы физической реализации дискретных автоматов:

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

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

Одним из способов описания работы такого автомата может быть временная диаграмма.

Например, автомат должен циклически формировать набор двоичных сигналов управления A, B, C и D в такой последовательности (рис. 8.1)

Рисунок 8.1 – Исходная временная диаграмма одного цикла работы автомата

Как видно, работа автомата состоит из P = 5 состояний такой продолжительности:
T1 = 7,4с, T2 = 3с, T3 = 2,6с, T4 = 5,8с и T5 = 2с.

Шаг 1. Определяем продолжительность такта времени для работы автомата TD – как наибольший общий делитель всех интервалов времени для отдельных состояний. Получаем TD = 0,2c.

Шаг 2. Определяем общее количество тактов в цикле работы автомата как:

,

где P – количество состояний в цикле работы автомата.

Для нашего примера получаем:

такта.

Шаг 3. Определяем количество и номера тактов для каждого состояния:

Номер
состояния

Ti, с

Количество
тактов
Ni =Ti /TD 

Номера
тактов
для состояния

1

7,4

37

1..37

2

3

15

38..52

3

2,6

13

53..65

4

5,8

29

66..94

5

2

10

95..104

Шаг 4. Записываем выходной код автомата (ABCD) для каждого из Р состояний по временной диаграмме. Результаты можно представить в таблице:

Номер
состояния

Номера
тактов

A

B

C

D

1

1..37

1

0

0

1

2

38..52

1

1

0

0

3

53..65

0

1

0

0

4

66..94

0

0

1

1

5

95..104

0

1

1

0

Шаг 5. Для формирования алгоритма работы автомата нужно задать переменную – счетчик тактов К. Через каждый интервал времени TD = 0,2c нужно увеличивать К на 1 и получать значение выходного кода автомата, соответствующее значению К. Счетчик тактов К меняет свои значения от 1 до N, после чего опять принимает значение 1.

Шаг 6. Работу с таблицей выходных кодов автомата удобно реализовать на основе индексного доступа. Для этого можно использовать подход, описанный в разд. 8.1. В данном примере таблица выходных кодов будет содержать N = 104 элемента.

Автор конспекта:  Джулгаков В.Г., доцент каф. 301, ХАИ



 

Другие похожие работы, которые могут вас заинтересовать.
865. Реализация сельской библиотекой своих функций и задач на примере с.Гришино Заринского района Алтайского края 49.1 KB
  Значение библиотеки в современном мире. Характеристика особенностей сельской библиотеки. Анализ мирового библиотечного опыта показывает что в условиях рыночной экономики в сфере взаимоотношений библиотеки с государством имеют место две противоположные тенденции. Происходящие общественные трансформации влияют на библиотеки столь решительно что меняют не только всю систему библиотечного труда и библиотечных ресурсов но и впервые ставят вопрос о границах библиотечного пространства и самих основах существования традиционных...
12933. СИНТЕЗ ДИСКРЕТНЫХ СИСТЕМ УПРАВЛЕНИЯ 221.91 KB
  Задача синтеза цифровых устройств управления В тех случаях когда замкнутая дискретная система составленная из функционально необходимых элементов является неустойчивой или её показатели качества не удовлетворяют требуемым возникает задача её коррекции или задача синтеза устройства управления. В настоящее время наиболее рациональным путем построения устройств управления является использование управляющих вычислительных машин или специализированных цифровых вычислителей ЦВ–...
12089. DLES – платформа для создания систем дискретных имитационных моделей (Discrete Lattice Ecosystem Simulator) 17.55 KB
  Области коммерческого использования разработки. Также возможно применение данной системы государственными органами разного уровня осуществляющими контроль в области лесопользования и для обучения специалистов в соответствующей области.
6213. Приближение функций 3.08 MB
  Первая состоит в замене некоторой функции заданный аналитически или таблично другой функцией близкой к исходной но более простой и удобной для вычислений. Например замена функции многочленом позволяет получать простые формулы численного интегрирования и дифференцирования; замена таблицы приближающей функцией позволяет получать значения в ее промежуточных точках. Возникает также и вторая задача восстановление функции на некотором отрезке по заданным на этом отрезке значениям функции в дискретном множестве точек. Ответ на такой вопрос...
2766. Параметры процедур и функций 14.28 KB
  Исходные данные передаются в подпрограмму с помощью входных параметров а результаты работы подпрограммы возвращаются через выходные параметры. Входные параметры объявляются с помощью ключевого слова const; их значения не могут быть изменены внутри подпрограммы: function Minconst B: Integer: Integer; begin if B then Result := else Result := B; end; Для объявления выходных параметров служит ключевое слово out: procedure GetScreenResolutionout Width Height: Integer; begin Width := GetScreenWidth; Height := GetScreenHeight; end;...
17. Интерполирование функций полиномами 97.49 KB
  Исследовать зависимость ошибки интерполирования функции от количества и расположения узлов для интерполяционного полинома Ньютона. Это даёт возможность при любом значении вычислить величину абсолютной ошибки интерполирования 3 и таким образом провести полное исследование зависимости точности интерполирования от количества узлов интерполирования m и расположения точки x относительно...
14058. Эволюция функций государства 29.99 KB
  Российское государство как правовое явление прежде всего должно обеспечивать реализацию назначения государства а также его основных конституционных характеристик как демократического федеративного правового социального светского государства с республиканской формой правления. Главное назначение государства определяется ст.
200. Нормальные формы логических функций 63.53 KB
  Нормальные формы логических функций Представление булевой функции в форме дизъюнкции конъюнктивных термов конституент единицы Ki 2.7 называется дизъюнктивной нормальной формой ДНФ этой функции. содержат в точности по одной все логические переменные взятые с отрицаниями или без них то такая форма представления функции называется совершенной дизъюнктивной нормальной формой СДНФ этой функции. Как видно при составлении СДНФ функции нужно составить дизъюнкцию всех минтермов при которых функция принимает значение 1.
14335. Гильбертовы пространства аналитических функций 177.09 KB
  Гильбертовыми пространствами аналитических функций называются полные евклидовы пространства состоящие из аналитических функций.Пусть D открытое связное множество комплексной плоскости Cтогда пространством Бергмана называется пространство голоморфных функций в области Dдля которых число конечно. = = Пусть D открытый единичный круг в комплексной плоскости Cтогда пространством Харди называется пространство голоморфных функций в области Dдля...
6386. Практическое применение функций MS Excel 219.04 KB
  Microsoft Excel программа предназначена для организации данных в таблице для документирования и графического представления информации. Рабочие книги MS Excel предоставляют возможность хранения и организации данных вычисления суммы значений в ячейках...
© "REFLEADER" http://refleader.ru/
Все права на сайт и размещенные работы
защищены законом об авторском праве.