amelyutin9
Участник-
Постов
118 -
Зарегистрирован
-
Посещение
Весь контент amelyutin9
-
Что такое error floor?
-
Преобразование Фурье для декодирования БЧХ кода
amelyutin9 опубликовал тема в Алгоритмы ЦОС (DSP)
Хочу разобраться в декодировании кодов БЧХ и Рида-Соломона с использованием преобразования Фурье с целью последующей реализации на ПЛИС. Подскажите, какую можно почитать литературу в этом направлении (желательно с примерами). Возможно у кого-то есть конкретные результаты в этом направлении. Интересно их узнать. -
Если плис Altera, можно написать. Кол-во нужной логики растет еще размерности поля в котором строится код т.е. от длины кодового слова. Еще важно сколько одновременно кодовых слов нужно обрабатывать. Вы перебираете все кони от a^128 до a^255 с расчет что корень a^128 это ошибка в нулем байте, в a^255 в 127. Если корень a^220 то ошибка в 92 байте соответственно.
-
BCH decoder
amelyutin9 ответил AspireSky тема в Алгоритмы ЦОС (DSP)
Не пойму, что конкретно не получается? Для БЧХ n=2^m-1, поля Галуа соответственно GF(2^m) В принципе для декодирования по Берлекемпу-Месси генераторный полином вообще не нужен (он нужен только для кодера). Нужен примитивный полином. В Морелос-Сарагоса достаточно понятно написано. -
RTL - симуляция?
amelyutin9 ответил sifadin тема в Среды разработки - обсуждаем САПРы
Как rtl моделирование запистить из моделсима? -
Написание своих блоков декодирования потребовало гораздо больше времени, чем использование в проекте готовых ip модулей. Что такое loop unroll? Кто-нибудь пробовал считывать бинарный файл в симулинке, подать например на кодер и записать полученный результат в файл? Или это только в матлабе можно?
-
Быстро пришлось отказаться от использования мегафункции ввиду ее закрытой архитектуры. В итоге разобрался с теорией и реализовал свой декодер RS и БЧХ на vhdl. По ресурсам значительно выиграл т.к. делал последовательную обработку синдромов на одном решателе ключевого уравнения. Но этот подход потребовал много времени. Интересно попробовать матлаб для этих целей. Особенно если взяться за реализацию LDPC на плис.
-
Кто-нибудь использовал Матлаб или Симулинк для реализации кодеров и декодеров на ПЛИС (интересуют коды Рида-Соломона, БЧХ, LDPC, Турбо коды) с соответствующим преобразованием в vhdl-код? Какие результаты получились? Или все же сразу на vhdl вести разработку предпочтительней?
-
Fifo не подойдет? Еще вроде можно попробовать использовать Alt_shift_taps RAM-based shift register.
-
Попробуйте схему в квартусе нарисовать и посмотреть через сигналтаб на реальном сигнале, что происходит. Как вариант. На вашей временной диаграмме сигналы начала и конца кодового слова sink_sop и sink_eop всегда равны нулю, поэтому декодер не начинает работу. Их вроде самому надо сформировать в зависимости от длины кодового слова.
-
Спасибо!
-
Буду признателен за проекты с http://opencores.org: http://opencores.org/project,rs_dec_enc http://opencores.org/project,turbocodes http://opencores.org/project,viterbi_decoder_axi4s http://opencores.org/project,bch_dec_enc_dcd
-
Каскадное кодирование
amelyutin9 ответил amelyutin9 тема в Алгоритмы ЦОС (DSP)
Посмотрите G.956 I.4 -
Каскадное кодирование
amelyutin9 ответил amelyutin9 тема в Алгоритмы ЦОС (DSP)
OTN - оптическая транспортная сеть -
Каскадное кодирование
amelyutin9 ответил amelyutin9 тема в Алгоритмы ЦОС (DSP)
Может кто-нибудь подскажет какой смысл в такой каскадной схеме на приемной стороне ставить сначала именно БЧХ для исправления одиночных ошибок, а потом РС для групповых? В литературе ничего определенного не нашел. -
Каскадное кодирование
amelyutin9 ответил amelyutin9 тема в Алгоритмы ЦОС (DSP)
Код БЧХ для исправления одиночных ошибок, а Рида-Соломона групповых. Где вы тут сверточный код увидили? -
Каскадное кодирование
amelyutin9 опубликовал тема в Алгоритмы ЦОС (DSP)
Появился следующий вопрос. Есть система связи в которой исправление ошибок осуществляется внутренним декодером БЧХ(2047,1952) и внешним декодером Рида-Соломона(1023,1007). На приемном конце сначала стоит внутренний, потом внешний декодер. Одно из преимуществ данной схему то, что используется два относительно несложных в реализации декодера, которые можно использовать в том числе и по отдельности (если к примеру ресурсов плис не хватает или второй декодер находится в стадии разработки) с потерей помехоустойчивости. Что изменится если мы сначала поставим внешний декодер Рида-Соломона, а потом внутренний БЧХ? Если да, то что? -
У меня проект 16 декодеров на 10 разряда, должен влезть в плис циклон 3 (EP3C80) на 80000 логических элементов и около 300 элементов М9K, под декодер где-то 50-60% логики может немного больше. Память можно использовать почти всю, поэтому для меня дефицитной является логика. Точно не скажу сейчас сколько занимает т.к. еще не до конца доделал. Сколько логики займет ваш делитесь для поля GF(2^8),GF(2^10)?Что-то мне кажется таблица 1024 элемента по 10 бит для GF(2^10) много логики съест, хотя возможно я ошибаюсь. Вы на каком плисе свой декодер делали? Если плис можный стоит, например stratix 4 gt, то я думаю не принципиально как делать.
-
Видимо вы говорите про таблицу обратных элементов, а не о самом делителе. Возможно ваш метод тоже годится, но учитывая, что в декодере и так основная нагрузка ложится на логику я реализовал на блочной памяти. Для циклона 3 занимает 1 блок M9k. В добавок если декодер не один, а например 16 или 64 параллельно работающих. А вот для Рида-Соломона GF(2^10) все-таки лучше через ROM т.к. логики сожрет немерянно.
-
Тоже использовал эту статью, только она подходит не для всех примитивных полиномов. Создал блочную память на 256 ячеек со значениями обратных элементов, деление соответственно делал через умножение на элемент из этой таблицы. Но думаю можно и без блочной памяти обойти и сделать деление на логике. Есть статьи по реализации делителей на плис.
-
Тоже делал такой умножитель, на 170 Mhz (может и больше ) точно работает на cyclone 3, вроде не было проблем. Откуда взялись у вас 6000 строк кода что-то не пойму?
-
Вопрос снят. Разобрался в чем была проблема.
-
Я ловлю ошибки в SignalTabe с решателя ключевого уравнения (блок кеs), который по синдромам вычисляет alfa и число ошибок, и не наблюдаю обратной ситуации (показывает одну, иногда две ошибки), это в доказательство, что очень редко встречаются неисправимые ошибки, которые я не отслеживаю в свое декодере. А ошибки CRC возникают постоянно. Видимо в какие-то моменты происходит неправильное исправление или вообще исправления не происходит.(Может величина ошибки неправильная или позиция исправляется,только это не всегда происходит чаще всего правильно все исправляется. Даже не знаю где ошибку искать ). Много раз записывал сигнал и в моделсиме обрабатывал, тоже не наблюдал много ошибок.
-
Декодер Рида-Соломона испраляет не все ошибки
amelyutin9 опубликовал тема в Алгоритмы ЦОС (DSP)
Подскажите, почему декодер Рида-Соломона может исправлять не все ошибки? Правильность исправления данных проверяю по счетчику CRC. Создал два тракта - один с декодером, другой без декодера. Всегда наблюдаю одну из двух ситуаций:1) В тракте с декодером не ошибки CRC, в тракте без декодера есть. 2)Есть ошибка CRC в двух трактах. Ситуации когда декодер сам вносит ошибку не наблюдал. Количество ошибок точно не превышает исправляющую способность кода. В теории все работает. Когда сам вношу ошибку в конкретный байт декодер исправляет корректно. Заранее спасибо. -
FEC на ПЛИС
amelyutin9 ответил des00 тема в Языки проектирования на ПЛИС (FPGA)
Деление a/b в алгоритме Форни для декодера Рида-Соломона (255,239) реализовал через умножение используя таблицу инверсных элементов 1/b на блочной памяти (в таблицы номер ячейки значение b, значение ячейки соответственно результат 1\b). Подскажите правильная ли у меня таблица и если нет то где ошибка? Если кто-то реализовал алгоритм Форни для декодера на ПЛИС без использования таблицы инверсий, сколько места занял делитель в поле Галуа? inverse_memory.txt