Временной контроль сигналов управления для асинхронных протоколов

При работе в нормальном режиме для асинхронных протоколов сигнал становится ак­тивным, когда данные для передачи загружены в буфер FIFO и наступает отрицательный перепад тактового сигнала TCLK. Выводы , могут использоваться для контро­ля передачи так же, как и в синхронных протоколах. Дополнительно UART-контроллер имеет специальную опцию настройки для контроля передачи с помощью -сигнала.

Если сигнал становится активным, когда сигнал = 0, то передача начинается через два битовых интервала. Если же сигнал = 0, но сигнал =1 и бит CTSS = О, то передача начнется через три битовых интервала. Если же сигнал = 0, но сигнал = 1 и бит CTSS = 1, то передача начнется через два битовых интервала.

Управление буферами FIFO приемника и передатчика. Бит TFL определяет длину буфера FIFO передатчика. Если битТР1 = 0, то используется стандартный размер буфера - 32 байта для SCC1-контроллера и по 16 байт для других SCC-контроллеров. Режим TFL = 1 используется для символьно-ориентированных протоколов, например, UART или BISYNC, и устанавливает размер буфера FIFO в 1 байт. Этот минимальный размер буфера используется для ускорения процесса обработки информации.

Бит RFW определяет ширину ячеек буфера FIFO приемника. Если бит RFW = 0, то размер ячейки буфера равен 32 битам. Данные принимаются бит за битом, пока не будет принято 32 бита информации, только затем они могут быть переданы в память по кана­лам SDMA. Эта конфигурация необходима для протоколов, основанных на HDLC-типе кадра и протокола Ethernet, а также рекомендована для высокоскоростных протоколов «прозрачной передачи». В этом режиме размер ячейки FIFO для SCd-канала равен 32 битам и 16 битам для других каналов SCC.

Режим работы с битом RFW = 1 предназначен для низкоскоростных протоколов «про­зрачной передачи» и для символьно-ориентированных протоколов. Размер ячейки бу­фера устанавливается равным 8 битам, буфер FIFO SCC1 канала имеет размер 8 байт, а у других SCC-каналов размер буфера - 4 байта. Таким образом, принимаемые данные передаются в буферы данных в памяти по 8 бит, не дожидаясь приема всех 32 битов. Этот режим может быть использован для протоколов HDLC, HDLC bus, Apple Talk и Ethernet.

Настройка синхронизации. Бит TXSY определяет взаимную синхронизацию между приемником и передатчиком. Обычно установка этого бита требуется при работе с вне­шним оборудованием, которое поддерживает стандарт Х.21. При работе с обычным сетевым оборудованием бит TXSY = 0 и приемник с передатчиком работают независимо. Если выбран режим с битом TXSY = 1, то передача начнется только через 8 периодов тактовой частоты после начала приема данных. Дополнительно, в режиме прозрачной передачи, если установлен бит RSYN = 1, то приемник предварительно должен быть синхронизирован с частотой входного потока битов и до начала передачи должен быть выставлен активный сигнал = 0.

Бит SYNL используется при настройке режимов работы BISYNC- и Transparent-кон-троллеров и служит для задания длины синхросимволов (табл. 5.17). Формат синхросимволов SYNC1 и SYNC2 для синхронных протоколов обычно задается в регистре син­хронизации DSR. При передаче перед посылкой кадра передатчик добавляет к кадру данных заданное число символов синхронизации. Формат дополнительных синхросим­волов может быть определен в специальных ячейках протокол-ориентированной части памяти параметров SCC-канала.

Назначение битов в регистре синхронизации (рис. 5.37) различно для разных коммуникационных протоколов (табл. 5.18). После системного сброса этот регистр настроен на работу с HDLC-протоколом. Если регистр DSR содержит символы синхронизации, то содержимое регистра всегда передается по правилу «LSB бит - первым».

Бит TCI при значении, равном 1, задает внутреннее инвертирование тактового сигна­ла передатчика перед его использованием схемами SCC-контроллера. В нормальном режиме работы данные выставляются на линию TXD по отрицательному перепаду такто­вого сигнала, а считываются с линии RXD - по положительному перепаду тактового сиг­нала. Установка режима внутреннего инвертирования позволяет выдавать данные на полпериода раньше, т. е. по положительному перепаду тактового сигнала. В данном слу­чае внешним приемником эти же данные будут приняты на один период тактового сигна­ла позже, т. е. по следующему положительному перепаду этого же тактового сигнала. Использование этого режима работы рекомендовано для контроллеров HDLC, Transparent и Ethernet-протоколов при высоких частотах передачи (больше чем 8 МГц), так как этот режим обеспечивает дополнительное время предустановки и настройки рабочей часто­ты для внешнего приемника.

Настройка режимов блока DPLL. Каждый SCC-канал содержит блок DPLL (Digital Phase-Locked Loop), который выполняет кодирование/декодирование данных от SCC-канала. Ниже приведены основные режимы кодирования/декодирования (рис. 5.38).

•RZ: «1» — кодируется высоким уровнем сигнала на битовом интервале; «0» - кодируется низким уровнем сигнала на битовом интервале.

•NRZI MARK: «1» - кодируется отсутствием перепадов и смен состояния сигналов на битовом интервале; «0» - кодируется перепадом сигнала (сменой состояния сигнала на противоположное) в начале битового интервала.

•NRZI SPACE: «1» - смена состояния сигнала на противоположное в начале битового интервала; «0» - нет смен и перепадов сигнала на битовом интервале.

•FMO: «1» - кодируется перепадом сигнала в начале битового интервала; «0» -кодируется перепадом сигнала в начале и в центре битового интервала.

•FM1: «1» - кодируется перепадом сигнала в начале и в центре битового интервала; «0» - кодируется перепадом сигнала в начале битового интервала.

•Manchester: «1» - кодируется отрицательным перепадом сигнала в середине битового интервала; «0» - кодируется положительным перепадом сигнала в середине битового интервала. При этом допускаются перепады сигналов на границах битового интерва­ла, чтобы обеспечить правильную полярность перехода в середине.

•Differential Manchester: «1» - кодируется сменой сигнала в середине битового интервала. Направление перепада должно быть противоположным направлению перепада на предыдущем битовом интервале; «0» - кодируется сменой сигнала в середине битового интервала. Направление перепада должно быть аналогичным направлению перепада на предыдущем битовом интервале.

Настройка блока DPLL на определенный режим работы производится при програм­мировании регистра режима SCC-канала GSMR (табл. 5.19). Биты RENC определяют способ декодирования данных при приеме, а биты TENC - способ кодирования данных при передаче. Способ кодирования NRZ обычно используется SCC-каналами, если блок DPLL не работает.

 

 

Таблица 5.19

Блок DPLL может быть настроен на дополнительное инвертирование выходных дан­ных при передаче, если бит TINV = 1, и на инвертирование входных данных при приеме, если бит RINV= 1. Инвертирование сигналов используется для получения дополнитель­ных способов кодирования. Например, для получения способа кодирования FM1, если выбран способ кодирования FMO, или для получения способа кодирования NRZI SPACE, если выбрано кодирование NRZI MARK.

Обычно преобразование сигналов в DPLL-блоке используется, если канал работает с самосинхронизирующимися кодами, в которых тактовая частота передается внутри сиг­налов данных, т. е. она заложена в специально кодированные данные. Но если пользо­ватель желает работать с данными, которые тактируются отдельной внешней частотой, то режим DPLL может быть выключен. DPLL-кодирование также не применяется, если SCC-контроллер настроен на режим работы с протоколом Ethernet.

При приеме DPLL-блок выделяет тактовую частоту из сигналов данных и передает ее и сами данные на обработку SCC-каналу. При передаче DPLL-блок кодирует данные от SCC-каналов, используя самосинхронизирующее кодирование, и передает их по сети. Для оп­ределения величины битового интервала блок DPLL использует или внешнюю тактовую частоту, или частоту от внутреннего BRG-генератора. Рекомендуется, чтобы тактовая час­тота была в 8, 16 или 32 раза больше, чем частота передачи данных по каналам связи. Биты TDCR и RDCR в регистре GSMR задают коэффициент отношения частоты передава­емых/принимаемых данных и частоты тактирования блока DPLL (табл. 5.20). Если блок DPLL не используется, то все протоколы, кроме UART, работают с коэффициентом 1х. При работе с протоколом UART в асинхронном режиме значения этих битов всегда определяют коэффициенты 8х, 16х или 32х. Выбор значений этих битов зависит от способа кодирования, и обычно приемник и передатчик используют одинаковый коэффициент увеличения TDCR = = RDCR. При использовании коэффициента 8х достигается максимальная скорость обра­ботки данных в контроллере, а коэффициент 32х обеспечивает высокое разрешение и высо­кую надежность приема/передачи данных.

При начале работы блок DPLL находится в режиме поиска и ожидает перепада сигна­ла на линиях данных. Первый перепад вызывает сброс внутренних счетчиков DPLL и начало рабочего режима работы. Далее блок DPLL запускает счетчики и ищет очередной перепад сигнала на линиях данных. Если следующий перепад сигнала обнаружен, то блок DPLL, зная используемый способ кодирования и анализируя значение счетчиков, определяет частоту передаваемых данных.

Биты EDGE определяют, по какому фронту тактового сигнала блок DPLL будет анали­зировать линии данных. Если биты EDGE = 00, то состояние линии данных RXD будет анализироваться и по положительному перепаду тактового сигнала, и по отрицательно­му. При приеме закодированного сигнала блок DPLL должен настроиться на определе­ние значения входных данных в определенных точках, чтобы проверить правильность кодирования данных и определить величину битового интервала. Если EDGE = 01, то только положительный фронт тактового сигнала используется для опроса значения на линии RxD, а если EDGE = 10 - только отрицательный фронт. Если EDGE = 10, то на­стройка DPLL-блока не производится.

В регистре GSMR в бите TSNC пользователь может определить максимально до­пустимый интервал без перепадов сигналов (табл. 5.21). Если счетчик DPLL достиг указанного значения, а перепада сигнала на линии RXD нет, то сигнал несущей такто­вой частоты становится пассивным. Если на линии RXD есть передача, то сигнал несущей частоты активен.

Значение бита TSNC = 01 обычно применяется, если SCC-контроллер работает с про­токолом Apple Talk. Эти биты могут быть использованы в протоколе, чтобы избежать воз­никновения прерываний при изменении состояния сигнала , которое может происхо­дить в течение передачи последовательности синхронизации кадра, которая предшеству­ет открывающему флагу кадра.

Для того чтобы блок DPLL мог заранее настроиться на частоту приема данных, перед кадром данных обычно посылаются специальные символы или преамбулы (preamble), или символы флага, или SYNC-символы синхронизации. Другие же протоколы требуют посылки специальных символов, состоящих из чередующихся битов «1» и «0». При пе­редаче данных каждый SCC-канал может быть настроен на передачу преамбулы. Длину преамбулы определяют значения битов TPL (табл. 5.22) в регистре GSMR, а формат преамбулы определяют значение битов ТРР (табл. 5.23). Значения битов ТРР и TPL иг­норируются, если SCC-канал работает с протоколом UART.

В табл. 5.24 приведены требования к формату и длине преамбулы для различных методов кодирования, соблюдение которых необходимо, чтобы блок DPLL смог распоз­нать несущую частоту.

Бит TEND определяет состояние сигналов на выходах передатчика при пассивном состоянии линии TxD при работе в NMSI-режиме. Если бит TEND = 0, то кодировке под­вергаются только данные кадра, включая все флаги и синхропоследовательности. Когда передачи нет, линия TxD= 1 (высокий уровень). Если бит TEND = 1, то все данные, кото­рые выдаются на линию TxD, кодируются выбранным способом. При пассивном состоя­нии линии передаются закодированные единичные биты IDLE.

Максимальная частота передачи данных, которую может обеспечить блок DPLL при работе в режиме 8х и внешнем кварце в 25 МГц, равна 25 МГц/8 = 3,125 МГц. Таким образом, частота, которая поступает с внешнего входа CLKx или от внутреннего BRG-генератора при работе с 25 МГц контроллером, может быть более 25 МГц, если DPLL работает в режиме 8х, 16х или 32х. Ограничение частоты тактирования SCC-каналов величиной SynCLK/2 не применяется к увеличению частоты блоком DPLL, так как частота для тактирования SCC-каналов формируется внутри, после того как блок DPLL сфор­мирует частоту приемника. Поэтому даже самая быстрая DPLL частота (8х) просто удов­летворяет требованию 1:2.

Настройка режима кодирования в SIR-протоколе. Особый способ кодирования при­меняется в протоколе Serial Infra-RED (SIR). Канальный уровень этого протокола осно­ван на стандарте передачи асинхронного протокола ASYNC HDLC. Для передачи данных по сети используется формат UART-кадра: 1 старт-бит, 8 бит данных, 1 стоп-бит, битов контроля по четности нет (рис. 5.39). При кодировке данных нулевой бит «0» кодируется импульсом шириной 3/16 битового интервала по середине битового интервала, бит 1RP в регистре режима GSMR определяет полярность этого импульса. Единичный бит «1» кодируется битовым интервалом без изменения сигнала. Если бит IRP равен 0, то «0» кодируется импульсом высокой полярности (high), если же IRP = 1, то импульсом отрица­тельной полярности (low). Способ кодирования SIR-протокола поддерживается только на канале SCC2. Для активации этого способа кодирования требуется в битах RDCR и TDCR регистра режима GSMR задать коэффициент увеличения частоты 16х, а бит SIR установить в «1».

Устранение помех и ложных срабатываний. Помехи, которые воздействуют на так­товые сигналы и приводят к неправильному срабатыванию схем приемника и передатчи­ка, являются проблемой систем телекоммуникаций. Системы, которые используют для тактирования своих схем внешние источники тактовых сигналов, особенно подвержены этим ошибкам, которые могут возникать из-за сторонних шумов, из-за подключения/разъе­динения аппаратуры и кабелей или из-за неправильного волнового согласования линий. Каналы SCC-контроллеров в МРС860 содержат специальную схему, которая позволяет обнаруживать «глюк» (glitch) на линиях тактового сигнала, который может вызвать пере­ход SCC-контроллера в неправильное ошибочное состояние. Эта схема позволяет вов­ремя известить систему о проблемах на физическом уровне управления. Схема обнару­живает два типа «глюка». Первый тип (или всплеск) регистрируется, если перепад сигна­ла между уровнями «0» и «1» состояния происходит быстрее, чем за минимальный допу­стимый интервал смены состояния тактового сигнала. Второй тип регистрируется, когда смена состояния тактового сигнала происходит с нормальной скоростью, но присутству­ет большой чрезмерный сторонний шум.

Внутренние схемы блока DPLL пропускают входную частоту через фильтр шумов, что­бы убрать паразитные всплески и оставить один чистый сигнал. Для включения этой схемы в работу в регистре GSMR введен дополнительный бит GDE.

Если этот бит равен 1, то схема обнаружения «глюка» работает нормально и в случае возникновения ошибки будет установлен соответствующий бит в регистре событий SCC-канала. Если этот бит равен 0, то схема обнаружения ошибок выключена и данный режим следует использовать, если каналы тактируются от внутренних источников тактовых сигналов или если тактовая часто­та от внешних источников превышает максимальную частоту работы схемы обнаружения, что составляет 6,25 МГц при частоте кварца 25 МГц.

Механизм прерываний. Управление обработкой прерывания от SCC-каналов про­изводится контроллером прерывания, который входит в состав СРМ, с помощью регист­ров запросов CIPR, регистра маски CIMR и регистра обслуживаемого прерывания CISR.

Если некоторый SCC-канал желает прервать работу центрального процессора, то он должен установить i бит в регистре запросов на прерывание CIPR (табл. 5.25), который соответствует прерыванию от этого канала. При желании пользователь может замаски­ровать прерывание от выбранного SCC-канала, сбросив в «0» i бит в регистре маски CIMR. Если же центральный процессор в текущий момент времени занят обработкой прерывания от выбранного SCC-канала, то в регистре обслуживаемых прерываний CISR будет установлен в «1» i бит, соответствующий этому SCC-каналу. Во всех регистрах обслуживания прерывания i бит соответствует одному и тому же SCC-контроллеру.

Взаимные приоритеты запросов на прерывание между четырьмя SCC-каналами в СРМ программируются в регистре конфигураций контроллера прерываний CICR (рис. 5.40). Следует отметить, что регистр CICR производит настройку приоритетов толь­ко SCC-каналов и не влияет на приоритеты других каналов ввода/вывода. Имеется четы­ре позиции приоритетов (а, Ь, с, d), самая приоритетная - позиция а.

 

Биты SCCaP, SCbP, SCcP и SCdP определяют, какой SCC-канал занимает выбранную позицию в таблице приоритетов (табл. 5.26).

Бит SPS определяет абсолютные приоритеты запросов от SCC-каналов среди запро­ сов от других модулей контроллера (табл. 5.27). Если бит SPS = 0, то все запросы от SCC-каналов сгруппированы вместе и имеют высокий приоритет относительно других запросов. Если бит SPS = 1, то запросы от SCC-каналов распределены по таблице при­оритетов среди других запросов.

Остальные биты в регистре CICR определяют работу самого контроллера прерыва­ния. Бит IEN при значении IEN = 1 разрешает работу контроллера прерывания, а при значении IEN = 0 - запрещает.

Биты IPL определяют уровень приоритета запросов на прерывание от контроллера прерывания к центральному процессору. Уровень 0 соответствует самому высокому при­оритету, а уровень 7 - самому низкому. Обычно для нормальной работы механизма пре­рывания устанавливают уровень приоритетности запросов от контроллера прерывания равным IPL = 4.

Биты HP определяют, запрос на прерывание от какого модуля будет иметь самый высокий приоритет при обработке его контроллером прерывания. Значения этих битов могут динамически меняться во время работы. Обычно самым приоритетным устанавли­вают запрос с вектором прерывания, равным 11111 (1F), от линии 15 порта С.

Регистры событий. При работе в канале связи каждого канала ввода/вывода проис­ходит достаточно много различных событий, каждое из которых может требовать преры­вания и вмешательства центрального процессора для анализа сложившейся ситуации.

 

 

Так, в контроллере МРС860 регистрируется до 13 событий, которые могут требовать вы­ставления запросов на прерывание (рис. 5.41, 5.42). Набор событий в канале связи зави­сит от типа протокола, с которым работает SCC-контроллер. Для регистрации этих собы­тий каждый SCC-канал имеет собственный регистр событий SCCE. При регистрации некоторого события в SCC-канале происходит установка бита, соответствующего этому событию, в регистре SCCE.

Установка хотя бы одного бита события в этом регистре приводит к немедленной установке бита прерывания от данного SCC-канала в регистре регистрации прерываний CIPR. Прерывание от SCC-канала не регистрируется, если содержимое регистра SCCE равно 0. Следует помнить, что прерывание от SCC-канала в регистре CIPR будет обна­ружено контроллером прерываний, только если оно разрешено в регистре маски CIMR.

Обработка регистров событий всех каналов производится независимо друг от друга. При обработке прерывания от SCC-канала следует сразу же сбрасывать соответствую­щий бит события в регистре SCCE, чтобы контроллер прерывания мог зарегистрировать и обработать запросы на прерывания от других событий. Сброс бита события в регистре SCCE производится записью в этот бит «1».

Прерывание от любого события может быть замаскировано в регистре маски SCCM. Расположение битов событий в регистрах SCCE и SCCM аналогично. При включении питания и при системном сбросе регистр регистрации событий SCCE равен 0 и все пре­рывания от событий, происходящих в SCC-канале, замаскированы.

Изменение состояния на линии приема RXD, т. е. идет прием данных или идет прием IDLE-последовательностей холостого хода, регистрируется в бите IDL. Но для того, что­бы узнать новое состояние сигналов на линии RXD, пользователь должен прочитать со­держимое регистра статуса SCCS.

Событие приема по линии RXD BREAK символа будет зарегистрировано в бите BRK регистра событий SCCE. Событие начала приема по линии RXD BREAK последователь­ности (при этом начало каждого нового BREAK-символа в последовательности отдельно не регистрирует) будет зарегистрировано в бите BRKs регистра событий SCCE. Событие обнаружения на линии RXD конца BREAK-последовательности (получения первого «единичного бита) будет зарегестрирована в бите.

 

Если во время передачи данных в SCC-канале возникла ошибка или потери -сигнала, или незаполнения буфера (underrun), то это событие регистрируется в бите ТХЕ := 1. Transparent-контроллер регистрирует только возникновение ошибки underrun. Для SPI-контроллера ошибка underrun регистрируется только в slave-режиме работы.

UART-контроллер проверяет, является ли каждый принимаемый символ контрольным служебным символом, сравнивая формат символа с заданными форматами служебных символов. Если некоторый символ распознан как контрольный, и в ячейке таблицы слу­жебных символов для него установлен бит R = 1, то символ не сохраняется в буфере памяти, а только записывается в регистр временного хранения RCCR, и это событие регистрируется в бите CCR.

В BISYNC-контроллере прием по каналу связи одного из заранее определенных слу­жебных символов, который записывается в буфер данных в памяти, регистрируется в ре­гистре событий установкой бита RCH. В Transparent-контроллере в этом бите регистри­руется событие приема одного символа данных.

Если корректный символ данных был принят во внутренний регистр SCC-канала, но RISC-контроллер не обнаружил свободного буфера BD для передачи в него данных, то регистрируется состояние занятости и устанавливается бит события BSY := 1. При приеме символа в UART-контроллере свободный буфер должен быть подготовлен не позднее середины приема стоп-бита, иначе принятый символ будет отброшен из-за возникшего состояния занятости. Приемник при этом переходит в режим поиска следующего кадра данных (режим «охоты»).

Если при приеме данных текущий буфер заполнился, то устанавливается бит RX = 1 в регистре SCCE и текущий буфер закрывается. Регистрация этого события происходит в UART-контроллере и в UART SMC-контроллере не раньше середины приема первого стоп-бита последнего символа в буфере. В Transparent-контроллере событие регист­рируется не раньше чем через 10 периодов тактового сигнала после приема последнего бита последнего байта данных из текущего буфера.

Событие завершения приема полного кадра данных регистрируется установкой бита RXF. В контроллерах HDLC и ASYNC HDLC этот бит устанавливается не раньше, чем через два периода тактового сигнала после окончания приема последнего бита, закры­вающего флага кадра.

Событие приема одного из буферов данных (но не полного кадра или не полного законченного сообщения в DDCMP-контроллере) регистрируется установкой бита RXB в регистре событий, обычно это имеет место, если в слове состояния дескриптора текущего буфера приема установлен бит I = 1 (Interrupt), т. е. пользователь настроил контроллер на прерывание после приема этого буфера данных. В контроллерах SPI и I2C это событие регистрируется, когда последний символ записан в буфер приемника, и этот буфер закрыт.

Событие передачи буфера данных регистрируется в бите ТХ. Если в слове состояния текущего буфера UART-контроллера был установлен бит CR = 1, то бит ТХ будет уста­новлен в «1», когда передатчик начнет передачу последнего символа из буфера FIFO. Если же бит CR=0 или с UART-протоколом работает канал SMC, то бит ТХ будет установ­лен, когда последний символ из буфера данных будет передан в буфер FIFO передатчи­ка SCC-канала. В BISYNC-контроллере этот бит устанавливается, когда началась пере­дача последнего бита данных или поля BCS. В контроллере SMC, работающем с прото­колом Transparent, если переданный буфер не был последним буфером кадра, то уста­новка бита ТХ производится при записи в буфер FIFO передатчика последнего байта из буфера данных, и пользователь должен будет ждать два периода передачи символа, чтобы быть уверенным, что передача прошла успешно. Если же это был последний бу­фер текущего кадра, то бит устанавливается не раньше, чем начнется передача после­днего символа кадра, и пользователь должен будет ждать один период передачи симво­ла, чтобы быть уверенным, что передача прошла успешно.

Если текущий буфер данных был передан по каналу связи и если в слове состояния переданного буфера был установлен бит прерывания l(lnterrupt), то устанавливается бит ТХВ. Если это был не последний буфер кадра или контроллер настроен на работу с интерфейсом SPI, то установка бита ТХВ производится при записи в буфер FIFO пере­датчика последнего байта из буфера данных. Если же это был последний буфер текуще­го кадра, то бит устанавливается не раньше, чем начнется передача предпоследнего бита последнего байта кадра. В контроллерах HDLC и ASYNC HDLC это будет байт зак­рывающего флага, в Transparent-контроллере - последний байт данных. В контроллере BISYNC бит события ТХВ устанавливается после передачи последнего бита кадра. В контроллерах SPI и I2С бит события ТХВ устанавливается после передачи последнего символа кадра в буфер FIFO передатчика, и пользователь должен будет ждать два пери­ода передачи символа, чтобы быть уверенным, что передача прошла успешно.

Бит GLr устанавливается, когда внутренняя схема DPLL блока обнаруживает «глюк» на линии тактового сигнала приемника.

Бит GLt устанавливается, когда внутренняя схема DPLL блока обнаруживает «глюк» на линии тактового сигнала передатчика.

Бит АВ устанавливается, когда блок автоподстройки частоты обнаруживает отличие в частоте передачи и в частоте работы приемника, и процессор должен произвести запись новых значений в регистры настройки BRG-генератора.

Бит GRA устанавливается, когда передатчик, завершив передачу текущего буфера, закончил выполнение команды GRACEFULL STOP TRANSMIT. Если передатчик в теку­щий момент времени не вел передачу, то бит GRA устанавливается немедленно.

Изменение состояния (контроллер начинает или заканчивает прием символов фла­га) на линии приема RXD контроллера HDLC регистрируется в бите FLG. Но для того чтобы узнать новое состояние сигналов на линии RXD, пользователь должен прочитать содержимое регистра статуса SCCS.

Изменение состояния несущей частоты, генерируемой DPLL-блоком, регистрируется в бите DCC. Но для того чтобы узнать новое состояние сигналов на линии RXD, пользо­ватель должен прочитать содержимое регистра статуса SCCS.

Если SPI-контроллер, работая в режиме master, обнаружил активный сигнал SPISEL от другого master-устройства, то регистрируется ошибка режима multimaster и устанав­ливается бит MIME := 1.

Программирование SCC-контроллера. Буферные дескрипторы. Данные для каждо­го канала хранятся в буферах данных. Для управления обменом данными с памятью ис­пользуются параметры, хранящиеся в буферных дескрипторах в области parameter RAM в двухпортовой памяти (dual-port RAM). Месторасположение BD в памяти для каждого ка­нала и распределение их между каналами определяется пользователем. Например, для передатчика канала SCC1 можно выделить 200 BD, а для приемника - только 24 BD.

Все буферные дескрипторы для приема и передачи имеют единый стандартный фор­мат в 4 слова (рис. 5.43), который одинаков для всех используемых коммуникационных протоколов. Первое слово - регистр статуса и контроля, формат которого зависит от конкретного выбранного протокола. Второе слово определяет длину данных или размер текущего буфера данных. Максимальный размер составляет (64 К-1) байт. Третье и чет­вертое слова содержат 32-битный указатель на расположение первой ячейки буфера данных в памяти.

Для упорядочения доступа к буферам в СРМ все BD сгруппированы в таблицу, в кото­рой хранятся ссылки на расположение в памяти отдельных буферов (рис. 5.44). Пользова­тель может запрограммировать стартовый адрес таблицы указателей BD во внутренней памяти контроллера и количество BD в таблице для передачи или для приема для каждого канала. Для ограничения числа BD в таблице в слове состояния последнего BD пользова­тель устанавливает бит конца таблицы W := 1. Обнаружив этот бит, RISC-контроллер пере­ходит на работу с первым дескриптором в таблице.

При приеме и передаче данные из буферов памяти через SDMA-каналы передаются во внутренние FIFO-буферы канала. Каждый SCC-канал имеет по два SDMA-канала, один из них используется при передаче данных в память, другой - при чтении данных из памя­ти. Обычно каналы хранят таблицу BD во внутренней двухпортовой памяти, а сами буфе­ры данных - во внешней памяти. Но существует возможность хранить небольшие по размеру буферы данных, например, буферы каналов SPI и PIP, в неиспользуемых обла­стях внутренней двухпортовой памяти. При любом варианте размещения буферов дан­ных доступа к ним будет осуществляться по внутренней шине контроллера.

При доступе к внешней памяти всегда используются специальные функциональные коды FC1-FC3, которые определяют тип адресного пространства. Функциональные коды для каждого канала определены в ячейках RFCR (при приеме) и TFCR (при передаче), которые расположены в протокол независимой области parameter RAM выбранного ка­нала. Пользователь может изменять значения в этих регистрах, только когда уверен, что канал не обращается к внешней памяти в текущий момент времени.

Для некоторых протоколов поддерживается мультибуферная структура (кадр может за­нимать несколько буферов). При этом обычно в слове состояния BD бит F (First) указывает первый буфер кадра данных и бит L (Last) - последний буфер кадра. Если кадр занимает несколько буферов, то не обязательно предварительно готовить в памяти все буферы перед началом приема/передачи кадра. Можно подготовить/освободить несколько буферов для начала работы с кадром, а в ходе работы параллельно подготавливать следующие буферы и их дескрипторы. Однако при такой конфигурации буферов возможно возникновение оши­бок незаполнения (underrun), если центральный процессор не успеет подготовить для пере­датчика следующие буферы данных текущего сетевого кадра, или ошибок переполнения (overrun или busy error), если центральный процессор не успеет освободить новые буферы при приеме следующих частей кадра или нового кадра.

Выборка из таблицы BD выполняется по круговой системе. После включения канала в работу RISC-контроллер опрашивает первый BD в таблице. Если буфер, соответствую­щий этому дескриптору, готов, то он обрабатывается. При обработке текущего буфера RISC-контроллер периодически опрашивает готовность следующего буфера. Алгоритм опроса зависит от конфигурации канала. Если после обработки текущего буфера N сле­дующий буфер N+1 не готов к обработке (не заполнен для передачи или не освобожден для приема), то возникает ошибка переполнения (overrun) при приеме и ошибка неза­полнения (underrun) при передаче. В этой ситуации RISC-контроллер будет ждать готовности N+1 буфера и не перейдет к проверке готовности N+2 буфера, даже если он уже готов к обработке.

 

 

Если следующий буфер готов к обработке, то RISC-контроллер приступает или к его передаче, или к его заполнению при приеме. При переходе к новому буферу контроллер проверяет в слове состояния текущего буфера бит последнего BD в таблице W (Wrap). Если этот бит установлен, то после текущего буфера будет прове­ряться готовность первого BD в таблице. Если этот бит равен 0, то будет обрабатываться следующий по порядку BD в таблице.

Каждый SCC-контроллер содержит собственный FIFO для передачи данных и FIFO для приема данных. Наличие дополнительной памяти в виде FIFO позволяет согласовы­вать по скорости работы внутренние каналы передачи данных по шинам контроллера и скорости передачи данных по сети, а также позволяет избежать потерь данных из-за переполнения буферов каналов. У МРС860 в СРМ-модуле объем FIFO не зависит от используемого протокола и составляет по 16 байт для приема и передачи у каналов SCC2-SCC4 и по 32 байта для приема и для передачи у канала SCC1. Размер буферов FIFO каналов SMC, а также портов SPI и I2C составляет по два символа для приема и передачи. В контроллере МРС860 порт PIP имеет FIFO приема и передачи размером по одному символу каждый.

При передаче данных бит готовности буфера для передачи R := 1 (Ready) устанав­ливается центральным процессором. Данные из этого буфера RISC-контроллер пере­дает в буфер FIFO канала передачи. По окончании передачи всех данных из буфера RISC-контроллер сбрасывает бит R := 0. Таким образом, дважды содержимое одного буфера в нормальном режиме работы не передается. Но у СРМ существует одно ис­ключение. В слове состояния BD пользователь может установить бит повторной пере­дачи СМ := 1 (Continuous Mode), при этом если RISC-контроллер снова через цикл оп­роса обратится к этому буферу, то его содержимое будет повторно передаваться, даже если бит готовности R = 0.

В режиме приема центральный процессор освобождает буфер для приема новых данных и в слове состояния BD этих буферов устанавливает бит пустого буфера Е := 1 (Empty). При приеме данных RISC-контроллер находит пустой буфер и записывает в него данные из буфера FIFO канала приемника. Заполненный буфер закрывается, а RISC-контроллер устанавливает бит занятого буфера Е := 0 и переходит к заполнению очеред­ного буфера. Если текущий буфер заполнен, а следующий еще не освобожден централь­ным процессором, то генерируется ошибка занятости (busy error).

 

Таким образом, при приеме данных буфер считается занятым, пока центральный про­цессор не обработает его данные и не установит бит незанятости буфера Е := 1. В нор­мальном режиме RISC-контроллер не будет записывать новые данные в этот буфер, пока он не будет отмечен как пустой. Но в СРМ пользователь может установить в слове состояния этого буфера бит повторной записи СМ := 1 (Continuous Mode), и RISC-кон­троллер при повторном обращении к этому буферу будет записывать новые данные по­верх старых, даже если буфер отмечен как занятый Е = 0.

Когда буфер весь заполнен при приеме или весь передан при передаче и в его слове состояния установлен бит прерывания I = 1, RISC-контроллер посылает прерывание цен­тральному процессору, чтобы он мог обрабатывать данные этого буфера при приеме или заполнять буфер новыми данными при передаче. Прерывание может быть также передано CPU, если при работе с буфером произошла одна из возможных ошибок. Бо­лее точная причина ошибки будет установлена в регистре событий (events) SCC-канала и указана в слове состояния текущего буфера.

Существует исключение в правилах обработки буфера при передаче в СРМ. При нор­мальном алгоритме опроса готовности буфера к передаче RISC-контроллер анализиру­ет бит готовности буфера R каждые 8-32 периода тактового сигнала. Но пользователь может заставить RISC-контроллер начать обработку буфера немедленно, не ожидая, когда наступит время нового опроса готовности бита R у данного буфера. Для чего пользова­тель должен установить бит R := 1 в слове состояния BD этого буфера и установить бит TOD := 1 в регистре TODR канала SCC (рис. 5.45). Установка бита TOD := 1 повышает приоритет текущего буфера и заставляет RISC-контроллер начать немедленно его обра­ботку. При нормальном алгоритме опроса готовности буфера бит TOD = 0.

Механизм программирования бита TOD позволяет повысить интенсивность передачи данных и часто применяется в протоколах, которые имеют временные ограничения на максимальный интервал между кадрами. Однако использование такого механизма мо­жет оказать негативное влияние на передачу данных, которые уже находятся в буфере FIFO передатчика. Поэтому рекомендуется применять программирование регистра TODR канала SCC, только когда буфер данных уже подготовлен и нет передачи на канале в текущий момент времени. Установка бита TOD := 1 в новом буфере не даст желаемого результата, если в текущий момент времени ведется передача из другого буфера, по­скольку вначале будет закончена передача из старого буфера, а затем будет опраши­ваться бит готовности нового буфера.

Форматы слова состояния буферного дескриптора. Форматы слова состояния бу­ферного дескриптора приемника для различных коммуникационных протоколов приве­дены в табл. 5.28, 5.29.

При приеме биты с 15-го по 12-й и бит 9 заполняются пользователем перед началом работы с контроллером. Они содержат информацию об общих правилах обработки бу­фера при приеме. Биты с 11-го по 0-й часто называют битами статуса принятого или переданного кадра. Биты 11 и 10 обычно заполняются при приеме и определяют тип записанной в буфер информации. В биты с 8-го по 2-й записываются коды ошибок, возникших при приеме в кадре данных, и зависящие от типа коммуникационного прото­кола. В биты 1 и 0 записывается код ошибки, возникшей при

приеме в канале связи или аппаратуре.

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

Ниже перечислены биты общего назначения, которые определяют правила обработ­ки и состояние текущего буфера BD.

•Бит пустого буфера Е (Empty) устанавливает в «1» центральный процессор после того, как обработает данные из этого буфера, и буфер можно использовать для приема новых данных. Бит Е = 0 записывает в слово состояния RISC-контроллер после заполнения буфера данными из сети.

•Бит заполненного буфера R (Ready) устанавливает центральный процессор после того, как закончит подготовку в буфере данных для передачи по сети. Этот бит по­стоянно анализируется RISC-контроллером для начала передачи новых данных и
сбрасывается (R = 0) после передачи всех данных из этого буфера.

•Бит последнего буфера W (Wrap), равный 1, сообщает RISC-контроллеру, что текущий буфер - это последний буфер, выделенный этому каналу ввода/вывода, и после его обработки необходимо переходить для работы к первому элементу BD в таблице буферных дескрипторов.

•Бит прерывания I (Interrupt), равный 1, вызывает установку в регистре событий данного канала ввода/вывода бита запроса на прерывание RX или RXB при полном запол­нении буфера при приеме данных и бита запроса на прерывание ТХ или ТХВ при
передаче всех данных из буфера в сеть.

•Бит продолжения работы CM (Continues Mode), равный 1, определяет, что содержимое этого буфера может быть передано в сеть, даже если не установлен бит готовности буфера R = 0, или что в этот буфер можно записывать данные при приеме ,

даже если не установлен бит пустого буфера Е = 0.

Далее перечисленная группа битов регистрирует возникновение аппаратных оши­бок при работе с любым из коммуникационных протоколов и заполняется после завер­шения обработки текущего буфера.

•Бит СТ (CIS Lost), равный 1, регистрирует ошибку, связанную с потерей сигнала = 0 при передаче данных из текущего буфера.

•Бит CD (Carrier Detect Lost), равный 1, регистрирует ошибку, связанную с потерей сигнала = 0 при приеме данных в этот буфер.

•Бит переполнения буфера OV (Overrun), равный 1, регистрирует ошибку, связанную с переполнением буфера FIFO приемника канала ввода/вывода из-за несогласования скорости работы сети и скорости работы каналов SDMA, по которым данные из FIFO пересылаются в память.

•Бит незаполнения буфера UN (Underrun), равный 1, регистрирует ошибку, которая возникает при передаче кадра данных, занимающего несколько буферов, когда передатчик передал всю информацию из буфера FIFO, а новые данные для передачи еще не поступили по каналам SDMA.

Следующий набор битов определяет содержимое буферов.

•Бит контрольного символа С (Control), равный 1, указывает, что последний принятый в буфер символ является контрольным символом.

•Если бит В (BCS received) равен 1, то последний принятый байт в буфере данных содержит контрольную сумму блока (BCS) или части кадра данных.

•Бит адреса A (Address), равный 1, при передаче указывает, что все данные из буфера должны быть переданы как адреса, а при приеме указывает, что первый принятый символ в буфере - это адрес.

•Бит совпадения адреса AM (Address Match) указывает, содержимому какого адресного регистра: UADD1 (если бит AM = 1) или UADD2 (если бит AM = 0) равен адрес в приня­том пакете.

•Биты первого F (First) и последнего L (Last) буферов используются в протоколах, где кадр данных может занимать несколько буферов, для указания первого (если битF = 1) и последнего буфера кадра (если бит 1 = 1). Указание первого и последнего буферов в кадре необходимо для организации прерываний при начале и конце об­работки всего кадра данных.

•Если бит В (BCS Enable) равен 1, то при работе с протоколом BISYNC содержимое буфера участвует в вычислении контрольной суммы BCS.
Если бит В = 0, то содержи­мое буфера исключается из подсчета контрольной суммы.

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

•Если бит BR (Break received) равен 1, то при приеме данных в текущий буфер была получена BREAK-последовательность.

•Если бит FR (Frame Error) равен 1, то при приеме кадра данных была обнаружена ошибка в формате кадра. Например, UART-контроллер принял кадр без стоп-битов.

•Если бит PR (Parity Error) равен 1, то при приеме кадра данных была обнаружена ошибка проверки четности/нечетности.

•Если бит ID (IDLE received) равен 1, то текущий буфер был закрыт при получении максимально возможного запрограммированного числа IDLE-символов «холостого хода».

•Если бит DE (DPLL error) равен 1, то при приеме данных в буфер блоком DPLL была обнаружена ошибка в кодировании данных. Например, при заданном способе кодирования данных перепад сигнала произошел не в центре битового интервала, а на его крае. Обнаружение этой ошибки дополнительно позволяет избежать потери данных из-за сбоя в синхронизации приемника и передатчика.

•Если бит LG (Lenght Violation) равен 1, то принят кадр данных, длина которого превышает максимально допустимую запрограммированную для данного канала ввода/вывода длину принимаемых кадров. При этом в буфер будет записана только часть кад­ра, размер которой равен установленному пределу.

•Если бит АВ (Abort received) равен 1, то при приеме кадра в буфер была получена ABORT-последовательность минимум из семи последовательных единиц.

•Если бит NO (Nonoctet Aligned Frame) равен 1, то принят кадр данных, длина которого не кратна 8 битам.

•Если бит CR (CRC Error) равен 1, то получен кадр с ошибкой при проверке поля конт­рольной суммы кадра CRC или поля контрольной суммы части кадра (блока) BCR.

•Если бит SH (Short Frame) равен 1, то принят кадр, длина которого меньше минимальной длины кадра, установленной для данного канала ввода/вывода.

•Если бит CL (Collision) равен 1, то текущий буфер был закрыт из-за обнаружения коллизии при приеме данных.

•Если бит ME (Multimaster Error) равен 1, то текущий буфер был закрыт, поскольку контроллер SPI, работая в текущий момент времени как master-станция, обнаружил сигнал SPISEL от другой станции, действующей в таком же режиме.

•Если бит DL (OLE character error) равен 1, то BISYNC-контроллер, работая в прозрачном режиме, принял служебный символ DLE, но следующий символ не был ни одним из установленных контрольных символов.

Опишем набор битов, предназначенных для управления передачей данных из теку­щего буфера.

•Если бит Р (Preamble) равен 1, то перед передачей в канал связи содержимого буфера в канал передается символ преамбулы, которая служит разделителем между передачей двух буферов и обеспечивает синхронизацию приемника и передатчика.

•Если бит NS (No Stop Bit) равен 1, то UART-контроллер передает данные из этого буфера, не добавляя к ним единичные стоп-биты.

•Если бит CR (CIS Report) равен 1, то при передаче двух соседних буферов данных между ними будет передана комбинация из трех битов idle и сброшен сигнал . Потеря этого сигнала будет нормально зафиксирована в бите СТ слова состояния этого буфера BD. Если бит CR = 0, то передача двух соседних буферов ведется без пауз и сигнал может не сбрасываться, таким образом, бит СТ может быть не установлен, как положено по окончании передачи данного буфера.

•Если бит ТС (Тх CRC) равен 1 и если в BD установлен бит 1_=1, то после передачи последнего байта данных кадра контроллер передает в канал контрольную сумму кадра. Если бит ТС = 0, то контрольная сумма не передается. При этом контроллер HDLC может после передачи всех данных передавать закрывающий флаг. Отсутствие в кадре данных поля контрольной суммы может использоваться для тестирования работы приемника.

`•Если бит ТВ (Тх BCS) равен 1 и если в BD установлен бит L=1, то после передачи последнего байта данных кадра BISYNC-контроллер передает в канал контрольную сумму блока. Если бит ТВ = 0, то контрольная сумма не передается. При этом контроллер может после передачи всех данных передавать символы синхронизации или символы idle.

•Если бит BCR (BCS Reset) равен 1, то перед передачей текущего буфера сбрасывает­ся счетчик контроля BCS суммы блока. Обычно это выполняется при передаче новогоблока данных текущего кадра из нового буфера. Если бит равен 0, то сброс счетчиков не производится.

•Если бит TD (Transmit DLE) равен 1, то перед передачей этого буфера данных BISYNC-контроллер передает в канал служебный символ DLE.

•Если бит TR (Transparent Mode) равен 1, то BISYNC-контроллер после передачи текущего буфера переходит в режим прозрачной передачи. При возникновении ошибки незаполнения буфера underrun контроллер посылает в канал пары символов DLE-SYNC для поддержания синхронизации в канале связи. Если бит TR = 0, то после передачи текущего буфера контроллер переходит в нормальный режим работы и при возникновении ошибки underrun передает в канал символы синхронизации SYNC.

•Если бит PAD (Short Frame Padding) равен 1 и в слове состояния буфера установлен бит L = 1, то Ethernet-контроллер после передачи всех данных текущего кадра допол­няет короткие кадры заполнителем PAD, пока длина кадра не станет равной минимальной установленной длине кадра для данного контроллера. Если бит PAD = 0 и бит L = 1, то добавление заполнителя не производится.

Следующие перечисленные биты устанавливаются Ethernet-контроллером после передачи текущего буфера данных,

•Бит DEF (Defer Indication) устанавливается, если при передаче текущего кадра была обнаружена коллизия.

•Бит НВ (Heartbeat) устанавливается, если коллизия не произошла в течение 20 периодов тактового сигнала передатчика после завершения текущей передачи.

•Бит LC (Late Collision) устанавливается, если коллизия произошла после передачи определенного в контроллере (56 или 64) числа байтов. Передача прерывается. Минимальная длина кадра в Ethernet-протоколе равна 64 байтам, поэтому после успеш­ной, без коллизий, передачи такого кадра возможно возникновение поздней коллизии,которая характерна для протяженных сетей и связана со временем распространения сигналов по кабелю и их задержки в повторителях.

•Бит RL (Retransmission Limit) устанавливается, если контроллер превысил установленное число попыток повторного выхода в сеть после очередного обнаружения коллизии.Обычно число попыток равно 16.

•Четыре бита RC (Retry Count) хранят число повторных попыток выхода в сеть при возникновении коллизии, которые были сделаны до проведения успешной передачи кадра.

•Бит CSL (Carrier Sence Lost) устанавливается, если при передаче кадра была обнаружена потеря несущей частоты, т. е. нарушена кодировка данных, например, при ман­честерском кодировании.

При работе с многоканальным QMC-протоколом вместе с основными стандартными битами в слове состояния буферных дескрипторов используются дополнительные биты.

•Специальный бит UB (User Bit) используется при работе с QMC-протоколом. Пользо­ватель самостоятельно определяет назначение этого бита, который может служить, например, флагом обмена между протоколами верхних уровней управления, пока буфер данных обрабатывается в процессоре. Коммуникационный процессор не работает с этим битом.

•При передаче биты PAD определяют число символов IDLE (0xFF) или FLAG (0x7E),которые передаются после закрывающего флага. Тип символа определяется значением бита IDLM в регистре режима CHAMR контроллера QMC. Прерывание ТХВ будет выработано только после передачи заданного числа этих символов. Если биты PAD = 0,то прерывание будет выработано сразу после передачи закрывающего флага. Число
символов PAD зависит от размера ячейки буфера FIFO и числа занимаемых временных
слотов, например, число PAD = (размер ячейки FIFO/число временных слотов). Таким
образом, после кадра данных передается (PAD+1) число символов флага.

Протокол-независимая часть памяти параметров. Каждый SCC-канал имеет свою соб­ственную память параметров (parameter RAM), которая состоит из двух частей. В первой части (протокол-независимая часть) хранятся параметры настройки SCC-канала, общие для всех каналов. Во второй (протокол-ориентированной) хранятся параметры настройки SCC-канала на работу с определенным протоколом. Содержимое области parameter RAM может быть прочитано пользователем и CPU в любое время. Параметры, которые должны быть проинициализированы пользователем, необходимо записать до момента включения SCC-канала в работу.

Для каждого SCC-канала во внутренней двухпортовой памяти выделена своя область адресного пространства. Начальные адреса памяти, отведенной для каждого канала, фик­сированы и известны пользователю. В контроллере МРС860 (табл. 5.30) смещение (offset) канала parameter RAM от базового адреса SCC base address составляет 0 байт.

Внутри область parameter RAM разделена на две части: протокол-независимую (сме­щение SCC base+OxOO) и протокол-ориентированную независимую (смещение SCC base+0х30). Формат протокол-независимой памяти приведен в табл. 5.31.

Переменные RBASE и TBASE содержат базовый адрес начала таблицы буферов дескрипторов для приема (RxBD) и для передачи (TxBD). В СРМ таблицы BD могут распола­гаться в любом месте в двухпортовой памяти и иметь размер, который определяет сам пользователь (только установка бита W = 1 в слове состояния BD закрывает таблицу BD). Переменные RBASE и TBASE должны содержать значения, кратные 8.

Каждый SCC-канал имеет переменную MRBLR, определяющую максимальное число байт, которые канал может записать в буфер приема перед переходом на следующий пустой буфер. Канал может записать в буфер меньшее число байт, например, при закры­тии буфера из-за ошибки приема, но никогда не сможет записать больше данных, чем указано в MRBLR. Поэтому пользователь должен подготавливать буферы приема разме­ром не меньше, чем величина, указанная в байтах ячейки MRBLR. Изменения, которые пользователь вносит в переменную MRBLR во время работы канала, вступают в силу только тогда, когда SCC-канал переходит к обработке нового буфера BD, т. е. на работу текущего BD изменения не оказывают влияния.

Размер буфера при передаче может быть любым. Общее число байт в буфере для передачи указывается в поле длины буфера во втором слове BD.

Переменные RBPTR и TBPTR указывают адреса текущих обрабатываемых буферов BD во внутренней памяти. После системного сброса или достижения конца таблицы в эти переменные записываются значения RBASE и TBASE соответственно, а далее переход к следующему буферу означает смещения +0x08 (например, RBPTR: = RBPTR + 0x08).

Регистры функциональных кодов RFCR и TFCR имеют одинаковый формат (рис. 5.46) и определяют функциональные коды для приемников и передатчиков SCC. В битах АТЗ-АТ1 содержится код, который будет выставлен на внешних контактах функциональных кодов, чтобы идентифицировать тип доступа к памяти, когда SDMA-канал контроллера обратится к буферам данных, расположенным в памяти. Если в этих битах записан код 1, то канал SDMA обращается к памяти в режиме прямого доступа.

 

Биты ВО регистров RFCR и TFCR (табл. 5.31) определяют порядок передачи байтов в словах при обмене по сети. Если пользователь изменил значение этих битов при пере­даче текущего кадра, то это изменение окажет влияние только при передаче следующе­го кадра данных в протоколах Ethernet, HDLC и Transparent или следующего буфера дан­ных для других протоколов.

Остальные параметры используются только RISC-контроллером и могут потребоваться пользователю лишь при отладке. Ячейки RX-указатель, ТХ-указатель заполняются для SDMA-канала и указывают адрес следующей ячейки данных в буфере данных, которая должна быть записана/прочитана в режиме SDMA. Счетчики Rx и Тх - это вычитающие счетчики, значение которых уменьшается на единицу при передаче каждого байта по каналу SDMA. Счетчик Rx инициализируется значением MLBR, а счетчик Тх - значением из поля длины BD передачи.

Инициализация SCC-каналов. После включения питания все регистры настроек SCC-контроллера находятся в исходном состоянии (состоянии после системного сброса) и для того, чтобы настроить SCC-канал для приема/передачи информации, пользователь должен записать в эти регистры коды настроек. Основные этапы программирования ре­гистров настроек каналов ввода/вывода приведены ниже.

1.Настроить регистры параллельных портов ввода/вывода, чтобы SCC мог использовать внешние контакты (выводы портов) для передачи/приема информации.

В регистре PxPAR указывается, какие линии порта ввода/вывода будут использованы для работы SCC-канала. В регистре PxDIR указывается назначение выбранной линии ввода (input) или вывода (output). В регистре PxODR указывается тип выходного каскада выбранной линии, например, выхода с открытым коллектором, с открытым истоком, с Z-состоянием.

Дополнительно для параллельного порта С в его регистрах PCPAR, PCDIR, PCODR производится настройка выводов и для работы или как линии портов с возмож­ностью регистрации сигналов по прерыванию, или как дополнительных модемных сигна­лов для SCC-канала.

2.Если SCC-канал будет работать в режиме временного мультиплексирования с TSA,то необходимо произвести настройку регистров последовательного интерфейса SI. В регистре SIGMR производится выбор рабочего канала TDMa или TDMb и режимов его рабо­ты при операциях маршрутизации.

3.В регистре SIMODE производится настройка рабочего или тестового режима работы каждого TDM-канала, определяется, по каким фронтам и каких сигналов будут произ­водиться действия с данными, а также производится настройка режимов работы SMC-контроллеров и выбор их источников тактирования.

4.Если канал TDM будет работать с памятью маршрутизации, то проводится настройка режимов работы ячеек памяти в SIRAM и настройка регистра команд SICMR.

5.Если SCC-контроллер будет работать в режиме NMSI, то проводится выбор источников тактирования приемника и передатчика в регистре SICR.

6.В регистре конфигурации GSMR следует произвести настройки режимов работы блока кодирования и декодирования сигналов DPLL, выбрать 16/32-разрядную сумму, настроить режимы работы с внешними сигналами , , , определить размер FIFO-буфера для временного хранения данных, выбрать режим кодирования данных и формат преамбулы. В этом регистре производится также выбор режима работы или тестового режима работы SCC-канала, но биты включения приемника и передатчика ENT и ENR пока не устанавливаются в активное состояние.

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

8.Если необходимо, для выбранного протокола в регистре синхронизации DSR пользователь может определить формат SYNC-символов синхронизации.

9.Произвести инициализацию параметров в протокол-независимой памяти параметров SCC-контроллера и в протокол-ориентированной памяти параметров в соответствии с особенностями выбранного протокола канального уровня.

10.Очистить все биты регистрации событий в регистре событий SCC-канала SCCE, для того чтобы после включения канала в работу регистрировать события, которые бу­дут происходить при приеме/передаче кадров данных.

11.При необходимости замаскировать в регистре маски SCC-канала SCCM регистрацию прерываний при возникновении некоторых событий.

12.В регистре CICR требуется установить приоритет запросов на прерывание от SCC-канала. При необходимости запросы на прерывание от других источников можно отклю­чить, уменьшив их приоритет до 0.

13.Разрешить прерывание от SCC-каналов в регистре маски CIMR-контроллера пре­рываний.

14.При необходимости в регистре регистрации прерывания CIPR можно сбросить зарегистрированные в текущий момент времени прерывания от других источников.

15.Установить биты ENT = ENR= 1 в регистре GSMR, разрешив работу передатчика и приемника выбранного SCC-канала.

16.При работе с SCC-каналами пользователь может в любой момент времени произвести модификацию параметров канала, например, настроить его на работу с другой частотой или с другим коммуникационным протоколом. Для этого канал должен быть выключен из работы, а затем снова включен. При этом текущие буферы данных, с которыми работает канал, закрываются, и после возобновления работы канал будет рабо­тать с другими буферами.

Последовательность инициализации параметров приемника SCC-канала следующая.

1.Сбросить бит работоспособности (разрешения работы) приемника ENR= 0 в регистре GSMR. Прием будет немедленно прерван и приемник установлен в нормальное состояние.

2.Произвести модификацию памяти параметров и регистров SCC-канала. При желании пользователь может просто сбросить все параметры в исходное состояние, передав контроллеру команду INIT RX PARAMETERS.

3.Если необходимо, подготовить приемник канала к началу работы и поиску нового кадра данных, который будет записываться в новый буфер. Эти действия выполняются при передаче контроллеру команды ENTER HUNT MODE. После возобновления приема данные будут записываться в буфер BD, адрес которого указан в ячейке RBPTR памяти параметров SCC-канала, но только если этот буфер помечен как пустой (бит Е = 1). Команда ENTER HUNT MODE обязательно передается, если на предыдущем этапе пользо­ватель самостоятельно настраивал новые параметры SCC-контроллера и не использовал команду INIT RX PARAMETERS.

4.Установить бит разрешения приема ENR := 1 в регистре GSMR, разрешив контроллеру начать прием информации из канала связи.

Последовательность инициализации параметров передатчика SCC-канала следующая.

1.Если контроллер в текущий момент времени выполняет передачу кадра данных, то предварительно требуется передать ему команду STOP TRANSMIT для прерывания процесса передачи.

2.Сбросить бит работоспособности (разрешения работы) передатчика ENT = 0 в регистре GSMR_L. Передатчик будет установлен в начальное состояние.

3.Произвести модификацию памяти параметров и регистров SCC-канала. При жела­нии пользователь может просто сбросить все параметры в исходное состояние, передав контроллеру команду INIT TX PARAMETERS. Если команда INIT TX PARAMETERS не используется, то необходимо передать команду RESTART TRANSMIT.

4.Установить бит разрешения передачи ENT := 1 в регистре GSMR_L, разрешив контроллеру начать передачу в сеть информации из буфера данных, адрес которого указан в ячейке TBPTR.

Если пользователь решил изменить протокол, с которым работает в текущий момент времени SCC-контроллер, то он должен выполнить следующие шаги.

1.Сбросить биты разрешения работы приемника и передатчика SCC-канала ENT = ENR = 0.

2.Передать каналу команду инициализации всех параметров приемника и передат­чика в исходное состояние INIT TX and RX PARAMETERS. Произвести настройку регистра GSMR и памяти параметров на работу с другим протоколом.

3.Установить биты ENR = ENT := 1, разрешив SCC-контроллеру работать с новым протоколом.



f="7-10247.php">10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • Далее ⇒