[an error occurred while processing this directive]
|
CRC обычно служит только для обнаружения ошибок. Основной критерий - минимизация вероятности пропуска ошибки в реальном канале с реальным шумом. Все остальные производные критерии - только упрощения.
Чтобы посчитать вероятность искажения принятого блока нужно взять двойную сумму по всем возможным блокам данных и по всем возможным помехам с учетом их вероятностей. Это совершенно нереально для кодов длиннее, пожалуй, 16-20 бит. Да и все равно нужно иметь какую-то разумную модель вероятностей распределения блоков данных и шума.
Для упрощения задачи обычно считают что, во-первых, вероятности искажения битов равновероятны и независимы, во-вторых, что все блоки данных одной длины и также равновероятны, в третьих, используют линейный код (циклические коды линейные). В этом случае для точного анализа достаточно знать только распределение весов хэмминга кодовых слов.
Далее предполагают, что вероятность искажения одного бита мала. Тогда оказывается, что существенный вклад в вероятность ошибочного приема вносят только ненулевые кодовые слова с минимальным весом. Более того, оказывается, что количество кодовых слов с этим самым минимальным весом не имеет принципиального значения - кодовое расстояние вносит экспоненциальный вклад в вероятность ошибочного приема.
А дальше все уже совсем просто. Если длина блока заранее точно неизвестна, обычно лучше взять код, в котором кодовое слово с весом 2 появится на большей длине. То есть, использовать примитивный полином. Но этот код может оказаться неоптимальным, если априорно известно, что реальные блоки гораздо короче.
E-mail: info@telesys.ru