Перейти к содержанию
    

amelyutin9

Участник
  • Постов

    118
  • Зарегистрирован

  • Посещение

Весь контент amelyutin9


  1. Хочу разобраться в декодировании кодов БЧХ и Рида-Соломона с использованием преобразования Фурье с целью последующей реализации на ПЛИС. Подскажите, какую можно почитать литературу в этом направлении (желательно с примерами). Возможно у кого-то есть конкретные результаты в этом направлении. Интересно их узнать.
  2. Если плис Altera, можно написать. Кол-во нужной логики растет еще размерности поля в котором строится код т.е. от длины кодового слова. Еще важно сколько одновременно кодовых слов нужно обрабатывать. Вы перебираете все кони от a^128 до a^255 с расчет что корень a^128 это ошибка в нулем байте, в a^255 в 127. Если корень a^220 то ошибка в 92 байте соответственно.
  3. Не пойму, что конкретно не получается? Для БЧХ n=2^m-1, поля Галуа соответственно GF(2^m) В принципе для декодирования по Берлекемпу-Месси генераторный полином вообще не нужен (он нужен только для кодера). Нужен примитивный полином. В Морелос-Сарагоса достаточно понятно написано.
  4. Как rtl моделирование запистить из моделсима?
  5. Написание своих блоков декодирования потребовало гораздо больше времени, чем использование в проекте готовых ip модулей. Что такое loop unroll? Кто-нибудь пробовал считывать бинарный файл в симулинке, подать например на кодер и записать полученный результат в файл? Или это только в матлабе можно?
  6. Быстро пришлось отказаться от использования мегафункции ввиду ее закрытой архитектуры. В итоге разобрался с теорией и реализовал свой декодер RS и БЧХ на vhdl. По ресурсам значительно выиграл т.к. делал последовательную обработку синдромов на одном решателе ключевого уравнения. Но этот подход потребовал много времени. Интересно попробовать матлаб для этих целей. Особенно если взяться за реализацию LDPC на плис.
  7. Кто-нибудь использовал Матлаб или Симулинк для реализации кодеров и декодеров на ПЛИС (интересуют коды Рида-Соломона, БЧХ, LDPC, Турбо коды) с соответствующим преобразованием в vhdl-код? Какие результаты получились? Или все же сразу на vhdl вести разработку предпочтительней?
  8. Fifo не подойдет? Еще вроде можно попробовать использовать Alt_shift_taps RAM-based shift register.
  9. Попробуйте схему в квартусе нарисовать и посмотреть через сигналтаб на реальном сигнале, что происходит. Как вариант. На вашей временной диаграмме сигналы начала и конца кодового слова sink_sop и sink_eop всегда равны нулю, поэтому декодер не начинает работу. Их вроде самому надо сформировать в зависимости от длины кодового слова.
  10. Буду признателен за проекты с 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
  11. OTN - оптическая транспортная сеть
  12. Может кто-нибудь подскажет какой смысл в такой каскадной схеме на приемной стороне ставить сначала именно БЧХ для исправления одиночных ошибок, а потом РС для групповых? В литературе ничего определенного не нашел.
  13. Код БЧХ для исправления одиночных ошибок, а Рида-Соломона групповых. Где вы тут сверточный код увидили?
  14. Появился следующий вопрос. Есть система связи в которой исправление ошибок осуществляется внутренним декодером БЧХ(2047,1952) и внешним декодером Рида-Соломона(1023,1007). На приемном конце сначала стоит внутренний, потом внешний декодер. Одно из преимуществ данной схему то, что используется два относительно несложных в реализации декодера, которые можно использовать в том числе и по отдельности (если к примеру ресурсов плис не хватает или второй декодер находится в стадии разработки) с потерей помехоустойчивости. Что изменится если мы сначала поставим внешний декодер Рида-Соломона, а потом внутренний БЧХ? Если да, то что?
  15. У меня проект 16 декодеров на 10 разряда, должен влезть в плис циклон 3 (EP3C80) на 80000 логических элементов и около 300 элементов М9K, под декодер где-то 50-60% логики может немного больше. Память можно использовать почти всю, поэтому для меня дефицитной является логика. Точно не скажу сейчас сколько занимает т.к. еще не до конца доделал. Сколько логики займет ваш делитесь для поля GF(2^8),GF(2^10)?Что-то мне кажется таблица 1024 элемента по 10 бит для GF(2^10) много логики съест, хотя возможно я ошибаюсь. Вы на каком плисе свой декодер делали? Если плис можный стоит, например stratix 4 gt, то я думаю не принципиально как делать.
  16. Видимо вы говорите про таблицу обратных элементов, а не о самом делителе. Возможно ваш метод тоже годится, но учитывая, что в декодере и так основная нагрузка ложится на логику я реализовал на блочной памяти. Для циклона 3 занимает 1 блок M9k. В добавок если декодер не один, а например 16 или 64 параллельно работающих. А вот для Рида-Соломона GF(2^10) все-таки лучше через ROM т.к. логики сожрет немерянно.
  17. Тоже использовал эту статью, только она подходит не для всех примитивных полиномов. Создал блочную память на 256 ячеек со значениями обратных элементов, деление соответственно делал через умножение на элемент из этой таблицы. Но думаю можно и без блочной памяти обойти и сделать деление на логике. Есть статьи по реализации делителей на плис.
  18. Тоже делал такой умножитель, на 170 Mhz (может и больше ) точно работает на cyclone 3, вроде не было проблем. Откуда взялись у вас 6000 строк кода что-то не пойму?
  19. Я ловлю ошибки в SignalTabe с решателя ключевого уравнения (блок кеs), который по синдромам вычисляет alfa и число ошибок, и не наблюдаю обратной ситуации (показывает одну, иногда две ошибки), это в доказательство, что очень редко встречаются неисправимые ошибки, которые я не отслеживаю в свое декодере. А ошибки CRC возникают постоянно. Видимо в какие-то моменты происходит неправильное исправление или вообще исправления не происходит.(Может величина ошибки неправильная или позиция исправляется,только это не всегда происходит чаще всего правильно все исправляется. Даже не знаю где ошибку искать ). Много раз записывал сигнал и в моделсиме обрабатывал, тоже не наблюдал много ошибок.
  20. Подскажите, почему декодер Рида-Соломона может исправлять не все ошибки? Правильность исправления данных проверяю по счетчику CRC. Создал два тракта - один с декодером, другой без декодера. Всегда наблюдаю одну из двух ситуаций:1) В тракте с декодером не ошибки CRC, в тракте без декодера есть. 2)Есть ошибка CRC в двух трактах. Ситуации когда декодер сам вносит ошибку не наблюдал. Количество ошибок точно не превышает исправляющую способность кода. В теории все работает. Когда сам вношу ошибку в конкретный байт декодер исправляет корректно. Заранее спасибо.
  21. Деление a/b в алгоритме Форни для декодера Рида-Соломона (255,239) реализовал через умножение используя таблицу инверсных элементов 1/b на блочной памяти (в таблицы номер ячейки значение b, значение ячейки соответственно результат 1\b). Подскажите правильная ли у меня таблица и если нет то где ошибка? Если кто-то реализовал алгоритм Форни для декодера на ПЛИС без использования таблицы инверсий, сколько места занял делитель в поле Галуа? inverse_memory.txt
×
×
  • Создать...