nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 27 Jun 2017 23:38



Reply to topic  [ 29 posts ]  Go to page Previous  1, 2
[Zpring] Самодоговаривающаяся по SPI этажерка (ZpringBus) 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
Мы можем наблюдать всё, что угодно с той или иной степенью вероятности, если вероятность события больше нуля...

Верно... вот и
He3HauKo wrote:
Если есть вероятность збоя передачи по SPI, то какая разница сколько передавать :-?


Чем больше передавать за одну посылку, тем чаще будут невалидные посылки (при той же вероятности единичного сбоя) - очевидно же :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


17 May 2013 16:12
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Чем больше передавать за одну посылку, тем чаще будут невалидные посылки (при той же вероятности единичного сбоя) - очевидно же :roll:

Совершенно нет... может быть ни одной. Это же вероятность, а не обязательство.

_________________
iLavr


17 May 2013 17:36
Profile
Senior
User avatar

Joined: 09 Aug 2012 14:20
Posts: 176
Location: 95.135.174.189
Reply with quote
Post 
Товарищи физики-теоретики, таким темпом мы скоро к квантовой механике дойдем :roll:
Я всего то предложил поднять на несколько байт во благо определения параметров железки!!!!
1 байт - на тип устройства
2 байта - на количество портов
3 байта - на количество памяти
Чтобы не ужимать прям до бит, и не делить память по параграфам или чем то еще(секторам).

К то муже простенькая проверка на ошибки все исправит! 8)

_________________
Хочу стать всезнайкой ;-)


17 May 2013 18:06
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
Чем больше передавать за одну посылку, тем чаще будут невалидные посылки (при той же вероятности единичного сбоя) - очевидно же :roll:

Совершенно нет... может быть ни одной. Это же вероятность, а не обязательство.


Если мы будем много раз пробовать, то количество будет приближаться к соотношеню, определяемому вероятностью - чему вас там в ваших академях учут?

P.S. Я не просто так делю память по страницам кратным степеням двойки - так декодеры адресов будут проще...

_________________
:eugeek: https://twitter.com/Shaos1973


17 May 2013 18:13
Profile WWW
Senior
User avatar

Joined: 09 Aug 2012 14:20
Posts: 176
Location: 95.135.174.189
Reply with quote
Post 
Shaos wrote:
P.S. Я не просто так делю память по страницам кратным степеням двойки - так декодеры адресов будут проще...


Тут то я согласен!!!!
А в остальном.... :-?

_________________
Хочу стать всезнайкой ;-)


17 May 2013 19:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Если мы будем много раз пробовать, то количество будет приближаться к соотношеню,
определяемому вероятностью - чему вас там в ваших академях учут?

Да вот тому, что тебе совершенно верно He3HauKo с самого начала заметил...

_________________
iLavr


17 May 2013 19:30
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Post 
Для особо непонятливых - программка:
Code:
#include <stdio.h>
#include <time.h>
int main(int argc,char **argv)
{
 int i,j,k,c,ok;
 int number_of_packets = 100;
 int bits_per_packet = 10;
 int total_bits = 0;
 int error_bits = 0;
 int error_packets = 0;
 srand(time(NULL));
 if(argc>1) number_of_packets = atoi(argv[1]);
 if(argc>2) bits_per_packet = atoi(argv[2]);
 printf("\n");
 for(j=0;j<number_of_packets;j++)
 {
   ok = 1;
   for(i=0;i<bits_per_packet;i++)
   {
      k = rand()%100;
      if(k==99) c='*'; /* one percent of errors */
      else if(k>=50) c='1';
      else c='0';
      printf("%c",c);
      if(c=='*') { ok=0; error_bits++; }
      total_bits++;
   }
   if(ok) printf(" - GOOD\n");
   else { printf(" - BAD\n"); error_packets++; }
 }
 printf("\n");
 printf("Bits per packet - %i\n",bits_per_packet);
 printf("Total bits - %i\n",total_bits);
 printf("Error bits - %i (%2.2f%%)\n",error_bits,(error_bits*100.0/total_bits));
 printf("Total packets - %i\n",number_of_packets);
 printf("Failed packets - %i (%2.2f%%)\n",error_packets,(error_packets*100.0/number_of_packets));
 printf("\n");
 return 0;
}

Программка принимает из командной строки 2 аргумента - количество посылок (пакетов) и количество бит в посылке. Исходя из предположения, что 1% передаваемых бит передаётся с ошибкой, программа симулирует передачу и подсчитывает кол-во плохих пакетов. Вот запуски с одинаковой вероятностью ошибки 1% и с одинаковым количеством пакетов, но с разной их длиной (10,20 и 30):
Code:
bash-4.1$ ./one_percent 50 10

110*001101 - BAD
00011*0011 - BAD
0010101110 - GOOD
1001001101 - GOOD
0010101101 - GOOD
1010100001 - GOOD
0010011011 - GOOD
1110000001 - GOOD
1000110110 - GOOD
1000010100 - GOOD
1100100101 - GOOD
0100100011 - GOOD
1011111100 - GOOD
1001011001 - GOOD
0001010111 - GOOD
011100*010 - BAD
0001000010 - GOOD
1100100110 - GOOD
1101111010 - GOOD
0101001000 - GOOD
1010110000 - GOOD
1010010010 - GOOD
0111011111 - GOOD
*110011011 - BAD
0011111110 - GOOD
1110101100 - GOOD
1010001010 - GOOD
1100011101 - GOOD
1110010111 - GOOD
1011100010 - GOOD
1011010111 - GOOD
1001100100 - GOOD
1000111000 - GOOD
0010000000 - GOOD
100111*111 - BAD
0111101000 - GOOD
0111001100 - GOOD
1010010110 - GOOD
0001001001 - GOOD
0101111101 - GOOD
0001100010 - GOOD
0101101011 - GOOD
1100001100 - GOOD
0010111111 - GOOD
1010001101 - GOOD
1110101001 - GOOD
0110000010 - GOOD
0100001011 - GOOD
1100001*00 - BAD
0101001111 - GOOD

Bits per packet - 10
Total bits - 500
Error bits - 6 (1.20%)
Total packets - 50
Failed packets - 6 (12.00%)


Code:
bash-4.1$ ./one_percent 50 20

00110100110010001110 - GOOD
01011110101001001010 - GOOD
11001100*00000101011 - BAD
01111011011110110100 - GOOD
10000111111111101011 - GOOD
01000011011000001011 - GOOD
01001000011101100100 - GOOD
11100*10001001101101 - BAD
01011111011111010010 - GOOD
00010111000110101000 - GOOD
00001100100100111101 - GOOD
10100001011110001000 - GOOD
01010011011111111101 - GOOD
00111010110000001001 - GOOD
11001110010110001011 - GOOD
11110010011001011110 - GOOD
01110000100100101111 - GOOD
01111011010111001001 - GOOD
10101001111110010011 - GOOD
11101100111111100100 - GOOD
00101101100001010010 - GOOD
11100010100101110100 - GOOD
11100111110000101000 - GOOD
10010101011*10101110 - BAD
01010101010101011111 - GOOD
1001000*110100011110 - BAD
10000100000111111110 - GOOD
10101101001010000011 - GOOD
11111100101111011111 - GOOD
01100111101101110101 - GOOD
00010111100011010001 - GOOD
10000001010010011010 - GOOD
0101*011000010001011 - BAD
00000110011000100001 - GOOD
10100011001101110000 - GOOD
10010101011001101011 - GOOD
10011111101000000101 - GOOD
1000010100010100*011 - BAD
0100110011*101101111 - BAD
00110110100100101101 - GOOD
0100110111*001011101 - BAD
01101001100000111101 - GOOD
00000110000101100101 - GOOD
10110001111000111011 - GOOD
11100000101110100010 - GOOD
01111011001*11101001 - BAD
0011010*101100101011 - BAD
1*000000000000101010 - BAD
10000001110111101100 - GOOD
10111110111110000101 - GOOD

Bits per packet - 20
Total bits - 1000
Error bits - 11 (1.10%)
Total packets - 50
Failed packets - 11 (22.00%)


Code:
bash-4.1$ ./one_percent 50 30

0111100000*0011010001111111110 - BAD
101101001001111100101111100010 - GOOD
001110001111110011100101000000 - GOOD
001111100010100010110010001011 - GOOD
1111*0110111101011011011001011 - BAD
110010011000011001010111010110 - GOOD
001111000110001110010011010001 - GOOD
101110101011000110111111010000 - GOOD
*10001111010110000110100100100 - BAD
111001010110111101000101111010 - GOOD
001100010011101010001101101010 - GOOD
111000100011*01010101000111010 - BAD
000*00101001010100110011000010 - BAD
010010010000110100111110010111 - GOOD
11011010*1100100011*1101101010 - BAD
010010101000011101100111011100 - GOOD
101001101100000111001000100010 - GOOD
*11100111000100111110101111010 - BAD
001000010011111001011101111011 - GOOD
010111110111110100001101001011 - GOOD
100011000110010000100010111111 - GOOD
011000110101011001000101010001 - GOOD
000001*10001011000111000011101 - BAD
010110001000100000101100110011 - GOOD
001001100000000011011011010100 - GOOD
011010010011010111001011011100 - GOOD
000010110110111110010001011001 - GOOD
101000110010*10101111100001101 - BAD
00010100101111110001*001100110 - BAD
011111001010001100010111101010 - GOOD
000010110011010110100000010110 - GOOD
110011*11010010010011110011100 - BAD
011010111010010110110111101100 - GOOD
001110001101100111011000100101 - GOOD
10100111100100011*000011100100 - BAD
1010100010100010011001011111*0 - BAD
0111011000111111110100*0101001 - BAD
111100110111001110110111110000 - GOOD
00110111010000100110100010110* - BAD
101001110110000010011110110011 - GOOD
101010111110110111*00101101010 - BAD
10110100111010010*001100011111 - BAD
010001000100010011101101000010 - GOOD
101001101111111010011100011001 - GOOD
000110001110010000100110011111 - GOOD
111100010011101000010111100111 - GOOD
100011001100010010101100000101 - GOOD
00100110001*011011110001000000 - BAD
111001100101110100111000100111 - GOOD
00*110011110011100010101000110 - BAD

Bits per packet - 30
Total bits - 1500
Error bits - 20 (1.33%)
Total packets - 50
Failed packets - 19 (38.00%)

Ещё вопросы есть?...

_________________
:eugeek: https://twitter.com/Shaos1973


17 May 2013 22:27
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Исходя из предположения, что 1% передаваемых бит передаётся с ошибкой, программа симулирует передачу и подсчитывает кол-во плохих пакетов.

Исходя из взятого с потолка "предположения, что 1% передаваемых бит передаётся с ошибкой",
никаких вопросов к автору нет.

Только вероятность не имеет ничего общего с этим предположением.
Это больше похоже на внесение некой систематической погрешности...

А для "этажерки", где платы фактически рядом, 1% передаваемых по SPI бит с ошибкой -
это не очень хорошая реализация SPI - не более того.

_________________
iLavr


18 May 2013 06:11
Profile
Senior
User avatar

Joined: 09 Aug 2012 14:20
Posts: 176
Location: 95.135.174.189
Reply with quote
Post 
Вероятность появления ошибки при передачи 100 байт больше, чем при передачи 1 байта. Но вероятность самого появления ошибки в том или другом варианте одинакова! :rotate:

_________________
Хочу стать всезнайкой ;-)


18 May 2013 07:03
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Post 
He3HauKo wrote:
Вероятность появления ошибки при передачи 100 байт больше, чем при передачи 1 байта. Но вероятность самого появления ошибки в том или другом варианте одинакова! :rotate:


Угу - вот только единичная ошибка в пакете делает ВЕСЬ пакет невалидным...

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 09:27
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
Исходя из предположения, что 1% передаваемых бит передаётся с ошибкой, программа симулирует передачу и подсчитывает кол-во плохих пакетов.

Исходя из взятого с потолка "предположения, что 1% передаваемых бит передаётся с ошибкой",
никаких вопросов к автору нет.

Только вероятность не имеет ничего общего с этим предположением.
Это больше похоже на внесение некой систематической погрешности...

А для "этажерки", где платы фактически рядом, 1% передаваемых по SPI бит с ошибкой -
это не очень хорошая реализация SPI - не более того.


Я могу тоже самое пересчитать для 0.1% - суть презентации была показать, что процент отбраковки пакетов сильно зависит от их длины при прочих равных...

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 09:30
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Я могу тоже самое пересчитать для 0.1% - суть презентации была показать, что процент отбраковки пакетов сильно зависит от их длины при прочих равных...

А зачем? :o Это никак с вероятностью не связано...
Если бы процесс был вероятностный - то в твоих тестах не было бы такого количества ошибок,
как и такого регулярного их появления.

Лучше собирай свой железный SPI, и ты увидишь, что взятые тобой с потолка проценты не имеют
к нему никакого отношения, как на взятой тобой длине посылок, так и на той, о которой He3HauKo
говорил... "Прочих равных" - тут как раз и нет.

И его предложение "не ужимать прям до бит" - на мой взгляд, вполне верно, в рамках вышесказанного.



PS. Я поясню, чтоб не было впечатления о придирках: понятие вероятность вводится для случайного процесса.
С этой точки зрения для выбранной тобой длины пакета и предложенной He3HauKoй - никакой практической
разницы нет.
Поскольку длины пакетов слишком малы, чтобы проявилась статистика случайного процесса.
Если у тебя есть регулярный источник помех, что ты демонстрируешь своими выборками, то твои выкладки
совершенно вернЫ, но только процесс этот не случайный, и говорить о вероятности - бессмысленно.

_________________
iLavr


18 May 2013 09:47
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Post 
Процесс будет иметь случайную составляющую, если у нас есть рейсы на пределе частоты работы или на порогах срабатывания логики и т.д.

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 10:30
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Процесс будет иметь случайную составляющую, если у нас есть рейсы на пределе частоты работы или на порогах срабатывания логики и т.д.

Ну так я и говорил - лучше делать надежный интерфейс, нежели возиться с его статистикой!

_________________
iLavr


18 May 2013 10:32
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 29 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.