|
закодировать байт, чтобы исправлялось две ошибки |
|
|
|
Jun 9 2008, 13:39
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 21-04-08
Пользователь №: 36 977

|
Надо построить АППАРАТНО (на элементах логики и регистрах) кодер-декодер для байта, исправляющий две ошибки. Предположительно, можно использовать код Рида-Соломона (12(?),8) или БЧХ. Сверточные коды не подходят. Нашел много теории, в том числе и "Информация, восставшая из пепла" Криса Касперски, и кучу иностранных статей. но при попытке вывести из этих математических абстракций схему кодера с паралельными входом и выходом ничего не выходит
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Jun 9 2008, 13:58
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Немного непонятна постановка задачи. То есть необходимо исправить любые 2 ошибки, возникающие при передаче 1 байта информации? Дело в том, что при кодировании ваш байт потолстеет раза в 2, и данный код сможет исправлять 2 ошибки в полученном кодовом слове , а не в байте. То есть получится исправлять 2 ошибки в каждом блоке из 2-х байтов.
Я на эту тему писал диплом, реализовывал кодер/декодер в железе, (на серии 1533), причём канальная скорость была 10 МБит/с.
Код был (24,12), исправлял любые 3 ошибки в кодовом слове из 24 бит, декодирование табличное по синдрому ошибок, таблица в ПЗУ.
PS: советую сходить в библиотеку и набрать кучу книжек по теории кодирования. Голова конечно припухнет поначалу, зато может появится ясность. Я пользовался книжками 70-80 годов, всё очень чётко расписано. Тематика такая: Коды, исправляющие ошибки Помехоустойчивое кодирование Корректирующие коды и т.д. Мне очень понравилась одна книжка какого-то японца (Токури, чтоли, не помню точно)
PPS^ насчёт БЧХ на логике и регистрах - че-то я сомневаюсь крепко, больно уж навороченный алгоритм.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 10 2008, 10:44
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 21-04-08
Пользователь №: 36 977

|
пардон, исправлять две ошибки - естественно в полученном слове. оно вроде не должно получиться длиннее 14 бит.  так что помехоустойчивость все равно выше 1 бит/байт.  >>кодер/декодер в железе, (на серии 1533), причём канальная скорость была 10 МБит/с. здорово, а 10 Мбит - это сколько в тактах получалось? >>Код был (24,12), исправлял любые 3 ошибки в кодовом слове из 24 бит, декодирование табличное по синдрому ошибок, таблица в ПЗУ. а какой код-то был? RS? и, если не секрет, много ли пришлось зашить в ПЗУ? >>советую сходить в библиотеку сходил. нашел. вторую неделю нахожусь в стадии пухнущей головы. нашел вроде то, что надо, но при попытке составить хотя бы математическую модель (в полномах) ничего не выходит - какие-то остатки появляются там, где их быть не должно и т.д.
|
|
|
|
|
Jun 10 2008, 11:18
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(totor @ Jun 10 2008, 13:44)  здорово, а 10 Мбит - это сколько в тактах получалось? 10Mбит=10МГц на входе, там по манчестеру непрерывно валили блоки по 24 разряда. Дальше это дело прогонялось через регистр с ОС, на выходе вываливалось 12 бит информации, в регистре оставался синдром. Цитата а какой код-то был? RS? и, если не секрет, много ли пришлось зашить в ПЗУ? По синдрому из ПЗУ вытаскивается вектор ошибок (12 бит) и складывается по М2 с принятой информацией. В результате получаем либо исправленную инфу (если кол-во ошибок не превысило лимит), либо полную ахинею (в противном случае) Объём таблицы - считаем: 12бит адреса Х 12бит на вектор Итого 4096 слов по 12р. Какой был код - пожалуй, не вспомню. Какой-то экзотический.  блин... какой раз себя ругаю, что не сохранил диплом, вернее, сохранил, но на какой-то дискетке, дискетку куда-то засунул...
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 10 2008, 12:32
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(totor @ Jun 10 2008, 15:05)  а иметь такое ПЗУ для декодирования синдрома - это вообще обязательно? Я сделал очень просто. Написал на ТурбоПаскале 7.0 программку, которая перебирала все возможные вектора ошибок с количеством ошибок <=3, вычисляла для каждого вектора синдром и формировала файл прошивки ПЗУ. То есть в моём случае все вычисления производились за несколько секунд на нормальном компе на этапе проектирования. Если без ПЗУ, то придётся выполнять все вычисления в реалтайме, и вряд ли это реализуемо на логике и регистрах (если конечно из этой логики и регистров не собрать простенький процессор  ) Но при скоростях порядка мегабит/с простенького процессора может не хватить. Наверняка ещё есть "железные" кодеры/декодеры, например, CRC или того же Рида-Соломона, т.к. технология восстановления данных очень широко используется в разнообразных винчестерах/CD-ромах
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 10 2008, 12:53
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 21-04-08
Пользователь №: 36 977

|
именно железные меня и интересуют. но в CD-ромах, думаю, это на микроконтроллере делается.  вот один из самых толковых источников по теме(третья часть статьи): http://www.av5.com/journals-magazines-online/1/35/308но тут, как и везде, кодер с последовательным выходом. а я над параллельным колдую - 8входов,12-14выходов.
|
|
|
|
|
Jun 10 2008, 13:17
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(totor @ Jun 10 2008, 15:53)  как и везде, кодер с последовательным выходом. а я над параллельным колдую - 8входов,12-14выходов. Так нужен только кодер? это как раз никакая не проблема, последовательный регистр с ОС. А если байт - опять же ПЗУ со смешной разрядностью 256х8 (либо простейший контроллер с прошитой таблицей) Проблемы начинаются при декодировании. Хотя я тут подумал... на контроллере табличный декодер тоже неплохо получился бы.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 10 2008, 13:27
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 21-04-08
Пользователь №: 36 977

|
нужен не только кодер.к сожалению. просто его посторение пока кажестя хоть сколько-то реальным.  контроллер - это здорово, но буду пытаться сделать на логике.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|