- •Элементы системы ввода-вывода:
- •Примеры. Порты ввода-вывода микроконтроллера aDuC812.
- •Демонстрация принципов организации системы ввода-вывода на примере контроллера sdk.
- •Устройства сопряжения с объектом (усо) управляющих эвм: назначение, технические решения, компоненты.
- •Устройства гальванической изоляции в аппаратных интерфейсах.
- •Внутрисистемные интерфейсы. Интерфейсная система amba (ahb, asb, apb): основные характеристики, физическая и логическая организация.
- •Внутрисистемный интерфейс amba ahb
- •Системный интерфейс amba asb
- •Периферийный интерфейс amba apb
- •Idle – устройство не готово, шина находится в исходном состоянии.
Внутрисистемный интерфейс amba ahb
Внутрисистемный интерфейс AHB (Advanced High-performance Bus – расширенная высокопроизводительная шина) предназначен для объединения быстродействующих, высокопроизводительных модулей, работающих на высоких тактовых частотах. AHB позволяет соединить ядро микропроцессора с внутренними и внешними модулями памяти, контроллерами ПДП, быстродействующими сетевыми контроллерами Fast Ethernet, контроллерами USB-2.0 и т.д. На рисунке показан фрагмент структуры микроконтроллера NXP LPC1768, выполненного на базе ядра ARM Cortex-M3. Шиной AHB объединены вместе практически все элементы микроконтроллера, требующие большой скорости обмена данными. Через два моста, к шине AHB подключены две независимые шины APB, к которым подключаются сравнительно медленные периферийные устройства (UART, I2C, таймеры и так далее).
Шина AHB названа Matrix (матрица). Такое название справедливо, так как на самом деле шина является коммутатором, матрицей, связывающей несколько устройств попарно друг с другом в различные моменты времени.
Мы видим, что арбитр шины управляет мультиплексорами, к которым подключены шины адреса и шины записи данных из главных устройств (Master) в подчиненные (Slave). Декодер управляет мультиплексором, через который считываются данные с подчиненных устройств. Хорошо видно, что для записи и чтения существуют раздельные шины. Опишем простой вариант обмена данными на шине AMBA AHB:
1. Главное устройство выставляет адрес и управляющие сигналы по фронту сигнала HCLK.
2. Подчиненное устройство считывает значения с шины адресы (HADDR) и шины управления (Control) на следующем фронте HCLK.
3. После считывания адреса и данных подчиненное устройство может выдать ответ на шину в этом же цикле (сигнал HREADY активен).
4. Главное устройство считывает данные, выставленные подчиненным устройством в третьем цикле шины.
Подчиненное устройство может вставлять такты неготовности, используя сигнал HREADY.Такт неготовности – это такой такт, во время которого обмен по шине не производится вследствие отсутствия готовых данных у одного из устройств. В зависимости от состояния сигнала HTRANS[1:0] может быть выделено четыре типа передач на шине:
1. IDLE. Передача данных не требуется.
2. BUSY. Позволяет вставлять IDLE циклы в середину пакетной передачи.
3. NONSEQ. Индицирует начало одиночной или пакетной передачи. Адрес установленный в предыдущем цикле шины игнорируется.
4. SEQ. Показывает, что адрес в новом цикле шины инкрементируется на 1, а сигналы на шине управления такие же.
Режим WRAP (циклическое окно) позволяет работать циклически, по кругу, в заданном окне адресов. Режим INCR предполагает простой инкремент (прибавление на единицу) адреса в каждом цикле шины. При передаче данных сигнал HWRITE становится активным (переводится в логическую «1»). В зависимости от состояния линий HSIZE[2:0] передаваться за один раз может 8, 16, 32, 64, 128, 256, 512 или 1024 бита данных. Эти биты (HSIZE) работают совместно с сигналами HBURST. Сигнал HPROT[3:0] определяют уровень защиты передаваемой информации: код операции, доступ к данным, пользовательский доступ, привилегированный доступ и так далее.
Выбор подчиненного устройство происходит с помощью декодера адреса, формирующего сигналы HSEL. Сигнал HREADY используется для информирования главного устройства о завершении или продолжении передачи данных. Если уровень этого сигнала активный, то передача данных завершена. Сигнал HRESP[1:0] используется для подтверждения транзакции. Его значениями могут быть: OKAY – транзакция завершена успешно, ERROR – ошибка, RETRY – повторить попытку, SPLIT – данные переданы не полностью.
Сигналы HWDATA[31:0] используются для передачи данных от главного устройства к подчиненным.
Сигналы HRDATA[31:0] используются для передачи данных от подчиненных устройств к главным.
Арбитраж используется для того, чтобы только один мастер имел доступ к шине в один момент времени.