Раздел: Документация
0 ... 7 8 9 10 11 12 13 ... 131 Протокол ECP переопределяет сигналы SPP (табл. 1.8).
* Сигналы действуют в последовательности согласования (см. далее). Адаптер ЕСР тоже генерирует внешние протокольные сигналы квитирования аппаратно, но его работа существенно отличается от режима ЕРР. На рис. 1.7а приведена диаграмма двух циклов прямой передачи: за циклом данных следует командный цикл. Тип цикла задается уровнем на линии HostAck: в цикле данных — высокий, в командном цикле — низкий. В командном цикле байт может содержать канальный адрес или счетчик RLE. Отличительным признаком является бит 7 (старший): если он нулевой, то биты 0-6 содержат счетчик RLE (0-127), если единичный — то канальный адрес. На рис. 1.76 показана пара циклов обратной передачи. HostClk PeilphAck Data[0 7] " HostAck " .3 .4 Байта Данные .ГЛ. XZDC Байт 1 Команда Рис. 1.7. Передача в режиме ЕСР: а — прямая, б — обратная В отличие от диаграмм обмена ЕРР, на рис. 1.7 не приведены сигналы циклов системной шины процессора. В данном режиме обмен программы с ПУ разбивается на два относительно независимых процесса, которые связаны через FIFO-буфер. Обмен драйвера с FIFO-буфером может осуществляться с использованием как DMA, так и программного ввода-вывода. Обмен ПУ с буфером аппаратно выполняет адаптер ЕСР. Драйвер в режиме ЕСР не имеет информации о точном состоянии процесса обмена, но здесь обычно важно только то, завершен он или нет. Прямая передача данных на внешнем интерфейсе состоит из следующих шагов: 1.Хост помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии HostAck. 2.Хост устанавливает низкий уровень на линии HostClk, указывая на действительность данных. 3.ПУ отвечает установкой высокого уровня на линии PeriphAck. 4.Хост устанавливает высокий уровень линии HostClk, и этот перепад может использоваться для фиксации данных в ПУ. 5.ПУ устанавливает низкий уровень на линии PeriphAck для указания на готовность к приему следующего байта. Поскольку передача в ЕСР происходит через FIFO-буферы, которые могут присутствовать на обеих сторонах интерфейса, важно понимать, на каком этапе данные можно считать переданными. Данные считаются переданными на шаге 4, когда линия HostClk переходит в высокий уровень. В этот момент модифицируются счетчики переданных и принятых байт. В протоколе ЕСР есть условия, вызывающие прекращение обмена между шагами 3 и 4. Тогда эти данные не должны рассматриваться как переданные. Из рис. 1.7 видно и другое отличие ЕСР от ЕРР. Протокол ЕРР позволяет драйверу чередовать циклы прямой и обратной передачи, не запрашивая подтверждения на смену направления. В ЕСР смена направления должна быть согласована: хост запрашивает реверс установкой ReverseRequest#, после чего он должен дождаться подтверждения сигналом AckReverse#. Поскольку предыдущий цикл мог выполняться по прямому доступу, драйвер должен дождаться завершения прямого доступа или прервать его, выгрузить буфер FIFO, определив точное значение счетчика переданных байт, и только после этого запрашивать реверс. 0 ... 7 8 9 10 11 12 13 ... 131
|