Разработка алгоритма работы мпс. Проектирование микропроцессорной системы контроля Опепранды и операции

💖 Нравится? Поделись с друзьями ссылкой

Проектирование микропроцессорной системы

Структура

Структурная схема системы представлена на рисунке 3.2.

Рисунок 3.2 - Структурная схема МПС

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

МП формирует адрес на США и осуществляет обмен с СШД.

ОЗУ предназначено для хранения промежуточных данных.

ПЗУ предназначена для хранения кода программы и различных констант.

ППИ предназначен для подключения внешних устройств. К ППИ подключены АЦП, дискретные сигналы и ПП.

АЦП предназначен для преобразования аналогового сигнала с датчиков в цифровой код.

ПП предназначен для организации обмена по последовательному каналу между диспетчерским пунктом и МП.

Проектирование принципиальной схемы

К МПС должна обеспечивать:

  • - опрос 7 аналоговых датчиков;
  • - сбор 8 дискретных сигналов;
  • - формирование 4 дискретных управляющих воздействий.

Расчет необходимого объема памяти данных производится по формуле

где и - количество аналоговых и дискретных входных сигналов соответственно; и - разрядность аналогового и дискретного сигналов.

В нашем случае и.

В итоге для хранения данных опроса датчиков необходимо

В качестве центрального блока системы выбран микроконтроллер КМ1816ВЕ51. Его основными преимуществами являются:

  • - наличие резидентной памяти программ и данных;
  • - наличие встроенного ПП;
  • - 4 порта;
  • - низкое энергопотребление;
  • - встроенные таймеры-счетчики.

Для хранения данных используется встроенные 128 байт памяти программ МК. Программа будет храниться в резидентной памяти программ.

Для опроса аналоговых датчиков используется микросхема К572ПВ4. К преимуществам микросхемы относятся:

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

Так как у МК нет выходов генератора, для формирования тактового сигнала используется микросхема генератора К531ГГ1.


Для организации обмена информации с диспетчерским пунктом используется встроенный в МК приемопередатчик. Однако ПП КМ1816ВЕ51 передает данные с помощью пятивольтовых логических сигналов: единица представляется уровнем напряжения от 2,4 В до 5 В, а нуль - от 0 до 0, 8 В. При передаче по каналу RS-232 нуль и единица кодируются одинаковыми по величине (от 5 до 12 В), но разными по знаку сигналами.

Поскольку для передачи по RS-232 пятивольтовые логические сигналы должны быть преобразованы в сигналы другого уровня, в МПС используется микросхема MAX202E от Maxim. Она содержат преобразователь напряжения из +5 В в ±10 В и каскады, осуществляющие преобразование логических сигналов стандартного пятивольтного уровня по стандарту RS-232. Она содержит преобразователи логического уровня для двух приемников и двух передатчиков, из которых используется только один приемопередающий канал.

Принципиальная схема МПС приведена в приложении В.

К выводам XTAL1 и XTAL2 микроконтроллера DD1 подключается кварцевый резонатор ZQ1 на 12 МГц. Для более стабильного запуска выводы кварцевого резонатора соединены с общим проводом через конденсаторы С1 и С2 емкостью 21 пФ.

При подаче напряжения питания на микроконтроллер обязателен сброс микроконтроллера. С этой целью вход RST соединен с шиной питания через конденсатор С3 емкостью 6 мкФ и с общим проводом - через резистор R1 сопротивлением 100 кОм. В момент включения питания конденсатор разряжен, и вход сброса оказывается под потенциалом, близким к напряжению питания. Несмотря на снижение этого потенциала вследствие заряда С3, в течение десятка миллисекунд уровень сигнала на входе сброса остается единичным, и осуществляется корректный запуск микроконтроллера.

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

К линиям порта P0 МК DD1 подключены дискретные входные сигналы DDAT1-DDAT8. К линиям порта P1 подключена АЦС DA1. На линиях P1.0-P1.3 формируются дискретные управляющие воздействия DOUT1-DOUT4.

Так как аналоговые датчики, подключаемые к АЦС DA1 должны иметь выходным параметром напряжение, находящееся в диапазоне от 0В до 2,5В. Для преобразования токовых сигналов датчиков в сигнал напряжения используются резисторы R2-R13 .

Спецификация элементов представлена в приложении Г.

Разработка алгоритма работы МПС

МПС работает в следующей последовательности:

  • а) инициализация системы;
  • б) опрос датчиков;
  • в) управление насосным агрегатом;
  • г) обмен данными с диспетчерским пунктом;
  • д) переход к шагу б.

Блок-схемы алгоритмов программы работы МПС представлены в приложении Д, фрагмент кода программы - в приложении Е.

Расчет потребляемой мощности

Мощность, потребляемая всей системой, определяется как сумма мощностей, которые потребляют все части системы.

Расчет мощности сведен в таблицу 3.4.

Таблица 3.1 - Расчет потребляемой мощности

Система потребляет мощность.

Устройство передачи данных

Для обеспечения обмена с диспетчерским пунктом используется преобразователь интерфейса MI 486. Он позволяет осуществлять прием/передачу данных через сеть Ethernet с компьютера со скоростью до 112 кбод.

Преобразователь интерфейса показан на рисунке 3.3.

Рисунок 3.3 - Преобразователь интерфейса MI 486

Технические характеристики:

  • - выходной интерфейс: RS-232;
  • - макс. скорость - до 112 кбод;
  • - входной интерфейс Ethernet 10BaseT/100BaseT;
  • - разъем RJ45.

1. Функционирование, проектирование и архитектура микропроцессорных устройств и систем

1.1. Общие сведения о микропроцессорной технике

Основные понятия и определения микропроцессорной техники

Микропроцессоры и микроЭВМ - массовая продукция электронной промышленности. Знания основ микропроцессорной техники необходимые инженерам любого профиля, в особенности инженерам-системотехникам, инженерам-конструкторам, инженерам-технологам вычислительных систем (ВС).

Микропроцессоры (МП) нашли широкое применение в современных ВС и радиоэлектронных устройствах (РЭУ), технологических системах контроля, гибких автоматизированных и других производствах. Использование МП положительно влияет на повышение производительности труда, способствует улучшению качества аппаратуры разного назначения. Благодаря применению МП и микроЭВМ в технических системах расширились функциональные возможности аппаратуры, повысились ее надежность и стабильность функционирования, улучшилось качество обработки информации .

Перспективы и возможности применения МП и микроЭВМ в вычислительных системах еще полностью не раскрыты. Постоянно совершенствуются технологии производства и архитектура МП. Так, разрядность современных однокристальных МП достигает 64 бит. При использовании МП и микроЭВМ разработчики должны уметь оценивать возможности их архитектуры и технические характеристики, а также владеть языками программирования разных уровней. Для создания системного программного обеспечения широко используется язык асемблера. В целях обеспечения высокой производительности труда программистов, задачи обработки данных решаются с помощью языков высокого уровня (например – С). Современным инженерам - специалистам в вычислительной технике необходимы знания в области как архитектуры МП, так и программирования электронных устройств на языках разных уровней.


Базовыми, в микропроцессорной технике, являются такие понятия, как: «микропроцессор», «ИС», «ИМС», «БИС», «СБИС», «микропроцессорный комплект БИС», «микропроцессорное устройство», «микропроцессорная система», «микропроцессорная техника», «микроЭВМ» (общего назначения и специализированные), «встроенная микроЭВМ», «компьютер персональный», «бытовой персональный компьютер», «профессиональный персональный компьютер», «микроконтролер» и др.

Кроме того, в микропроцессорной технике используются понятия, относящиеся к вычислительной технике, и в частности «магистраль», «шина», «интерфейс», «системный интерфейс», «периферийный интерфейс», «адаптер», «протоколы», «линия интерфейса» и др.

При изучении программных средств в микропроцессорной технике употребляются общие понятия, совпадающие по названию с понятиями описания программных средств в вычислительной технике, в частности «алгоритм», «программа», «программное обеспечение» и др.

Одним из главных, базовых понятий микропроцессорной техники, является «микропроцессор».

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

Интегральная микросхема (И МС) - это микроэлектронный прибор, который выполняет определенную функцию преобразования, обработки сигналов и (или) накопления информации, который имеет большую внутреннюю плотность упаковки электрически соединенных элементов (или элементов и компонентов) и (или) кристаллов и рассматривается в аспекте требований испытаний, поставки и эксплуатации изделий радиоэлектроники как единое целое.

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

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

Степень интеграции - показатель степени сложности ИМС, который характеризуется количеством элементов и компонентов, которые содержатся в ней. Степень интеграции определяется по формуле k = lgN , где k - коэффициент, который определяет степень интеграции, значения которого округляются к наибольшему целому числу; N - число элементов и компонентов ИМС.

Большая интегральная микросхема (БИ С) - интегральная микросхема, которая содержит 500 и больше элементов, изготовленных по биполярной технологии, или 1000 и больше элементов, изготовленных по МОП-технологии, сверхбольшая интегральная схема (СБИ С) содержит свышеэлементов.

Комплект БИС - совокупность типов БИС, которые выполняют разнообразные функции, совместимые по архитектуре, конструктивному исполнению, электрическим параметрам и обеспечивающих возможность их совместного использования при изготовлении микропроцессорной техники.

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

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


Микропроцессорное устройство ( МПУ) - функционально и конструктивно законченное изделие, представляющее из себя схемно-конструктивное соединение нескольких микросхем, в том числе одного или нескольких микропроцессоров , предназначенное для выполнения одной или нескольких функций: получение , обработка, передача, преобразование информации и управления .

МПУ имеет унифицированные соединительные характеристики (интерфейс, конструкцию и др.) и функционирует в составе определенной технической системы.

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

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

Микропроцессорная техника - это микропроцессоры и устройства вычислительной техники (ВТ) и автоматики, выполненные на их основе.

Это наиболее обобщенные понятия вычислительной техники. На сегодня почти вся ВТ строится на базе микропроцессорных устройств.

МикроЭВМ общего назначения - это микроЭВМ, которые имеют большие операционные ресурсы, приспособленные для обработки разнообразных числовых и текстовых данных и предназначенные для использования в вычислительных центрах.

Это наиболее распространенный класс микроЭВМ, являющийся базовым для персональных компьютеров

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

Они являются узкопрофильными ЭВМ с ограниченным количеством системных команд.

Встроенная микроЭВМ (микропроцессорное устройство) - блок обработки данных и управления, предназначенное для использования в бытовых приборах, системах технологического контроля или управления, периферийных устройствах ЭВМ, оргтехнике и др.

Наиболее массово эти ЭВМ используют в бытовой технике (телевизоры, магнитолы, стиральные машины и др.)

Компьютер персональный (персональная ЭВМ) - диалоговая система индивидуального пользования, реализованная на базе микропроцессорных средств, малогабаритных внешних запоминающих устройств и устройств регистрации данных, которые обеспечивают доступ ко всем ресурсам ЭВМ с помощью развитой системы программирования на языках высокого уровня.

Это небольшая по размерам и по стоимости универсальная микроЭВМ, предназначенная для индивидуального пользования. Бытовые персональные компьютеры выполняют функции домашнего информационного центра. Профессиональные персональные компьютеры предназначены для автоматизации разнообразных операций обработки больших объемов информации на рабочем месте специалиста.

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

Классификация микропроцессоров и их основные параметры

По количеству БИС различают однокристальные, многокристальные и многокристальные секционированные МП.

Однокристальные МП реализуют все аппаратные средства процессора в виде одной БИС или СБИС. Однокристальний МП имеет фиксированную разрядность, набор команд и конструктивно выполнен в виде одной интегральной схемы (ИС). Все осуществляемые им операции определяются набором команд МП. Особенностью однокристального МП есть наличие внутренней магистрали для передачи внутренних информационных данных и управляющих сигналов. Возможности этих МП ограниченны аппаратурными ресурсами кристалла и корпуса, но с увеличением степени интеграции кристалла и количества выводов корпуса параметры МП непрерывно улучшаются.

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

Многокристальные секционированные МП состоят из набора микропроцессорных секций.

Микропроцессорная секция - это микропроцессорная интегральная схема, которая реализует часть МП и имеет средства простого функционального объединения с однотипными или другими микропроцессорными секциями для построения законченных МП, МПУ или микроЭВМ.

Управление секционированными МП осуществляется микропрограммными средствами. К секционированным МПК относятся БИС серий: К1800, КР1802, КМ1804 и др. Главное их назначения - создания высокопроизводительных многоразрядных МП и МПК, на базе которых реализуются разнообразные управляющие вычислительные системы.

Основу МПК БИС составляет базовый комплект ИМС одной серии. Он может состоять из ИС однокристального МП с фиксированными разрядностью и набором команд или комплекта БИС однокристального МП. Для расширения функциональных возможностей МП базовый МПК БИС дополняется другими типами БИС: ОЗУ, ПЗУ, ППЗУ, интерфейсными интегральными схемами, контролерами внешних устройств и др.

По типу обрабатываемых сигналов различают цифровые и аналоговые МП. В обоих типах МП обработка информации цифровая. В цифровых МП обрабатываются сугубо цифровые сигналы, а в аналоговых для обработки аналоговых сигналов встроено аналого-цифровое устройство (АЦП) и цифроаналоговий преобразователь (ЦАП). В них входные аналоговые сигналы передаются в МП через АЦП, обрабатываются в цифровой форме, превращаются в аналоговую форму в ЦАП и поступают на выход.

Выбор микропроцессорного комплекта

для проектирования вычислительных устройств и систем

Выбор МПК для конкретного вычислительного устройства или системы есть наиболее сложной задачей. Это связано с постоянным возрастанием количества МПК и БИС в них.

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

Выбор МПК осуществляют по трем основными критериями:

1) в аспекте разработки математического обеспечения нужно проанализировать разрядность, количество доступных для использования регистров общего назначения, набор команд и способы адресации, наличие и организацию стека;

2) относительно системного проектирования необходимо определить: тип архитектуры МП (секционированные или однокристальные), тип организации управления (микропрограммное или с жесткой логикой), наличие логически совместных БИС из других комплектов, быстродействие МП, возможность прерывания и прямого доступа к памяти, наличие системы автоматизированного проектирования;

3) с точки зрения разработки аппаратных средств МПС необходимо учитывать: электрическую совместимость БИС, количество источников питания и рассеиваемую мощность, размер и тип корпуса, количество выводов, диапазон рабочих температур и др.

Выбор МПК для конкретного применения часто осуществляют на основании данных о технологии, по которой он изготовлен.

Вопросы и задачи

1. Какими факторами обусловлено применение МП и микроЭВМ в производственных системах?

2. Чем отличаются однокристальные МП от многокристальных (несекциони-рованных и секционированных)?

3. Какими общими параметрами характеризуют МП, МПУ и МПС?

4. По каким признакам характеризуют МП?

5. Назовите основные параметры современных МП.

6. По каким критериям выбирают микропроцессорные комплек­ты при проектиро-вании вычислительных устройств и систем?

1.2. Общие вопросы организации и функционирования микропроцессорных устройств и систем

Структура микропроцессорных устройств и систем

Любая МПС состоит из МП, системы памяти, системы ввода-вывода информации и системы сопряжения с объектом управления или контроля.

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

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

Постоянные запоминающие устройства (ПЗУ) предназначены для долгосрочного сохранения предварительно записанных данных и используются только в режиме считывания. Они энергонезависимы.

Оперативные запоминающие устройства (ОЗП) работают в режимах оперативной записи и считывание данных с быстродействием, которое приближается к быстродействию процессора. Они энергозависимы.

Внешние запоминающие устройства (В ЗУ) выполняют функции сохранения больших объемов информации, содержат накопители на гибких и жестких магнитных дисках, компакт-дисках (лазерных) и др.

Устройства ввода данных (УВ) предназначены для передачи данных извне в регистры МП или в память. Среди них - клавиатура, разнообразные пульты управления, магнитные и лазерные диски и др.

Устройства вывода данных (УВыв) предназначены для восприятия данных, передаваемых из регистров МП или ячеек памяти. Это дисплеи, печатающие устройства, ВЗУ, пульты управления, графопостроители (плоттеры) и др.

Для сопряжения объекта управления или контроля с МПУ или МПС в состав оснащения должны входить датчики и исполняющие механизмы. Для их подключения к МПУ ли МПС используют блоки сопряжения, которые выполняют функции согласования интерфейсов. Иногда эти блоки называют устройствами связи с объектом (УСО).

Интерфейсы микропроцессорных устройств и систем

Архитектурные возможности МПС в значительной мере зависят от типа интерфейса.

Унифицированный интерфейс - это совокупность правил, которые устанавливают единые принципы взаимодействия устройств МПС.

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

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

Архитектура МПС определяется преимущественно тремя интерфейсными уровнями: системным, межмашинным и малым интерфейсом (интерфейсом периферийных устройств).

Системный интерфейс обеспечивает объединения основных модулей (блоков) МПС в единую систему на равные обмена информацией с процессором и ОЗП.

Системные интерфейсы разделяют на сосредоточенные (интерфейсы ПЭВМ), локально-сосредоточенные (Q-bus) и локальные (Unibus).

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

Малые интерфейсы учитывают отличие физических принципов работы групп периферийных устройств и ПЗУ. Контролеры малых интерфейсов обеспечивают выход на системный интерфейс. При этом контролеры периферийных устройств и ПЗУ выходят на соответствующий малый интерфейс.

Управление работой микропроцессорных устройств (систем)

Временное согласование информационных сигналов в МПУ осуществляется с помощью специальных сигналов, поступающих от устройства управления МП. МПУ или МПС функционирует синхронно с появлением тактовых сигналов. Простейшее действие, которое выполняется в МПУ (МПС), называется состоянием. Он охватывает один период сигнала тактирования - тактовый интервал или такт.

Определенное количество тактовых интервалов составляет машинный цикл. Для одного обращения к памяти или к устройству ввода/вывода необходим один машинный цикл. За один цикл осуществляется выборка команды или данных, а также кода адреса (возможно, байта команды или данных и байта кода адреса).

Машинный цикл - часть команды (иногда полностью команда). С началом каждого машинного цикла на выводе синхронизации МП возникает сигнал синхронизации. Он передается в запоминающее устройство (ЗУ) и(или) в устройство ввода/вывода (УВВ) и «извещает» о начале нового машинного цикла, в результате чего достигается согласование во времени действия этих устройств с работой МП.

Схема 1. Структура команды

Цикл команды - интервал времени, необходимое для выборки команды из памяти и его выполнения. Он состоит из одного или нескольких машинных циклов. их количество, как правило, равняется количеству обращений МП к памяти или к одному из УВВ. Структуру команды показан на схеме 1.

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

Код команды дешифруется, превращаясь в двоичные сигналы, которые воздействуют на модули и блоки МП, принимающие участие в выполнении этой команды.

Цикл команды делится на две фазы: фаза выборки и фаза выполнения.

Фаза выборки - автомат задает начало очередного цикла, по которому число, находящееся в счетчике команд, передается в буферный регистр адреса. Оттуда через шину адреса код адреса команды направляется в память, где дешифруется. За сигналом «считывания» из ячейки памяти слово команды считывается и передается по шине данных в буферный регистр данных, из которого пересылается в регистр команд, а потом дешифруется.

Фаза выполнения - устройство управления генерирует последовательность сигналов, необходимую для выполнения команды. За это время данные счетчика увеличиваются на единицу. Этим формируется адрес следующей выполняемой команды.

Считывание или запись слова происходит на протяжении некоторого интервала времени, который называют временем доступа. Интервал времени, которое расходуется на обращение к памяти и получение от нее сигнала готовности, называется циклом ожидания готовности. Он составляет часть машинного цикла.

Обмен информацией между МП, ЗУ и УВВ реализуется преимущественно в трех режимах: программно управляемого обмена, обмена в режиме прерываний, обмена в режиме прямого доступа.

Программно управляемый обмен. В этом режиме МП определяет, готово ли ЗУ или периферийное устройство (ПУ) к выполнению операции ввода-вывода, к началу программной передачи данных. УВВ должны иметь аппаратные средства для выработки сигналов о внутреннем состоянии. МП считывает эту информацию и на основании анализа результата делает вывод о готовности устройства к обмену информацией. В дальнейшем в соответствии с протоколом интерфейса происходит обмен данными.

Режим прерывания. Используется при необходимости немедленной передачи данных между УВВ и МП (реакция на неожиданное возникновение внешних условий). При этом МП должен прервать работу основной программы и начать выполнять программу обслуживания внешнего устройства. Такой режим называют прерыванием. Прерывание МП возможны только тогда, когда МП разрешено реагировать на запросы прерывания.

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

Различают три вида прерываний: простое, векторное и приоритетное.

Простое прерывание извещает о том, что какое-то устройство ввода/вывода требует обслуживания МП.

Векторное прерывание делает возможным распознать тип (уровень) прерывания, требуемое периферийному устройству. В векторе указывается конкретный адрес устройства.

Приоритетное прерывание состоит в том, что, кроме распознавания прерывания, определяется приоритет в обслуживании прерывающих устройств.

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

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

Существует несколько способов реализации прямого доступа к памяти. Все они обеспечивают высшую скорость обмена данными сравнительно с режимом программно управляемого обмена. Чаще всего режим прямого доступа к памяти реализуется с остановкой МП и увеличением (удлинением во времени) цикла МП.

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

Метод захвата состоит в последовательном обмене данными. Быстродействующие УВВ обмениваются только одним словом; их запрос на обслуживание удовлетворяется путем задержки выполнения текущей команды на один машинный цикл, когда МП находится в состоянии перехода от одного машинного цикла к другому. В этом режиме прямого доступа к памяти, МП приостанавливается только на один машинный цикл для передачи каждого слова данных, после чего управления возвращается МП.

Адресное пространство. Механизм и способы адресации

Адресное пространство МПУ (МПС) - множество адресов оперативной памяти и ПЗУ, которое доступно для программ, выполняемых МП.

Размер адресного пространства оперативной памяти МП - одна из величин, существенно влияющих на производительность МПС в целом.

Размер адресного пространства - величина, которое определяется максимальным размером адреса и выражается в единицах минимального количества элементов памяти, которые адресуются - в байтах, или в больших единицах (Кбайт, Мбайт, Гбайт).

Если адрес в МПУ формируется в виде 16-разрядного слова, то адресное пространство равняется 64 Кбайт, 20-разрядного - 1Мбайт и т. д. Иногда для упрощения информационных связей между компонентами МПУ и облегчения программирования процедур ввода/вывода в адресном пространстве размещают адреса регистров МП и УВВ. При этом команды ввода/вывода, как таковые, отсутствуют. Обращения к регистрам МП и УВВ осуществляется идентично обращению к ячейкам памяти.

При образовании слова, 2-байтного адреса, байт с четным (меньшим) адресом называют младшим, а байт с нечетным адресом - старшим.

Часто адресное пространство МПУ представляют в виде диаграммы, на которой указывают общий диапазон адресов. Этот диапазон может быть разделен на поддиапазоны, которые отвечают стандартным размерам конструктивных модулей, чи-пов, разным типам памяти (ОЗУ, ПЗУ и т. п.) или определенному их назначению.

В системе команд МП значительное место занимают адресные команды.

Адресная команда - команда, в которой один или оба ее операнда находятся в оперативной памяти.

Одной из причин такой организации команды есть то, что в одном операнде команды непосредственно нельзя записать полный физический адрес из-за ограничений на длину инструкции. Поэтому, в операнде размещают только определенную величину, с помощью которой вычисляется фактический адрес команды.

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

Для ограничения длины адресного слова применяют разнообразные способы адресации, которые дают возможность:

1) определить полный адрес ячейки памяти меньшим количеством бит, чем сокращается длина команды;

2) обращаться к ячейкам памяти, адреса которых вычисляются во время обработки, чем обеспечивается доступ к устройствам расширения памяти;

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

Все режимы адресации можно поделить на две группы:

1) режимы, в которых исполнительный адрес определяется одним значениям кода в команде;

2) команды, которые используют содержимое адресной части команды и одного или нескольких регистров для формирования исполнительного адреса.

К первой группе относят прямую, прямую регистровую, косвенную, косвенную регистровую, непосредственную, автоинкрементную и автодекрементную адресации, а ко второй - базовую, относительную, стековую, виртуальную адресации.

Прямая адресация. Операнды выбираются из памяти (регистров) по адресу, записанному в команде. Однако, указание прямого адреса требует много бит для описания в команде большого адреса. Для его уменьшения некоторые микроЭВМ используют короткую прямую адресацию, обеспечивая доступ к ограниченной части адресного пространства. Если в команде адреса не символические (задаваемые ссылками), а абсолютные, то такую прямую адресацию называют абсолютной.

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

Косвенная адресация. Операнд из памяти выбирается косвенным способом - через ячейку памяти. В коде команды находится указатель адреса, размещенного в памяти. При выполнении команд с такой адресацией обращения к памяти осуществляется дважды: сначала выбирается адрес, а потом - операнд. Таким образом, без изменения кода команды, можно изменить адрес, сохраняемый в области памяти, на которую указывает поле кода команды.

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

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

Автоинкрементна и автодекрементна адресации. Исполнительный адрес вычисляется так же, как и при косвенной регистровой адресации, а потом содержимое регистра увеличивается. В микроЭВМ с байтовой адресацией содержимое регистра необходимо увеличить на 1 для указания следующего байта, и на 2 - для указания адреса следующего слова, при этом размер операнда определяется кодом операции. В автодекрементном режиме адрес операнда формируется вычитанием 1 или 2 из регистра адреса. Отличие от автоинкрементной адресации состоит в том, что вычитание осуществляется до использования содержимого регистра как исполнительного адреса. Комбинация автоинкрементного и автодекрементного режимов обеспечивает эффективное использование любого регистра как указателя стека. Такая адресация применяется также при организации циклов и в операциях со строковыми переменными.

Базовая адресация. Программы, которые содержат команды с абсолютными адресами, невозможно перемещать в памяти без модификации адресов. Обеспечить перемещение программ в памяти можно, применяя базовую адресацию, с помощью которой адрес операнда вычисляется сложением содержимого базового регистра - положительного или отрицательного смещения и адреса, размещенной в коде команды.

Относительная адресация. Исполнительный адрес формируется добавлением базового адреса к адресному полю команды. Как базовый адрес, используют содержимое программного счетчика. Использование относительной адресации дает возможность строить программы, которые независимо перемещаются в памяти за счет того, что в них всегда указанно смещение относительно содержимого программного счетчика. Смещения интерпретируется как знаковое целое число, представленное в дополнительном коде, которое обеспечивает переход в любом направлении.

Стековая адресация. Косвенная регистровая адресация с автоувеличением или автоуменьшением (автоинкрементна или автодекрементна), при которой регистр с указателем адреса операнда задается неявно (существуют такие команды, где местонахождения операндов и результата фиксировано, - неявная адресация). Ячейку памяти, на которую указывает содержимое неявно заданного регистра (указателя стека), называют вершиной стека. С помощью стековой адресации реализуется специальный доступ к участку памяти, называемого стеком, в основу которого положен принцип «последний пришел - первый вышел». Для доступа к стеку используют команды, которые записывают информацию в стек и изымают ее из него. Если команды, которые записывают информацию в стек, декрементируют содержимое указателя стека, а команды, которые изымают из стека, - инкрементируют, то говорят, что стек работает на уменьшение, в противном случае - на увеличение.

Виртуальная адресация. Каждый пользователь памяти (операционная система или человек), решая прикладную задачу, манипулирует с виртуальными адресами, благодаря чему создается иллюзия памяти неограниченной емкости, хотя реальная оперативная память системы имеет ограниченную емкость. Иллюзия создается за счет механизма виртуальной адресации, основой которой есть динамическое перераспределение страниц памяти между основной памятью системы (ОЗП) и внешней.

Каждому пользователю операционная система создает таблицу соответствия виртуальных и физических страниц. Если осуществляется обращения к физической странице, которой нет в основной памяти, то она изымается из внешней памяти и загружается в основную, а ненужная страница «прячется» во внешней памяти. Виртуальную память, или просто память системы, можно поделить на сегменты, в которых информация сохраняется по функциональным признакам. Например, в одном сегменте - команды, во втором - данные, в третьем - участок стека. Или, в одном сегменте, в котором запрещена запись, - ядро операционной системы, а во втором, в котором разрешена запись и считывание, - программы пользователя. Таким образом, с помощью механизма сегментации решаются задачи защите памяти.

Сегментация была реализована в МП К1810ВМ86, а виртуальная адресация - в МП ІАРХ286 (Intel) и 68010 (Motorola).

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

В общем случае различают такие типы команд:

1) пересылка - однонаправленные (регистр - регистр, память - регистр, регистр-память, память-память), обмена (регистр-регистр, память-регистр, память-память), команды ввода/вывода;

2) арифметические;

3) логические;

4) обработки бит;

5) те, что изменяют последовательность вычислений, - переходы (безусловные, условные), вызовы подпрограмм, возврата из подпрограмм, программные прерывания.

Вопросы для самопроверки

1. Опишите обобщенную структуру МП и МПС.

2. По каким признакам классифицируют интерфейсы МПУ и МПС?

3. Какие функции выполняет МП при обработке команды (инструкции) во время фазы выборки, фазы выполнения?

4. При каких обстоятельствах обмен информацией между МП и запоминающими устройствами осуществляется в режиме прерывания или прямого доступа к памяти?

5. От каких параметров МП зависит величина адресного пространства?

6. Пользуясь прибавлением 1, приведите примеры адресных команд с прямой, косвенной, непосредственной, базовой, относительной, автоинкрементной, стековой и виртуальной адресациями.

7. Какую информацию несет в себе код команды в системе команд МП?

1.3. Формализация процесса проектирования микропроцессорных устройств и систем

Аспекты и уровни проектирования

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

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

В соответствии с ЕСКД при проектировании устройств и систем используются структурные, функциональные и принципиальные схемы.

Условно можно выделить в моделируемой схеме проектирования горизонтальные и вертикальные уровни (табл. 1). Вертикальные уровни называют аспектами. Различают такие аспекты проектирования МПУ и МПС: функциональный, алгоритмический, конструкторский и технологический.

Функциональный аспект состоит из трех горизонтальных уровней (2-го, 3-го и 4-го): системного (структурного), функционально-логического и схемотехнично-компонентного. На системном уровне проектируют структурную схему МПУ или, МПС, на функционально-логическом - функциональные и принципиальные схемы МПУ или всех устройств, которые входят в состав МПС.

На схемотехническом подуровне схемотехнично-компонентного уровня проектируют принципиальные электрические схемы интегральных схем или фрагментов БИС (СБИС). Элементами в этом случае являются компоненты электронных схем : резисторы, конденсаторы, диоды, транзисторы и др. На компонентном подуровне разрабатывают отдельные компоненты ИС, которые состоят из элементов-участков полупроводникового кристалла.

Алгоритмический аспект содержит также три горизонтальных уровня (1-й, 2-й и 3-й): уровень разработки схемы функционирования МПУ или МПС, архитектурный уровень и микропрограммный уровень. На 1-ом уровне разрабатывают схемы функционирования МПУ или МПС, определяют задачи, которые будут решаться микропроцессорной частью МПС, планируют программные системы и разрабатывают блок-схемы алгоритмов. В дальнейшем разрабатывают программные модули.

Главной задачей 2-го (архитектурного) уровня является выбор архитектуры микропроцессорной части МПС. Иногда его рассматривают как одну из задач системного уровня, то есть объединяют архитектурный и системный уровни в один аспект функционального проектирования.

Таблица 1. Горизонтальные и вертикальные у ровни проектирования

Горизон-тальный уровень

Аспекты (вертикальные уровни)

Функцио-нальный

Алгоритми-ческий

Конструкторский

Технологический

Разработка законов функционирования МПУ (МПС); проектирования алгоритмов; программирования модулей

Системный (структурный)

Архитектурный (машинный)

Стояк, па-нель

Разработка принципиальной схемы технологического процесса

Функционально-логический

Микро-программный

ТЭЗ, мо-дуль

Разработка маршрутов технологического процесса

Схемотех-нично-компонент-ный

Кристаллы ИС

Проектирования технологических операций

3-й (микропрограммный) уровень предназначен для проектирования микропрограмм операций и процедур, которые выполняются в микропроцессоре МПУ ли МПС аппаратным способом.

Конструкторский аспект содержит горизонтальные иерархические уровни проектирования стояков, панелей, ТЕЗів, модулей и кристаллов (чіпів) ІС (2-й, 3-й, 4-й равные).

Технологический аспект состоит из трех горизонтальных уровней - 2-го, 3-го и 4-го. На 2-ом уровне разрабатывается схема технологического процесса изготовления МПУ или МПС, то есть определяют состав и последовательность этапов изготовления МПУ (МПС). На 3-м уровне разрабатывают маршруты технологического процесса изготовления МПУ (МПС), то есть определяют состав и последовательность операций по изготовлению изделия, осуществляют выбор видов и групп технологического оснащения . На 4-м уровне проектируют технологические операции изготовления составных частей МПУ (МПС).

Основные задачи уровней проектирования

Системный и архитектурный у ровни проектирования:

1) определение принципов организации МПУ (МПС);

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

3) выбор микропроцессорного (микропроцессорных) комплекта БИС (СБИС);

4) определение требований к параметрам устройства или системы и формирования технической задачи (ТЗ) на разработку отдельных устройств МПС.

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

Функционально-логический и микропрограммный у ровни проектирования :

1) детализация функций каждого устройства;

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

3) выбор принципов организации МПУ (МПС) и разработка его принципиальной схемы;

4) разработка микропрограмм, которые служит основой для каждой команды или совокупности микрокоманд и последовательности их выполнения;

5) синтез функциональных и принципиальных схем цифровых устройств, которые входят в состав МПС;

6) синтез контролирующих и диагностических тестов для МПП ли МПС;

7) формулирования ТЗ для схемотехнического уровня проектирования.

Главные критерии проектирования сложных МПП и МПС:

1) качество проектирования;

2) стоимость проектирования;

3) сроки разработки;

4) количество занятых специалистов-разработчиков.

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

Вопрос. Задача

1. Объясните сущность блочно-иерархического подхода к проектированию МПП и МПС.

2. Что отображают аспекты в моделированной схеме проектирования МПП?

3. На каком из горизонтальных уровней МПП проектируется в виде ТЭЗа и какой аспект соответствует этому?

4. Назовите основные задачи системного уровня проектирования МПП.

5. Какие особенности архитектурного уровня проектирования МПП?

6. В чем сущность функционально-логического уровня проектирован­ия МПП и МПС?

7. Какие основные задачи решаются на микропрограммном уровне МПП?

1.4. Архитектура микропроцессорных устройств и систем

Сущность архитектуры и принципы

разработки микропроцессорных устройств и систем

Сущность архитектуры МПУ и МПС.

Архитектура микропроцессора отражается в функциональных возможностях составляющих его электронных компонентов, используемых для представления данных, машинных операций, описания алгоритмов и процессов вычислений .

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

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

Архитектуру МП можно рассматривать как совокупность его свойств и характеристик с позиции пользователя. Она описывает методологию оптимального объединения совокупности аппаратных, программных и микропрограммных средств МПУ или МПС относительно свойств, которые используются разработчиками и программистами-пользователями.

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

Архитектура микроЭВМ - абстрактное понятие микроЭВМ в терминах функциональных узлов, основных модулей ЭВМ, структур данных. Архитектура конкретно не определяет особенности аппаратной части, время выполнения команд, степень параллелизма при реализации программы и других аналогичных характеристик. Она отображает аспекты структуры микроЭВМ, в частности: систему команд, режимы адресации, форматы данных, набор доступных для пользователя регистров. Термин «архитектура» используется для описания возможностей, которые предоставляет микроЭВМ, а термин «организация» определяет, как эти возможности реализуются.

Описание архитектуры является моделью микроЭВМ, понимание которой важно не только для программиста. Она может быть использована как исходная база для потенциального разработчика новой микроЭВМ: этом случае разработчик трансформирует элементы архитектуры, представляющие определенную логическую схему, набор необходимых, связанных между собой, компонентов.

Все микроЭВМ содержат функциональные блоки, имеющие свою внутреннюю микро-архитектуру: 1) процессор, состоит из арифметико-логического устройства и устройства управления; 2) память – это набор запоминающих элементов (ячеек) и блок управления; 3) устройства ввода и вывода информации также сложные устройства, имеющие в своем составе механические и электронные модули. Эти функциональные блоки объединяются с помощью системы шин: шины данных, по которой осуществляется обмен информацией между блоками микроЭВМ; шины адреса, которая используется для передачи адресов к программно управляемым устройствам, и шины управления для передачи управляющих слов.

Определение архитектуры компьютера, как универсальной микроЭВМ, по смыслу не отличается от определения архитектуры микроЭВМ вообще.

Архитектура компьютера , с точки зрения программиста, абстрактное представление (или определение) вычислительной системы как совокупности комплекса аппаратных и программных средств. В сущности, архитектура - это информация о функциональной (логической) организации компьютера.

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

Принципы разработки МПУ и МПС

С самого начала при разработке и развитии микроЭВМ использовались преимущественно такие основные принципы: модульность, магистральность, микропрограммируемость и регулярность структуры.

Принцип модульной организации предусматривает построение микроЭВМ и МПС на основе набора модулей.

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

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

Связь модулей и их элементов между собою осуществляется преимущественно по двум принципам: а) принцип произвольных связей, который реализует правило «каждый с каждым», и б) принцип упорядоченных связей - магистральный, дающий возможность минимизировать количество связей. Они обеспечивают обмен информацией между функциональными и конструктивными модулями разных уровней с помощью магистралей, соединяющих входные и выходные шины.

Большинство микроЭВМ и МПС имеют многоуровневую организацию программного управления.

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

Микропрограммное управление обеспечивает:

Большую гибкость устройств за счет возможности изменения микропрограмм,

Увеличивает регулярность структуры устройств за счет широкого использования матричных структур типа памяти,

Обеспечивает параллельное решение задач рассредоточенного управления и распределенной памяти,

Повышает надежность устройств за счет использования чипов памяти,

Упрощает контроль функционирования устройств, так как контроль блока микропрограммного управления сводится к контролю содержимого запоминающего устройства.

Принцип регулярности предопределяет повторяемость элементов структуры и связей между ними.

Регулярность системы, как правило, рассматривается на разных уровнях ее организации. Основными способами увеличения регулярности структуры МПП и МПС являются:

1) широкое использование устройств типа памяти;

2) отказ от закрепления определенных микроопераций за регистрами;

3) использование регистровых структур;

4) изготовление регистров общего назначения и других регистров в виде ячеек памяти;

5) применение магистрального способа обмена информацией;

7) использование принципа микропрограммного управления;

8) развитие параллельных МПС.

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

Существует несколько классификаций архитектур МПУ и МПС, которые преимущественно совпадают с описаниями обобщенной архитектуры ЭВМ.

Классификация М. Флина. Это одна из удачных классификаций, где показаны архитектурные различия между ЭВМ. Архитектурные особенности ЭВМ описаны с точки зрения потока команд (инструкций) и потока данных. Такой подход дает возможность относить архитектуры компьютеров к одному из определенных классов (табл. 2, схема 2).

Таблица 2 Классификация компьютерных архитектур по Флину

Поток команд

Единичный поток данных

Множественный поток данных (МД)

Единичный (ОК)

ОКОД (SISD) (однопроцессорные компьютеры)

ОКМД (SIMD) (компьютеры с параллельными или ассоциативными процессорами)

Множественный (МК)

МКОД (MISD) (конвейерные магистральные компьютеры)

МКМД (MIMD) (многопроцессорные или многомашинные комплексы)

Классификация осуществлена в аспекте не структуры машин, а в аспекте того, как в компьютере его машинные команды взаимодействуют с данными. Тем не менее классификация Флина весьма общая, то есть она относит все параллельные компьютеры, кроме мультипроцессорных, к одному классу и не указывает никакого отличия между конвейерным компьютером и матрицей МП.

Используются и другие классификации архитектур, в частности систематика Ф. Шара, структурная систематика Р. Хокни и К. Джесхоупа, которая использует специальные структурные нотации.

Структурная систематика Р. Хокни и К. Джессхоупа . На первом уровне все вычислительные системы разделяют по принципу множественности (количества) на однокомпьютерные и многокомпьютерные. Вычислительные системы с одним компьютером, в свою очередь, делятся на ЭВМ с одним конвейерным МП и многими МП.

Первые из них являются традиционными последовательными компьютерами, а вторые образовывают класс параллельных компьютеров, которые разделяют на конвейерные, неконвейерные и микропроцессорные матрицы.

Схема 2. Иллюстрация классификации компьютерных архитектур по Флину

Примером одной из первых неконвейерных вычислительных машин с параллелизмом может быть компьютер CDC-6600, построенный на основе нескольких скалярных процессоров.

Конвейерные ЭВМ делятся на выполняющие только скалярные команды, например компьютеры CDC-7800, FPC AP-120B, и те, которые выполняют векторные команды. Компьютеры, которые используют векторные команды, разделяются, в свою очередь, на компьютеры со специализированным конвейером, например CRAY-1, и с универсальным конвейером - компьютер CYBER 205.

Компьютеры класса машин с матрицей процессоров классифицируются по связанности процессоров в матрице, по разрядности и т. п. Первыми машинами такого типа были ILLIAC-IV, BSP, STA-RAN, ICL DAP, OMEN и др.

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

Архитектура фон Неймана

Универсальные компьютеры имеют традиционную «фон-неймановскую» архитектуру (или скалярную архитектуру).

Основные принципы построения программно-управляемых ЭВМ.

В 1946 г. известный американский математик Дж. фон Нейман впервые сформулировал основные принципы построения программно-управляемых ЭВМ, которые с течением времени дополнялись и уточнялись:

1) принцип программного управления состоит в том, что ЭВМ может автоматически преобразовывать исходные данные в соответствии с заданной программой;

2) принцип условного перехода предоставляет гибкость и универсальность программам, обеспечивая возможность в процессе решения задачи осуществлять переход на определенный участок программы в зависимости от результатов промежуточных вычислений или исходных данных;

3) принцип сохраняемости (защищенности) программы состоит в том, что программу размещают в запоминающем устройстве ЭВМ;

4) принцип произвольного доступа к элементам памяти;

5) принцип использования двоичной системы счисления;

6) принцип многоуровневой (иерархической) памяти.

Эти принципы актуальные и для современных ЭВМ, но с созданием новых поколений и семейств машин они дополнялись и уточнялись.

В ЭВМ, начиная из третьего поколения, кроме того, применяются такие принципы:

- мультипрограммирование - совместное выполнение разных команд одной и той же или разных, независимых одна от одной, программ, которые сохраняются в оперативной памяти;

- информационная и программная совместимость - дает возможность выполнять имеющиеся программы на разных моделях семейства;

Высокий уровень технической стандартизации - единая для всех машин номенклатура внешних и других устройств;

Возможность организации многоэтапной работы по созданию и усовершенствованию ЭВМ.

Машины четвертого поколения строятся по принципам:

- многопроцессорности - коммутации нескольких процессоров при работе с общей памятью;

Организации виртуальной памяти - обеспечивающей практически неограниченный объем адресного пространства ОЗУ;

Широкого использования БИ С и СБИС и макромодульной структуры, в основе которой лежит идея построения из больших стандартизированных блоков (макромодулей) функционально гибких вычислительных систем;

Использования внутренних языков высокого уровня .

Машины пятого поколения отличаются:

Значительным повышением интеллектуального уровня процессоров;

Дальнейшим развитием функции ввода-вывода графики, изображений, документов, языков программирования;

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

Способностью к самообучению, к ассоциативным построениям и получению выводов.

Языки программирования в процессе формирования программ могут реализовывать естественный интерфейс между человеком и машиной. Языки сверхвысокого уровня, обеспечивают:

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

Использование существующих программных фондов, ориентированных на традиционную архитектуру ЭВМ.

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

Параллельные архитектуры

Параллельность развивалась по двум направлениями:

1) усовершенствование структуры компьютера за счет уменьшения различий между скоростью работы процессора и скоростью доступа к оперативной памяти;

2) повторение однотипных устройств компьютера, объединенных по определенной топологии.

Параллелизм применялся на нескольких иерархических уровнях, в частности:

1) уровень задач - между задачами, которые выполняются на компьютере, или между фазами задачи;

2) программный уровень - между частями программы (например, в границах циклов);

3) командный уровень - между фазами выполнения команды (инструкциями процессора);

4) арифметический и разрядный уровни - между элементами векторной операции внутри логических схем арифметического устройства.

Принципиальные способы введения параллелизма в архитектуру компьютера можно разделить на такие группы:

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

- конвейерная обработка - использование принципа конвейера с целью повышения эффективности процессорного устройства;

- матричная обработка - использование матрицы одинаковых процессорных элементов с общей системой управления, где все элементы выполняют одну и ту же операцию, но с разными данными;

- мультипроцессорная обработка - осуществляется несколькими процессорами, каждый из которых выполняет собственные команды, и все они взаимодействуют через общую оперативную память.

Сигнальные и м едийные микропроцессоры

Сигнальные матричные процессоры - процессоры, в основу которых положен принцип управления, осуществляемого самим потоком данных.

Команды начинают выполняться, как только их операнды становятся доступными. При этом поступление данных из соседних процессоров интерпретируется как изменение состояния и инициирует определенное действие.

Сигнальные процессоры напоминают своей работой процесс распространения сигнала. Они являются распределенной глобальной асинхронной матричной системой вычислений.

Медийная система - сеть процессоров, которые выполняют ритмические вычисления и передачу данных системой.

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

На аппаратном уровне этим компьютерам присуща глобальная синхронизация, которая предопределяет возникновение таких проблем, как синхронизация тактовых сигналов, повышение потребляемой мощности, снижение надежности работы и др.

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

Во многих специализированных компьютерах применяется «гарвардская архитектура» , сущность которой состоит в том, что пространство памяти команд отделено от пространства памяти данных для того, чтобы одновременно выполнять выборку команд и данных.

RISC-архитектура компьютеров

Такую архитектуру имеют компьютеры с сокращенным набором инструкций/команд (RISC - reduced instruction set computer ).

Основные свойства компьютеров с RISC -архитектурой :

1) использования команд фиксированной длины с малым количеством типов форматов;

2) регулярность, которая дает возможность благодаря простоте команд использовать одни и те же аппаратные устройства для выполнения почти всех команд;

3) выполнение большинства команд за один машинный цикл (такт);

4) ориентированность на регистры - все операции с данными выполняют в регистрах, кроме команд загрузки и записи, осуществление которых связано с обращением к памяти.

Преимущества RISC -архитектуры:

1) сопоставимая простота аппаратной реализации;

2) быстрая дешифровка команд;

3) короткая продолжительность такта и соответственно быстрое выполнение команд;

4) возможность создания эффективного конвейера команд.

Недостатки RISC -архитектуры:

1) сравнительно малая скорость обмена операндами и ячейками оперативной памяти;

2) дополнительные требования к программному обеспечению.

Производительность современных матричных и параллельных компьютеров довольно большая и достигает миллиардов операций за секунду над 64-разрядными операндами при выполнении операций с плавающей запятой. При решении прикладных задач их производительность значительно снижается и приближается к производительности современных универсальных компьютеров.

Среди современных конвейерных и матричных МПС следует назвать такие суперкомпьютеры, как Cray MP и др.

Вопрос. Задача

1. Что отображает архитектура МПУ (микроЭВМ) и в чем ее отличие от архитектуры МП?

2. Объясните сущность принципов модульности, магистральности, микро программируемости и регулярности структуры, которые применяются при разработке МПУ, микроЭВМ и МПС.

3. По каким признакам классифицируют компьютерные архитектуры?

4. В чем сущность компьютерной архитектуры фон Неймана?

5. В чем сущность компьютерной Гарвардской архитектуры?

6. Перечислите способы введения параллелизма в архитектуру компьютера.

7. Объясните сущность мультипрограммирования компьютеров.

8. Какой принцип действия медийной сети МП и сигнальных матричных МП, в чем их отличия?

9. В чем сущность RISC-архитектуры компьютеров, какие она имеет преимущества и недостатки сравнительно с предварительно рассмотренными архитектурами?

Литература.

1. Мікропроцесори та мікроЕОМ у виробничих системах: Посібник.- К.: Видавничий центр “Академія”, 2002. – 368 с. (Альма-матер).

2. Корнеев вычислительные системы.- М.: «Нолидж», 199с.

3. , Киселев микропроцессоры.- М.: «Нолидж», 199с.

Введение

Специальность «Компьютерные системы и сети» – одна из важнейших и наиболее универсальных в современной системе образования. В сферу ее интересов входят самые разнообразные объекты и устройства управления – от элементарных регуляторов до сложнейших систем управления производственными процессами и экспериментальными исследованиями.

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

За последние годы в микроэлектронике бурное развитие получило направление, связанное с выпуском микроконтроллеров, которые предназначены для «интеллектуализации» оборудования различного назначения. Микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя все основные части «голой» микроЭВМ: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижения исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной элементной базы для построения управляющих и / или регулирующих систем.

К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно микроконтроллеры.

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

1. Анализ технического задания

В данной курсовой работе необходимо спроектировать микропроцессорную систему на основе микроконтроллера К1816ВЕ31. Требуется описать и разработать структурную и функциональную схемы проектируемого устройства (системы), обосновать выбор конкретных элементов, разработать принципиальную схему проектируемого устройства (системы), разработать программу инициализации основных компонентов, а также программу функционирования на языке ассемблера микроконтроллера.

2. Разработка структурной схемы проектируемого устройства

Основу структурной схемы микроконтроллера (рисунок 1) образует внутренняя двунаправленная 8-битная шина, которая связывает между собой все основные узлы и устройства: резидентную память, АЛУ, блок регистров специальных функций, устройство управления и порты ввода / вывода.

Арифметико-логическое устройство. 8-битное АЛУ может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т.п. В АЛУ имеются программно недоступные регистры Т1 и Т2, предназначенные для временного хранения операндов, схема десятичной коррекции и схема формирования признаков.

Простейшая операция сложения используется в АЛУ для инкрементирования содержимого регистров, продвижения регистра-указателя данных и автоматического вычисления следующего адреса РПП. Простейшая операция вычитания используется в АЛУ для декрементирования регистров и сравнения переменных.

Простейшие операции автоматически образуют «тандемы» для выполнения в АЛУ таких операций, как, например, инкрементирование 16-битных регистровых пар. В АЛУ реализуется механизм каскадного выполнения простейших операций для реализации сложных команд. Так, например, при выполнении одной из команд условной передачи управления по результату сложения в АЛУ трижды инкрементируется СК, дважды производится чтение из РПД, выполняется арифметическое сравнение двух переменных, формируется 16-битный адрес перехода и принимается решение о том, делать или не делать переход по программе. Все перечисленные операции выполняются в АЛУ всего лишь за 2 мкс.

Важной особенностью АЛУ является его способность оперировать не только байтами, но и битами. Отдельные программно-доступные биты могут быть установлены, сброшены, инвертированы, переданы, проверены и использованы в логических операциях. Эта способность АЛУ оперировать битами столь важна, что во многих описаниях микропроцессора говорится о наличии в нем «булевского процессора». Для управления объектами часто применяются алгоритмы, содержащие операции над входными и выходными булевскими переменными (истина / ложь), реализация которых средствами обычных микропроцессоров сопряжена с определенными трудностями.



Рисунок -1. Структурная схема КР1816ВЕ31

АЛУ может оперировать четырьмя типами информационных объектов: булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В АЛУ выполняется 51 различная операция пересылки или преобразования этих данных. Используется 11 режимов адресации (7 для данных и 4 для адресов), путем комбинирования «операция / режим адресации» базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции

Резидентная память . Память программ и память данных, размещенные на кристалле КР1816ВЕ31, физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют различные функции.

Память программ (ПЗУ или СППЗУ) имеет емкость 4Кбайта и предназначена для хранения команд, констант, управляющих слов инициализации, таблиц перекодировки входных и выходных переменных и т.п. РПП имеет 16-битную шину адреса, через которую обеспечивается доступ из счетчика команд или из регистра-указателя данных. Последний выполняет функции базового регистра при косвенных переходах по программе или используется в командах, оперирующих с таблицами.

Память данных (ОЗУ) предназначена для хранения переменных в процессе выполнения прикладной программы, адресуется одним байтом и имеет емкость 128 байт. Кроме того, к адресному пространству РПД примыкают адреса регистра специальных функций (РСФ), которые перечислены в таблице 3.

Память программ, также как и память данных, может быть расширена до 64Кбайт путем подключения внешних БИС.

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

Таблица 3.1

Символ Наименование Адрес
* АСС Аккумулятор 0Е0Н
* В Регистр-расширитель аккумулятора 0F0Н
* PSW Слово состояния программы 0D0H
SP Регистр-указатель стека 81Н
DPTR

Регистр-указатель данных (DPH)

* P0 Порт 0 80Н
* Р1 Порт 1 90Н
* Р2 Порт 2 0А0Н
* Р3 Порт 3 0В0Н
* IP Регистр приоритетов 0В8Н
* IE Регистр маски прерываний 0А8Н
TMOD Регистр режима таймера / счетчика 89Н
* TCON Регистр управления / статуса таймера 88Н
TH0 Таймер 0 (старший байт) 8СН
TL0 Таймер 0 (младший байт) 8АН
TH1 Таймер 1 (старший байт) 8DН
TL1 Таймер 1 (младший байт) 8BН
Символ Наименование Адрес
* SCON Регистр управления приемопередатчиком 98Н
SBUF Буфер приемопередатчика 99Н
PCON Регистр управления мощностью 87Н

Примечание. Регистры, имена которых отмечены знаком (*), допускают адресацию отдельных бит.

Таблица. 3.2

Символ Позиция Имя и назначение
С PSW.7 Флаг переноса. Устанавливается и сбрасывается аппаратурными средствами или программой при выполнении арифметических и логических операциях
АС PSW.6 Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратурными средствами при выполнении команд сложения и вычитания и сигнализирует о переносе или займе в бите 3.
F0 PSW.5 Флаг 0. Может быть установлен, сброшен или проверен программой как флаг, специфицируемый пользователем.
Выбор банка регистров. Устанавливается и сбрасывается программой для выбора рабочего банка регистров (см. примечание)
OV PSW.2 Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций.
PSW.1 Не используется.
Р PSW.0 Флаг паритета. Устанавливается и сбрасывается аппаратно в каждом цикле команды и фиксирует нечетное / четное число единичных бит в аккумуляторе, т.е. выполняет контроль по четности.

Примечание. Выбор рабочего банка регистров

RS1 RS0 Банк Границы адресов
0 0 0 00Н-07Н
0 1 1 08Н-0FH
1 0 2 10H-17H
1 1 3 18H-1FH

При выполнении многих команд в АЛУ формируется ряд признаков операции (флагов), которые фиксируются в регистре ССП. В таблице 4 приводится перечень флагов ССП, даются их символические имена и описываются условия их формирования.

Наиболее «активным» флагом ССП является флаг переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (С) выполняет функции «булевого аккумулятора» в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делают возможным использование арифметики в дополнительных кодах. АЛУ не управляет флагами селекции банка регистров (RS0, RS1), и их значение полностью определяется прикладной программой и используется для выбора одного из четырех регистровых банков.

Структурная схема микроконтроллерной системы приведена в графической части курсового проекта приложение А

3. Разработка функциональной схемы микроконтроллерной системы

Разработка подсистемы памяти

В микроконтроллерных системах, построенных на основе КР1816ВЕ31, возможно использование двух типов внешней памяти: постоянной памяти программ (ВПП) и оперативной памяти данных (ВПД). Доступ к ВПП осуществляется при помощи управляющего сигнала RD, который выполняет функцию строб-сигнала, чтения. Доступ к ВПД обеспечивается управляющими сигналами RD и WR, которые формируются в линиях Р3.7 и Р3.6 при выполнении портом 3 альтернативных функций.

При обращении к ВПП всегда используется 16-битный адрес. Доступ к ВПД возможен с использованием 16-битного адреса (MOVXA,@DPTR) или 8-битного адреса (MOVXA,@RI).

В любых случаях использования 16-битного адреса старший байт адреса фиксируется (и сохраняется неизменным в течение одного цикла записи или чтения) в регистре-защелке порта 2.

Если очередной цикл внешней памяти (MOVXA,@DPTR) следует не сразу же за предыдущим циклом внешней памяти, то неизменяемое содержимое регистра-защелки порта 2 восстанавливается в следующем цикле. Если используется 8-битный адрес (MOVXA,@RI), то содержимое регистра-защелки порта 2 остается неизменным на его внешних выводах в течение всего цикла внешней памяти.

Через порт 0 в режиме временного мультиплексирования осуществляется выдача младшего байта адреса и передача байта данных. Сигнал САВП должен быть использован для записи байта адреса во внешний регистр. Затем в цикле записи выводимый байт данных появляется на внешних выводах порта 0 только перед появлением сигнала . В цикле чтения вводимый байт данных принимается в порт 0 по фронту стробирующего сигнала .

При любом обращении к внешней памяти устройство управления КР1816ВЕ31 загружает в регистр защелку порта 0 код 0FFH, стирая тем самым информацию, которая могла в нем храниться.

Доступ к ВПП возможен при выполнении двух условий: либо на вход отключения резидентной памяти программ () подается активный сигнал, либо содержимое счетчика команд превышает значение 0FFFH. Наличие сигнала необходимо для обеспечения доступа к младшим 4К адресам адресного пространства ВПП при использовании КР1816ВЕ31.

Основная функция сигнала САВП – обеспечить временное согласование передачи из порта 0 на внешний регистр младшего байта адреса в цикле чтения из ВПП. Сигнал САВП приобретает значение 1 дважды в каждом машинном цикле. Это происходит даже тогда, когда в цикле выборки нет обращения к ВПП. Доступ к ВПД возможен только в том случае, если сигнал САВП отсутствует. Первый сигнал САВП во втором машинном цикле команды MOVX блокируется. Следовательно, в любой МК-системе, не использующей ВПД, сигнал САВП генерируется с постоянной частотой, равной 1/16 частоты резонатора, и может быть использован для синхронизации внешних устройств или для реализации различных временны функций.

При обращении к РПП сигнал не генерируется, а при обращении к ВПП он выполняет функцию строб-сигнала чтения. Полный цикл чтения ВПД, включая установку и снятия сигнала , занимает 12 периодов резонатора.

Особый режим работы КР1816ВЕ31 . Содержимое памяти программ КР1816ВЕ31заполняется единожды на этапе разработки МК-системы и не может быть модифицировано в завершенном изделии. По этой причине микроконтроллеры не являются машинами классической «фон-неймановской» архитектуры. Оперативная память данных не может быть использована для хранения кодов программы. Эта особенность архитектуры МК объясняется тем, что в большинстве применений МК требуется наличие одной неизменяемой прикладной программы, хранимой в ПЗУ, наличие ОЗУ небольшой емкости для временного хранения переменных и эффективных, а следовательно, разных методов адресации памяти программ и памяти данных.

Микроконтроллер КР1816ВЕ31 не имеет внутренней памяти программ и поэтому пользуется только внешней памятью, которую можно модифицировать путем перепрожига внешней микросхемы ПЗУ.

Тип микропроцессора К1816ВЕ31. Объем внешнего ОЗУ – 4Кбайт. В данном микропроцессоре (в соответствии со структурой команд) внешняя адресация памяти данных позволяет адресовать 64Кбай внешней памяти. Для разработки подсистемы памяти выбираем микросхему в соответствии с перечнем элементов, приведенных в приложении Г.

Разработка подсистемы временных характеристик

Регистры специальных функций . Регистры с символическими именами IP, IE, TMOD, TCON, SCON и PCON используются для фиксации и программного изменения управляющих бит и бит состояния схемы прерывания, таймера / счетчика, приемопередатчика последовательного порта и для управления мощностью электропитания КР1816ВЕ31

Последовательный порт К1816ВЕ31 может работать в четырех различных режимах.

Режим 0. В этом режиме информация и передается и принимается через внешний вывод входа приемника (RXD). Принимаются или передаются восемь бит данных. Через внешний вывод выхода передатчика (ТXD), выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора.

Режим 1 . В этом режиме передаются через ТXD или из RXD принимаются десять бит информации: старт-бит (0), восемь бит данных и стоп-бит. Скорость приема / передачи – величина переменная и задается таймером.

Режим 2 . В этом режиме передаются через ТXD или из RXD принимаются одиннадцать бит информации: старт-бит, восемь бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит данных может принимать значение 0 или 1, или, например, для повышения достоверности передачи путем контроля по четности в него может быть помещено значение признака паритета из слова состояния программы (PSW.0). Частота приема / передачи выбирается программой и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.

Режим 3 . Совпадает с режимом 2 во всех деталях, за исключением частоты приема / передачи, которая является величиной переменной и задается таймером.

Управление режимом работы УАПП осуществляется через специальный регистрSCON. Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых (RB8 и TB8) и биты прерывания приемопередатчика (RI и TI).

Прикладная программа путем загрузки в старшие биты спецрегистра SCON 2-битного кода определяет режим работы УАПП. Во всех четырех режимах работы передача из УАПП инициируется любой командой, в которой буферный регистр SBUF указан как получатель байта. Прием в УАПП в режиме 0 осуществляется при условии, что RI=0 и RЕN=1. В режиме 1,2,3 прием начинается с приходом старт-бит, если RЕN=1.

В бите ТВ8 программно устанавливается значение девятого бита данных, который будет передан в режиме 2 или 3. В бите RВ8 фиксируется в режимах 2 и 3 девятый принимаемый бит данных. В режиме 1, если SМ2=0, в бит RВ8 заносится стоп-бит. В режиме 0 бит RВ8 не используется.

Флаг прерывания передатчика TIустанавливается аппаратно в конце периода передачи восьмого бита в режиме 0 и в начале передачи стоп-бита в режиме 1,2 и 3. Соответствующая подпрограмма обслуживания должна сбрасывать бит ТI.

Флаг прерывания приемника RIустанавливается аппаратно в конце периода передачи восьмого бита в режиме 0 и в середине приема стоп-бита в режиме 1,2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.

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

Программируемый таймер находится внутри микроконтроллера К1816ВЕ31.

Таймер/счетчик . В составе средств КР1816ВЕ31 имеются регистровые пары с символическими именами TH0, TL0 и TH1, TL1, на основе которых функционируют два независимых программно-управляемых 16-битных таймера / счетчика событий.

Два программируемых 16-битных таймера / счетчика (Т/С0 и Т/С1) могут быть использованы в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера содержимое Т/С инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов резонатора. При работе в качестве счетчика содержимое Т/С инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на соответствующий (Т0, Т1) вывод К1816ВЕ31. Опрос значения внешнего входного сигнала выполняется в момент времени S5P2 каждого машинного цикла. Содержимое счетчика будет увеличено на 1 в том случае, если в предыдущем цикле был считан входной сигнал высокого уровня (1), а в следующем – сигнал низкого уровня (0). Новое значение счетчика будет сформировано в момент S3P1 в цикле в следующем за тем, в котором был обнаружен переход сигнала из 1 в 0. Так как на распознавание перехода требуется два машинных цикла, то максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входного считаемого сигнала он должен удерживать значение 1 как минимум в течении одного машинного цикла К1816ВЕ31.

Для управления режимами работы Т/С и для организации взаимодействия таймеров с системой прерывания используются два регистра специальных функций (РРТС и РУСТ). Как следует из описания управляющих бит РРТС, для обоих Т/С режимы работы 0, 1 и 2 одинаковы. Режимы 3 для Т/С0 и Т/С1 различны. Рассмотрим кратко работу Т/С во всех четырех режимах.

Режим 0 . Перевод любого Т/С в режим 0 делает его похожим на таймер МК48 (8-битный счетчик), на вход которого подключен 5-битный предделитель частоты на 32. В этом режиме таймерный регистр имеет разрядность 13 бит. При переходе из состояния» все единицы» в состояние «все нули» устанавливается флаг прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен (поступает на вход Т/С), когда управляющий бит TR1 установлен в 1 и либо управляющий бит GATE (блокировка) равен 0, либо выход запроса прерывания поступает уровень 1.

В таблице 8 приведены регистры режима работы таймера / счетчика, а в таблице 9 регистры управления / статуса таймера.

Установка бита GATE в 1 позволяет использовать таймер для измерения длительности импульсного сигнала, подаваемого на вход запроса прерывания.

Таблица 4.2.1

Символ Позиция Имя и назначение
GATE TMOD.7 для T/С1 и TMOD.3 для T/C0 Управление блокировкой. Если бит установлен, то таймер / счетчик «х» разрешен до тех пор, пока на входе «INTx» высокий уровень и бит управления «TRx» установлен. Если бит сброшен, то Т/С разрешается, как только бит управления «TRx» устанавливается.
TMOD.6 для T/С1 и TMOD.2 для T/C0 Бит выбора режима таймера / счетчика событий. Если бит сброшен, то работает таймер от внутреннего источника сигналов синхронизации. Если бит установлен, то работает счетчик от внешних сигналов на входе «Тх».
М1 TMOD.5 для T/С1 и TMOD.1 для T/C0 Режим работы (см. примечание).
М0 TMOD.4 для T/С1 и TMOD.0 для T/C0
М1 М0 Режим работы
0 0 Таймер МК48. «TLx» работает как 5-битный предделитель.
0 1 16-битный таймер / счетчик. «THx» и «TLx» включены последовательно.
1 0 8-битный автоперезагружаемый таймер / счетчик. «THx» хранит значение, которое должно быть перезагружено в «TLx» каждый раз по переполнению.
1 1 Таймер/счетчик1 останавливается. Таймер/счетчик0: TL0 работает как 8-битный таймер / счетчик, и его режим определяется управляющими битами таймера0.TH0 работает только как 8-битный таймер, и его режим определяется управляющими битами таймера1.

Режим 1 . Работа любого Т/С в режиме 1 такая же, как и в режиме 0, за исключением того, что таймерный регистр имеет разрядность 16 бит.

Режим 2 . В режиме 2 работа организована таким образом, что переполнение (переход из состояния» все единицы» в состояние «все нули») 8-битного счетчика TL1 приводит не только к установке флага TF1, но и автоматически перезагружает в TL1 содержимое старшего байта (TH1) таймерного регистра, которое предварительно было задано программным путем.

Режим 3 . В режиме 3 Т/С0 и Т/С1 работают по разному. Т/С 1 сохраняет неизменным свое текущее содержимое. Иными словами, эффект такой же как и при сбросе управляющего бита TR1 в ноль.

В режиме 3 TL0 и TH0 функционируют как два независимых 8-битных счетчика. Работу TL0 определяет управляющие биты Т/С 0 (, GATE, TR0), входной сигнал и флаг переполнения TF0. Работу ТН0, который может выполнять только функции таймера (подсчет машинных циклов МК), определяет управляющий бит TR1. При этом ТН0 использует флаг переполнения TF1.

Разработка подсистемы связи с центральной ЭВМ

Проектируемое устройство должно выдавать содержимое памяти в центральную ЭВМ, а также принимать информацию от центральной ЭВМ.

Т.к. обмен информацией осуществляется на большие расстояния, то передачу необходимо вести в последовательном формате. Преобразование данных из параллельного формата в последовательный и обратно выполняет УАПП. УАПП – универсальный асинхронный приемопередатчик, предназначенный для реализации двунаправленного асинхронного обмена данными, представленными в параллельном формате, и управляющими словами с микропроцессором, а также двунаправленного асинхронного обмена данными, представленными в последовательном формате с другими модулями системы, например видеотерминалами, накопителями на магнитной ленте и т.д. Таким образом, УАПП преобразует параллельный код, полученный из системы по шине данных, в последовательный, и поразрядно выдаёт его в канал связи, а также выполняет обратное преобразование.

В состав УАПП, называемого часто последовательным портом, входят принимающий и передающий сдвигающий регистры, а также специальный буферный регистр (SBUF) приемопередатчика. Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного байта. Если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет потерян.

Управление режимом работы УАПП осуществляется через специальный регистр с символическим именем SCON. Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и TB8) и биты прерывания приемопередатчика (R1 и T1).


Таблица 4.5.1

Символ Позиция Имя и назначение
TF1 TCON.7 Флаг переполнения таймера1. Устанавливается аппаратурно при переполнении таймера / счетчика. Сбрасывается при обслуживании прерывания аппаратурно
TR1 TCON.6 Бит управления таймера 1. Устанавливается/сбрасывается программой для пуска / останова.
TF0 TCON.5 Флаг переполнения таймера1. Устанавливается аппаратурно. Сбрасывается при обслуживании прерывания
TR0 TCON.4 Бит управления таймера 0. Устанавливается/сбрасывается программой для пуска / останова. таймера / счетчика.
IE1 TCON.3
IT1 TCON.2 Бит управления типом прерывания 1. Устанавливается / сбрасывается программой для спецификации запроса (срез / низкий уровень).
IE0 TCON.1 Флаг фронта прерывания 1. Устанавливается аппаратурно, когда детектируется срез внешнего сигнала . Сбрасывается при обслуживании прерывания
IT0 TCON.0 Бит управления типом прерывания 0. Устанавливается / сбрасывается программой для спецификации запроса (срез / низкий уровень).

Режим 3 используется в тех случаях применение К1816ВЕ31, когда требуется наличие дополнительного 8-битного таймера или счетчика событий. Можно считать, что в режиме 3 К1816ВЕ31 имеет в своем составе 3 таймера / счетчика. В том случае, если Т/С0 используется в режиме 3, Т/С1 может быть или включен или выключен, или переведен в свой собственный режим 3, или может быть использован последовательным портом в качестве генератора частоты передачи, или, на конец, может быть использован в любом применении, не требующим прерывания.

После определения скорости приема / передачи информации необходимо обеспечить тактовую частоту приема RxC, передачи ТхС. Выдача этих синхросигналов осуществляется с использованием каналов программируемого таймера. Исходная частота, поступающая на программируемый таймер, равна частоте разрабатываемой микропроцессорной системы. Для определения уставки, записываемой в соответствующий канал программируемого таймера, необходимо определить коэффициент пересчета исходной частоты системы в частоту приема / передачи по линии связи, а также выбрать соответствующий режим работы задействованных каналов таймера.

5. Разработка принципиальной схемы проектируемого устройства

Выбор элементной базы

В контроллере, разрабатываемом в данном курсовом проекте, в качестве центральной части используется однокристальная микроЭВМ КМ1816ВЕ31, выполненная на основе высокоуровневой n -МОП технологии и взаимодействующая со средой в стандарте ТТЛ-схем с тремя состояниями выхода. Это позволяет при разработке схемы использовать ИС из микропроцессорного комплекта серии 580 быстродействующие ТТЛ серии. Как указывалось выше, в состав микроконтроллера входит программируемый таймер, асинхронный последовательный интерфейс (УАПП) и ПЗУ емкостью 1 Кб.

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

Программируемый контроллер клавиатуры и индикации КР580ВВ79;

Статическое ОЗУ емкостью 16Кб АТ28С128;

Блок семисегментных индикаторов АЛС318;

Буферный регистр К1533ИР22;

ПЗУ К573РУ8;

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

6. Разработка программного обеспечения

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

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

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

Инициализация представляет собой запись в определенные регистры некоторых констант, определяющих режимы работы процессора и отдельных частей системы.

Рабочий цикл – это набор процедур и операторов, выполняемых в бесконечном цикле, и обеспечивающих выполнение возложенных на систему функций. Граф-схема алгоритма работы и подпрограмм, приведенные на листе 4 графической части.

Подпрограмма инициализации контроллера клавиатуры и индикации

В разработке использован ПККИ типа КР580ВВ79. Его настройка осуществляется загрузкой управляющего слова «установка режима работы контроллера клавиатуры и индикации» в соответствующий регистр блока управления. Режим работы блока интерфейса клавиатуры: последовательный опрос матрицы клавиш с дешифрированием состояния счетчика сканирования и запрещением 2-х или более нажатых клавиш. Режим работы блока индикации: вывод символов на 8-разрядную индикацию с размещением их слева направо.

Рисунок 6.2 – Формат управляющего слова «программный сброс»

Разряды D7 – D5 – адрес управляющего слова «программный сброс»;

Разряды D4 = 0 – коды находящиеся во внутреннем ОЗУ индикации выдаются на выходы OUT; D1 = 1 – обнуление регистра состояния ОЗУ клавиатуры и на выходе IRQ – сигнал низкого уровня; D0 ºD4.


Рисунок 6.4 – Формат управляющего слова «запись в ОЗУ индикации»

Разряды D7-D5 – адрес управляющего слова; D3-D0 – адрес ячейки ОЗУ индикации.

Формат управляющего слова «Чтение многорежимного ОЗУ клавиатуры» аналогичен формату управляющего слова «Чтение из ОЗУ индикации», за исключением содержимого битов D7-D5.

0 1 0 1 х х х х

Рисунок 6.5 – Формат регистра управляющего слова клавиатуры

Разряды D7-D5 – адрес управляющего слова; D4 – признак автоинкремента; D3-D0 – адрес ячейки ОЗУ клавиатуры.

Подпрограмма инициализации программируемого параллельного интерфейса

Настройка ППИ осуществляется загрузкой управляющего слова в регистр управляющего слова. Настройка производится следующим образом: порт А работает в режиме ввода информации с датчиков через АЦП, а порт В работает в режиме вывода информации на ЦАП. Порт С будет управлять процессами приема и выдачи информации.

В разработанной системе ППИ работает в 0 режиме. Функции этого режима:

1) Два 8-ми разрядных и два 4-х разрядных порта.

2) Все порты могут быть как входными, так и выходными.

3) Выходные порты защелкиваются, входные – нет.

Формат регистра управляющего слова ППИ представлен на рис. 6.6.

Рисунок 6.7 – Формат регистра SCON.

SM1 и SM0 (D7, D6) – определяют режим работы последовательного порта (Режим 2: 9-ти разрядный асинхронный приемопередатчик, фиксированная скорость приемопередачи);

REN (D4) – флаг управления разрешением приема;

TB8 (D3) – установка состояния 9-го бита принимаемых данных;

RB8 (D2) – анализ состояния 9-го бита принимаемых данных;

TI (D1) – бит прерывания по передачи;

RI (D0) – бит готовности.

Подпрограмма опроса клавиатуры

Программируемый контроллер клавиатуры и индикации настраивается на режим чтения многорежимного ОЗУ клавиатуры с автоинкрементом, в счетчик заносим количество ячеек ОЗУ клавиатуры. Происходит последовательный опрос клавиатуры, после чего данные о нажатых функциональных клавишах записываются в ОЗУ клавиатуры.

Подпрограмма выдача данных на индикаторы

При обращении в данную подпрограмму сначала происходит обнуление счетчика, а затем наращивание его до заданного количества индикаторов. Программируемый контроллер клавиатуры и индикации настраивается на режим записи в ОЗУ индикации и происходит последовательный вывод информации на индикаторы. Выход из подпрограммы произойдет после выдачи всех кодов символов на индикаторы.

Опрос датчиков и выдача выходных сигналов

Опрос датчиков и выдача выходных сигналов происходит по следующему алгоритму:

1) в счетчик заносится количество опрашиваемых датчиков;

2) информация считывается с датчиков в порт А, который ранее был проинициализирован на прием данных;

3) принятая информация переписывается через аккумулятор в специально отведенную для информации с датчиков ячейку ОЗУ;

4) уменьшение счётчика количества датчиков на 1;

5) если произошел опрос всех датчиков, то ППИ перестраивается на выдачу информации из порта В;

6) в счетчик заносится количество выходных сигналов;

7) информация из ячейки ОЗУ через аккумулятор заносится в порт В;

8) производится вывод информации.

Подпрограмма обмена информацией с центральной ЭВМ

В этой подпрограмме вначале производится чтение регистра состояния УАПП. После этого выполняется проверка: установлен ли пятый бит регистра в 1. Если установлен, то это означает, что УАПП готов к передаче информации и происходит побитная передача данных в линию связи до тех пор, пока счетчик передаваемых информационных разрядов не будет равен нулю. Как только все информационные разряды передадутся в линию связи, произведутся новые начальные установки (начальный адрес ОЗУ, количество информационных разрядов) и подпрограмма закончит свое выполнение. Если же еще на первом этапе пятый бит регистра не будет установлен в 1, следовательно произойдет выход из подпрограммы, т. к. УАПП в этом случае не готов передавать информацию.

Подпрограмма инициализации таймера

Для управления режимами работы таймера / счетчика и для организации взаимодействия таймеров с системой прерывания используют два специальных регистра: TCON и TMOD.

Рисунок 6.9 – Формат регистра TMOD.

Регистр TMOD задает режимы работы Т/С0 и Т/С1. Устанавливаем для Т/С1 первый режим работы: 16-битный таймер / счетчик. TH1 и TL1 включены последовательно. При переходе из состояния» все единицы» в состояние «все нули» устанавливается флаг прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен (поступает на вход Т/С), когда управляющий бит TR1 установлен в 1 и либо управляющий бит GATE (блокировка) равен 0, либо выход запроса прерывания поступает уровень 1.), блокировка отключена, таймер работает от внутреннего источника сигналов синхронизации.

Таймер 1 должен быть инициализирован для выдачи частоты синхронизации приема-передачи последовательного порта и для организации прерывания, во время которого подсистема должна будет передать информацию о состоянии аналоговых датчиков и состоянии клавиатуры в центральную ЭВМ.

Производится заполнение таймерных регистров:

В TH1 записывается FEh

В TL1 записывается EBh

Значения TH1 и TL1, обновляются в соответствующих процедурах прерываний.


Заключение

В ходе выполнения курсового проекта были рассмотрены структурная организация, режимы работы, и алгоритмы функционирования микропроцессорного устройства на базе микроконтроллера серии К1816.

В ходе работы над курсовым проектом были разработаны структурная и принципиальная схемы, а также его программное обеспечение, для составления которого использовалась система команд и алгоритм функционирования КМ1816ВЕ31.что позволило понять какие действительно процессы проходят в микроконтроллерной системе и как они выполняются.

Перечень источников

1. Цифровые и аналоговые интегральные микросхемы: Справочник / под ред. С.В. Якубовского. – М: Радио и связь, 1990. – 496 с.

2. Микропроцессоры / К.Г. Самофалов, О.В. Викторов – Киев: Техника, 1989. – 312 с.

3. Справочник по цифровой схемотехнике / И.В. Зубчук, В.П. Сигорский. – К.: Техника, 1990 г. – 448 с.

4. Микросхемы ЦАП и АЦП: функционирование, параметры, применение / Б.Г. Федорков, В.А. Телец – М.: Энергоатомиздат, 1990. 320 с.

5. Сташин В.В., Урусов И.А. Мологонцева И.А. Проектирование цифровых устройств на однокристальных микро-ЭВМ. М. Энергоатомиздат –1990 – 285 с.

Проектирование микропроцессорных систем

Введение

Задача разработки вычислительных систем с применением микроконтроллеров требует знания и понимания принципов их работы, но главное - составлять управляющие программы. Цель настоящей книги научиться разрабатывать микроконтроллерные устройства.

В качестве базовой микросхемы для всех приведенных в книге примеров использована микросхема Atmega 128 популярного микропроцессорного семейства AVR фирмы Atmel. Предполагается, что читатель имеет основные представления, как о принципах микропроцессорной техники, так и об особенностях архитектуры этого микроконтроллера.

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

Главная задача языка- однозначно описать последовательность действий, которую должен выполнить микроконтроллер. В тоже время язык должен быть понятен человеку.

В процессе создания программы программист просто пишет ее текст на компьютере точно так же, как любой текст. Затем программист запускает специальную программу – транслятор, каторый переводит текст, написанный программистом в машинные коды, понятные микропроцессору.

Написанный программистом текст программы называется исходным или объектным кодом . Код, полученный в результате трансляции называется результирующим или машинным кодом . Именно этот код записывается в програмную память микроконтроллера. Для записи результирующего кода применяются специальные устройства - программаторы .

Все языки программирования делятся на две группы:

· языки низкого уровня (машинноориентированные);

· языки высокого уровня.

Типичным примером машинноориентированного языка является язык Ассемблер. В недавнем прошлом язык Ассемблера был единственным языком для программирования микроконтроллеров. В настоящее время для составления программ исподьзуются языки высокого уровня, такие как Бейсик , Си и т.п. Эти языки в свое время были разработаны для больших компьютеров. Но сейчас широко используются и для микроконтроллеров.

Преимуществом языков высокого уровня является существенное ускорение процесса разработки программы. Из всех языков высокого уровня самым эффективным, пожалуй, является язык Си. Поэтому в дальнейшем для иллюстрации выберем этот язык. Для различных семейств микропроцессоров разработаны свои версии языков. Например, для микропроцессоров семейства AVR - С AVR.

Глава1. Написание программ для микроконтроллеров

Элементы языка Си

Регистры МК (регистры - это ячейки-байты в памяти МК AVR) в программе на Си имеют названия и так как числа в большинстве из них можно менять - для программы регистры являются по сути переменными.
Переменная - это набор ячеек в памяти в которых можно хранить число или числа и менять их. Переменная имеет адрес и имя.

Константа - это как переменная но менять содержимое нельзя.

Константы

Константами называются перечисленные величины в программе. В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой, символьные константы и строковыми литералы.

Целая константа: это десятичное, восьмеричное, шестнадцатеричное или двоичное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной, шестнадцатеричной или двоичной.

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

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

Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шеснадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F).

Двоичная константа записывается с помощью двоичных символов, которым должна предшествовать последовательность 0b.

например - Целые числа могут быть записаны:

В десятичной форме: 12 234 -5493

В двоичной форме с префиксом 0b так: 0b101001

В шестнадцатеричной форме с префиксом 0x так: 0x5А

В восьмеричной форме с префиксом 0 так: 0775

Если требуется сформировать отрицательную целую константу, то используют знак "-" перед записью константы (который будет называться унарным минусом). Например: -0x2A, -088, -16 .

Каждой целой константе присваивается тип, определяющий преобразования, которые должны быть выполнены, если константа используется в выражениях. Тип константы определяется следующим образом:

Десятичные константы рассматриваются как величины со знаком, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int, в противном случае long.

Восьмеричным и шестнадцатеричным константам присваивается тип int , unsigned int (беззнаковая целая), long или unsigned long в зависимости от значения константы согласно табл1.1.

Таблица 1.1

Диапазон шестнадцатеричных констант Диапазон восьмеричных констант Тип
0x0 - 0x7FFF 0 - 077777 int
0X8000 - 0XFFFF 0100000 - 0177777 unsigned int
0X10000 - 0X7FFFFFFF 0200000 - 017777777777 long
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 unsigned long

Число с плавающей точкой состоит из целой и дробной части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьная константа - представляется символом заключенном в апострофы. Значением символьной константы является числовой код символа.

Например, "Q"- буква Q .

Символьные константы имеют тип int и при преобразовании типов дополняются знаком.

Строковая константа (литерал) - последовательность символов (включая строковые и прописные буквы русского и латинского а также цифры) заключенные в кавычки (") .

Например, “Heloo”

Символы строкового литерала сохраняются в области оперативной памяти. В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Строковый литерал имеет тип char .

1.1.2. Идентификатор

Идентификатором называется последовательность цифр и букв, а также специальных символов, при условии, что первой стоит буква или специальный символ. Для образования идентификаторов могут быть использованы строчные или прописные буквы латинского алфавита. В качестве специального символа может использоваться символ подчеркивание (_). Два идентификатора для образования которых используются совпадающие строчные и прописные буквы, считаются различными. Например: abc, ABC, A128B, a128b .

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

Ключевые слова

Типы данных и их объявление

Важное отличие языка СИ от других языков является отсутствие принципа умолчания, что приводит к необходимости объявления всех переменных, используемых в программе явно вместе с указанием соответствующих им типов.

Формат объявления переменных имеет следующий вид:

[]

- Спецификатор класса памяти - определяется одним из четырех ключевых слов языка СИ: auto, extern, register, static, и указывает,каким образом будет распределяться память под объявляемую переменную, с одной стороны, а с другой, область видимости этой переменной, т.е., из каких частей программы можно к ней обратиться. Не объязательный элемент и он нужен только в некоторых случаях.

- если переменная может использоваться в других файлах исходного кода программы;

- если переменная локальная, то объявлена в какой либо функции после скобки и должна сохранять свои значения до следующего вызова этой функции;

- разместить переменную в регистрах МК.

Глобальные переменные объявляются до появления их в тексте какой ни будь функции. После объявления глобальные переменные доступны в любой функции программы.

Локальные переменные объявляются в самом начале функций- т.е. после фигурной скобки.

- спецификатор типа данных, которых может хранить переменная.

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

Например,

Unsigned char - хранит число от 0 до 255(байт);

Unsigned Int - хранит число от 0 до 65535 (два байта);

Unsigned long Int- хранит число от 0 до 4294967295 (четыре байта).

Вместо Unsigned char можно писать просто char, так как компилятор по умолчанию считает char , беззнаковым.

Signed char - означает знаковую переменную и хранит число от -128 до 127.

Ключевые слова signed и unsigned указывают как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned (беззнаковый), то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int. Например:

unsigned int n;unsigned int b;int c; (подразумевается signed int c);unsigned d; (подразумевается unsigned int d);signed f; (подразумевается signed int f).

Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору-типа. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор-типа, то подразумевается спецификатор типа int. Если ключевое слово const стоит перед объявлением составных типов (массив, структура, смесь, перечисление), то это приводит к тому, что каждый элемент также должен являться немодифицируемым, т.е. значение ему может быть присвоено только один раз.

const double A=2.128E-2;const B=286; (подразумевается const int B=286) consnant char_ string constant =”this is a string constant”

Данные плавающего типа

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы-типа: float, double, long double (в некоторых реализациях языка long double СИ отсутствует).

Величина с модификатором-типа float занимает 4 байта. Из них 1 бит отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38. Величина типа double занимает 8 байт в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E-308 до 1.7E+308.

float f, a, b;double x,y;

- имя переменной. Например imy peremennoi.

Для переменных принято использовать маленькие буквы, а для отличия имен переменных от названия функций имена переменных можно начинать с буквы, а название функций (кроме main) с символа подчеркивания.

Например, moya peremennaya , _vasha funkzia.

Глобальные переменные, а также локальные переменные с модификатором static при старте и рестарте программы равны 0, если им не присвоили иные значения.

Несколько примеров объявления переменных:

Unsigned Char my_peremen=34 ; /* my_peremen определен как Unsigned Char , с присвоением значения 34 (можно и без присвоения) */

Unsigned Int big_ peremen=34634; /* big_ peremen объявлен как Unsigned Int */.

Объявление массива

Массивы - это группа элементов одинакового типа (double, float, int и т.п.). Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Объявление массива имеет два формата:

спецификатор-типа описатель [константное - выражение];

спецификатор-типа описатель ;

Описатель - это идентификатор массива.

Спецификатор-типа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void.

Константное-выражение в квадратных скобках задает количество элементов массива. Константное-выражение при объявлении массива может быть опущено в следующих случаях:

При объявлении массив инциализируется;

Массив объявлен как формальный параметр функции.

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

Каждое константное выражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два константных выражения, трехмерного – три и т.д. Отметим, что в языке Си первый элемент массива имеет индекс равный 0.

Char mass - нумерация элементов начинается с 0, т.е. элементы данного массива называются как mass, mass и в них хранятся числа 11, 22, 33. Где то в программе элементу можно присвоить значение,например mass=210. Можно элементам не присваивать значения.

Строковая переменная или массив содержащий строку символов, например,

Char stroke =”Hello” определяет 6 элементов, хотя в ней содержится всего пять символов. Шестым элементом является управляющий символ, который добавляется в конце строки \0.

Символьный массив можно объявить также без указания количества элементов.

Например,

Char str =” объявление символьного массива”

Выражения и присваивания

Опепранды и операции

Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением. Знаки операций определяют действия, которые должны быть выполнены над операндами. Каждый операнд в выражении может быть выражением. Значение выражения зависит от расположения знаков операций и круглых скобок в выражении, а также от приоритета выполнения операций.

В языке СИ присваивание также является выражением, и значением такого выражения является величина, которая присваивается.

Операнд - это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.

Чтобы поместить число в переменную (в регистр) в языке Си есть оператор присваивания “ = ”. Этот символ в Си означает вычислить результат того, что справа от оператора присваивания и поместить этот результат в переменную находящуюся левее оператора присваивания.

1.PORTB =PINB +34; /* Эта строчка на Си означает Взять (прочитать) значение переменной (регистра) PINB, затем прибавить к нему число 34 и поместить результат в переменную PORTB */

2. ПЕРЕМЕННАЯ=PINC; /* Эта строчка на Си означает взять (прочитать) значение переменной (регистра) PINC и поместить результат в переменную с именем ПЕРЕМЕННАЯ */
3.Строка где переменная стоит слева от “ = “ но через знак & PORTB& =0x23; на Си означает - прочитать содержимое переменной PORTB, затем выполнить "поразрядное (побитное) логическое И" между прочитанным значением и числом 0x23 и поместить (записать, присвоить) результат в переменную PORTB 4. Строка где переменная стоит непосредственно слева от “=” PORTB=0x23; на Си означает - не читаясодержимое переменной PORTB присвоить ей значение 0x23 уничтожив то что было там раньше.
Вместо & "И" (AND - только 1 и 1 дают 1) могут быть и другие побитные логические операции: | "ИЛИ" (OR только 0 и 0 дают 0) ^ "Исключающее ИЛИ" (XOR изменить бит напротив "1") ~ "инвертирование битов" (INV изменить биты регистра на противоположные символы) и арифметические операции: + - * / %
С оператором присваивания используются сокращения:
ДЛИННАЯ ЗАПИСЬ СМЫСЛ СОКРАЩАЕТСЯ ДО
x = x + 1; добавить 1 x++; или ++x;
x = x - 1; вычесть 1 x--; или --x;
x = x + y; прибавить y x += y;
x = x - y; вычесть y x -= y;
x = x * y; умножить на y x *= y;
x = x / y; поделить на y x /= y;
x = x % y; остаток от деления x %= y;
x--; вычесть 1 x -= 1;
x++; добавить 1 x += 1;

Есть в Си операции которые изменяют значение переменной и без оператора присваивания:

PORTA++; /* Эта строчка на Си означает Взять значение переменной PORTA добавить к ней 1 и записать результат обратно в PORTA .Говорят: Инкрементировать регистр PORTA */

PORTC--; /* Эта строчка на Си означает обратное действие! Декрементировать - вычесть 1 из значения регистра PORTC */

Когда инкремент или декремент используется в выражении то важно где стоят два знака + или - перед переменной или после переменной:

a=4; b=7; a = b++;/* Эта строчка на Си означает: взять значение переменной b присвоить его переменной a затем добавить 1 к переменной b и сохранить результат в b.Теперь a будет содержать число 7 , bбудет содержать число 8 */ a=4; b=7; a = ++b;/* Эта строчка на Си означает: взять значение переменной b затем добавить к нему 1 и сохранить результат в b и этот же результат присвоить переменной a.Теперь a будет содержать число 8 и bбудет содержать число 8 */ 1.2.2 Арифметические операции в Си x + y// сложениеx - y// вычитаниеx * y// умножение x / y/* деление. Если числа целые результат - целое число с отброшенной дробной частью - не округленное. Т.е. если в результате деления получается 6.23411 или 6.94 то результат будет просто целое число 6. Если числа с плавающей точкой, то есть float или double и записываются с точкой и числом после точки, то и результат будет число с плавающей точкой без отбрасывания дробной части 131.9739 / 6.18 даст 21.355 */ x % y// вычислить остаток от деления нацело Примеры:

x < y // X меньше Y
x > y // больше
x <= y // меньше или равно
x >= y // больше или равно
x == y // равно
x != y /* не равно Результат выполнения этих операторов: "истина" это "1" (точнее "не ноль"), "ложно" это "0". Значения хранимые в переменных (в регистрах)
х
и у НЕ изменяются. Берутся (считываются) значения хранящиеся (или содержащиеся) в переменных и сравниваются */

1.2.5.Логические операции:

|| // "ИЛИ" - только "ложь" и "ложь"

// дают "ложь"

&& // "И" - только "истина" и "истина"
// дают "истина"

! // "НЕ" - логическое отрицание

В результате логической операции получается НЕ ЧИСЛО, а логическое значение "истина" или "ложь".

Для логических операций && и || берутся результаты выражений слева и справа от знака операции преобразованные в "истину" или "ложь" и определяется логический результат операции.

Компилятор результат "истина" превращает в 1 а не в любое отличное от 0 число.

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

Например:

if ((выражение1)&&((выражение2)||(выражение3)))
{ /* Код программы здесь будет выполняться если:

Выражение1 "Истина" (значит не ноль) и хотя бы одно из выражений 2 и 3 тоже "Истина" (значит не ноль).
} ;

1.3. Используемые конструкции на Си

1.if (){}else {}; идеальная конструкция если нужно выполнить какую то часть программы при наличии каких либо условий или при их отсутствии:

}else { не обязательный элемент конструкции, без него конструкция выглядит так:

if (выражение ) { код на Си /* делать этот код если выражение "истина" - т.е. результат его вычисления не ноль */
};

if (PINB.5) { выполнепние кода Си };
/* если на ножке PB5 есть "1" (не "0" значит "истинно") то программа выполнит код , а если на ней "0" (значит "ложно") то не сделает, а просто пойдет дальше, на следующую строку */

2.while (){};условный цикл (цикл с условием) - используется если нужно выполнять какой то код программы пока выполняется (существует,
"истино" - значит "не ноль") некоторое условие, результат вычисления выражения:

while (выражение) {код на Си /* выполнить этот код если выражение "истина" - т.е. результат его вычисления не ноль. Пока выполняется этот код выражение не проверяется на истинность.После выполнения кода происходит переход к строке while снова проверять истинность выражения */
};

Например:

while (PINA.6) { выполнение кода Си };
/* пока на ножке PA6 есть "1" (не "0" значит "истинно") то программа выполнит код, и опять проверит что на PA6 */ Если бит_6 стал "0" то программа пойдет дальше не выполняя того что в { }

Цикл while имеет вариант

Do - while

при котором код в { } выполняется по меньшей мере один раз независимо от истинности условия в скобках:

do{код на Си /* выполнить этот код один раз затем, если выражение есть "истина" - т.е. результат его вычисления не ноль - опять выполнить код с начала, и так до тех пор пока выражение истина */ } while (выражение); Циклы for(;;) и while() часто используют вот так: while(1); for (;;); /* Так написанные эти циклы означают: МК выполнять эту строчку пока есть питание, нет сброса и нет прерывания. Когда возникает прерывание, программа переходит на обработчик прерывания и (если в обработчике нет перехода в другое место программы) по завершении кода обработчика опять возвращается в этот цикл. */ while(1){ код программы }; for (;;){ код программы }; 4.for(;;){}; - этот цикл позволяет выполнить часть программы нужное число раз:

char i; /* объявление переменной для for это обычная переменная Си и следовательно может иметь любое допустимое имя по вашему желанию и тип */

for (i=5; i<20; i+=4) {
код на Си /* Вначале будет определено "истинно" или "ложно" контрольное выражение i<20. Так как переменной i присвоено значение 5 то контрольное выражение "истинно" и код цикла for будет первый раз выполнен для i=5, затем по выражению i+=4, i станет 9 , теперь снова будет проверена истинность (справедливость, выполнение) контрольного выражение i<20 и так как 9<20 код цикла for будет выполнен еще раз но для i=9. Так будет происходить до тех пор пока результат вычисления контрольного выражения даёт "истинно". Когда результат станет "ложно" - программа выйдет из цикла for не исполняя код. */
};

i = 5 это начальное выражение, то что в начале будет в переменной i. Число 5 просто для примера, может быть таким, как позволяет объявление типа переменной i , в нашем случае это char в большинстве компиляторов по-умолчанию это без знаковый символьный тип - он может хранить числа от 0 до 255

i < 20 - контрольное выражение. Может быть с разными операторами отношения, важно лишь чтобы по ходу цикла оно становилось когда-то "ложью" - иначе цикл "зациклится" т.е. никогда не кончится.

i += 4 - это счетчик или изменение переменной цикла. Обычно это i++ т.е. к переменной добавляется 1 каждый "прогон" цикла. Но опять же может быть таким, какое вам требуется.

Начальным условием - может быть любое допустимое в Си выражение результатом которого является целое число.

Контрольное выражение - определяет до каких пор будет выполнятся цикл.

Счетчик - показывает как изменяется начальное выражение перед каждым выполнением нового цикла.

Выражение - может быть не просто переменная, а функция других переменных, например:

i =(7 + i*4) или i = (функция других переменных).

5. switch (){}; - оператор множественного выбора, позволяет сделать выбор из нескольких вариантов.

Выражение, следующее за ключевым словом switch в круглых скобках, может быть любым выражением, допустимыми в языке СИ, значение которого должно быть целым. Значение этого выражения является ключевым для выбора из нескольких вариантов. Тело оператора switch состоит из нескольких операторов, помеченных ключевым словом case с последующим константным-выражением. Все константные выражения в операторе switch должны быть уникальны. Кроме операторов, помеченных ключевым словом case, может быть, но обязательно один, фрагмент помеченный ключевым словом default. Список операторов может быть пустым, либо содержать один или более операторов. Причем в операторе switch не требуется заключать последовательность операторов в фигурные скобки.

Схема выполнения оператора switch следующая:

Вычисляется выражение в круглых скобках;

Вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case;

Если одно из константных выражений совпадает со значением выражения, то управление передается на оператор, помеченный соответствующим ключевым словом case;

Если ни одно из константных выражений не равно выражению, то управление передается на оператор, помеченный ключевым словом default, а в случае его отсутствия управление передается на следующий после switch оператор.

Все операторы, между начальным оператором и концом тела, выполняются вне зависимости от ключевых слов, если только какой-то из операторов не передаст управления из тела оператора switch. Таким образом, программист должен сам позаботится о выходе из case, если это необходимо. Чаще всего для этого используется оператор break.

switch (выражение) {

case 5 : код на Си
/* этот код будет выполняться если результат вычисления выражения равен числу 5 на этом работа оператора switch закончится */
break;

case -32 : код на Си
/* этот код будет выполняться если результат вычисления выражения равен отрицательномц числу -32. На этом работа оператора switch закончится */
break;

case "G" : код на Си
/* этот код будет выполняться если результат вычисления выражения равен числу соответствующему символу G в таблице ASCII .На этом работа оператора switch закончится */
break;

default: код на Си
/* этот код будет выполняться если результат вычисления выражения не равен ни 5 ни -32 ни "G", а так же после выполнения кода не
имеющего в конце break;

На этом работа оператора switch закончится */
};

/* switch закончен - выполняется дальнейший код программы */

case - может быть столько сколько требуется, чтобы программа работала быстрее наиболее вероятные варианты следует располагать выше.

default - не обязателен. Его можно расположить и не в конце.

break; - если его не использовать то найдя нужный вариант программа будет выполнять и следующие ниже условия case .

6.goto - оператор безусловного (немедленного) перехода.

Оператор goto передает управление на оператор, помеченный меткой имя-метки. Помеченный оператор должен находиться в той же функции, что и оператор goto, а используемая метка должна быть уникальной, т.е. одно имя-метки не может быть использовано для разных операторов программы. Имя-метки - это идентификатор. какой-то код нашей программы на Си... mesto_5:/* сюда мы попадем после выполнения строки программы goto mesto_5 */ код будет выполнятся после goto mesto_5; ... какой-то код нашей программы на Си... mesto_1:/* сюда мы попадем после выполнения строки программы goto mesto_1 */ код будет выполнятся после goto mesto_1; ... какой-то код нашей программы на Си... goto mesto_1;/* перейти в то место программы где в начале строки написано mesto_1: */ ... какой-то код нашей программы на Си... goto mesto_5;/* перейти в то место программы где в начале строки написано mesto_5: */ ... какой-то код нашей программы на Си.

Пример программы на Си

/*пункт 1 заголовок программы

Он оформляется как комментарий, и обычно содержит информацию

О названии, назначении, версии и авторе программы
- краткое описание алгоритма программы
- пояснения о назначении выводов МК и режиме его работы, фьюзы
- компилятор, инструменты и их версии
- другие сведения которые вы считает полезным указать

// пункт 2 включение внешних файлов

#include

/* перед компиляцией, препроцессор компилятора вставит вместо этой строчки содержимое (текст) заголовочного файла "хидера" mega16.h - этот файл содержит перечень регистров имеющихся в МК ATmega16 и соответствие их названий их физическим адресам в МК. Следует указать какой МК вы используете в свойствах проекта в компиляторе */

#include
/* перед компиляцией, препроцессор компилятора вставит вместо этой строчки текст "хидера" delay.h - этот файл содержит функции для создания пауз в программе. Теперь чтобы сделать паузу вам нужно лишь написать: */

/* сделать паузу N (число) микросек. Это должна быть константа - НЕ переменная!!!
например:

delay_us(12 + 7*3);
delay_us(117);

delay_ms(x); /* сделать паузу x милиСек
x - может быть переменная, выражение или число
от 0 до 65535 (тип unsigned int )
например:

delay_ms(3280);
delay_ms(переменная);
delay_ms(переменная*4 + 760); */

//пункт 3 определения пользователя

#define ADC_BUSY PINB.0
#define NCONVST PORTB.1
/* после этих двух строк, перед компиляцией, препроцессор компилятора заменит в тексте программы ADC_BUSY на PINB.0 и NCONVST на PORTB.1
Таким образом вместо того что бы помнить что вывод занятости AD7896 подключен у вас к ножке PB0 вы можете проверять значение осмысленного понятия ADC_BUSY - "АЦП занят" . А вместо управления абстрактной ножкой PB1 (через PORTB.1) вы можете управлять - NCONVST - "стартовать новое АЦ преобразование".

#define - Это удобно! Но ВОВСЕ не обязательно.
*/

Например:

#define invbit(p,n) (p=p^bit(n))

Здесь переменные величины это "p" и "n". Теперь для инвертирования бита 5 в регистре PORTB вам достаточно написать в программе:

invbit(PORTB ,5);

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

Алгоритм

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

Програма на языке Си

При создании программы на языке С мы используем компилятор C PRO for AVR. Это програмная среда специально предназначена для разработки программ на языке С для микроконтроллеров AVR.

Любая современная среда программирования работает не просто с текстом программы, а с так называемым проектом .

Задача программиста лишь написать текст программы, для которого в проекте отводится отдельный файл с расширением “с”. Компилятор переводит исходную программу в шестнадцатеричную систему (создает Hex - файл) для занесения (прошивки) ее в память микроконтроллера.

В дальнейшем мы еще рассмотрим подробно процесс установки и работу с программной средой C PRO for AVR. Сейчас же считаем, что она установлена и запущена.

Сразу после запуска компилятора все параметры принимают значения по умолчанию (все внутренние устройства выключены, внутренние порты ввода- вывода настроены на ввод, используется внутренний генератор с частотой тактирования 4МГц).Это соответствует начальному состоянию микропроцессора после системного сброса. Те параметры, которые нам не нужны трогать пока не будем (оставим по умолчанию).

Программа на языке Си выглядит следующим образом:

1 #Include < Atmega 128.h >

2 Bit oldstate ; //флаг старого состояния

3 Void main () {

4 DDB0 bit=0 ; // установка вывода РВ0 как вход

5 DDRC = 0xFF; // конфигурирование РС как вывод

6 PORTC=0xAA; // в порт С записывается исходный код

9 If (Button (& PINB,0,1,1)) { // обнаружение логической единицы

10 Oldstate =1; // обновление флага

11 if (oldstate && Button (& PINB, 0,1,0)) { // обнаружение перехода из 1в 0

12 PORTB= ~ PORTB; //инвертирование PORTC

13 oldstate=0; // обновление флага

14 } While (1); // бесконечный цикл

Этапы проектирования микропроцессорных систем

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

При проектировании многопроцессорных микропроцессорных систем, содержащих несколько типов микропроцессорных наборов, необходимо решать вопросы организации памяти, взаимодействия с процессорами, организации обмена между устройствами системы и внешней средой, согласования функционирования устройств, имеющих различную скорость работы, и т. д. Ниже приведена примерная последовательность этапов, типичных для создания микропроцессорной системы:
1. Формализация требований к системе.
2. Разработка структуры и архитектуры системы.
3. Разработка и изготовление аппаратных средств и программного обеспечения системы.
4. Комплексная отладка и приемосдаточные испытания.

Этап 1. На этом этапе составляются внешние спецификации, перечисляются функции системы, формализуется техническое задание (ТЗ) на систему, формально излагаются замыслы разработчика в официальной документации.

Этап 2. На данном этапе определяются функции отдельных устройств и программных средств, выбираются микропроцессорные наборы, на базе которых будет реализована система, определяются взаимодействие между аппаратными и программными средствами, временные характеристики отдельных устройств и программ.

Этап 3. После определения функций, реализуемых аппаратурой, и функций, реализуемых программами, схемотехники и программисты одновременно приступают к разработке и изготовлению соответственно опытного образца и программных средств. Разработка и изготовление аппаратуры состоят из разработки структурных и принципиальных схем, изготовления прототипа, автономной отладки.
Разработка программ состоит из разработки алгоритмов; написания текста исходных программ; трансляции исходных программ в объектные программы; автономной отладки.

Этап 4. см. Комплексная отладка.

На каждом этапе проектирования МПС людьми могут быть внесены неисправности и приняты неверные проектные решения. Кроме того, в аппаратуре могут возникнуть дефекты.

Источники ошибок

Рассмотрим источники ошибок на первых трех этапах проектирования.

Этап 1. На этом этапе источниками ошибок могут быть: логическая несогласованность требований, упущения, неточности алгоритма.

Этап 2. На данном этапе источниками ошибок могут быть: упущения функций, несогласованность протокола взаимодействия аппаратуры и программ, неверный выбор микропроцессорных наборов, неточности алгоритмов, неверная интерпретация технических требований, упущение некоторых информационных потоков.

Этап 3. На этом этапе источниками ошибок могут быть: при разработке аппаратуры - упущения некоторых функций, неверная интерпретация технических требований, недоработка в схемах синхронизации, нарушение правил проектирования; при изготовлении прототипа - неисправности комплектующих изделий, неисправности монтажа и сборки; при разработке программных средств - упущения некоторых функций технического задания, неточности в алгоритмах, неточности кодирования.

Каждый из перечисленных источников ошибки может породить большое число субъективных или физических неисправностей, которые необходимо локализовать и устранить. Обнаружение ошибки и локализация неисправности являются сложной задачей по нескольким причинам: во-первых, из-за большого числа неисправностей; во-вторых, из-за того, что различные неисправности могут проявляться одинаковым образом. Так как отсутствуют модели субъективных неисправностей, указанная задача не формализована. Имеются определенные успехи в области создания методов и средств обнаружения ошибок и локализации физических неисправностей. Эти методы и средства широко используются для проверки работоспособного состояния и диагностики неисправностей дискретных систем при проектировании, производстве и эксплуатации последних.

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

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

Проверка правильности проекта

Основные методы контроля правильности проектирования следующие: верификация - формальные методы доказательства корректности проекта; моделирование; тестирование.

Существует много работ по верификации программного обеспечения, микропрограмм, аппаратуры. Однако эти работы носят теоретический характер. На практике пока используют моделирование поведения объекта и тестирование.

Для контроля корректности проекта на каждом этапе проектирования необходимо проводить моделирование на различных уровнях абстрактного представления системы и проверку правильности реализации заданной модели путем тестирования. На этапе формализации требований контроль корректности особо необходим, поскольку многие цели проектирования не формализуются или не могут быть формализованы в принципе. Функциональная спецификация может анализироваться коллективом экспертов или моделироваться и проверяться в опытном порядке для выявления, достигаются ли желаемые цели. После утверждения функциональной спецификации начинается разработка функциональных тестовых программ, предназначенных для установления правильности функционирования системы в соответствии с ее функциональной спецификацией. В идеальном случае разрабатываются тесты, целиком основанные на этой спецификации и дающие возможность проверки любой реализации системы, которая объявляется способной выполнять функции, оговоренные в спецификации. Этот способ - полная противоположность другим, где тесты строятся применительно к конкретным реализациям. Независимая от реализации функциональная проверка обычно заманчива лишь в теоретическом плане, но практического значения не имеет из-за высокой степени общности.

Автоматизация утомительной работы по составлению тестовых программ не только сокращает продолжительность периода конструирования/отладки за счет получения тестовых программ на этапе конструирования (поскольку они могут быть сгенерированы сразу после формирования требований к системе), но и позволяет проектировщику изменять спецификации, не заботясь о переписывании всех тестовых программ заново. Однако на практике разработке тестов часто присваивают более низкий приоритет по сравнению с проектом, поэтому тестовые программы появляются значительно позже его завершения. Но даже если детальные тесты оказываются подготовленными, часто практически нецелесообразно запускать их на имитаторе, так как детальное моделирование требует больших затрат средств на разработку программ и времени на вычисление, в результате большая часть работы по отладке должна откладываться до момента создания прототипа системы.

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

Рассказать друзьям