Jump to content

    

FEC на ПЛИС

Очередное обновление :

1. Добавил все БЧХ полиномы, которые использовал и проверял

2. Добавил возможность изменять rootspace в кодере/декодере RS без стираний (по просьбе форумчан)

bch_rs_release_03042012.zip

Share this post


Link to post
Share on other sites
Очередное обновление :

1. Добавил все БЧХ полиномы, которые использовал и проверял

2. Добавил возможность изменять rootspace в кодере/декодере RS без стираний (по просьбе форумчан)

Жаль, что нет кнопочки "Спасибо!" :)

Share this post


Link to post
Share on other sites

1. Добавил возможность изменять rootspace в кодере/декодере RS со стираниями (для общности)

bch_rs_release_04042012.zip

Share this post


Link to post
Share on other sites

Есть вопрос по парралельному декодеру. Если длина кодового слова не кратна ширине декодера, то в последнее слове передаются не значащие биты. Поэтому синдром считается не правильно. Как быть?

Share this post


Link to post
Share on other sites
Есть вопрос по парралельному декодеру. Если длина кодового слова не кратна ширине декодера, то в последнее слове передаются не значащие биты. Поэтому синдром считается не правильно. Как быть?

вырезать из расчета незначащие биты %)

Share this post


Link to post
Share on other sites

Я сделал так

osyndrome <=  ieop? osyndrome_comb[n%dec_width]: osyndrome_comb[dec_width];

Где osyndrome_comb[n%dec_width] как раз синдром без учета последних бит.

Но в этом случае критический путь получился очень длинным

Share this post


Link to post
Share on other sites
Но в этом случае критический путь получился очень длинным

ну а как вы хотите по другому? %) за все надо платить. тут либо так, либо искать другие способы задать смещение начала/конца.

 

ЗЫ. почему бы вам не перенести этот мультиплексор за триггеры. хлопнуть синдромы в регистры, задержать управление на 1 такт ?

Share this post


Link to post
Share on other sites
если имелось в виду по 8 бит за 1 такт, то чему удивляться то? ручками распишите получаемую логику на уровне функций и это станет очевидно.

 

ЗЫ. если вам нужна производительсность бчх 8 бит за 1 такт (что, если брать например сыклон 3, соответствует ~200 мегабайт в секунду), то как вариант поставить 8 декодеров, с одним блоком BM.

Если нужна производительность 8 бит за такт для кода длиной 2040, получается, что блок синдромов получит результат за 255 тактов. Т.е. за один так для первого синдрома вычисляется (alfa^1,alfa^2,alfa^3,..,alfa^8). Как вы предлагаете поставить 8 декодеров как-то не очень понятно? Если поставить 8 блоков подсчета синдромов параллельно, получается в первый блок идет первый бит, во второй блок 2-й бит и т.д, хотя этот второй бит нужен для подсчета в первом блоке. И еще вопрос как поступать, если нужна производительность 64 бита за такт для этого же кода? Думаю, что за 31-32 такта думаю по частоте не войдет.

Share this post


Link to post
Share on other sites
Может это поможет на ст 771. Если не секрет, делаете для G.975.1?

Получается надо обрабатывать по 8 бит или по 16, тогда возможно по частоте войдет. Да, делаю для G.975.

Share this post


Link to post
Share on other sites
Как вы предлагаете поставить 8 декодеров как-то не очень понятно? Если поставить 8 блоков подсчета синдромов параллельно, получается в первый блок идет первый бит, во второй блок 2-й бит и т.д, хотя этот второй бит нужен для подсчета в первом блоке. И еще вопрос как поступать, если нужна производительность 64 бита за такт для этого же кода? Думаю, что за 31-32 такта думаю по частоте не войдет.

а если заранее, записать 8 фреймов в память перед декодированием и после декодирования ? ;)

 

Share this post


Link to post
Share on other sites

Нужно сохранять синдром и поочереди подавать их в БМ.

Как я понял вы делаетет I.4. Почему выбрали этот алгоритм? Еще более не скромный вопрос: Т8 или Орион?

Share this post


Link to post
Share on other sites
Нужно сохранять синдром и поочереди подавать их в БМ.

Как я понял вы делаетет I.4. Почему выбрали этот алгоритм? Еще более не скромный вопрос: Т8 или Орион?

Я делаю I.3. I.4 сделал там вроде все понятно, идет распараллеливание данных на 64 блока т.к каждый бит принадлежит отдельному кодовому слову. Если вы сделали I.3, расскажи как. Еще интересно сколько ваши декодеры заняли ресурсов.

Поймите правильно, но мне бы не хотелось называть организацию в которой работаю.

 

а если заранее, записать 8 фреймов в память перед декодированием и после декодирования ? ;)

Собственно так и собрался делать.

Share this post


Link to post
Share on other sites
Собственно так и собрался делать.

:beer: оптимальные решения они всегда в одной области находяться.

 

ЗЫ. Интересно мнение форумчан, как вы смотрите на то, что бы пополнить тему декодерами : витерби, турбо (на основе БЧХ кодов было бы интересно порыть), LDPC (интересно порыть, т.к. в этой теме ничего не понимаю)? И сопутствующий вопрос, как тестировать вероятностные декодеры без матлаба? сгородить в верилоге модулятор/демодулятор + модель awgn ?

Share this post


Link to post
Share on other sites

I.3 я сделал. Какие есть конкретные вопросы. По ресурсам сложно сказать, так как нужно еще оптимизировать кое-что. Чем не устроил I.4?

Edited by Denisnovel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this