РЕЖИМ ПРЯМОГО ДУСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА
ATxmega
Давыдова Эльвира Веняминовна
Научный руководитель, преподаватель спецдисциплин ГБПОУ РО
«ВТИТБиД» имени В.В. Самарского, г. Волгодонск
Микроконтроллеры Atxmega [1], в отличие от своих предшественников
ATmega, имеют гораздо более высокую производительность, что
обеспечивается не только повышенной тактовой частотой, но и более
развитой внутренней архитектурой, в которой присутствует ряд новых узлов.
Один из них контроллер прямого доступа к памяти (ПДП), с помощью
которого организуется прямая пересылка информации между ячейками
памяти данных микроконтроллера, минуя процессор. Роль последнего
сводится лишь к настройке контроллера ПДП и управлению его работой.
Рациональное использование прямого доступа к памяти (ПДП) позволяет
существенно ускорить работу программ, в ходе выполнения которых
необходимы регулярные пересылки массивов данных между модулями
микроконтроллера. Ускорение происходит как за счёт большой скорости
пересылки, так и за счёт освобождения от участия в ней процессора, который
в это время может выполнять другие фрагменты программы.
Прежде чем рассматривать сам контроллер ПДП, необходимо
остановиться на некоторых особенностях архитектуры микроконтроллера,
которые необходимо знать для эффективного использования ПДП. Элементы
любой вычислительной системы можно разделить на активные и пассивные. К
активным относят те элементы, которые могут генерировать обращения к
другим элементам системы. Типичный пример процессор. В
микроконтроллерах семейства ATmega это единственный активный элемент.
В семействе ATxmega в их число вошёл и контроллер ПДП. Одновременное функционирование в системе нескольких активных
элементов может приводить к конфликтам между ними при одновременном
обращении к одному и тому же пассивному элементу. Доступные для
обращений со стороны нескольких активных элементов пассивные элементы
принято именовать общими ресурсами вычислительной системы. Типичный
пример память, к которой активные элементы регулярно обращаются и при
этом нередко конфликтуют между собой. Если не предпринять никаких мер,
то результат конфликта один остановка работы обоих конфликтующих
элементов и обычно вычислительного процесса в целом.
Меры, принимаемые, чтобы избежать подобных последствий, могут быть
аппаратными и программными. Аппаратные меры сводятся к оптимизации
архитектуры вычислительной системы. Например, запоминающие устройства,
при обращении к которым наиболее часто возникают конфликты, делают
многоканальными, разделяя общий массив памяти на отдельные банки и
обеспечивая независимый доступ к каждому из них. Предоставление каждому
активному элементу своего банка памяти позволяет резко уменьшить
возможное число конфликтов, однако полностью не избавляет от них.
Чтобы последствия конфликтов не стали фатальными для
вычислительного процесса, шину доступа к общему ресурсу оборудуют
арбитром шины, в который заложена шкала приоритетов всех возможных
обращений к этому ресурсу. При одновременном обращении нескольких
активных элементов арбитр первым допустит к ресурсу элемент с самым
высоким приоритетом, затем с меньшим и так далее. Иначе говоря, выстроит
очередь обращений.
Программные меры предотвращения конфликтов сводятся к такой
организации вычислительного процесса, при которой продолжительность
занятия общего ресурса каждым активным элементом минимальна, в
результате чего вероятность конфликта предельно снижена. Эффективность
программных мер полностью зависит от мастерства программиста, от его знания не только средств программирования, но и особенностей архитектуры
той системы, для которой он разрабатывает программу. Применительно к
рассматриваемым микроконтроллерам это, в первую очередь, знание структур
адресного пространства и шины памяти данных.
Следует напомнить, что в микроконтроллерах имеется память двух
видов: память программ (часто называемая FLASHпамятью) и память
данных. Память программ не относится к общим ресурсам, так как доступна
только процессору. Поэтому в дальнейшем будем рассматривать только
память данных, доступную как процессору, так и контроллеру ПДП.
Память данных микроконтроллера состоит из однобайтовых ячеек. Все
16 Мбайт адресного пространства этой памяти разбиты на четыре области:
0000Н0FFFH память вводавывода, в которой находятся
программнодоступные регистры всех модулей микроконтроллера, в том числе
процессора;
1000Н1FFFH энергонезависимая память (EEPROM). У разных
микроконтроллеров её объём неодинаков, поэтому реальное значение верхней
границы этой области следует брать из описания конкретного
микроконтроллера;
2000H и выше внутренняя и внешняя память данных с произвольным
доступом. Верхняя граница внутренней памяти этого типа (ОЗУ) зависит от её
объёма в конкретном микроконтроллере. Например, микроконтроллер
ATxmega64 имеет ОЗУ объёмом 4 Кбайт, следовательно, его верхняя граница
2FFFH. Через порты к микроконтроллеру может быть подключена внешняя
память данных, начальный адрес которой на единицу больше максимального
адреса внутреннего ОЗУ, а конечный может достигать 0FFFFFFH.
Для полного использования адресного пространства памяти данных
работающее с ней активное устройство (например, контроллер ПДП) должно
формировать 24разрядные коды адреса. В качестве внешней памяти могут
выступать не только микросхемы памяти, но и различные периферийные устройства с параллельным интерфейсом, допускающие обращение к ним как
к ячейкам памяти (например, индикаторы).
Шина памяти данных микроконтроллера устроена так, что позволяет
организовать одновременное обращение активных устройств к разным
областям памяти данных. Это даёт возможность организовать параллельную
бесконфликтную работу с ними процессора и контроллера ПДП. На рис. 1
показан пример такой работы. Здесь процессор читает содержимое EEPROM,
аконтроллер ПДП в то же самое время пересылает информацию из внешней
памяти во внутреннее ОЗУ Если процессор и контроллер ПДП одновременно
обратятся к одной области памяти, то возникнет конфликт, который должен
разрешить арбитр шины по приоритетному принципу. Естественно, в такой
ситуации программа исполняется медленнее, чем при бесконфликтной работе.
Рис. 1. Блоксхема алгоритма работы программы микроконтроллера
Применение контроллера ПДП тесно связано и с системой прерываний
микроконтроллера, работой которой управляет контроллер прерываний. В
рассматриваемых микроконтроллерах эта система не претерпела
революционных изменений по отношению к микроконтроллерам предыдущих
поколений. Помимо существенного увеличения числа возможных источников
запросов прерывания, принципиально новым стало только то, что контроллер
прерываний стал многоуровневым. Он позволяет разделить запросы
прерываний от различных модулей микроконтроллера на группы по уровню важности (высокому, среднему и низкому) и раздельно управлять обработкой
этих групп.
Контроллер ПДП имеет четыре автономных канала пересылки
информации. Для каждого канала должны быть установлены индивидуальные
значения параметров, определяющих схему пересылки: источник запуска,
систему адресации, уровень приоритета. Это позволяет пересылать до
четырёх информационных потоков параллельно.
Пересылка массива информации по каналу ПДП называется транзакцией.
Максимальный размер транзакции 16 Мбайт. Она выполняется блоками
объёмом до 64 Кбайт, а передача блока, в свою очередь, может происходить
пакетами из одного, двух, четырёх или восьми байтов. При блочной схеме
пересылки контроллер ПДП захватывает шину на всё время передачи блока,
при пакетной только на время передачи пакета. Столь сложная структура
транзакции позволяет с минимальными простоями обслуживать обращения
процессора и контроллера ПДП к одной и той же области памяти.
Поясним это на примере. Пусть в ходе выполнения некоторой программы
контроллер ПДП должен переслать последовательность результатов работы
АЦП в ОЗУ. Причём АЦП выдаёт новый однобайтовый результат каждую
микросекунду, а всего нужно переслать 2000 результатов (байтов). Если эту
транзакцию осуществить одним блоком такого объёма, то контроллер ПДП,
получив доступ к ОЗУ, не освободит его до завершения передачи всего блока.
Поэтому в течение 2000 мкс ОЗУ будет недоступно процессору.
Это неразумно, поскольку между пересылками по каналу ПДП двух
смежных байтов проходит 1 мкс, а операция записи байта в ОЗУ выполняется
за один машинный такт (около 0,03 мкс при тактовой частоте 32 МГц).
Другими словами, лишь 3 % времени транзакции ОЗУ будет занято
операциями записи, а в течение оставшихся 97 % будет бесполезно
простаивать, оставаясь недоступным для процессора. Ему придётся ждать
завершения транзакции. Список литературы
1. 8/16bit Atmel XMEGA A3U Microcontroller. URL:
http://www.atmel.com/images/ atmel83868and16bitavrmicrocontroller
atxmega64a3u128a3u192a3u256a3u_ datasheet.pdf (13.08.14).
2. 8bit Atmel XMEGA A Microcontroller. XMEGA A MANUAL. URL:
http://www.atme!. com/Images/doc8077.pdf (13.08.14).
Исследовательская работа: РЕЖИМ ПРЯМОГО ДОСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATxmega
Исследовательская работа: РЕЖИМ ПРЯМОГО ДОСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATxmega
Исследовательская работа: РЕЖИМ ПРЯМОГО ДОСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATxmega
Исследовательская работа: РЕЖИМ ПРЯМОГО ДОСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATxmega
Исследовательская работа: РЕЖИМ ПРЯМОГО ДОСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATxmega
Исследовательская работа: РЕЖИМ ПРЯМОГО ДОСТУПА К ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATxmega
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.