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

Да уж, горькая правда жизни. Но, к сожалению, это касается не только кодирования, но и всей области телекоммуникаций. У нас в свое время курс по кодированию ограничился рассмотрением только кодов Хемминга и БЧХ. Даже сверточное не рассматривали, какие там Turbo и LDPC :(

К сожалению, катастрофическое состояние в высш. образовании непонятно как лечить.

Ну, поднять зарплаты преподам, чтобы они не разрабатывали ИБП, а занимались наукой.

Предположим, это сделали. А дальше что?

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

А совместные предприятия - это пылесосы, которые вытягивают через несколько лет

наши лучшие молодые мозги за бугор.

Вот и получается, что нет смысла поднимать вузы, т.к. это в основном пойдет на пользу только

зарубежному производству. Нашей стране нужны дворники , мелкие менеджеры и обслуга для топливного комплекса.

А то, что молодой специалист, разбогатев, потянется обратно на родину -

так могут думать только очень большие политики. Я таких примеров в своем окружении не знаю.

Точнее, знаю пару бывших студентов, которые вернулись, но как раз не разбогатев и не самые креативные.

В общем, все совсем грустно.

Но, мы, кажется, свернули в злостный нетопик.

Предлагаю на этом закончить или в личку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да именно так, при этом нужно модифицировать еще и процедуру Ченя (ввести там корректирующий коэффициент)

Не очень понятно какой корректирующий коэффициент т.е. наподобие корректирующего коэффициента для укороченного кода при инициализации, только alfa^0 ?

 

SKov

Спасибо большое спасибо за подробное объяснение.

Изменено пользователем Gold777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не очень понятно какой корректирующий коэффициент т.е. наподобие корректирующего коэффициента для укороченного кода при инициализации, только alfa^0 ?

алгоритм форни считает Yi = -z^m0 *omega(z)/z*lambda'(z), где m0 - степень первого корня. Но для m = 0, там будет 1 и коррекция не нужны. Ошибся немного %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

алгоритм форни считает Yi = -z^m0 *omega(z)/z*lambda'(z), где m0 - степень первого корня. Но для m = 0, там будет 1 и коррекция не нужны. Ошибся немного %)

У меня получается правильные величины ошибки (если синдромы считать с alfa^0 как в моем случае) только если omega(x)=alfa0*S2 + (alfa1*S3 +alfa2*S2)x + (alfa0*S4+alfa1*S3+alfa2*S2)x^2+ ....-хотя по теории надо считать

omega(x)=alfa0*S1 + (alfa1*S2 +alfa2*S1)x + (alfa0*S3+alfa1*S2+alfa2*S1)x^2+ ... В чем может быть ошибка или я теорию неправильно понял?

Изменено пользователем Gold777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня получается правильные величины ошибки (если синдромы считать с alfa^0 как в моем случае) только если omega(x)=alfa0*S2 + (alfa1*S3 +alfa2*S2)x + (alfa0*S4+alfa1*S3+alfa2*S2)x^2+ ....-хотя по теории надо считать

omega(x)=alfa0*S1 + (alfa1*S2 +alfa2*S1)x + (alfa0*S3+alfa1*S2+alfa2*S1)x^2+ ... В чем может быть ошибка или я теорию неправильно понял?

для выяснения проблемы вышлите мне параметры используемого вами кода : {m, n,k, m0, rootspace} и пару закодированных блоков. посмотрю что к чему. Лучше на почту.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Деление a/b в алгоритме Форни для декодера Рида-Соломона (255,239) реализовал через умножение используя таблицу инверсных элементов 1/b на блочной памяти (в таблицы номер ячейки значение b, значение ячейки соответственно результат 1\b). Подскажите правильная ли у меня таблица и если нет то где ошибка? Если кто-то реализовал алгоритм Форни для декодера на ПЛИС без использования таблицы инверсий, сколько места занял делитель в поле Галуа?

inverse_memory.txt

Изменено пользователем Gold777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаю пиарить красоту SV.

 

На сей раз использование возможностей SV для простого моделирования алгоритмов на примере сверточного дуобинарного турбокода. Поддерживаются стандарты DVB и Wimax + сделано расширение скоростей кодирования. Кодер синтезируемый, декодер пока только идеалка близкая к железу по организации вычислений и интерфейсам. Тестбенч - так называемый bertest. Поддерживается пока только QPSK. В идеалке можно покрутить разрядности, алгоритмы (семейство MAX Log MAP) посмотреть что и куда идет и как считается.

rsc_release_06022015.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запилил идеалку для прямого портирования на RTL уровень. Отличие от идеалки общего вида :

1. Одновременный проход прямой и обратной рекурсии

2. collision-free интерливер для одновременного доступа для метрик прямой и обратной ветви.

3. Компрессия метрик состояний ветвей для уменьшения расхода памяти метрик (прекрасно ложится на плис).

4. Изменена концепция работы с буферами данных для оптимизации ресурса памяти плиса.

5. Код почищен от мусора.

 

До синтезируемого RTL кода 1,5 шага :)

ЗЫ. Пока все проверяется на QPSK скорости 1/3 и 1/2. Другие скорости и модуляции пока не проверял.

rsc_release_10022015.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синтезируемый, статически конфигурируемый, однопроходный (один проход на полуитерацию) декодер DVB-RSC кода и бертест для него. Синтез в ква 9.1 для сыклона и7 для блока 128 бит : ~6000LE, 15M9K, 106МГц настройки по умолчанию. Тактовая упирается в расчет рекурсии. Нормализация вынесена из нее, все уперлось в ограничения алгоритма.

rsc_release_24022015.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Последняя версия кодека:

1. Добавлена таблица перемежений Wimax-OFDM, Wimax-OFDMA

2. Переписана работа кодера (таблицы, генератор адресов), архитектура оптимизирована под ПЛИС

3. Сделан рекурсивный процессор с комбинированной модульно-классической арифметикой, ресурс тот же, но тактовая поднялась за счет уменьшения длинны трасс.

4. Убран атрибут синтеза в памяти метрик, приводил к некорректной работе в ПЛИС. Кое где вбиты атрибуты, во избежание имплементации сдвиговых регистров на памяти.

5. Кодек проверен в железе на разных пакетах и разных скоростях кодирования на последовательностях до 1е9 бит.

 

На этом опенсорсная часть, этого кодека окончена :)

rsc_release_04032015.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

des00, спасибо большое за труды.

 

Что планируете реализовать в закрытой части, если не секрет?

Чтобы знать, к чему стремиться :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что планируете реализовать в закрытой части, если не секрет?

Именно по этому кодеку планов громадье :

1. Динамически конфигурируемый кодек, в том числе с переключением на лету.

2. Эконом версию декодера с меньшим ресурсом.

3. Добавить модуляции до КАМ64.

4. Текущий декодер, на частоте 100 МГц и 8 итерациях дает где-то 12 Мб/с скорость декодирования, есть задумки сделать декодер на ~100 мегабит

 

Ну и затем BTC, LDPC :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Wimax LDPC encoder со статической конфигурацией. Поддерживаемые скорости 1/2, 2/3B, 3/4A, 5/6.

Параметры кодера для сыклона 3 и7:

Кодирование по 4 бита, скорость 5/6, длина 576 : 456 плиток хлопающих на частоте 250МГц (~1 Гбит/с)

Кодирование по 4 бита, скорость 5/6, длина 2304 : 1342 плитки хлопающих на частоте 200МГц (~800Мб/с)

Кодирование по 8 бит, скорость 5/6, длина 2304 : 1145 плитки хлопающих на частоте 210МГц (~1.68Гбит/с)

 

UPD. Метод проверки - по эталонной модели и матлабу. Код для матлаба в теме про кодирование в Алгоритмах

UPD2. Возможность работать по 4/8 бит определяется целочисленной кратностью expansion factor (zf) 4/8 битам.

ldpc_release_10042015.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Wimax LDPC encoder со статической конфигурацией. Поддерживаемые скорости 1/2, 2/3B, 3/4A, 5/6.

Спасибо за еще один пример пользы SystemVerilog'a!

Вы намеренно по асинхронному сбросу сбрасываете только val и state? Исходите из каких-то соображений по разводке или из философии, что сбрасывать надо только управляющие сигналы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы намеренно по асинхронному сбросу сбрасываете только val и state? Исходите из каких-то соображений по разводке или из философии, что сбрасывать надо только управляющие сигналы?

Все по заветам Кена Чапмена(автора пикоблейза и Xilinx гуру): When creating each section of a design, simply ask, “Does this bit need to be reset”?

Все в системе определяется по сигналу валидности и состоянием конечного автомата, смысла сбрасывать другие сигналы нет. Помимо этого, на некоторых платформах (где триггер может быть только с одним типом сброса), можно потерять в ресурсе или производительности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...