- •Проектирование микроконтроллеров
- •Isbn 5-7629-0812-7 сПбГэту «лэти», 2008
- •Список использованных сокращений
- •1.Цели и задачи курсового проектирования. Уточнение задания
- •2.Разработка структурной схемы контроллера Типы разрабатываемых контроллеров-имитаторов
- •2.1.Схемы алгоритмов функционирования контроллеров
- •2.2.Варианты заданий на курсовой расчет
- •2.3.Спецификация входных и выходных сигналов контроллеров
- •2.4.Параметры радионавигационного сигнала
- •2.5.Форматы пакетов управления и пакета «старт»
- •2.6.Упрощенная структурная схема контроллера
- •3.Разработка функциональных блоков контроллера
- •3.1.Блок cpu
- •3.2.Блок памяти
- •3.3.Блок приема пакетов управления
- •3.4.Входные сигналы параллельного интерфейса блока приема управляющих пакетов и пакета «старт»
- •3.5.Последовательный интерфейс для приема пакетов управления
- •3.6. Блок индикации
- •3.7.Электрический расчет драйверов сид-дисплея
- •3.8.Особенности построения сид-индикатора на приборах с оа
- •3.9.Блок формирования временного паттерна
- •3.10.Реализация интерфейса для передачи дельта-импульсов
- •3.11.Табличное представление временного паттерна
- •Другие варианты построения таймера временного паттерна, встречающиеся в курсовом расчете
- •3.12.Селектор адреса
- •4.Уточненная структурная схема контроллера
- •5.Разработка программного обеспечения
- •5.1.Программный модуль курсового расчета
- •5.2.Структура данных модуля
- •5.3.Конструирование программного модуля
- •6.Описание шаблонов программного обеспечения, представленного на cd
- •Последовательность действий для запуска исполняемого модуля программы
- •Варианты управления контроллером
- •6.1.Варианты шаблонов формирования временного паттерна
- •6.2.Варианты шаблона "Динамическая индикация"
- •Список иллюстраций Список таблиц
- •Список литературы
- •Типы схем
- •Проектирование микроконтроллеров
- •197376, С.-Петербург, ул. Проф. Попова, 5.
3.10.Реализация интерфейса для передачи дельта-импульсов
Как указывалось ранее, передачу дельта-импульсов в блок формирования аналогового сигнала необходимо выполнить через гальваническую развязку. Простейшим вариантом такой развязки является использование изолирующих оптоэлектронных приборов (ОЭП) в контроллере имитатора, причем размещать сам ОЭП необходимо в аналоговом блоке. Для примера на рис. 3.18 приведен изолирующий оптоэлектронный прибор типа HCPL0710, который входит в список рекомендованных для использования.
|
Рис. 3.31. Изолирующий оптоэлектронный прибор типа HCPL0710 |
Для хранения бинарного кода знака достаточно одного разряда, однако далее будет показано, что в некоторых случаях удобно генерировать временной интервал из нескольких отрезков, тогда нулевой код на выходах PC.4 и PC.5 может предотвращать ошибочное формирование дельта-импульсов.
Электрическая схема формирователя дельта-импульсов ТВП представлена на рис. 3.19. Схема имеет два выхода: V11 и V12. Первый используется для управления оптоэлектронным прибором формирования отрицательного дельта-импульса, а второй – положительного.
Длительность импульса переполнения на выходе таймера временного паттерна (P4 на выходе DD5, рис. 3.17) определяется тактовой частотой Fclk (в нашем случае 0,5 мкс), поэтому с целью эффективной передачи энергии в колебательную систему формирователя аналогового сигнала длительность
|
Рис. 3.32. Схема формирователя дельта-импульсов имитатора |
дельта-импульса на входе схемы формирования необходимо расширить до максимально возможного значения (2,5 мкс).
Это проще всего исполнить с помощью аналогового (DD12 на рис. 3.19) или цифрового мультивибратора. Вопросы построения аналоговых мультивибраторов подробно рассмотрены в [5, 5.10], цифровой вариант будет рассмотрен далее.
3.11.Табличное представление временного паттерна
Как указывалось ранее, коды временных интервалов ТВП удобно хранить в заранее сгенерированной таблице. Таблицы должны быть сохранены в сегменте кодов (т. е. в памяти типа ROM). Всего для варианта управления частотой необходимо иметь 8 таблиц по числу дополнительных частот (табл. 2.2), используемых для управления.
Для программирования таймера, как указывалось в 3.9, необходимо в таблицах сохранять 20-разрядные числа. Еще два разряда потребуются для программирования кода дельта-импульсов. Будем использовать для размещения 22 разрядов в памяти одну директиву DW и одну директиву DB (всего 24 бита).
В качестве примера рассмотрим интервал между 1-м и 2-м импульсами, код которого должен быть загружен ППОП от сигнала Start1 (см. рис. 3.17). Код загрузки должен иметь значение, представленное в табл. 3.5. Так как при программировании синхронного счетчика загружается дополнительный код программируемого интервала, то в регистры должен загружаться код FF830h, который должен быть разбит на 16-разрядную часть для директивы DW и 8-разрядную часть для директивы DB, причем в последнем случае старшая тетрада должна быть дополнена кодом знака или кодом фаз. Такой код может быть сохранен директивами:
Seg code
…
Dw 0F830h ; младшая часть кода программирования таймера
DB 1Fh ; старшая тетрада и код положительного дельта-
; импульса
Аналогично генерируется код для следующего интервала. Он будет такой же за исключением кода знака (знак 3-го импульса должен быть отрицательный код 2Fh) и т. д. Таблицы могут быть сгенерированы вручную или с помощью средств ассемблера. В последнем случае удобно использовать макрокоманду, которая в свою очередь использует директивы повторения с параметрами. Макрос подробно описан в шаблоне курсового расчета (см. 6.3).
Замечание. В шаблонах курсового проектирования этот макрос располагается в файле типа .INC. При применении макроса необходимо иметь в виду, что препроцессор, вычисляющий макрос, использует для представления чисел 16-разрядов, поэтому для 20-разрядных кодов приходится масштабировать их делением на 8. Для других тактовых частот и частот повторения коэффициент масштабированя необходимо изменить.
; К о н с т а н т ы в р е м е н н о г о п а т т е р н а
; к о д ы ф а з
; 0, 180 градусов и "пусто" дельта-импульсов
PLUS EQU 10H ; используется линия 4 регистра C
MINUS EQU 20H ; используется линия 5 регистра C
NULL EQU 00h
; п е р и о д ы п о в т о р е н и я
; ассемблер допускает представление чисел в виде 2 байт.
TН equ 30000 ;в мкс
TL equ 40000 ;в мкс
TS equ 50000 ;в мкс
TSH EQU 60000 ;в мкс
; остальные периоды должны вычисляться.
;TSL = TL*2
;TSS = TS*2
; д о п о л н и т е л ь н ы е п е р и о д ы п о в т о р е н и я
; J=0-7 отличаются от основных на величину, кратную 100 мкс
; (J=0 => 0*100мкс, J=1 => (-1)*100мкс, (-2)*100мкс, ...)
; ===============================================================
; далее все временные величины будут представлены для тактовой
; частоты 2 МГц.
; поэтому далее временные интервалы Т1, Т2, TP, TD и т.д.
; будут даны в количествах счетных импульсов тактовой частоты.
===============================================================
; в р е м е н н о й и н т е р в а л м е ж д у импульсами
; в пачках ВЩ и ВМ равен T1 = 1000 мкс, число импульсов 8.
; для ВЩ существует дополнительный 9-й импульс через
; T2 = 2000 мкс
; после импульсов пачки.
T1 EQU 2000
T2 EQU 4000
TJ EQU 200 ; изменение модуля периода для
; дополнительных частот.
TM EQU 16 ; модуль счета таймера 555ие10
; и н т е р в а л м е ж д у п а ч к а м и
TMOD equ 0000h
TPN EQU 25000 ; значение TP/8 = 200000/8 ассемблер
; вычислить не может
T1N EQU T1/8
T2N EQU T2/8
TJN EQU TJ/8
TMN EQU 8192 ; TMod/8 ассемблер вычислить не может
KONEC EQU 0FFH ; конец таблицы, переход на начало
tabl %macro param_j
; таблица временного паттерна для J-й дополнительной частоты
; повторения
; таблица содержит код временного интервала и
; фазовый код дельта-импульса для загрузки в регистры начиная
; с младшего.
J TEQ param_j
N TEQ (TPN-T1N*7-TJN*J)/TMN
TD TEQ ( (TPn-T1n*7-TJn*J) MOD TMN )*8
%FOR param IN plus,plus,minus,minus,plus,minus,plus,minus
dw tmod-t1
db 0fh or param
%ENDFOR
dw tmod-(td-t1)
db (tm-(n+1) and 0fh) or null
%FOR param IN plus,minus,minus,plus,plus,plus,plus,plus
dw tmod-t1
db 0fh or param
%ENDFOR
dw tmod-(td-t1)
db (tm-(n+1) and 0fh) or null
DB KONEC
%endm
Поскольку таблица из памяти будет выбираться периодически, то необходимо задать маркер ее окончания для перевода указателя в начало при повторном ее считывании. Таким маркером является последняя строка макроса.
Считывание кода KONEC, который не может встречаться внутри таблицы, будет признаком перехода на ее начало.
Теперь, используя макрос, можно сгенерировать таблицы временного паттерна для всех дополнительных частот J = 0…7. Генерация выполняется вызовом макроса с соответствующим параметром и располагается в памяти типа ROM в сегменте TABL_PATT, структура которого представлена ниже.
DEFSEG tabl_patt,CLASS=code
SEG TABL_PATT
; сегмент таблиц паттернов для J=0,1,2,...,7
TABL0: tabl 0
TABL1: tabl 1
TABL2: tabl 2
TABL3: tabl 3
TABL4: tabl 4
TABL5: tabl 5
TABL6: tabl 6
TABL7: tabl 7
Ссылка на каждую таблицу может быть выполнена по метке, задающей ее начало (TABL0, TABL1, TABL2, …, TABL7). Для упрощения выбора таблицы, требуемой в соответствии с настройкой, целесообразно их базы разместить в дополнительной таблице TABL_TABL:
TABL_TABL:
; таблица адресов расположения таблиц паттернов для всех J.
DW TABL0
DW TABL1
DW TABL2
DW TABL3
DW TABL4
DW TABL5
DW TABL6
DW TABL7
Приведенные структуры, содержащие таблицы TABL0, TABL1 ...TABL7 и TABL_TABL, предназначены для генерирования временного паттерна при любом значении дополнительного периода J и использовании синхронных 20-разрядных счетчиков. Для других типов таймеров или другой разрядности необходимы коррективы макроса.
