Смекни!
smekni.com

Станция ЛВС с маркерным доступом на структуре шина (стр. 4 из 4)

3. Протоколы информационно-вычислительных сетей : Справочник / Под ред. Мизина И.А. и Кулишова А.П., М.: Радио и связь, 1990.

4. Зелигер Н.Б., Чугреев О.С., Янковский Г.Г. Проектирование сетей и систем передачи дискретных сообщений”, М. Радио и связь, 1984.

5. Microchip PIC16/17. Микроконтроллер, Data Book 1996, Microchip Technology Inc.


Приложение 1

Программа ликвидации ЛС

Title“Ликвидация ЛС”

Listp=16C64

ErrorLevel0 ; вывод всех ошибок при компиляции

N2 equH’A’ ; число попыток разъединения

NequH’1’ ; начальное значение счетчика

TzadequH’FF’ ; заданное значение таймера

Org0 ; вектор сброса

ClrfIntCon; очистка регистра IntCon

ClrfPCLath; очистка регистра хранение старших бит для PC

ClrfStatus; очистка регистра состояния

CallInitPort; инициализация портов

Goto Begin

InitPort

Bsf Status, RP0 ; выборбанка 1

ClrfPortC; инициализация порта С

MovLW0хFF; значение, используемое для инициализации

; направления обмена данными

MovFWTrisC; установка RC <7:0> как входов

ClrfPortD; инициализация порта D

MovLW0х00 ; значение, используемое для инициализации

; направления обмена данными

MovWFTrisD; установка RD <7:0> как выходов

BсfStatus, RP0 ; выбор банка 0

Return; возврат из подпрограммы


; Для инициирующей станции:

Begin

CallP_DISC; передача команды DISC

BsfStatus, RP0 ; выбор банка 1

ClrfTMR0 ; сброс таймера

MovLWB’00000101’ ; выбор TMR0, новой величины

; предделителя, источника синхронизации

MovWFOption

BсfStatus, RP0 ; выбор банка 0

L1: MovFPortC, 0 ; чтение порта С ( UA или DM )

SubLWH’C8’, 0 ; сравнение значения с протокольным значением

BtwssStatus, 2 ; проверка результата

GoToLLS; если UA то LLS

MovFTMR0, 0 ; иначе проверяем таймер

SubLWTzad, 0 ; сравниваем с заданным

BtwssStatus, 2 ; проверка результата

GoToL1 ; если время не истекло, то опять

; получаем кадр

IncfN, 1 ; иначе N:=N+1

MovfN, 0 ; N в аккумулятор

SubLWN2, 0 ; W:=W-N2

BtwssStatus, 2 ; сравниваем N и N2

GoToBegin;если N < N2 идем на начало

GoToError; иначе ошибка

LLS:ClrfTMR0 ; сброс таймера

CallUst_R_Raz; вызов процедуры “установление режима

; разъединения “

GoToEnd

End: Nop

; Для приемной станции:

Begin: MovfPortC, 0 ; чтение порта С

MovWfR1 ; значение в R1

DecfszR1, 1 ; сравнение с протокольным значением

GoToUA; if <> 0, то передача UA

GoToDM; передача DM

UA: CallF_Reg; процедура формирования КД для UA

MovfR_Apr; адрес приемной стороны загруж-ся в ак-

MovWfPortD; кумулятор и передается в порт D

MovfR_APer; адрес передающей стороны

MovWfPortD

MovfR_DSAP; запись команды DSAP

MovWfPortD

MovfR_SSAP; запись команды SSAP

MovWfPortD

MovfR_UA; запись команды UA

MovWfPortD

GoToEnd

DM: CallF_Reg; процедура формирования КД для DM

MovfR_Apr; адрес приемной стороны загруж-ся в ак-

MovWfPortD; кумулятор и передается в порт D

MovfR_APer; адрес передающей стороны

MovWfPortD

MovfR_DSAP; запись команды DSAP

MovWfPortD

MovfR_SSAP; запись команды SSAP

MovWfPortD

MovfR_DM; запись команды DM

MovWfPortD

End: CallUst_R_Raz; вызов процедуры “установление режима ; разъединения"


Приложение 2

Программа расчета коэффициента использования среды и среднеговремени задержки для ИМД2 и МД2 на структуре шинаи построение сравнительной характеристики

format long ;

v=4.33e-9; % задержка распространения сигнала, с/м

L=1000 ; % длина кабеля, м

dp = [512,1024,2048] ; % длина пакета, бит

fd = 1e6 ; % скорость передачи, bit/с

N = 75 ; % число узлов в сети

taum = v * L ; % задержка распространения по всей сети

tp = dp * 1/fd ; % время передачи пакета

tm = 64/fd ; % время передачи маркера

i=1;

for ro0=0.001:0.005:0.9,

a1 = taum /tp(1) ;

b1 = tm / tp(1) ; a2 = taum /tp(2) ; b2 = tm / tp(2) ; a3 = taum /tp(3) ; b3 = tm / tp(3) ;

% расчет параметров для маркерного доступа на шине с произвольным расположением узлов.

tet1(i) = ro0 / ( ro0 + a1/2 + b1 ) ;

tet2(i) = ro0 / ( ro0 + a2/2 + b2 ) ;

tet3(i) = ro0 / ( ro0 + a3/2 + b3 ) ;

tau1(i)=( 1 + ro0*(N-1) + N * ( a1/2 + b1 ) ) / ( 1 - ro0 ) ; tau2(i)=( 1 + ro0*(N-1) + N * ( a2/2 + b2 ) ) / ( 1 - ro0 ) ; tau3(i)=( 1 + ro0*(N-1) + N * ( a3/2 + b3 ) ) / ( 1 - ro0 ) ;

% расчет параметров для интервально-маркерного доступа на шине с произвольным расположением узлов.

tet4(i)=ro0 / ( ro0 + a1 * ( 5/2 - 2*ro0 + 0.1 * ( 1-ro0) ) ) ; tet5(i)=ro0 / ( ro0 + a2 * ( 5/2 - 2*ro0 + 0.1 * ( 1-ro0) ) ) ; tet6(i)=ro0 / ( ro0 + a3 * ( 5/2 - 2*ro0 + 0.1 * ( 1-ro0) ) ) ;

tau4(i)=(1+ro0*(N-1))*(a1/2+1)/(1-ro0) + a1*(5/2 + 0.1)*(N-1) ; tau5(i)=(1+ro0*(N-1))*(a2/2+1)/(1-ro0) + a2*(5/2 + 0.1)*(N-1) ; tau6(i)=(1+ro0*(N-1))*(a3/2+1)/(1-ro0) + a3*(5/2 + 0.1)*(N-1) ; i=i+1 ;

end ;

% вывод графиков на экран

clg;

axis([0,1,0,2]) ; % выбор масштаба вывода

semilogy(tet1,tau1,'-',tet2,tau2,'-.',tet3,tau3,'--'),hold;

semilogy(tet4,tau4,'-',tet5,tau5,'-.',tet6,tau6,'--'),grid;

title('Сравнительная характеристика ИМДШ и МДШ') ;

xlabel('Коэффициент использования среды') ; % название оси абсцисс ylabel('Среднее время задержки') ; % название оси ординат