Необходимо написать программу восстанавливающую данные - файл JPEG, переданные по беспроводному каналу. Ограничения: использовать как можно меньше вычислительных ресурсов, при использовании избыточных кодов добавляемая информация не
должна превышать 10% от изначального объёма. Если чуть подробнее, то полученная картинка обрабатывается (кодируется) микроконтроллером AVR32 AT32UC3 и передаётся по
беспроводному каналу NanoNet. Принимаются данные на ПК, там происходит их декодирование. Язык программирования С.
Так как повторная передача исключена, то кроме корректирующих кодов вариантов вроде нет. Корректирующие коды выбираются исходя из наиболее вероятного типа ошибок, вот тут пробел - какой тип ошибок более характерен для
NanoNet? У него частота что и у WiFi, но модуляция другая. Для одиночных ошибок лучше всего подходит классика - код Хемминга. Учитывая 10% ограничение минимально возможный код (63, 57). Только работа в с файлами происходит побайтно и использование такого кода означает лишние сдвиги, создание массивов и т.д. Как вариант
код (88,80), но он избыточен и лишь чуть более удобен. Циклические коды БЧХ или Рида-Соломона выглядят более привлекательными и вроде не сложны в реализации. У БЧХ как я понимаю можно
задавать и длину кодируемого блока и количество исправляемых ошибок. Для кода Рида-Соломона в качестве символа можно задать байт.
В общем задача с разными решениями и где оптимальный путь, пока не определил. С благодарностью приму любой совет.
|