ЦСРС_1 / Grebeshkov_Tehnika_mikroproz_sistem_v_kommutazii_uchebnik_dlya_vuzov_2011
.pdf
Техника микропроцессорных систем в коммутации
ет объекты модуля доступными для использования программными процессами за пределами модуля. Модуль заканчивается оператором END в строке 33, а в строке 34 указано, что заканчивается именно модуль «line_allocator». В строке 3 используется оператор SEIZE – оператор включения, который задаѐт глобальные имена, обозримые внутри модуля line_allocator, но описанные вне данного модуля. Это и есть интерфейсная часть модуля. Имена используются для обозначения констант, переменных, операторов, модулей, зон памяти, процессов, программных блоков, процедур. В рассматриваемом примере оператор SEIZE включает глобальные имена объектов, процессов и сигналов данного модуля, которые описаны вне данного модуля, но в нѐм используются, а именно:
line_process – процесс линии;
line – объект «линия»;
occupied – сигнал занятия;
unoccupied – сигнал освобождения;
search – сигнал поиска;
connect– сигнал соединения;
accepted – сигнал принятия к исполнению.
Встроке 5 оператор GRANT определяет, что локальный процесс line_allocator_process может быть обозрим и использован за пределами модуля line_allocator.
Встроке 6 указывается имя процесса line_allocator_process без параметров. В строке 7 содержится оператор PROCESS () без параметров в скобках, с помощью которого происходит вызов(старт) процесса line_allocator_process. В данном случае предусматривается, что в одно и тоже время на узле коммутации может в параллельном режиме исполняться несколько задач. Для поддержки параллелизма каждая задача описывается в виде процесса. Такое описание процесса выполняется на самом высоком уровне программы, в частности на уровне описания модуля, поэтому в пределах процедур процесс уже не описывается. При вызове (старте) процесса, этот процесс выполняется вместе с программой, его вызвавшей, в результате чего на время выполнения процесса порождается новый механизм управления данными и ресурсами системы.
261
Техника микропроцессорных систем в коммутации
Встроке 31 оператором END заканчивается выполнение процесса, чьѐ имя указано в строке 32 – line_allocator_process. Процесс заканчивается только после выполнения всех операторов внутри процесса. Особенностью рассматриваемого процесса является включение в его тело оператора бесконечного цикла DO FOR EVER (строка 11) … OD (строка 30), который будет рассмотрен позже.
Встроках с 8 по 30 приведено описание тела процесса line_allocator_process. Как уже отмечалось, в языке CHILL сущест-
венное значение имеет описание областей памяти. В строке 8 с помощью оператора NEWMODE происходит привязка определяющего типа states (состояния) к множеству SET. В этом случае имя states становится обозначением нового типа, не являющегося стандартным типом языка CHILL. Типу states присваиваются значения с помощью оператора присвоения «:=» из множества, задаваемого оператором SET. В данном фрагменте программы оператор SET включает характеристические переменные, обозначающие состояние линии «free» – свободно и «busy» – занято.
Встроке 9 с помощью оператора DCL описывается область памяти next_states (следующее состояние). Эта область памяти относится к области states, которой в строке 8 был назначен собственный тип. Как следует из данных в строке 9, next_states присвоено начальное значения free, при этом номер линии lno является целым числом INT, на что указывает обозначение lno INT. Начальное значение lno равно 0, что подтверждается записью lno INT:=0.
Встроке 10 продолжается описание областей памяти с помощью оператора DCL; происходит дальнейшее закрепление областей памяти за конкретными именами и типами. Область памяти line (lno) присваивается значение, полученное в результате запуска процесса распределения линии. Запуск процесса осуществляется с помощью оператора START. После ключевого слова START указано имя запускаемого процесса line_process. В скобках после имени процесса line_process указывается действительный параметр процесса lno –
номер линии. Присвоение line(no):=START line_process(lno) означает,
что процессу line_process присвоено имя line(no). Это необходимо, чтобы отличить один запущенный экземпляр процесса line_process от другого экземпляра процесса. Под экземпляром понимается каж-
262
Техника микропроцессорных систем в коммутации
дый запуск одного и того же процесса, ведь один и тот же процесс в ПО узла коммутации может запускаться неоднократно, причѐм на разных процессорах и исполняться параллельно. Чтобы обращаться к нужному экземпляру процесса, этому экземпляру назначают имяидентификатор, в данном случае line(no). В целом запуск процесса т.е. выполнение оператора START означает начало выполнение базовой управляющей конструкции программы начиная со строки 11 и заканчивая строкой 30.
В строках с 11 по 30 выполняется цикл занятия линии с помощью оператора бесконечного цикла DO FOR EVER …OD. Соответственно, строки с 12 по 29 относятся к телу данного цикла. Этот бесконечный цикл создаѐтся для организации постоянного контроля значения next_state, относящегося к типу states. В рамках этого бесконечного цикла устанавливается новое состояние линии – либо busy в строке 19, либо free в строке 24. Рассмотрим этот процесс более подробно.
Процесс занятия или захвата линии начинает осуществляться с помощью выполнения оператора варианта CASE…ESAC в строках с 12 по 29. Этот оператор применяется в случае, когда необходимо обеспечить множественное ветвление на участке программы в зависимости от того, какие значения принимает состояние области памяти (объект данных) next_states. Ранее области памяти next_states было присвоено по умолчанию значение free (см. строку 9).
Объект next_states в данном случае становится селектором одного из альтернативных вариантов продолжения программы. Каждый из альтернативных вариантов обозначен так называемой CASE– меткой оператора варианта. В рассматриваемом случае этими CASE-метками являются метка (free) – «свободен» в строке 13 и метка (busy) в строке 22. После каждой метки стоит двоеточие, за которым указаны операторы действия, которые определяют конкретное продолжение программы в рамках цикла CASE…ESAC. В целом оператор варианта CASE выбирает из последовательности операторов действия, отделенных от метки знаком «:», тот оператор, CASE– метка которого равна текущему значению селектора «next_states». В рассматриваемом случае значение «next_case» может быть по умолчанию равно (free).
263
Техника микропроцессорных систем в коммутации
Итак, пусть next_states states := free. Тогда перейдѐм на строку 13 по первому значению селектора – CASE-метки, равной (free). После данной метки осуществляется выполнение оператора вариативного приема информации RECEIVE CASE (также именуемый оператором CASE приема информации). Этот оператор привязан к конкретному процессу sender c помощью конструкции RECEIVE CASE SET sender. При этом sender указывает на область памяти для именования типа INSTANCE. Этот тип предназначен только для именования процесса и однозначно идентифицирует sender. Сам процесс sender описан вне рассматриваемого модуля. В качестве меток оператора CASE используются имена сигналов (occupied) – «занимающий/захватывающий» в строке 14 и сигнал (search) – «поиск» в строке 16 и сигнал (else) – «иначе» в строке 20. После каждого из рассматриваемых сигналов стоит двоеточие, а после двоеточия указаны операторы действия. Определенное исключение составляет сигнал (else) после которого происходит завершение процедуры приема сигнала с помощью оператора ESAC в строке 21 – для случая (free) и в строке 22 для случая (busy). Рассматриваемая далее процедура обмена сигналами является одним из средств решения задачи координации действий параллельных процессов. Рассмотрим эту проблему подробнее.
Координация действий параллельных процессов необходима для своевременного обмена данными между различными процессами или предотвращения конфликта доступа к одним и тем же ресурсам. В рассматриваемом примере речь идѐт об обмене сигналами.
Обмен сигналами в рассматриваемом примере осуществляется между процессами sender и line(no). При этом решается задача активного ожидания, суть которой заключается в контроле состояния ресурсов, и, как следствие, осуществление действий по занятию/захвату свободных ресурсов, в данном случае – свободной линии связи. Процесс, требующий ресурса, в данном случае sender, проводит периодический опрос/сканирование некоторой переменной, чьѐ значение отражает требуемое состояние ресурса, т.е. линия связи свободна или линия связи занята. В данном случае контролируемой переменной является next_state и соотвествующая ей область памяти. Ожидание продолжается до тех пор, пока не будет за-
264
Техника микропроцессорных систем в коммутации
регистрировано освобождение ресурса, т.е. линии. После регистрации освобождения опрос прекращается и выполняются действия по захвату/занятию свободного ресурса, т.е. для рассматриваемого примера – занятие линии связи.
Итак, ожидается запрос на использование линии. В строках13– 14 в случае приема сигнала (occupied) процессом, который в этом случае идентифицируется как sender (в строке 13), осуществляется изменение текущего значения состояния next_states на значение busy в строке 15. Далее происходит передача нового сигнала (search) от процесса sender в строке 16. Этот сигнал предусматривает, что начинают последовательно выполняются два оператора SEND для поиска и занятия линии.
Встроке 17 после оператора SEND указывается имя сигнала connect и значение этого сигнала sender. Значение сигнала sender характеризует переносимую сигналом информацию, т.е. указание на область памяти с процессом запроса на занятие свободной линии. После оператора sender стоит ключевое слово TO, после которого указан процесс line c параметром (lno). Это указывает на то, что сигнал connect со значением sender передаѐтся процессу line_process(lno). Далее, в строке 18, в направлении процесса sender передаѐтся accepted – сигнал подтверждения процесса занятия свободной линии. Эта передача сигнала вновь происходит с помощью оператора SEND. В результате в строке 19 состояние next_states стало busy для линии с номером lno. Линия занята.
Витоге, в строках с 13 по 19 осуществлено активное ожидание поступление сигналов (occupied) и (search) от рабочего процесса sender. В случае приема сигнала (occupied) происходит изменение текущего состояния линии на следующее состояние, в данном случае происходит переход из состояния (free) в состояние (busy). Далее происходит посылка второго сигнала (search), в результате которого начинается поиск и занятие линии с требуемым состоянием, для чего процессу line(lno) посылается сигнал connect со значением sender, а в строке 18 посылает подтверждающий сигнал о занятии процессу sender как инициатору процедуры занятия. В результате в строке 19 новое состояние линии определяется как «занято» с помощью оператора присвоения next_state:=busy.
265
Техника микропроцессорных систем в коммутации
Встроке 20 метка (else) обозначает действие, в случае, если не принято ни одного сообщения от sender, удовлетворяющим условиям заданными CASE-метками. В результате, в строке 21 после выполнения (else) осуществляется завершение обмена сигналами в строках с 13 по 20.
Рассмотрим переход по CASE-метке (busy) в строке 22. В этом случае ожидается освобождение линии. Для этого процесс sender продолжает отслеживать состояние линейного ресурса. В строках 23-24 это реализовано как прием сигнала (unoccupied) от процесса sender. Как только сигнал (unoccupied) принят, осуществляется присвоение состоянию next_states нового значении free в строке 24 и происходит передача нового сигнала (search) в строке 25. Этот сигнал предусматривает, что выполняется посылка сигнала с помощью оператора SEND.
Встроке 27 после оператора SEND указывается имя сигнала rejected а после ключевого слова TO указан процесс sender, которому этот сигнал предназначается. Наличие данного сигнала свидетельствует об окончании опроса линий в связи с отсутствием свободной линии и перехода к новой фазе поиска и занятия. В строке 27 после выполнения (else) осуществляется завершение обмена сигналами в строках с 22 по 26.
Рассмотренный фрагмент программного кода на языке высокого уровня CHILL показывает пример разработки программы для узла коммутации по методу «сверху–вниз». Это означает, что сначала программа была описана в виде нескольких действий высокого уровня. Далее каждое из этих нескольких действий детально описываются в виде последовательности действий более низкого уровня, и так до тех пор, пока вся программа не будет выполнена на уровне простейших операторов языка программирования. Такой главной программной конструкцией является рассмотренный выше модуль line_allocator. Как уже отмечалось, имена этого модуля, доступные другим модулям вводятся с помощью операторов SEIZE и GRANT. В результате реализуется интерфейсная часть данного модуля с другими модулями.
Взаключение следует отметить, что с помощью таких про- грамм-трансляторов, как sdl2chill, возможно напрямую оттранслиро-
266
Техника микропроцессорных систем в коммутации
вать спецификацию на языке SDL в программу на языке CHILL[81]. Это, безусловно, сокращает время разработки программного обеспечения, повышает качество и надежность программного кода.
3.8 Контрольные вопросы к главе 3
1.Перечислите уровни управления узла коммутации и задачи, решаемые программным обеспечением на каждом уровне.
2.В каком режиме работает ядро операционной системы узла коммутации?
3.Какие задачи решаются в рамках управления базой данных узла коммутации?
4.Какие существуют уровни инициализации программного обеспечения узла коммутации, чем они отличаются?
5.Может ли индивидуальное управляющее устройство вызвать перезагрузку центрального управляющего устройства?
6.Какие задачи решает внутреннее программное обеспечение узла коммутации?
7.Какими ресурсами управляет операционная система?
8.В чем заключается суть способа обработки данных с разделением по времени?
9.Каким образом ресурсы выделяются процессу при согласующем режиме выделения машинного времени?
10.Что такое «виртуальная машина», для чего она применяется?
11.Для чего используются прерывания, какие виды прерываний существуют?
12.Дайте определение понятию «реальное время».
13.Какие требования предъявляются к операционным система реального времени?
14.Как осуществляется обмен сообщениями между внешними процессами ОС РВ по отношению к ядру ОС на примере ОС РВ QNX?
15.За счѐт чего достигает относительно малый размер (в байтах) ядра ОС РВ на примере ОС РВ QNX?
16.Какова функция менеджера процессов?
17.Что такое драйвер внешних устройств?
18.Что такое «симметричная многопроцессорная структура», для чего она используется?
19.Как осуществляется межпроцессная связь?
20.Для чего применяется язык программирования высокого уровня CHILL?
21.В чѐм смысл введения локальных и глобальных имен объектов в языке
CHILL?
22.Может ли программный модуль CHILL включать другие, вложенные в него, модули?
267
Техника микропроцессорных систем в коммутации
4.Микропроцессорная техника в оптических
системах связи
4.1Микропроцессорные средства формирования и обработки сигналов
Всистемах связи передача информации осуществляется либо аналоговыми (непрерывными) либо дискретными (цифровыми) сигналами. В современных системах связи практически повсеместно используются дискретные сигналы. В цифровых системах каждое сообщение представляет собой комбинацию из набора элементов, где каждому элементу ставится в соответствие определенный сигнал; набор таких сигналов формирует ансамбль дискретных (цифровых) сигналов. Для обработки цифровых сигналов используются дискретные методы, особенностью которых является получение результатов обработки в виде цифровых кодов в дискретные моменты времени с помощью последовательного исполнения предписанного перечня операций обработки сигналов.
Наилучшим образом с обработкой цифровых сигналов справится дискретная вычислительная техника, а именно микропроцессорные средства различного назначения [19]. Цифровая обработка сигналов необходима для передачи речи по цифровым каналам связи, для записи, передаче, воспроизведении и сохранении сигналов различного формата, для уменьшения скорости передачи в цифровом канале без потери качества, для выделения полезного сигнала на фоне шума и помех. Цифровая обработка сигналов, по сравнению
саналоговой обработкой, обеспечивает более высокую точность, помехозащищенность и стабильность.
Микропроцессорные средства формирования и обработки сигналов по своей архитектуре соответствуют традиционным архитектурам микропроцессоров. Однако существуют особенности, связанных с обеспечение точности кодирования и воспроизведения сигнала, особенно в части характеристик и параметров сигнала, формирующих его информационную содержательную составляющую. В некоторых случаях необходимо до применения микропроцессорных средств осуществлять предварительную обработку аналоговых сиг-
268
Техника микропроцессорных систем в коммутации
налов с помощью аналоговых или аналогово-цифровых микросхем. Такие микросхемы строятся, к примеру, по схемотехнике на переключаемых конденсаторах, что обеспечивает широкую полосу частот обработки сигналов, низкий коэффициент гармоник, что позволяет создавать эффективные фильтры нижних частот и программируемые усилители. Аналоговые или цифро-аналоговые микросхемы осуществляют обнаружение сигнала на фоне шума, усиление сигнала, накопление сигнала (при необходимости), динамическое сжатие диапазона сигнала, фильтрация сигнала, модуляция и демодуляция сигнала. Таким образом, формирование и обработка сигналов в современных узлах коммутации и в оптических средствах связи может быть не только цифровой, но и комбинированной, т.е. аналоговоцифровой. Причѐм, если при цифровой обработке сигнал дискретен по времени и квантован по уровню, то в комбинированных системах сигнал может быть только дискретен по времени. Обработка сигналов в целом должна осуществляться в реальном масштабе времени. Для этого следует учитывать, что допустимое время обработки данных микропроцессорным средством определяется как архитектурой и конструкцией микропроцессорного устройства, так и параметрами обрабатываемых сигналов. В некоторых случаях для повышения быстродействия микропроцессорных устройств вместо программной (микропрограммной) применяют аппаратную реализацию наиболее сложных участков алгоритма обработки. Рассмотрим микропроцессорные средства формирования сигнала в оптических системах связи. Указанные средства конструктивно исполняются в виде волокон- но-оптических модулей, главной частью которого является волокон- но-оптический передатчик. Общая схема формирования оптического сигнала [41,69] представлена на рис. 4.1.
На вход поступает определенное сообщение. Формирователь передаваемого кода определяет код, пригодный для передачи по линии связи, обеспечивает контроль ошибок при передаче и формирует признаки сообщения, обеспечивающие его доставку только адресату. Тип применяемого цифрового кода определяется драйвером, оптической средой передачи и приемником. Приемник может быть объединен в один комплект с передатчиком.
269
Техника микропроцессорных систем в коммутации
|
|
|
|
|
|
Микросхема драйвера |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Формирователь |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Предуси- |
|
Усилитель |
|
Формирова- |
|
|
|
|
|
||||
|
|
передаваемого |
|
|
|
|
|
|
Оптический |
||||||||
|
|
кода |
|
|
литель |
|
напряжения |
|
тель сигналов |
|
|
||||||
|
|
|
|
|
|
|
|
|
сигнал |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Источник света |
|
|
Электрический |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
Источник тока |
|
|
|
|
|
|
Светоизлуча- |
|
|
||||||
сигнал |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
смещения |
|
|
|
|
|
|
ющий или |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
лазерный диод |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.1 – Схема формирования оптического сигнала
Драйвер осуществляет преобразования выходных сигналов преобразователя в виде стандартных электрических сигналов уровня ТТЛ или ЭСЛ в сигналы электрического тока, определяемые ваттамперной характеристикой излучателя. В качестве излучателя используется лазерный диод AlGaAs/GaAS для длины волны 0,85 мкм, и lnGaAsP/InP для длины волны 1,3 мкм. Основные параметры драйвера следующие:
пороговый ток лазерного диода в диапазоне 5…40 мА;
ток накачки лазерного диода при котором мощность излучения номинальная в диапазоне от 10 до 120 мА
Ток смещения подаѐтся на источник света для скорейшего приведения светодиода в рабочее состояние. Драйвер должен отслеживать разброс и уход ватт-амперной характеристики при старении лазера и изменении температуры окружающей среды. Рассмотренную схему на рис. 4.1 можно реализовать, применяя интегральные микросхемы серийных операционных усилителей (для скоростей передачи 2–8 Мбит/сек) или с помощью специализированных микросхем (для скоростей свыше 8 Мбит/сек). Ввод/вывод светового излучения в оптическое волокно осуществляется с помощью системы микролинз и соответствующего прибора.
Микросхемы драйвера как правило включают функцию автоматического контроля мощности для поддержания постоянной средней оптической мощности лазера в течении всего периода эксплуатации. Связь с лазером современных микросхем осуществляется по постоянному току с напряжением собственного питания 3,3 В. Драйвер обеспечивает необходимые токи смещения (до 100 мА) и токи моду-
270
