Всем привет,
есть два аппарата, общающиеся по скоростной линии по 3-м ногам аля SPI - первый аппарат шлет клок по первой линии всегда, второй аппарат непрерывно посылает на каждый клок один бит информации по второй линии, а по третьей ноге первый аппарат сообщает второму о том, что дошло ли и что дальше посылать.
Оба аппарата общаются через плиски.
Нужна максимизация скорости потока от второго аппарата первому, и минимальное время на исправление ошибок, так как память плисок не резиновая и на передачу не хочется использовать кучу плисоресурсов.
Сейчас реализовано все так - второй первому шлет пакеты по 9кбит, после этого пакета идет CRC, если пакет пришел битый, то происходит запрос на перепосылку пакета.
Запрос возникает примерно в 20% случаев, на декодирование СРС на приемнике и старт-стоп пакета я теряю примерно 300 тактов пересылки (3%). Если уменьшать размер пакета - то оверхед увеличивается, если удлинять пакет - вероятность битости данных увеличивается. Хочется все-таки улучшить проходимость пакетов.
При детальном анализе получилось, что почти всегда битость пакета - это либо
1. один ошибочный бит, 2. один пропущенный бит (клок пропустился), 3. один случайно возникший дополнительный бит в начале передачи.
Скажите, пожалуйста, есть ли способ кодирования сигнала, который бы позволял бы исправить эти типы ошибок?
Спасибо
ИИВ
|