Se ho un certo numero di byte da trasferire in serie, come faccio a determinare quale CRC (CRC8, CRC16, ecc., In pratica un numero di bit di CRC?) Da utilizzare e la percentuale di rilevamento degli errori è ancora elevata? C'è una formula per questo?Come determinare quale CRC utilizzare?
risposta
Per rispondere a questa domanda, è necessario conoscere lo bit error rate del proprio canale, che può essere determinato solo empiricamente. E poi, una volta ottenuto il BER misurato, devi decidere quale frequenza di rilevamento è "alta" abbastanza per i tuoi scopi.
L'invio di ciascun messaggio, ad esempio, 5 volte vi darà una discreta rilevazione anche su un canale molto rumoroso, ma arresta un po 'il vostro throughput. Tuttavia, se si inviano comandi a una sonda per lo spazio profondo, potrebbe essere necessaria tale ridondanza.
Dal punto di vista della lunghezza del CRC, si applicano le normali statistiche. Per una larghezza di bit di CRC, hai la possibilità di 1/(2^n)
di avere un falso positivo. Quindi per un CRC a 8 bit, hai una probabilità di 1/255, ecc.
Tuttavia, anche il polinomio scelto ha un grande impatto. La matematica dipende molto dai dati trasferiti e non è una risposta facile.
È necessario valutare molto più del semplice CRC in base al proprio meccanismo di comunicazione (FEC con sistemi come i codici turbo è molto utile e comune).
- 1. Quale euristica utilizza TPL per determinare quando utilizzare più core
- 2. Come determinare quale compilatore C/C++ usare?
- 3. Come determinare quale iOS SDK ho?
- 4. Determinare quale rubygem stai utilizzando
- 5. Determinazione dell'algoritmo CRC da dati + CRC - applicazione incorporata.
- 6. Calcolo del divisore CRC
- 7. definitiva CRC per C
- 8. Determinare quale processo sta bloccando gli Appunti
- 9. Come posso determinare quale applicazione sta bloccando un file?
- 10. Come determinare quale controllo sul modulo è attivo?
- 11. Determinare quale modello corrisponde con Regex.Matches
- 12. Determinare quale thread possiede un monitor
- 13. Campo CRC-32 in zip
- 14. Come determinare per quale valore verrà attivato il neurone artificiale?
- 15. Come determinare quale script viene eseguito nel processo PHP-FPM
- 16. Come determinare quale service pack è in esecuzione Visual Studio?
- 17. Come determinare quale campo di testo è attivo swift
- 18. Come determinare quale gestore di eccezioni rescue_from sceglierà in Rails?
- 19. Come determinare quale ValidationAttribute ha restituito un Errore Modello
- 20. Come posso determinare quale provider di hosting ospita un sito?
- 21. Come determinare a quale azienda appartiene un indirizzo IP?
- 22. Come determinare su quale CPU viene eseguito un thread?
- 23. Come determinare quale versione di Android Studio sto usando?
- 24. come determinare quale procedura di chiamata di evento in delphi
- 25. Comando Maven per determinare quale file settings.xml utilizza Maven
- 26. Quale tipo MIME utilizzare come scopo generale?
- 27. come utilizzare GC.KeepAlive() e per quale scopo
- 28. Come scegliere quale interfaccia di rete utilizzare?
- 29. Come si decide quale porta utilizzare?
- 30. Forza gzip per decomprimere nonostante l'errore CRC