- •Глава 5 коммуникационные микроконтроллеры и системы на их основе
- •5.1. Общие понятия
- •5.1.1. Семиуровневая модель управления в сетях
- •5.1.2. Функции, реализуемые коммуникационным контроллером
- •5.1.3. Семейство коммуникационных микроконтроллеров мрс860
- •5.2. Организация коммуникационных процессорных модулей в кмк
- •5.2.1. Структура коммуникационного процессорного модуля
- •5.2.2. Контроллеры коммуникационных каналов scc
- •5.2.3. Контроллеры управления smc
- •5.2.4. Контроллеры дополнительных коммуникационных каналов
- •5.3. Поддержка протоколов в коммуникационных
- •5.3.1. Доступ к линиям т1/серт. Поддержка basic isdn
- •5.3.2. Виртуальные каналы и поддержка primary isdn
- •5.3.3. Работа в асинхронных каналах связи
- •5.3.4. Доступ к сетям с пакетной передачей (с протоколами х.25)
- •Алгоритмы работы сети. Процесс установления соединения
- •Процесс разъединения
- •Процесс передачи сообщения
- •5.3.5. Доступ к сетям ethernet
- •5.3.6. Протоколы, поддерживаемые на уровне загружаемого микрокода
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).