lpc интерфейс что такое
Lpc интерфейс что такое
Используемая вами версия браузера не рекомендована для просмотра этого сайта.
Установите последнюю версию браузера, перейдя по одной из следующих ссылок.
Спецификация интерфейса LPC для устаревших систем ввода/вывода способствовала переходу отрасли на системы без шины ISA. Ключевым усовершенствованием версии 1.1 спецификации интерфейса LPC является включение циклов встроенного ПО и добавление возможности многобайтового чтения.
Интерфейс LPC позволяет устаревшим компонентам ввода-вывода на системной плате, обычно встроенным в микросхему Super I/O, перейти с шины ISA/X на интерфейс LPC, сохраняя полную программную совместимость. Спецификация LPC предлагает несколько ключевых преимуществ по сравнению с шиной ISA/X, например сокращение числа выводов для получения более простой и экономичной конструкции. Спецификация интерфейса LPC понятна для функций ввода/вывода и совместима с существующими периферийными устройствами и приложениями.
Спецификация интерфейса LPC описывает операции памяти, системы ввода/вывода и прямого доступа к памяти (DMA). В отличие от шины ISA, которая работает с частотой 8 МГц, она использует тактовую частоту PCI 33 МГц и совместима с более продвинутыми кремниевыми процессорами. Дизайнеры мобильных устройств также оценят преимущества уменьшения числа выводов, поскольку шина занимает меньше места, потребляет меньше энергии и более эффективна с точки зрения температурных характеристик. Спецификацию интерфейса LPC версии 1.1 и соответствующее обоюдное лицензионное соглашение о патентах можно скачать ниже.
Прочитайте онлайн Аппаратные интерфейсы ПК. Энциклопедия | 6.4. Интерфейс LPC
Интерфейс LPC (Low Pin Count — малое число выводов) предназначен для локального подключения устройств, ранее использовавших шину X-Bus или ISA: контроллеров НГМД, последовательных и параллельных портов, клавиатуры, аудиокодека, BIOS и т.п. Введение нового интерфейса обусловлено изживанием шины ISA с ее большим числом сигналов и неудобной асинхронностью. Интерфейс обеспечивает те же циклы обращения, что и ISA: чтение-запись памяти и ввода-вывода, DMA и прямое управление шиной (bus mastering). Устройства могут вырабатывать запросы прерываний. В отличие от ISA/X-Bus с их 24-битной шиной адреса, обеспечивающей адресацию лишь в пределах первых 16 Мбайт памяти, интерфейс LPC имеет 32-битную адресацию памяти, что обеспечивает доступ к 4 Гбайт памяти. 16-битная адресация портов обеспечивает доступ ко всему пространству 64 К портов. Интерфейс синхронизирован с шиной PCI, но устройства могут вводить произвольное число тактов ожидания. Интерфейс программно прозрачен — как и для ISA/X-Bus, не требует каких-либо драйверов. Контроллер интерфейса LPC является устройством-мостом PCI. По пропускной способности интерфейс практически эквивалентен этим шинам. В спецификации LPC 1.0 приводится расчет пропускной способности интерфейса и устройств, его использующих. При наличии буферов FIFO интерфейс наиболее выгодно использовать в режиме DMA. В этом случае главным потребителем будет LPT-порт — при скорости передачи данных 2 Мбайт/с он займет 47% полосы интерфейса. Следующим будет инфракрасный порт — 4 Мбит/с (11,4%). Остальным устройствам (контроллер НГМД, СОМ-порт, аудиокодек) требуются еще меньшие доли, в результате они занимают до 75% полосы при одновременной работе. Таким образом, перевод этих устройств с ISA/X-Bus на LPC не должен вызывать проблем производительности более острых, чем были на старых шинах.
Интерфейс имеет всего 7 обязательных сигналов:
♦ LAD[3:0] — двунаправленная мультиплексированная шина данных;
♦ LFRAME# — индикатор начала и конца цикла, управляемый хостом;
♦ LRESET# — сигнал сброса, тот же, что и RST# на шине PCI;
♦ LCLK — синхронизация (33 Мгц), тот же сигнал, что и CLK на шине PCI;
Дополнительные сигналы интерфейса LPC:
♦ LDRQ# — кодированный запрос DMA/Bus Master от периферии;
♦ SERIRQ — линия запросов прерывания (в последовательном коде), используется, если нет стандартных линий запросов IRQ в стиле ISA;
♦ CLKRUN# — сигнал, используемый для указания на остановку шины (в мобильных системах), требуется только для устройств, нуждающихся в DMA/BusMaster в системах, способных останавливать шину PCI;
♦ РМЕ# — событие системы управления потреблением (Power Management Event), может вводиться периферией, как и в PCI;
♦ LPCPD# — Power Down, указание от хоста устройствам на подготовку к выключению питания;
♦ LSMI# — запрос прерывания SMI# для повтора инструкции ввода-вывода.
Рис. 6.15. Протокол LPC
В поле START возможны следующие коды:
♦ 0000 — начало цикла обращения хоста к устройству;
♦ 0010 — предоставление доступа ведущему устройству 0;
♦ 0011 — предоставление доступа ведущему устройству 1;
♦ 1111 — принудительное завершение цикла (abort).
Остальные коды зарезервированы.
Поле CYCTYPE задает тип и направление передачи. Бит 0 задает направление (0 — чтение, 1 — запись), биты [2:1] — тип обращения (00 — порт, 01 — память, 10 — DMA, 11 — резерв), бит 3 — резерв (0).
Поле ADDR служит для передачи адреса. В цикле памяти оно занимает 8 тактов (32 бита), в цикле ввода-вывода — 4 такта. Передача адреса начинается со старших битов (чтобы раньше срабатывал дешифратор адреса).
В поле DATA передаются данные. На каждый байт требуется 2 такта, передача начинается с младшей тетрады. Многобайтные передачи начинаются с младшего байта.
Поле SYNC служит для введения тактов ожидания устройством, к которому выполняется обращение. Оно может содержать следующие коды (остальные зарезервированы):
♦ 0000 — готовность (без ошибок), для DMA означает снятие запроса для данного канала;
♦ 0101 — короткое ожидание (несколько тактов);
♦ 0110 — длинное ожидание;
♦ 1001 — готовность и присутствие запроса для канала DMA (для других типов обращения недопустимо);
♦ 1010 — ошибка: данные переданы, но возникли условия, при которых на шинах PCI или ISA выработался бы сигнал SERR# или IOCHK# (для DMA также означает снятие сигнала запроса).
Поле синхронизации обеспечивает контроль передачи, введение тактов ожидания и механизм тайм-аутов. Начав цикл, хост читает поле синхронизации. Если в течение трех тактов адресованное устройство не ответит, хост считает, что его нет на шине, и прекращает транзакцию. Если приходит код короткого ожидания, хост дожидается его смены на готовность или ошибку, но после 8 тактов ожидания он прервет транзакцию по тайм-ауту. Код длинного ожидания может приходить сколь угодно долго, ответственность за отсутствие зависания ложится на адресованное устройство. При прямом управлении поле SYNC выставляется хостом, и устройство должно терпеливо ожидать готовности, без каких-либо тайм-аутов. В самом быстром варианте (без тактов ожидания) поле SYNC занимает один такт.
На рис. 6.16 приведена последовательность полей при обращениях хоста к памяти или портам (серым цветом помечены поля, вводимые устройством). Во всех этих обращениях передается по одному байту. Для чтения памяти, предполагая 5 тактов поля SYNC (время доступа к EPROM 120 нс), требуется 21 такт (0,63 мкс), что обеспечивает скорость чтения памяти 1,59 Мбайт/с. Если память конвейеризирована, то последующие обращения будут быстрее. Для записи в память поле SYNC займет 1 такт, а весь цикл — 17 тактов (0,51 мкс), что дает скорость записи 1,96 Мбайт/с. Обращения к портам за счет более короткой адресации и без тактов ожидания (1 такт SYNC) занимают по 13 тактов (0,39 мкс), что дает скорость 2,56 Мбайт/с для чтения и записи.
Рис. 6.16. Обращения к памяти и портам: а — чтение, б — запись
Рис. 6.17. Посылка запроса DMA или прямого управления
Передача данных DMA (рис. 6.18) выполняется под управлением хоста, но несколько отличается от обычных обращений к портам и памяти. Здесь появляются новые поля:
♦ поле SIZE определяет размер передачи: 0000 — 1 байт, 0001 — 2 байта, 0011 — 4 байта, остальные значения зарезервированы;
♦ поле CHANNEL служит для передачи хостом номера канала DMA (биты [2;0]) и признака конца цикла (TC, бит 3).
Рис. 6.18. Обращения DMA: а — чтение памяти, б — запись в память
Циклы чтения памяти, в зависимости от длины обращения (1, 2 или 4 байта), без тактов ожидания (они скрыты контроллером DMA) занимают 11, 18 и 32 тактов (0,33, 0,54 или 0,96 мкс), что обеспечивает производительность 3,03, 3,70 или 4,17 Мбайт/с соответственно. Циклы записи занимают 11,14 или 20 тактов (0,33, 0,42 или 0,60 мкс), что обеспечивает производительность 3,03, 4,76 или 6,67 Мбайт/с. На рисунке выделены рамкой последовательности полей, повторяющиеся при передаче 2 и 4 байтов.
Рис. 6.19. Обращения периферийного устройства (Bus Master): а — чтение памяти или порта, б — запись в память (порт)
Конфигурирование устройств LPC не предусматривает использования протоколов PCI или ISA PnP, поскольку все устройства LPC априорно известны системной BIOS. Для обращения к устройствам LPC хост должен декодировать их адреса и направлять обращения по ним на контроллер LPC.
ISA умер! Да здравствует LPC?
Сегодня в персональном компьютере осталось только одно функциональное устройство, по которому можно проследить его генеалогию, — это интерфейс ISA, доставшийся ему по наследству от IBM PC AT. Большинство карт расширения выполняется по стандарту PCI, многие видеокарты подключаются по AGP. Однако производители карт расширения и материнских плат кивают друг на друга: если стандарт существует, то под него должны выпускаться карты; если выпускаются карты с интерфейсом ISA, то материнские платы должны его поддерживать. В спецификации PC98 наличие разъемов расширения стандарта ISA признается нежелательным. Однако для подсоединения таких устройств, как параллельные и последовательные порты, клавиатура, флоппи-диск, какой-нибудь интерфейс все же необходим. Поэтому разработчики микросхем для материнских плат вынуждены разводить ISA на кристалле, а чтобы добро не пропадало зря, — и выводить его наружу. Что же придет ему на смену?
Наименование | Направление | Назначение | |
---|---|---|---|
Периферия | Основной задатчик | ||
LAD[3:0] | I/O | I/O | Мультиплексированные команды, адреса и данные |
LFRAME# | I | O | Фрейм, указывает на начало новой команды |
LRESET# | I | I | Сброс, те же функции, что PCI Reset. При наличии PCIRST# необязателен |
LCLC | I | I | Тактовая частота 33 МГц, те же функции, что PCICLK |
Для подключения перечисленных выше устройств Intel предлагает новый стандарт — LPC (Low Pin Count, Малое Количество Контактов). Этот интерфейс, по утверждению представителей корпорации, будет встраиваться в будущие чипсеты для материнских плат. Такие намерения Intel означают, что, вероятнее всего, мы вскоре сможем в добровольно-принудительном порядке ознакомиться со стандартом LPC. Попробуем сделать это заранее и по собственной воле.
Введение нового стандарта преследует следующие цели:
Контактов действительно очень мало: семь обязательных (для передачи информации) и шесть дополнительных (для подключения устройств, выполняющих функцию задатчика и управления мощностью). Названия и функции обязательных сигналов интерфейса LPC приведены в табл. 1. Команды, адреса и данные передаются по линиям LAD[3:0] тетрадами-нибблами последовательно по четыре бита за один раз. Подобно PCI интерфейс синхронный, каждый цикл состоит из нескольких полей, каждое из которых имеет длительность в один период тактовой частоты 33 МГц. Любой цикл обмена по интерфейсу LPC начинается с того, что основной задатчик на шине (обычно чипсет) устанавливает активный уровень на линии LFRAME#. При этом все периферийные устройства переходят в состояние «начало цикла» и анализируют состояние линий LAD[3:0]. Если устройства передавали информацию по линиям LAD[3:0], то они немедленно их освобождают. Таким образом, этот сигнал может использоваться для прекращения затянувшихся циклов, например, при сбоях и зависаниях. То есть при достаточно интеллектуальном основном задатчике зависшее периферийное устройство не сможет подвесить всю систему. Сигнал LFRAME# может быть активным более одного периода тактовой частоты 33 МГц. В этом случае действительной считается информация, имевшаяся на LAD[3:0] во время последнего периода тактовой частоты. Первое поле — START — определяет тип операции, его возможные значения приведены в табл. 2.
Значение LAD[3:0] | Тип операции |
---|---|
0 | Начало ввода/вывода или чтения/записи |
1 | Зарезервировано для последующего расширения |
10 | Разрешение для задатчика номер 1 |
11 | Разрешение для задатчика номер 2 |
0100-1110 | Зарезервировано для последующего расширения |
1111 | Принудительное прекращение цикла |
Следующее поле — CYCTYPE + DIR (Cycle Type / Direction, тип цикла и направление передачи), определяется текущим задатчиком. Это поле может иметь значения, указанные в табл. 3. Значение бита LAD[0] зарезервировано, и он всегда должен быть равен 0.
Поле SIZE (Размер) может принимать значения 00 при передаче 1 байта, 01 при передаче 2 байт и 11 при передаче 4 байт. Значение 10 зарезервировано. Это поле используется только при операциях прямого доступа; ввод/вывод и чтение/запись осуществляются побайтно. Поле ADDR имеет длину четыре периода тактовой частоты для операций ввода/вывода и восемь периодов для циклов обращения к памяти. Адреса передаются начиная со старшей тетрады, то есть при обращении к памяти первыми передаются биты 31:28, а последними — 3:0.
LAD[3:2] | LAD[1] | Тип операции |
---|---|---|
0 | 0 | Чтение из внешнего устройства |
0 | 1 | Запись во внешнее устройство |
1 | 0 | Чтение из памяти |
1 | 1 | Запись в память |
10 | 0 | Прямой доступ к памяти для чтения |
10 | 1 | Прямой доступ к памяти для записи |
11 | Х | Зарезервировано. Периферия должна игнорировать это значение, а основной задатчик, обнаружив его, прерывает цикл установкой LFRAME# в активное состояние |
Поле CHANNEL используется в операциях прямого доступа к памяти и содержит в битах 0:2 номер канала, а в бите 3 — аналог сигнала Terminal Count шины ISA.
Поле DATA (Данные) имеет длину два периода тактовой частоты и содержит данные, передаваемые младшей тетрадой вперед. В одном цикле может содержаться одно, два или четыре поля DATA.
Поле передачи управления Turn Around, TAR, используется для передачи контроля над линиями LAD [3:0] второму участнику данного цикла, что необходимо при операциях чтения. Оно имеет продолжительность два периода тактовой частоты, на первом периоде текущий задатчик устанавливает на линиях LAD[3:0] значение 1111, на втором отключается, ожидая информацию от второго участника диалога.
Поле SYNC служит для синхронизации источника и приемника данных. Его вставляет ведомый участник цикла для того, чтобы подготовить для передачи запрошенные данные, или для размещения полученной информации. Полей SYNC в одном цикле может быть несколько, фактически столько, сколько нужно для подготовки. Значения поля SYNC приведены в табл. 4.
LAD[3:0] | |
---|---|
0 | Синхронизация достигнута |
0001-0100 | Зарезервировано |
101 | Короткое ожидание |
110 | Длительное ожидание, будет добавлено много полей SYNC |
0111-1000 | Зарезервировано |
1001 | Синхронизация достигнута, передача будет продолжена в следующем цикле (только при прямом доступе к памяти) |
1010 | Ошибка. В переданных данных содержится ошибка |
1011 — 1111 | Зарезервировано |
Значение 1010 — Ошибка необходимо потому, что все циклы должны иметь определенную длину, так что периферийное устройство обязано передать требуемое для данного цикла количество данных, но перед этим оно честно предупреждает задатчика о том, что эти данные имеют чисто фиктивный характер.
Ознакомившись с типами полей, можно более подробно рассмотреть механизмы начала, окончания и принудительного прекращения цикла. Цикл начинается с того, что основной задатчик устанавливает активный уровень на линии LFRAME#. С этого момента периферийные устройства только анализируют состояние линий LAD[3:0], прервав любую операцию на шине (если она проводилась). Задатчик может удерживать LFRAME# в активном состоянии более одного периода частоты синхронизации, при этом он даже может произвольно менять состояние LAD[3:0]. Действительным значением поля START будет то, которое имелось на этих линиях перед переходом LFRAME# в пассивное состояние. Если считанное поле START распознается периферийными устройствами, то они должны декодировать весь цикл, а в противном случае — просто дожидаться следующей активации LFRAME# (например, устройства ввода/вывода, не использующие циклы прямого доступа или захвата шины, могут их просто игнорировать). Принудительное прекращение цикла является специальным циклом, так как начинается с установки LFRAME# в активное состояние, а заканчивается установкой поля START со значением 1111. При этом для более уверенного распознавания линия LFRAME# находится в активном состоянии не менее четырех периодов тактовой частоты.
Поле | Значение | Источник | Число тактов |
---|---|---|---|
START | 0 | Основной задатчик | 1 |
CYCTYPE+DIR | 100 | Основной задатчик | 1 |
ADDR | ХХХХ | Основной задатчик | 8 |
TAR | 1111 | Основной задатчик | 2 |
SYNC | 101 | Периферийное устройство | 3 |
SYNC | 0 | Периферийное устройство | 1 |
DATA | ХХХХ | Периферийное устройство | 2 |
TAR | 1111 | Периферийное устройство | 2 |
Всего тактов | 20 | ||
Время доступа | 0,66 мкс | ||
Скорость передачи | 1,5 Мбайт/с |
В табл. 5 приведены последовательность и характеристики полей в цикле чтения из памяти. Основной задатчик инициирует цикл, определяет тип цикла и направление передачи (чтение из памяти), адрес памяти и информирует об освобождении линий LAD[3:0]. Периферийное устройство во время подготовки данных передает поля SYNC со значением 0101. Когда данные готовы для передачи, устройство передает поле SYNC со значением 0000, две тетрады данных и информирует основного задатчика об освобождении линий LAD[3:0].
Количество полей синхронизации соответствует быстродействию памяти и может изменяться. В данном примере предполагалось наличие ППЗУ с временем доступа 120 нс (4*33 нс = 132 нс). Цикл записи построен примерно так же, но данные передает основной задатчик, а периферийное устройство — только поля SYNC и TAR. В поле SYNC устройство помещает значение либо 0000 (успешная запись), либо 1010 (ошибка при записи). Соответственно возможны варианты, когда устройство не буферизует данные, а выдает поля SYNC до момента реальной записи.
Поле | Значение | Источник | Число тактов |
---|---|---|---|
START | 0 | Основной задатчик | 1 |
CYCTYPE+DIR | 110 | Основной задатчик | 1 |
ADDR | ХХХХ | Основной задатчик | 8 |
DATA | ХХХХ | Основной задатчик | 2 |
TAR | 1111 | Основной задатчик | 2 |
SYNC | 0 | Периферийное устройство | 1 |
TAR | 1111 | Периферийное устройство | 2 |
Всего тактов | 17 | ||
Время доступа | 0,56 мкс | ||
Скорость передачи | 1,8 Мбайт/с |
В табл. 6 приведены последовательность и характеристики полей в цикле чтения из памяти. Совершенно аналогично происходит ввод/вывод при работе с портами, отличие состоит лишь в других значениях полей CYCTYPE+DIR. Для ознакомления с функциями работы с прямым доступом к памяти и управления потребляемой мощностью в табл. 7 приведены необязательные линии интерфейса LPC.
Наименование | Направление | Назначение | |
---|---|---|---|
Периферия | Основной задатчик | ||
LDRQ# | O | I | Запрос на прямой доступ к памяти или захват шины. Каждому устройству, обладающему этими функциями, требуется отдельная линия LDRQ# |
SERIRQ | I/O | I/O | Последовательный запрос на прерывание |
CLKRUN# | OD I/OD | OD I/OD | То же, что и PCI CLKRUN# |
PME# | OD | I/OD | То же, что и PCI PME# |
LPCPD# | I O | I O | Отключение, указывает, что периферия должна подготовиться к отключению |
LSMI# | O/D I | O/D I | Как и PCI SMI#, нужен для повторных попыток |
При запросе прямого доступа к памяти (ПДП) или захвата шины используется линия LDRQ#. В первом случае по ней передается номер канала ПДП, во втором — зарезервированное значение 100. При благоприятном для данного запроса исходе арбитража основной задатчик начинает производить циклы ПДП. Бит LAD[3] в поле CHANNEL играет специальную роль и соответствует линии шины ISA TC (Terminal Count). В случае передачи последней порции данных (1, 2, 4 байт) этот бит устанавливается в 1, сигнализируя о том, что текущий сеанс ПДП закончен. Также сеанс ПДП может быть завершен установкой поля SYNC=0000 (синхронизация достигнута) или SYNC=1010 (ошибка), так как при циклах ПДП для индикации готовности данных используется значение SYNC=1001 (синхронизация достигнута; в следующем цикле будут еще данные). Последовательность полей и другие характеристики цикла ПДП при 8-битном чтении внешним устройством из основной памяти приведены в табл. 8. В зависимости от типа ПДП (8, 16 или 32 разряда) последние четыре поля передаются один, два или четыре раза соответственно. Соответственно будут меняться время доступа и скорость передачи.
Цикл захвата шины, как и все остальные, инициируется основным задатчиком после получения запроса по линии LDRQ#. Основной задатчик, как и при всех других циклах, формирует поле START, имеющее значение 0010 или 0011 (разрешение для задатчика 1 или задатчика 2; в настоящее время поддерживается не более двух задатчиков). После этого основной задатчик передает управление шиной при помощи поля TAR. Далее все протекает как при описанных выше циклах, за одним исключением: поля SYCTYPE+DIR и последующие, которые определяют тип цикла и направление передачи, формируются устройством, получившим право на захват шины.
Наименование | Направление | Назначение | |
---|---|---|---|
Периферия | Основной задатчик | ||
LDRQ# | O | I | Запрос на прямой доступ к памяти или захват шины. Каждому устройству, обладающему этими функциями, требуется отдельная линия LDRQ# |
SERIRQ | I/O | I/O | Последовательный запрос на прерывание |
CLKRUN# | OD I/OD | OD I/OD | То же, что и PCI CLKRUN# |
PME# | OD | I/OD | То же, что и PCI PME# |
LPCPD# | I O | I O | Отключение, указывает, что периферия должна подготовиться к отключению |
LSMI# | O/D I | O/D I | Как и PCI SMI#, нужен для повторных попыток |
Для работы с устройствами, использующими прерывания, используется линия SERIRQ# и одноименный протокол, описанный в спецификации шины PCI «PCI Local Bus Specification, Rev 2.1». Управление включением/выключением периферийных устройств осуществляется при помощи линий LPCPD# и LRST#. При выключении первая из них устанавливается основным задатчиком в низкий уровень, при этом в течение еще не менее 30 мкс на шину подается сигнал тактовой частоты LCLC. Все периферийные устройства при обнаружении низкого уровня на линии LPCPD# обязаны прекратить любую активность на шине и перейти в режим пониженного энергопотребления. Переход к работе происходит при подаче основным задатчиком на линию LPCPD# высокого уровня. Подача тактового сигнала осуществляется заранее, не менее чем за 100 мкс перед установкой высокого уровня LPCPD#. Для правильного перехода внешних устройств в начальное состояние на линии LRST# поддерживается низкий (активный) уровень еще в течение 60 мкс.