Отговори на тема  [ 6 мнения ] 
Малко математическа помощ? 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Сеп 24, 2005 2:00 pm
Мнения: 787
Мнение Малко математическа помощ?
Значи във връзка с моя стар проект с комуникационната шина запецнах на една формула. Нещо не ми идва наум как може да се изведе та ако някой се сети нека подскаже. Мерси предварително!
Значи проблемът е следния:
При работа в мрежа едно SSB устройство може да адресира до 56 други устройства, в това число себе си, както и до 8 адресни хъба. Всеки адресен хъб на свой ред може да адресира до 56 устройства във вътрешното си адресно пространство, както и 8 хъба на по-долно ниво. И така нататък...
Та значи опитвам се да изведа формула с която при известен брой на устройствата в мрежа да ми даде на колко нива би се рутнала и колко хъба биха били необходими.
Примерно: за мрежа с 10 устройства явно е че ще е 0 нива и 0 хъба, за 1000 устройства ще е 2 нива и 17 хъба и т.н.


Пон Юни 20, 2011 2:45 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Нед Апр 17, 2005 9:23 am
Мнения: 112
Мнение 
Ако не съм сбъркал условието (че осемте хъба не влизат в бройката на 56-те устройства), тогава броят нива ти е логаритъм при основа осем от N/56, закръглено нагоре до цяло число, където N е желания брой устройства. Нямам подръка калкулатор с логаритъм, за да го проверя, а ме мързи да търся формулата за преобразуване на логаритми.

Трета редакция, дано този път я нацеля. :wink:
Броят хъбове се изчислява по по-сложен начин, съобразно вече изчисления брой нива: От N/56, закръглено нагоре, вадиш сумата по i от 0 до (брой_нива-1) от 8 на степен i.

Четвърта редакция:
Естествено, пак съм го объркал. Сумата трябва да е до (брой_нива-2), защото устройствата от предишното ниво се обслужват от хъбовете на по-предишното, а на всичкото отгоре от резултата трябва да се извади единица, защото устройствата от нулево ниво не се обслужват от хъб.


Последна промяна Reader на Пон Юни 20, 2011 4:46 pm, променена общо 1 път



Пон Юни 20, 2011 3:19 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
И наричате това "simple" serial bus ? :D


Пон Юни 20, 2011 4:39 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
setoy написа:
И наричате това "simple" serial bus ? :D


Ми на днешно време всичко дето не е USB е simple...


Пон Юни 20, 2011 5:22 pm
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Сеп 24, 2005 2:00 pm
Мнения: 787
Мнение 
setoy написа:
И наричате това "simple" serial bus ? :D


Ами това, да. :) Всъщност на думи изглежда много по-сложно, отколкото е в действителност. Реалната сложност е съпоставима с тази на I2C. А освен това името е само работен вариант и може да се промени в бъдеще.

Специално благодарство на Reader за решенията! :idea:


Вто Юни 21, 2011 2:48 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
тръгваш от обратния ред - при известни етажи разписваш колко устройства има при пълно насищане
в осмична система n=70*11111...111, с толкова единици колкото етажа имаме. това число от единици е цялата част на 8^(f-1)/(1-1/8). цялата част е защото тоя израз ни дава всъщност 1111.111111 до безкрай. след точката го отсичаме.
значи f=ceil(log(n*(1-1/8)/56)/log(8)+1)
аз бих препоръчал рънтайм да се смята така:
for(f=0;56*(1<<(3*f))<n;f++);


Сря Юни 22, 2011 7:41 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни