- •Проектирование микроконтроллеров
- •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.
5.Разработка программного обеспечения
Программный модуль курсового расчета разрабатывается, как правило, в третьем разделе пояснительной записки курсового расчета. Здесь на основе укрупненной схемы алгоритма (рис. 2.1, 2.3, 2.4) выделяется заданный для разработки модуль. Приводится его уточненный алгоритм, дается описание. Детализация схемы алгоритма выбирается такой, чтобы по ней было удобно (понятно) написать исходный код модуля. Обычно схема алгоритма содержит примерно 8...12 блоков-операторов. Такой выбор обусловлен необходимостью размещения схемы алгоритма на одном листе формата А4 и удобством обозрения схемы. При необходимости большей детализации в схему алгоритма вводятся блоки предопределенных фрагментов (процедур или подпрограмм (ПП)). Такие фрагменты описываются и документируются отдельно.
Использование процедур-подпрограмм в программном модуле структурирует его, вводит элементы модульности, что, в конечном счете, улучшает читаемость текста и упрощает отладку всей программы.
5.1.Программный модуль курсового расчета
Программный модуль в курсовом расчете это схема алгоритма заданного варианта, структура данных и исходный текст заданных фрагментов программы. Полный вариант исходного текста программного модуля может быть приведен (если указано в задании) в приложении пояснительной за- писки.
Начинается программный модуль со схемы алгоритма, которая предполагает использование выбранной структуры данных, поэтому в этом блоке допускаются ссылки вперед или изменение порядка проектирования (сначала определяется структура данных, а затем уточняется схема алгоритма).
Программные модули, разработку которых предполагает задание на курсовой расчет, включают следующие варианты:
F-ctrl – модули поддержки входного устройства приема пакетов управления и пакета «Старт»; при этом предполагается, что сам контроллер предназначен для управления частотой повторения РН-сигнала;
D-ctrl – модули поддержки входного устройства приема пакетов управления и пакета «Старт»; при этом предполагается, что сам контроллер предназначен для управления временем запаздывания сигнала, отраженного от ионосферы. Отличается от предыдущего варианта характером настройки параметров исполнительных устройств (временем начала генерации РН-сиг-нала);
F-patt – модули поддержки таймера временного паттерна управления; при этом предполагается, что сам контроллер предназначен для управления частотой повторения РН-сигнала;
F-indic – модули поддержки динамического устройства индикации.
5.2.Структура данных модуля
В разделе разработки программного модуля вводятся переменные, необходимые для решения поставленных задач, определяются буферы данных (для хранения параметров пакетов управления и кодов 7-сегментной индикации), указываются таблицы постоянных значений (размещаемые в памяти типа ROM), используемые в данном варианте.
Используемые структуры данных влияют на схему алгоритма, поэтому при проектировании необходимо учитывать оба эти аспекта.
Рассмотрим структуры данных, которые могут быть использованы при выполнении программного модуля курсового расчета.
Структура данных варианта F-ctrl. В этом варианте производится прием пакетов управления, определения «свой/чужой» прием пакета «Старт» и выбор нужной таблицы временного паттерна из набора таблиц, заранее подготовленных для этого варианта. Для учебных целей будем выполнять идентификацию пакетов управления после приема всего пакета. Такая постановка задачи требует организацию буфера (BUF) на 12 байт, причем первые 6 байт будут использоваться для хранения «своего» пакета, а остальные для временного помещения данных о «чужих пакетах» и пакета «Старт». Для возможности адресации любого байта в процессе приема пакета и его идентификации необходим указатель данных (адресная переменная размером 2 байт, значение которой не должно выходить за пределы расположения буфера). Кроме того, как видно из рис. 2.1, требуются переменные для хранения состояния приема (свой пакет или чужой) и учета длительности принятого пакета. Возможная структура данных, расположенная в перемещаемом сегменте data, будет иметь вид
SEG data
BUF DS 12 ; буфер пакетов управления
POINT DS 2 ; указатель записи в буфер
COUNT DS 1 ; счетчик записей
FLAG_RDY DS 1 ; флаг – битовая переменная
; = 1 пакет принят, 0 иначе
STRT_ENABLE DS 1 ; флаг разрешения старта
; = 0 при запуске программы
; = 1 после получения своего пакета управления
Структуры таблиц временного паттерна должны располагаться в перемещаемом сегменте памяти типа ROM и иметь формат вида
SEG code
TABL_TABL:
; таблица адресов расположения таблиц паттернов для всех J.
DW TABL0 ; J = 0
DW TABL1 ; J = 1
DW TABL2 ; J = 2
DW TABL3 ; J = 3
DW TABL4 ; J = 4
DW TABL5 ; J = 5
DW TABL6 ; J = 6
DW TABL7 ; J = 7
Замечание. Рассчитывать данные таблиц TABL0, …, TABL7 в данном варианте не требуется, однако они должны быть обозначены. В противном случае ассемблер сгенерирует ошибку.
Поскольку задачей варианта F-ctrl является настройка и запуск таймера временного паттерна, то для хранения начального адреса рабочей таблицы необходима адресная переменная POINTF0 и переменная-указатель в этой таблице – POINTF:
SEG data
POINTF0 DS 2 ; указатель начала выбранной таблицы
POINTF DS 2 ; указатель внутри выбранной таблицы
Вариант D-ctrl. Это вариант отличается от рассмотренного F-ctr тем, что выбор рабочей частоты повторения РН-сигналов заменяется вычислением значения начальной задержки (Tнач) формирования паттерна при фиксированной частоте управления. Следовательно, структуры хранения рабочих таблиц упрощаются: вместо восьми таблиц хранится только одна. Таблица TABL_TABL и переменная POINTF0 не требуются.
Начальная задержка Tнач вычисляется как
Tнач = 1000 мкс + TAB + Tраспр,
где TAB – кодовая задержка для сигналов ВМ, Tраспр – задержка, передаваемая в пакете управления для рассматриваемого типа контроллеров. Значение Tнач вычисляется до поступления пакета «Старт» и сохраняется непосредственно в регистрах хранения данных временного паттерна, поэтому создание дополнительных переменных не требуется.
Вариант F-patt. Этот вариант предполагает продолжение программного модуля F-ctrl и, естественно, должен унаследовать структуру данных этого модуля за исключением буфера ввода и указателя в этом буфере. Дополнительно в этом модуле должна быть предусмотрена переменная FRE_ALT, которая позволит протестировать модуль для различных частот повторения.
SEG data
POINTF0 DS 2 ; указатель начала выбранной таблицы
POINTF DS 2 ; указатель внутри выбранной таблицы
FRE_ALT DS 2 ; индекс дополнительной частоты (0-7)
Вариант F-indic. В программном модуле этого варианта рекомендуется использовать три буфера:
буфер для хранения неупакованных BCD-кодов (RG_BCD), т. е. буфер для хранения кодов 8-4-2-1, пригодных для преобразования в 7-сегментные данные. Этот буфер загружается данными из рабочих модулей один раз в каждом режиме работы контроллера;
буфер для хранения 7-сегментных кодов (RG_7_SEG), т. е. кодов непосредственного вывода на СИД-индикаторы;
буфер стробов разрешения разрядов (RG_STB).
Кроме этого требуются указатели чтения из буферов, счетчик числа разрядов и др. Структура этого варианта представлена ниже.
SEG data
RG_BCD DS 5 ; буфер данных в формате BCD
LENGTH EQU $-RG_BCD; размер буфера
DS 1 ; маркер конца буфера
POINTI DS 2 ; указатель в буфере RG_BCD.
RG_7_SEG DS LENGTH ; буфер индикации в формате
;7-сегментного СИД-индикатора
RG_STB DS LENGTH ; буфер стробов разрешения
SHIFT EQU RG_7_SEG-RG_BCD ; используется в ППОП
DS 1 ; маркер конца буфера
KONEC EQU 0FFH
COUNT DS 1
MODE DS 1 ; режим работы (индикации)
Индикаторное устройство варианта F-ctrl работает в трех режимах в зависимости от режима работы контроллера. Обозначим режим работы содержимым переменной MODE:
MODE = 1 – режим ожидания пакета управления,
MODE = 2 – индикация после получения управления и ожидания команды «Старт»,
MODE = 3 – индикация режима формирования временного паттерна.
Предлагается, используя данные табл. 3.1, закодировать эти три режима для контроллера, работающего с периодом повторения 100 000 мкс, так, как показано в табл. 5.1.
Таблица 5.13. Режимы работы индикаторного устройства варианта F-ctrl
Mode |
Частота (разрядность) |
Амплитуда (1) |
Режим (1) |
Режимы работы |
|
основная (2) |
дополнительная (1) |
||||
1 |
?? |
? |
? |
? |
Ожидание |
2 |
SS |
0…7 |
1-9 |
? |
Пакет принят |
3 |
SS |
0…7 |
1-9 |
G |
Старт прошел |
3 |
SS |
0…7 |
1-9 |
G, G# |
Работа |
Замечание. После поступления пакета «Старт» разряд режима мигает с периодом 1..3 с.
При формирование структуры данных варианта F-ctrl использованы вычисляемые константы, которые учитывают разрядность индикаторного устройства и позволяют с легкостью адаптировать эту структуру к другим программным модулям курсового расчета. Остается только рассмотреть индикацию модуля диагностики, который имеет отличную от других вариантов структуру.
Программный модуль варианта G2. Программный модуль предполагает подсчет и индикацию ошибок в передаваемых пакетах управления линии связи имитатор – ПК управления. Содержимое индикаторного устройства в трех режимах представлено в табл. 5.2.
Таблица 5.14. Содержимое и разрядность индикаторного устройства в различных режимах
Типа пакета (2) |
Номер контроллера (2) |
Дополни-тельная частота (2) |
Задержка (2) |
Ампли-туда (2) |
Режим (1) |
Режим(1) |
00 |
00 |
00 |
00 |
00 |
1 |
Контроль правильности пакета |
N |
M |
L |
P |
Q |
2 |
Отчет диагностики |
?? |
?? |
?? |
?? |
?? |
3 |
Ожидание следующего сеанса управления |
Замечание. Значения N…Q представляют числа ошибок, обнаруженные контроллером в пакетах управления по полям 1…5 пакетов управления (см. 2.6).
Индикаторное устройство имеет 11 разрядов и может функционировать, используя тот же формат данных, что и в варианте F-ctrl. Отличие заключается в том, что число разрядов варианта больше 8 и уникод для формирования стробов разрешения не может быть использован, поэтому в аппаратной реализации устройства индикации между регистром 2 и драйвером 2 (рис. 3.11) необходим дешифратор, имеющий не менее 11 выходов.
