Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
глава 5 готово.doc
Скачиваний:
6
Добавлен:
15.09.2019
Размер:
5.33 Mб
Скачать

5.2. Организация коммуникационных процессорных модулей в кмк

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

Коммуникационный процессорный модуль СРМ (Communication Processor Module) автоматически, с минимальным вмешательством CPU центрального процессора выпол­няет прием и передачу потоков информации в соответствии с выбранным коммуникаци­онным протоколом. При приеме СРМ автономно выполняет следующие действия:

1) поиск и выделение кадра данных во входном потоке информации или выделение из потока данных определенного временного канала с помощью TDM временного мультиплексора;

2)обработку принятого кадра в соответствии с правилами выбранного сетевого протокола: проверку контрольных сумм, сравнение адресов, выделение и анализ формата служебных символов, отбрасывает служебную информацию;

3)полученные данные без дополнительной служебной информации помещаются в буфер FIFO;

4)RISC-процессор управляет передачей этих данных по каналам SDMA в ячейки памяти по адресу, определенному в буферном дескрипторе (BD) данного канала ввода/вывода;

5)RISC-процессор устанавливает биты в слове состояния буфера дескриптора и соответствующие биты в регистре прерываний этого канала, сигнализируя централь­ ному процессору о том, что данные в памяти готовы или о возникшей при приеме дан­ных ошибке.

Далее центральный процессор выполняет обработку данных в соответствии с про­граммами пользователя.

При передаче данных СРМ осуществляет обратное преобразование информации. Он получает данные из ячеек памяти по каналам SDMA, добавляет служебную информа­цию и передает их по сети. При этом центральный процессор через регистры состояния буферного дескриптора и регистры прерываний канала уведомляется о том, как закон­чилась передача.

Таким образом, СРМ выполняет функции канального уровня управления семиуров­невой модели OSI, освобождая центральный процессор для обработки протоколов бо­лее высокого уровня. Следует отметить, что СРМ не реализует функции физического уровня модели OSI, он только подготавливает данные, кодирует их для передачи опре­деленным способом (например, манчестерское кодирование, частотная модуляция, NRZ-кодирование и другие виды кодирования) и передает на внешние выводы контроллера. Для преобразования цифровых сигналов в электрические на выходах контроллера необ­ходимы дополнительные микросхемы, которые в большом ассортименте также выпуска­ются фирмой «Motorola».

СРМ состоит из следующих основных частей (рис. 5.14):

•RISC-процессора, управляющего работой каналов ввода/вывода и обрабатывающего информацию в соответствии с заданными коммуникационными протоколами;

•регистра команд RISC-процессора;

•2, 3 или 4 независимых полнодуплексных последовательных коммуникационных каналов SCC (Serial Communication Controllers), выполняющих основные функции переда­чи данных;

•двух каналов управления обменом SMC (Serial Management Controllers), которые ис­пользуются как вспомогательные каналы для передачи служебной информации при работе с протоколами ISDN или как самостоятельные каналы передачи данных;

•6-18 каналов прямого доступа в память (Serial Direct Memory Access Channels, SDMA Channels) для обмена информацией между буферами каналов ввода/вывода и внеш­ней памятью;

•генератора частоты обмена (Baud Rate Generator, BRG), который формирует тактовые частоты для работы последовательных каналов связи; источником частоты для генератора может быть или внутренняя системная тактовая частота, или тактовые сигналы на внешних контактах;

•последовательного SPI-интерфейса для подключения периферийных устройств по последовательному каналу связи;

•двухпортовой памяти (dual-port RAM), используемой для хранения информации о буферных дескрипторах, параметров каналов и параметров выбранного протокола, а также загружаемого микрокода;

•физического интерфейса SI (Serial Channels Physical Interface), обеспечивающего вы­дачу информации каналов ввода/вывода на внешние контакты в двух режимах: муль­типлексированном (TSA) и немультиплексированном (NMSI);

•I 2С-канала ввода/вывода (Interprocessor Integrated Controller).

Дополнительно в состав СРМ в МРС860 включены новые модули, работой которых руководит RISC-контроллер (см. рис. 5.14):

•параллельные порты ввода/вывода;

•параллельный интерфейсный порт (Parallel Interface Port, PIP), через который реализу­ется стандартный протокол обмена типа Centronics

•контроллер прерываний СРМ;

•4 таймера общего назначения;

•2 канала прямого доступа в память DМА;

•в состав RISC-процессора включен дополнительный внутренний таймер, с помощью которого можно реализовать работу 16 шестнадцатиразрядных таймеров, которые обес­печивают периодическое прерывание центрального процессора для обработки определенных подпрограмм обслуживания прерываний;

•DSP-составляющая к RISC-контроллеру.

RlSK-контроллер. СРМ функционирует под управлением собственного ядра, выпол­ненного в виде RISC-процессора. Основная задача RISC-ядра - обеспечение функцио­нирования каналов SCC, SMC, SPI без постоянного вмешательства основного централь­ного процессора CPU. Основные способы взаимодействия центрального процессора и RISC-ядра:

•пользователь из своей программы может передать СРМ команду управления кана­лом связи (табл. 5.3-5.4);

•СРМ после выполнения приема/передачи кадра или в случае возникновения ошибки при передаче извещает CPU прерыванием;

•ядра могут обмениваться информацией о текущем состоянии каналов ввода/вывода через регистр статуса буферов дескрипторов и протокол-ориентированную область внутренней двухпортовой памяти.

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

В контроллере МРС860 RISC-ядро имеет полностью 32-разрядную архитектуру, на­строено и оптимизировано специально для решения коммуникационных задач. Благода­ря введению DSP-составляющей RISC-процессор поддерживает встроенные команды МАС-арифметики (операции умножения и сложения над 16-битными операндами и 40-битным результатом), обработки контрольной суммы и вычисления специальных режи­мов адресации и выполняет МАС-команду за один период тактовой частоты. Особеннос­ти архитектуры RISC-ядра, использование 4-Кбитных кэш-памяти команд и данных по­зволили увеличить производительность ядра до 53 MIPS при 40 МГц.

Работу RISC-контроллера определяет микропрограмма, расположенная во внутрен­нем масочном ПЗУ микрокода. Пользователь не может изменить содержимое ПЗУ мик­рокода. Но предусмотрена возможность загрузки микрокода новых протоколов (напри­мер, SS#7, Profibus), для этого во внутренней двухпортовой памяти выделена специаль­ная область для загрузки микрокода.

CPU может передавать команды управления работой каналов для RISC-контроллера через регистр команд CR (рис. 5.15). Обычно эти команды используются, если необходи­мо провести инициализацию канала или изменить его режим работы. CPU записывает код выполняемой команды в биты OPCODE, определяет канал, для которого должна быть выполнена команда в битах CHNUM (табл. 5.2), и устанавливает флаг FLG. Выпол­нив команду, RISC-процессор сбрасывает флаг FLG, сообщая центральному процессо­ру, что он готов выполнить новую команду. Бит программного сброса RST = 1, установ­ленный CPU, сбрасывает в исходное состояние регистры и параметры всех коммуника­ционных каналов приблизительно за 60 периодов тактовой частоты.

Команды управления каналом связи рассмотрены в табл. 5.3 - 5.4. В состав СРМ контроллера МРС860 введены дополнительные каналы и модули, и поэтому набор ко­манд управления расширен для обеспечения более гибкого управления каналами связи (см. табл. 5.4).

Типовой набор команд, которые чаще всего применяются для управления работой SCC-каналов в контроллере МРС860, включает 7 команд: STOP TRANSMIT, GRACEFUL STOP TRANSMIT, RESTART TRANSMIT, INIT TX PARAMETERS, ENTER HUNT MODE, CLOSE RX BD и INIT RX PARAMETERS.

В контроллере МРС860 пользователь может настраивать режим работы RISC-ядра при программировании регистра конфигурации RISC-контроллера RCCR (рис. 5.16).

В СРМ RISC-контроллер содержит таблицу 16 программных таймеров, при помощи которых пользователь может управлять частями своего программного обеспечения. Па­раметры настройки всех 16 таймеров сведены в общую таблицу. Период сканирования таблицы задается внутренним таймером RISC-контроллера. Величина периода опроса зависит от системной частоты и значений в битах TIMER регистра конфигурации RCCR. Значение периода опроса вычисляется так: (системная частота)/[(Т1МЕР+1)х1024]. Бит TIME = 1 разрешает работу внутреннего таймера и сканирования таблицы таймеров. Если бит TIME = 0, то сканирование таблицы таймеров (RISC timer table) не производится.

Бит SCD определяет режим работы RISC-контроллера. Если этот бит равен 0, то ус­танавливается нормальный режим работы, а если -1, то альтернативный режим конфи­гурации планировщика.

В контроллере МРС860 RISC-контроллер дополнительно управляет работой IDMA-каналов, и в регистр конфигурации введены дополнительные биты. Биты DR1M, DROM и DRQP (табл. 5.5) программируются только при работе с IDMA-каналами. Внешние сиг­налы-запросы на контактах DREQ1 и DREQ0 используются при активации канала IDMA1 и канала IDMA0. Биты DR1М и DROM определяют, как будут восприниматься эти сигналы. Если данные биты равны 0, то соответствующий запрос регистрируется по перепаду сиг­нала, а если бит равен 1, то - по уровню сигнала.

Если установлен бит EIE = 1, то появление сигнала DREQO-запроса вызовет преры­вание работы RISC-контроллера. Этот бит используется пользователем только во время процесса загрузки внешнего микрокода нового протокола в двухпортовую память.

Микрокод в МРС860 может быть загружен в двухпортовую память в трех режимах, выбор режима производится при программировании бита ERAM (табл. 5.6).

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

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

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

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

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

Реально пользователь имеет право установить только относительный приоритет SDMA-каналов, а приоритеты остальных модулей строго фиксированы.

Все SDMA-каналы имеют одно значение ID приоритета, которое устанавливается пользователем в регистре SDCR и которое позволяет SDMA-каналам соперничать за право передачи по внутренней шине данных с другими источниками внутренних и вне­шних запросов на арбитраж. Биты RAID устанавливают уровень приоритета запросов SDMA-каналов по доступу к внутренней шине среди других внутренних источников зап­росов (табл. 5.7). Арбитраж запросов от внутренних источников выполняет RISC-контрол­лер. Обычно устанавливается значение 5 (код 01).

Биты FRZ определяют реакцию SDMA-каналов на выставление сигналов контроля:

00 - SDMA-канал игнорирует сигнал FREEZE, 01 - SDMA-канал сбрасывает сигнал и останавливает (замораживает) передачу, пока выставлен сигнал FREEZE или пока не произойдет сброс системы.

Каналы SDMA имеют один собственный регистр статуса SDSR (рис. 5.18), в котором отмечается состояние каналов SDMA в текущий момент времени или регистрируется событие, произошедшее в SDMA-канале. Сброс бита события в регистре статуса SDSR производится записью в разряд, соответствующий выбранному событию, кода «1».

Если возникла ошибка при передаче данных SDMA-канала, то генерируется преры­вание и устанавливается бит SBER в SDSR-регистре. Адрес, при обращении по которо­му возникла ошибка, будет сохранен в регистре SDAR. Пользователь может сравнивать этот адрес с адресами в ячейках внутренних указателей на обрабатываемые RX- и ТХ-данные (internal data pointer) в протокол-независимой области памяти параметров SCC-канала, чтобы определить, при каком цикле обращения и в каком месте была обнаруже­на ошибка.

Биты DSP1 и DSP2 служат для регистрации события прерывания при работе с табли­цами DSP функций DSP1 и DSP2.

Бит RINT используется только во время промышленного тестирования контроллерам пользователю не рекомендуется его изменять.

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

Двухпортовая память (DUAL-PORT RAM). Обмен информацией между централь­ным процессором (CPU) и коммуникационным процессором (СРМ) может осуществ­ляться через двухпортовую память. Двухпортовая память включена между внутренней шиной центрального процессора и периферийной шиной RISC-процессора. Доступ к двухпортовой памяти может производить или RISC-контроллер через один порт или один из владельцев внутренней шины через другой порт. В контроллере МРС860 вла­дельцем внутренней шины может быть одно из двух устройств: или центральный про­цессор, или каналы SDMA. При доступе любого из владельцев внутренней шины ис­точников к двухпортовой памяти обращение выполняется, как к стандартной памяти с использованием линии адреса и данных внутренней шины контроллера. При этом цикл доступа к памяти составляет два периода тактовой частоты (два такта шины), а доступ от RISC-контроллера требует одного такта шины. При одновременном досту­пе к двухпортовой памяти центрального процессора и RISC-контроллера доступ RISC-контроллера задерживается на один такт.

Приоритеты обработки запросов по доступу к двухпортовой памяти от блоков комму­никационного процессора распределены следующим образом:

1)выполнение команды RESET или при системном сбросе (наивысший приоритет);

2)обращение от RISC-ядра;

3)обработка ошибки при передаче в режиме SDMA;

4)обращение от DRAM-контроллера;

5)выполнение команды от CPU, включая команды управления DSP-составляющей;

6)эмуляция IDMA-канала (если приоритет ЮМА-запроса выше, чем у запроса от SCC-канала); настраивается при программировании регистра конфигурации RISC-контроллера в МРС860;

7)прием данных от SCC1-канала;

8)передача данных по SCC1-каналу;

9)прием данных от ЗСС2-канала;

10)передача данных по 5СС2-каналу,

11)эмуляция IDMA-канала (если приоритет ЮМА-запроса ниже, чем у запроса от SCC-канала); настраивается при программировании регистра конфигурации RISC-контроллера в МРС860;

12)прием данных от ЗССЗ-канала;

13)передача данных по ЗССЗ-каналу;

14)прием данных от ЗСС4-канала;

15)передача данных по 5СС4-каналу;

16)прием данных от 5МС1-канала;

17)передача данных по SMC1-каналу;

18)прием данных от 5МС2-канала;

19)передача данных по 5МС2-каналу;

20)прием данных от канала SPI;

21)передача данных по каналу SPI;

22)прием данных от I 2С-канала;

23)передача данных по I 2С -каналу;

24)прием данных от PIP-порта;

25)передача данных через PI Р-порт;

26)обработка запросов к таблице RISC-таймеров;

27)эмуляция IDMA-канала (если IDMA-запрос имеет самый низший приоритет); настраивается при программировании регистра конфигурации RISC-контроллера.

Двухпортовая память состоит из двух основных частей: памяти параметров каналов (parameter RAM) и памяти системных переменных (system RAM). Двухпортовая память решает следующие основные задачи.

•Хранение параметров каналов передачи данных в разделе параметров (parameter RAM)

.•Хранение буферных дескрипторов (BD), которые определяют, куда будут передавать­ся принимаемые данные и откуда будут читаться данные для передачи. Обычно дес­крипторы хранятся в разделе памяти параметров (parameter RAM), но для их хране­ния в МРС860 могут быть отведены незанятые области системного ОЗУ (system RAM).Число буферных дескрипторов в контроллере МРС860 ограничено лишь максималь­ным числом BD (512 BD).

•Хранение данных, полученных из последовательных каналов. Обычно эти данные по каналам SDMA пересылаются во внешнюю память.

•Хранение загружаемого RAM микрокода нового коммуникационного протокола. Микро-код обычно загружается в разделы системного ОЗУ.

•Системное ОЗУ, как правило, хранит загружаемый микрокод новых протоколов и внут­ренние системные параметры, но может использоваться для хранения буферных дес­крипторов и данных пользователя.

•Временное хранение данных пользователей.

В контроллере МРС860 двухпортовая память занимает 8 Кбайт внутренней памяти (табл. 5.8), но реально заняты только 5 Кбайт, которые разбиты на две части: 4096 байт системного ОЗУ и 1024 байта памяти параметров (parameter RAM). Стартовый адрес (DPRAM_BASE) двухпортовой памяти во внутренней памяти контроллера рассчитывает­ся как IMMR+Ox2000, где содержимое регистра IMMR задает стартовый адрес внутрен­ней памяти в 4-Гбайтном адресном пространстве контроллера. Размер внутренней па­мяти-16 Кбайт.

В МРС860 существуют три режима загрузки микрокода:

1)микрокод загружается в первые 512 байт адресного пространства памяти и в последние 256 байт блока 5 системного ОЗУ; таким образом, размер микрокода составляет 768 байт;

2)микрокод загружается в первые два блока по 512 байт и в последние 256 байт блока 5 системного ОЗУ; размер микрокода составляет 1280 байт;

3)микрокод загружается в первые четыре блока по 512 байт и в 512 байт блока 5 системного ОЗУ; размер микрокода равен 2560 байт.

Распределение внутренней памяти в контроллерах МС68302, МС68360, МРС860 опи­сано в табл. 5.9.

RISC-контроллер записывает 16/8-битный контрольный номер, хранящийся в его ПЗУ микрокода, в специальную ячейку REV_NUM в области parameter RAM двухпортовой памяти (MISC-параметры). В контроллере МРС860 данная ячейка имеет адрес IMMR+0Хзсв0 и расположена на первой странице памяти параметров.

Синхронизация. BRG-генератор. В СРМ для каждого канала, работающего в режи­ме NMSI, источниками тактовых сигналов может быть или один из четырех BRG-генера-торов, или один из восьми входов внешнего генератора, В СРМ нет жесткого закрепле­ния генераторов BRG за конкретным каналом, и один генератор может обслуживать сра­зу несколько SCC- или SMC-каналов. Такой способ реализации системы синхронизации повышает эффективность использования внешних выводов микросхемы. Во-первых, для любого SCC и SMC можно выбирать любой источник синхронизации с любого контакта микросхемы. Например, можно для всех каналов назначить внешние источники тактовых сигналов, поступающие только через контакты порта В, при этом входы источников так­товых сигналов на контактах порта А можно использовать для других целей. Во-вторых, можно назначить для нескольких каналов один источник тактирования, или сделать так, чтобы у одного канала для приема и для передачи использовалась бы одна частота тактирования, а это тоже освобождает внешние контакты незанятых генераторов и ис­точников внешнего тактирования для других целей.

В СРМ каждый канал ввода/вывода имеет свой специальный регистр синхронизации SICR (рис. 5.19), который определяет, работает ли этот канал в режиме мультиплексиро­вания, и с какой частотой он синхронизируется.

Биты SC1, SC2, SC3, SC4 при значении, равном 1, определяют, что выбранный канал подключен к временному мультиплексору TSA, и его внешние выводы NMSI-сигналов можно использовать для других целей. Если эти биты равны 0, то соответствующий ка­нал работает в немультиплексируемом режиме NMSI.

Биты R4CS, R3CS, R2CS, R1CS, T4CS, T3CS, T2CS, T1CS определяют источник син­хронизации приемной и передающей частей соответствующего канала (табл. 5.10). Эти биты игнорируются, если канал работает в мультиплексном режиме и подключен к TSA. Код, записанный в биты R4CS, R3CS, R2CS, R1CS, определяет источник тактирования выбранного канала при приеме данных, а код, записанный в биты T4CS, T3CS, T2CS, T1CS, определяет источник тактирования соответствующего канала при передаче. Для каждого канала выбранная частота поступает или на тактовый вход приемника RCLKx, или на тактовый вход передатчика TCLKx, или на оба входа одновременно.

Биты GR1 - GR4 определяют, поддерживает ли данный канал механизм подтвержде­ний (grant) при работе с протоколами ISDN, как определено в битах GM1 - GM4 настрой­ками этого канала («0» - не поддерживают, «1» - поддерживают).

Существует два ограничения по тактированию каналов в СРМ:

1)только 8 источников тактирования из 12 могут быть выбраны для каждого канала; этот источник задается при программировании регистра синхронизации SICR;

2)SMC-каналы, когда они работают в немультиплексированном режиме, должны иметь одинаковую частоту для тактирования приемника и передатчика; источник тактовых сигналов задается при программировании регистра конфигурации физического интерфейca SIMODE.

Все генераторы тактовой частоты BRG в СРМ полностью независимы. Настройка ге­нератора на определенный режим работы осуществляется при программировании его регистра конфигурации BRGC в СРМ (рис. 5.20). Каждый генератор имеет свой соб­ственный регистр настройки и одинаковую структуру (рис. 5.21).

Биты ЕХТСх определяют источник тактовых сигналов для BRG-генератора. Это мо­жет быть или выход внутреннего генератора микросхемы (биты ЕХТС1 ,ЕХТС0 = 00), или сигнал с внешнего входа микросхемы CLK2 (биты ЕХТС1.0 = 01) или входа CLK6 (биты ЕХТС1.0 = 10). Сигнал от внутреннего генератора обычно равен системной частоте (пос­ле предварительного деления ее внутренним генератором, такое деление системной частоты выполняется для систем с низким энергопотреблением, где не нужны высокие скорости передачи).

Далее полученная частота может предварительно делиться на 16 в СРМ (если бит DIV16 = 1), или на 1 (если бит DIV 16 равен 0). Пользователь дополнительно может управ­лять делением частоты генератора с помощью программирования предварительного делителя Prescale. СРМ имеет 12-разрядный счетчик предварительного деления. Коэф­фициент деления частоты программируется битами CD11 – CD0 и может иметь значения от 1 до 4096, где «1» соответствует нулям во всех разрядах GDi.

На выходе счетчика предварительного деления Prescale получается рабочая частота, которая поступает на внешний контакт и на внутренние цепи для тактирования каналов SCC и SMC. Но суще­ствуют ограничения на максимальную частоту тактирования каналов: для СРМ макси­мальная частота тактирования равна 1/2 частоты внутреннего генератора микросхемы (SyncCLK/2). Например, при системной частоте 25 МГц максимальная частота на выходе BRGO может быть только 12,5 МГц.

Бит EN = 1 обеспечивает включение соответствующего генератора в работу. При зна­чении EN - 0 генератор выключен и его внешние контакты могут быть использованы для других целей как разряды параллельных портов ввода/вывода. Выключение генератора из работы обычно применяется в режимах пониженного энергопотребления.

Пример расчета максимальной скорости работы каналов. Для синхронных передач, когда период тактовой частоты равен битовому интервалу передачи данных:

Для асинхронных передач используется увеличение частоты тактирования в 8, 16, 32 раза для реализации процедуры oversampling. При oversampling производится опрос трех значений бита на одном битовом интервале и за верное значение берется значение по максимальному совпадению из трех. Увеличение частоты в 16 раз обычно используется при работе с UART-протоколом. Таким образом, максимальная частота генератора, используемая для тактирования UART-контроллера, равна 1/2xSyncCLK/16, что составляет для СРМ 781,3 Кбит/с при частоте 25 МГц:

Управление встроенными RISC-таймерами. RISC-контроллер может управлять ра­ботой 16 внутренних таймеров. Функционирование этих таймеров не зависит от тайме­ров общего назначения и генераторов BRG, а определяется тактовыми сигналами от внутреннего таймера в составе RISC-контроллера и программируется в регистре RCCR. Наиболее эффективно применение этих таймеров в системах, где необходимо освобо­дить центральный процессор от функции контроля и управления таймерами общего на­значения. При использовании 16 внутренних таймеров все функции управления их рабо­той возложены на RISC-контроллер.

В двухпортовой памяти в разделе parameter RAM на странице 2 выделена специаль­ная область, в которой хранятся параметры настройки таймеров.

Параметры, определяющие работу каждого из 16 таймеров, сгруппированы в табли­цу (RISC TIMER TABLE), которая располагается в двухпортовой памяти. Переменная TM_BASE (в ячейке с адресом TimerBase+00) задает местоположение таблицы тайме­ров во внутренней двухпортовой памяти. В этой ячейке указывается смещение таблицы таймеров относительно начального адреса двухпортовой памяти во внутренней памяти контроллера. Каждая ячейка таблицы таймеров предназначена для управления одним таймером и имеет размер 4 байта. Первые два байта хранят значение, которое было записано при инициализации таблицы таймеров во время выполнения RISC-контролле­ром команды SET TIMER. При работе таймеров начальные значения будут уменьшаться до 0. В следующих двух байтах хранится текущее значение таймера.

Таким образом, если пользователь работает со всеми 16 таймерами, то размер таблицы составит 64 байта. RISC-контроллер будет обрабатывать таймер с номером N при просмотре таблицы, если в регистре R_TMV (в ячейке с адресом TimerBase+06) бит с соответствующим номером установлен в «1».

Все операции с таблицей таймеров выполняются по тактам внутреннего таймера. Частота работы внутреннего таймера настраивается при программировании битов TIME и TIMER в регистре конфигурации RISC-процессора. Обработка таблицы таймеров име­ет самый низкий приоритет среди всех операций RISC-контроллера, поэтому если RISC-контроллер занят выполнением других задач, то обработка таймеров в текущем такте внутреннего таймера может не производиться, поскольку процессор просто не успевает выполнить эти действия. При своей работе пользователь может, прочитав содержимое ячейки TM_PTR (с адресом TimerBase+02), всегда узнать адрес ячейки таймера из таб­лицы, которая будет обрабатываться следующей.

Для обнаружения данной ситуации в памяти параметров введена переменная ТМ_СМТ (в ячейке с адресом TimerBase+0C). RISC-процессор увеличивает эту переменную при каждом обращении к таблице таймеров для обработки, если, конечно, разрешена рабо­та внутреннего таймера. Таким образом, пользователь в своем программном обеспече­нии всегда может сравнить, сколько тактов от внутреннего таймера получил RISC-кон­троллер и сколько из них он обработал, обращаясь к таблице таймеров.

Управление работой таймера. Для управления работой таймера центральный про­цессор может передать RISC-контроллеру команду SET TIMER. По этой команде произ­водится включение, выключение и настройка параметров одного из 16 таймеров в табли­це. Код этой команды 0x0851 записывается в регистр команд RISC-процессора. Но пе­ред тем как переслать эту команду, пользователь должен записать определенные значе­ния в ячейку TM_CMD (с адресом TimerBase+08) (рис. 5.22). Переменная TM_CMD - это регистр команд таймеров, в котором определяются параметры настройки таймеров, вы­полняемые при обработке команды SET TIMER.

Поле TIMER NUMBER определяет номер таймера от 0 до 15, для которого произво­дится настройка параметров. Поле TIMER PERIOD определяет 16-битное

значение таймаута для выбранного таймера. Максимальное значение 65 536 соответствует коду 0x0000 в этом поле.

Если пользователь желает работать с определенным таймером, он должен перед подачей команды SET TIMER установить бит V : = 1 в ячейке TD_CMD. Если же таймер не будет использован, то бит V : = 0. Значения бита V (Valid) при выполнении команды SET TIMER будут переписаны в соответствующий бит ячейки R_TMV, анализируемой RISC-контроллером при обслуживании таблицы таймеров.

Таймеры могут работать в трех режимах:

1)выработки одиночного импульса (One-Shot);

2)перезапуска (Restart);

3)генерации импульсов PWM (Pulse Width Modulation).

Если необходимо, чтобы таймер работал в режиме ONE-SHOT, надо установить в регистре TM_CMD бит R := 0 (RESTART). Если бит R := 1, то таймер будет работать в режиме автоматического рестарта. При выполнении команды SET TIMER значение бита R будет перезаписано для таймера номер N в соответствующий бит ячейки R_TMR (с адресом TimerBase+04). Ячейка RJTMR - это регистр режима таймеров, она недо­ступна для записи пользователю и анализируется RISC-контроллером при обработке таблицы таймеров.

При работе таймера в PWM-режиме (бит PWM = 1) каждая пара таймеров может быть настроена для генерации PWM-импульсов через контакты порта В. Можно орга­низовать до восьми дополнительных генераторов тактовых сигналов для внешних уст­ройств. Первый таймер в паре (четный номер) используется для контроля длительнос­ти уровня «1» в импульсе. При настройке параметров этого таймера в регистре TM_CMD биты PWM := 1 и V := 1, а в поле TIMER PERIOD загружается период уровня «1» в импульсе. Второй таймер в паре (нечетный номер) используется для контроля дли­тельности периода тактовых сигналов и работает в режиме автоматической перезаг­рузки, когда истечет время цикла. При его настройке значения битов R:= 1 и V:= 1, а в поле TIMER PERIOD загружается значение периода импульсов.

Алгоритм обработки таблицы таймеров. RISC-контроллер сканирует таблицу тай­меров один раз за период внутреннего таймера и проверяет для каждого таймера в реги­стре R_TMV, включен этот таймер или нет. Для каждого работающего таймера RISC-контроллер уменьшает его счетчик в ячейке таблицы таймеров и контролирует, закон­чился ли интервал тайм-аута для этого таймера. Если тайм-аут не закончился, то RISC-процессор переходит к обработке следующего таймера в таблице. Если тайм-аут закон­чен, то в регистре событий таблицы таймеров RTER (рис, 5.23) устанавливается бит, который соответствует номеру обрабатываемого таймера, далее проверяется бит этого таймера в регистре режима R_TMR. Если этот бит равен 1, то производится рестарт (сброс в начальное состояние) счетчика данного таймера. Если данный бит равен 0, т. е. включен режим ONE-SHOT, то в регистре готовности таймера R_TMV сбрасывается бит работоспособности таймера. Таким образом, в режиме RESTART производится перезаг­рузка таймера и его дальнейшая нормальная работа, а в режиме ONE-SHOT по оконча­нии

интервала счета таймер останавливается.

Когда RISC-контроллер заканчивает обработку всех таймеров в таблице, он увеличи­вает значение в ячейке ТМ_СМТ и останавливает работу с таблицей до следующего пе­риода внутреннего таймера.

Если была получена команда SET TIMER, то RISC-контроллер только загружает но­вые параметры для одного из 16 таймеров из ячейки TM_CMD во внутренние рабочие регистры параметров таймеров, но не производит сканирование и обработку таблицы.

Отметим, что окончание тайм-аута одного из таймеров может вызывать прерывание системы при установке бита в регистре RTER, только, если данный бит не замаскирован в регистре маски таблицы таймеров RTMR (рис. 5.23), и если в контроллере прерываний СРМ разрешено прерывание от таблицы таймеров. Бит, равный 0 в RTMR, маскирует прерывание от соответствующего таймера в регистре событий RTER. Сброс запроса на прерывание в регистре RTER можно произвести записью в этот бит «1».

Практическое применение RISC-таймеров. С помощью таблицы таймеров пользова­тель может определить уровень загрузки RISC-контроллера. Если уровень загрузки со­ставляет более 96%, это значит, что пользователь нерационально распределил ресурсы коммуникационного контроллера, и его программное обеспечение разработано не опти­мально. При высокой загрузке повышается вероятность потери сетевых данных из-за пе­реполнения буферов FIFO и низкой скорости передач данных по каналам SDMA.

Для проведения анализа уровня загрузки необходимо выполнить следующие действия.

•Запрограммировать период внутреннего таймера как 1024x16 = 16384 периодов системной частоты.

•Запретить прерывания от таблицы таймеров.

•С помощью команды SET TIMER проинициализировать параметры всех 16 таймеров для работы с периодом тайм-аута, равным 65 536 периодам внутреннего таймера.

•Запрограммировать один из четырех таймеров общего назначения на работу с увеличением при каждом импульсе внутреннего таймера, и период их тайм-аута необходи­мо установить равным 65 536.

•Запустить работу системы на несколько часов. Затем сравнить показания счетчиков RISC-таймера номер 15 и таймера общего назначения.

•При сравнении результатов следует учитывать, что таймеры общего назначения считают на увеличение, а RISC-таймеры - на уменьшение. Если в результате разница составит более чем два тика, то это значит, что RISC-контроллер на каком-то интервале работы внутреннего таймера не смог обратиться к таблице таймеров для ее обработки, и уро­вень его загрузки превысил 96%.

При анализе результатов следует учитывать, что обработка таблицы таймеров уве­личивает загрузку RISC-контроллера приблизительно на 4%.

DSP-составляющая, ее использование. Для выполнения различных DSP-приложений и повышения вычислительной мощности процессора в состав RISC-контроллера семейства МРС860 введена DSP-составляющая, которая состоит из блока MAC (Multiply And Accumulate), встроенной команды MAC, и дополнена введением специальных режимов адресации для более эффективного выполнения DSP-алгоритмов. RISC-контроллер работает параллельно с основным процессором и освобождает его от выполнения некоторых функций, тем самым повышает его производительность и снижет потребле­ние энергии.

Блок MAC имеет организацию 16x16 бит и выполняет операции над содержимым двух 1 32-битных регистров. Для хранения результата выделены два 40-битных аккумулятора 1 с фиксацией признаков переполнения. Одна МАС-операция выполняется за 1 - 2 такта ожидания (latency) и 1 такт блокировки (blockage). Одна инструкция может предусматри­вать выполнение 1, 2 или 4 МАС-операций. Одновременно в контроллере могут выпол­няться несколько инструкций. Блок DSP поддерживает операции с комплексными числа­ми (complex), для хранения которых отведена 32-битная ячейка памяти (рис. 5.24). Для хранения вещественного (real) числа предназначена 16-битная ячейка памяти. Бит S (Sign) служит для хранения знака числа. В результате DSP-библиотека встроенных функций включает 11 блоков (табл. 5.11), необходимых для построения и обработки модемных протоколов V.32bis и V.34. Микро­код выполняемых DSP-функций хранится во внутреннем ПЗУ микрокода. Все параметры функций, указатели на буферы данных и результатов организованы в памяти контроллеров в виде дескрипторов функций (FD), структура которых похожа на буферные дескрипторы (BD) SCC-каналов SCC, тоже организованные в виде табли­цы и хранимые во внешней памяти.

Используются две таблицы (chain) дескрипторов FD: 1) для обработки данных при приеме, 2) для обработки данных при передаче. Специальная команда START DSP CHAIN заставляет RISC-контроллер начать обработку дескрипторов из таблицы FD.

Таблица 5.11

По завершении обработки каждого дескриптора пользователь может установить выстав­ление запроса маскируемого прерывания. Если в слове состояния дескриптора FD установ­лен бит I (Interrupt) = 1, то запрос на прерывание будет зарегистрирован в битах DSP1 (для таблицы приема) и DSP2 (для таблицы передачи) в регистре SDSR (регистр статуса каналов SDMA) (рис. 5.25). Сброс бита запроса на прерывание может быть произведен записью в этот разряд «1». При желании пользователь может замаскировать прерывание от битов DSP1 и DSP2, установив соответствующие биты в регистре маски канала SDMA.

С каждой таблицей дескрипторов FD связана своя область памяти параметров в двухпортовой памяти на странице 3 - таблица DSP1 (адрес DPRAM_BASE+0x1EC0) и странице 4 - таблица DSP2 (адрес DPRAM_BASE+0x1FC0). В этих таблицах в ячейках FDBASE (с адресом DSP base+00) хранятся указатели на таблицы дескрипторов FD: RxCHAIN BASE и TxCHAIN BASE, которые расположены во внешней памяти.

Перед началом работы пользователю требуется задать в таблице только один параметр -FDBASE, который определяет месторасположение таблицы дескрипторов FD в памяти. Да­лее для инициализации таблицы дескрипторов FD контроллеру необходимо передать ко­манду INIT DSP CHAIN. По этой команде в ячейку текущего указателя на таблицу FD_ptr (с адресом DSP base+04) записывается стартовый адрес таблицы FD из ячейки FDBASE.

Также в двухпортовой памяти хранятся текущие значения числа итераций I (ячейка с адресом DSP base+12), числа повторов ТАР (ячейка с адресом DSP base+14), указате­ля на таблицу коэффициентов CBASE (ячейка с адресом DSP base+16), размера буфе­ра исходных данных (ячейка с адресом DSP base+18), указателя на ячейку таблицы вход­ных данных XPTR (ячейка с адресом DSP base+1 А), размера буфера результатов (ячей­ка с адресом DSP base+1 С), указателя на ячейку таблицы выходных результатов YPTR (ячейка с адресом DSP base+1 E), размера буфера исходных данных М (ячейка с адре­сом DSP base+20), указателя на обрабатываемую ячейку таблицы входных данных (ячейка с адресом DSP base+22), размера буфера результатов N (ячейка с адресом DSP base+24), указателя на обрабатываемую ячейку таблицы выходных результатов (ячейка с адресом DSP base+26), размера таблицы коэффициентов К (ячейка с адресом DSP base+28), указателя на обрабатываемую ячейку таблицы коэффициентов (ячейка с адресом DSP base-t-2A). Термин «текущий», применяемый при описании ячеек, означает, что их исход­ные значения заносятся из дескриптора выбранной функции и их содержимое использу­ется при работе только с текущим дескриптором FD и может изменяться при начале работы со следующим дескриптором.

Каждый дескриптор FD состоит из восьми 16-битных ячеек (рис. 5.26). Первое слово -это регистр состояний. Слова со второго по восьмое определяют параметры функций, тип (номер) которой задан в битах OPCODE слова состояния.

Назначение бит слова состояния для большинства функций одинаково. Если бит S (Stop) равен 1, то RISC-процессор остановит вычисления (обработку) дескрипторов этой функции после обработки текущего дескриптора FD. Если бит S = 0, то процессор перей­дет к обработке следующего дескриптора из таблицы.

Бит W (Wrap) определяет последний дескриптор FD в таблице. Если бит W = 1, то после обработки данного дескриптора процессор перейдет к проверке готовности перво­го дескриптора в таблице. Если бит W = 0, то после обработки дескриптора процессор перейдет к проверке следующего дескриптора в таблице.

Если бит I = 1 (Interrupt), то после завершения обработки текущего дескриптора будет выработан запрос на прерывание, но только если это прерывание не замаскировано пользователем. Если бит I = 0, то запрос на прерывание не вырабатывается.

Бит IALL (используется только в FD FIR функций) определяет правило изменения ука­зателя входного аргумента после выполнения очередной итерации. Если бит IALL= 1, то указатель входного аргумента X (или, другими словами, адрес ячейки, содержащей пара­метр X) увеличивается по модулю (М + 1) на число, заданное в битах INDEX после каждой итерации. Если бит IALL = 0, то указатель входного аргумента X увеличивается по модулю (М + 1) на число INDEX, заданное в битах, только после последней итерации.

Биты INDEX задают приращение указателя ячейки X переменной. Если INDEX = 00, то указатель не изменяется. Если INDEX = 01, то указатель изменяется на 1. Если INDEX = 10, то указатель изменяется на 2. Если INDEX = 11, то указатель изменяется на 4. Бит отсутству­ет в слове состояния FD функций MOD, DEMOD и WADD.

Бит PC (используется только в FD FIR функций) определяет правило изменения зна­чения указателя на ячейку таблицы коэффициентов. Если бит PC = 0, то указатель не меняет свое значение при переходе к новому этапу итерации. Если бит PC = 1, то после каждой итерации в ячейку указателя заносится содержимое ячейки CBASE памяти пара­метров, т. е. указатель устанавливается на начало таблицы коэффициентов.

Бит X определяет тип выходных переменных. Если бит X = 0, то в память записывает­ся только вещественная часть результата. Если бит X = 1, то в выходной буфер будут записаны и вещественная и мнимая часть результата. Бит отсутствует в слове состоя­ния FD функций IIR, WADD, FIR1, FIR2 и FIR6.

Реализуемые DSP-функции. Функции FIR1-FIR6. Все функции выполняют вычис­ления базового фильтра с конечной импульсной характеристикой (Finite Impulse Response, FIR), но только с разным типом входных/выходных переменных и коэффициентов (рис. 5.27). Возможны два типа аргументов: вещественный (real) и комплексный (complex). Функция FIR1 применяется в алгоритмах децимации (decimation) и интерполяции входно-

го сигнала .

функция FIR2 - при расчете входных и выходных КИХ-фильтров, функция FIR3 с ве­щественным результатом - при вычислении коррекции ошибок, а с комплексным резуль­татом - в корректоре (equalizer); FIR5 - в дробно-интервальном корректоре (fractionally spaced equalizer), a FIR6 - при расчетах КИХ-фильтров общего назначения.

Функция //R. Функция //R выполняет расчет параметров фильтра с бесконечной им­пульсной характеристикой (Infinite Impulse Response, // R) и вычисление параметров фильтров интерполяции (рис. 5.28). При расчете базового BIQUAD IIR-фильтра исполь­зуются 6 вещественных коэффициентов С, вещественные входные данные X, и резуль­тат представляет собой вещественное число Y(n). На рис. 5.28 буквами Т отмечены блоки задержки.

Функции MOD и DEMOD. Функции MOD (рис. 5.29) и DEMOD (рис. 5.30) выполняют операции модуляции и демодуляции входного сигнала Х(п) с помощью таблиц модуля­ции и демодуляции, которые содержат пары значений Sin conT и Cos conT. Константа AGC при демодуляции может принимать значения от -1 < AGC < +1. Модуляционная и демодуляционная таблицы содержат (К + 1) байт данных и представляют собой наборы пар 16-битных ячеек, у которых в первой ячейке хранится вещественное значение Sin, а во второй - вещественное значение Cos.

Функции LMS. Функции LMS реализуют алгоритм минимизации среднеквадратичной ошибки (Least Mean Square, LMS) и применяются для обновления коэффициентов С; базового FIR-фильтра. Изменение значения коэффициента производится по общей фор­муле. Функция LMS1 используется для улучшения вычислений коррекции ошибки (ЕС update). Отличие в функциях LMS1 и LMS2 заключается в том, что входной аргумент функции LMS2 дополнительно еще увеличивается в 2 раза, как это требуется при обнов­лении значений коэффициентов дробно-интервального корректора (fractionally spaced equalizer).

Входные данные X и коэффициент С должны быть комплексными числами, а масштабирующий коэффициент Е может быть или комплексным, или вещественным числом:

где i=0,k-1

Функция WADD. Функция WADD (Weighted Vector ADDition) выполняет операцию взве­шенного сложения векторов. Исходными данными являются два вещественных вектора Х1 и Х2 и два вещественных коэффициента ά и β. Выходной вектор Y формируется как линейная комбинация входных векторов в соответствии с коэффициентами ά и β:

Y(n) = ά Х1(n) + β Х2(n)

При значения коэффициентов 0≤ ά ≤1 и β=1- ά функция выполняет линейную интерполяцию. Если 0 и = 0, то выполняется масштабирование Y(n) = Х(п). Если = 1 и = -1, то выполняется вычитание векторов Y(n) = Х1(n) - Х2(n).