Структура коммуникационного процессорного модуля, страница 6

2.1.2. SDMA-каналы.

По два независимых SDMA-канала выделено для обслуживания приема и передачи данных в каждом канале ввода /вывода. Общее число SDMA-каналов равно удвоенному числу внешних каналов ввода/вывода  контроллера. В контроллере МРС860 для обслуживания всех каналов ввода/вывода отведено 2 физических SDMA-канала, на базе которых реализовано 16 виртуальных SDMA-каналов. Восемь SDMA-каналов обслуживают 4 SCC-контроллера и 8 SDMA-каналов работают с интерфейсом SPI, портом I2C и двумя SMC-контроллерами.

Данные через SDMA-каналы могут передаваться для хранения, как во внешнюю память, так и во внутреннюю двухпортовую память. Доступ ко внешней памяти требует предварительного арбитража шины IMB или шины 68000 bus, доступ к двухпортовой шине не требует арбитража шины микроконтроллера.

Управление работой SDMA-каналов осуществляется микропрограммой, выполняемой RISC-процессором. Пользователь не может изменять или контролировать процесс управления SDMA-каналами. При необходимости доступа к внешней памяти RISC-контроллер формирует внутренний запрос к арбитру шины микроконтроллера, получает подтверждение и становится владельцем шины на один стандартный цикл обмена по шине. Во время стандартного цикла обмена могут выставляться внешние сигналы CS. Если шиной владел арбитр, то SDMA-канал выставляет сигнал BCLR с требованием освободить шину. Стандартный цикл шины предусматривает передачи до 32 бит данных, после чего необходимо освободить шину, даже если больше нет других устройств, требующих шину для передачи. Такой способ обслуживания арбитража шины гарантирует пропорциональное гарантированное время доступа SCC-каналов и обеспечивает постоянное время задержки при обработке полученных по сети данных и непереполнение их FIFO. Если размер шины установлен меньшим, чем размер передаваемых данных (например, шина размером 16 бит, а размер данных 32 бита), то SDMA-контроллер становится владельцем шины на 2 цикла передачи и освобождает шину только после завершения всей передачи, даже если во время передачи пришел более приоритетный запрос на владение шиной от другого модуля.

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

В МРС 860 пользователь может сам назначить приоритеты доступа у шине всех устройств, использующих внешнюю шину для передач (IDMA-контроллер, SDMA-каналы, DRAM-контроллер или внешний master), с помощью программирования регистра конфигурации SDCR (SDMA). Обычно программируется приоритет 4 и учитывается, что приоритет SDMA-каналов должен быть выше приоритета любого IDMA-запроса.

Регистр статуса SDSR (рис 4) в контроллере МРС860 имеет более простой формат. Биты DSP1 и DSP2 служат для регистрации события прерывания при работе с таблицами DSP функций DSP1 и DSP2. Бит RINT либо разрешает прерывание, либо делает его замаскированным. Если возникла ошибка при передаче данных SDMA-канала, то генерируется прерывание и устанавливается бит SBER в SDSR-регистре.

Регистр маски SDMA-канала (SDMR) имеет такой же формат расположения битов, как и в регистре статуса SDSR, и служит для маскирования запросов на прерывание при возникновении различных событий в канале прямого доступа к памяти. Если некоторый бит в регистре маски равен 1, то выбранное прерывание разрешено.

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