реклама на сайте
подробности

 
 
> закодировать байт, чтобы исправлялось две ошибки
totor
сообщение Jun 9 2008, 13:39
Сообщение #1


Участник
*

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



Надо построить АППАРАТНО (на элементах логики и регистрах) кодер-декодер для байта, исправляющий две ошибки.
Предположительно, можно использовать код Рида-Соломона (12(?),8) или БЧХ. Сверточные коды не подходят.

Нашел много теории, в том числе и "Информация, восставшая из пепла" Криса Касперски, и кучу иностранных статей. но при попытке вывести из этих математических абстракций схему кодера с паралельными входом и выходом ничего не выходит crying.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
MrYuran
сообщение Jun 9 2008, 13:58
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 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 =)
Go to the top of the page
 
+Quote Post
totor
сообщение Jun 10 2008, 10:44
Сообщение #3


Участник
*

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



пардон, исправлять две ошибки - естественно в полученном слове. оно вроде не должно получиться длиннее 14 бит. 07.gif так что помехоустойчивость все равно выше 1 бит/байт.smile.gif

>>кодер/декодер в железе, (на серии 1533), причём канальная скорость была 10 МБит/с.
здорово, а 10 Мбит - это сколько в тактах получалось?

>>Код был (24,12), исправлял любые 3 ошибки в кодовом слове из 24 бит, декодирование табличное по синдрому ошибок, таблица в ПЗУ.
а какой код-то был? RS? и, если не секрет, много ли пришлось зашить в ПЗУ?

>>советую сходить в библиотеку
сходил. нашел. вторую неделю нахожусь в стадии пухнущей головы. нашел вроде то, что надо, но при попытке составить хотя бы математическую модель (в полномах) ничего не выходит - какие-то остатки появляются там, где их быть не должно и т.д.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 10 2008, 11:18
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 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р.

Какой был код - пожалуй, не вспомню. Какой-то экзотический.
crying.gif блин... какой раз себя ругаю, что не сохранил диплом, вернее, сохранил, но на какой-то дискетке, дискетку куда-то засунул...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
totor
сообщение Jun 10 2008, 12:05
Сообщение #5


Участник
*

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



07.gif

а иметь такое ПЗУ для декодирования синдрома - это вообще обязательно?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 10 2008, 12:32
Сообщение #6


Беспросветный оптимист
******

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



Цитата(totor @ Jun 10 2008, 15:05) *
а иметь такое ПЗУ для декодирования синдрома - это вообще обязательно?

Я сделал очень просто.
Написал на ТурбоПаскале 7.0 программку, которая перебирала все возможные вектора ошибок с количеством ошибок <=3, вычисляла для каждого вектора синдром и формировала файл прошивки ПЗУ.
То есть в моём случае все вычисления производились за несколько секунд на нормальном компе на этапе проектирования.
Если без ПЗУ, то придётся выполнять все вычисления в реалтайме, и вряд ли это реализуемо на логике и регистрах (если конечно из этой логики и регистров не собрать простенький процессор smile.gif )
Но при скоростях порядка мегабит/с простенького процессора может не хватить.

Наверняка ещё есть "железные" кодеры/декодеры, например, CRC или того же Рида-Соломона, т.к. технология восстановления данных очень широко используется в разнообразных винчестерах/CD-ромах


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
totor
сообщение Jun 10 2008, 12:53
Сообщение #7


Участник
*

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



именно железные меня и интересуют. но в CD-ромах, думаю, это на микроконтроллере делается.sad.gif

вот один из самых толковых источников по теме(третья часть статьи):
http://www.av5.com/journals-magazines-online/1/35/308
но тут, как и везде, кодер с последовательным выходом. а я над параллельным колдую - 8входов,12-14выходов.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 10 2008, 13:17
Сообщение #8


Беспросветный оптимист
******

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



Цитата(totor @ Jun 10 2008, 15:53) *
как и везде, кодер с последовательным выходом. а я над параллельным колдую - 8входов,12-14выходов.

Так нужен только кодер? это как раз никакая не проблема, последовательный регистр с ОС.
А если байт - опять же ПЗУ со смешной разрядностью 256х8 (либо простейший контроллер с прошитой таблицей)

Проблемы начинаются при декодировании.

Хотя я тут подумал... на контроллере табличный декодер тоже неплохо получился бы.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
totor
сообщение Jun 10 2008, 13:27
Сообщение #9


Участник
*

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



нужен не только кодер.к сожалению.
просто его посторение пока кажестя хоть сколько-то реальным.sad.gif

контроллер - это здорово, но буду пытаться сделать на логике.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016