Jump to content

    

FEC на ПЛИС

турбо (на основе БЧХ кодов было бы интересно порыть)

есть такие практические схемы турбокодов-произведения на основе БЧХ.

 

И сопутствующий вопрос, как тестировать вероятностные декодеры без матлаба? сгородить в верилоге модулятор/демодулятор + модель awgn ?

я использую собственные программные модели (С++) модулятор/демодулятор + модель awgn.

Share this post


Link to post
Share on other sites
есть такие практические схемы турбокодов-произведения на основе БЧХ.

как раз от вас я о них и слышал %), не поделитесь ссылками?

я использую собственные программные модели (С++) модулятор/демодулятор + модель awgn.

вы же вроде как делаете как раз все для PC платформы, или вы через DPI портируете это в HDL симуляторы и тестируете HDL корки ?

 

Share this post


Link to post
Share on other sites
как раз от вас я о них и слышал %), не поделитесь ссылками?

по-моему здесь http://www.google.com.ua/url?sa=t&rct=...c2g&cad=rja

 

вы же вроде как делаете как раз все для PC платформы, или вы через DPI портируете это в HDL симуляторы и тестируете HDL корки ?

неа, только программное моделирование

Share this post


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

Интересует реализация внутреннего декодера. Судя по документу, который скинули, у вас следующая схема: 8 блоков вычисления синдромов на входе по 8 бит, один блок решателя ключевого уравнения обрабатывающий данные с 8-ми каналов по очереди, 8 блоков Ченя по 8 бит. Записать 8 блоков данных в память перед декодированием и после декодирования (Вот этот момент особенно интересует). Вы так сделали? И еще по ресурсам было бы интересно хотя бы приблизительные результаты оценить. Можно в личку. I.4 устроил, но надо остальные FEC схемы реализовать.

Share this post


Link to post
Share on other sites
по-моему здесь

большое спасибо, начну копать %)

Share this post


Link to post
Share on other sites

To des00

Хочу сделать, чтобы IBM работал на частоте в два раза меньше. Для этого делаю multicycle как описано у вас в блоге. Причем в проекте несколько разных декодеров. Правильно ли я задал констрейты?

set_multicycle_path -from {*bch_berlekamp:berlekamp|*} -to {*bch_berlekamp:berlekamp|*} -setup -end 2
set_multicycle_path -from {*bch_berlekamp:berlekamp|*} -to {*bch_berlekamp:berlekamp|*} -hold -end 1

Clock Enable для входа в модуле bch_berlekamp генерится следующем образом.

iclkena <= ~iclkena;

Edited by Denisnovel

Share this post


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

set_multicycle_path -from {*bch_berlekamp:berlekamp|*} -to {*bch_berlekamp:berlekamp|*} -setup -end 2
set_multicycle_path -from {*bch_berlekamp:berlekamp|*} -to {*bch_berlekamp:berlekamp|*} -hold -end 1

Clock Enable для входа в модуле bch_berlekamp генерится следующем образом.

iclkena <= ~iclkena;

 

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

 

Если по мультициклам, то их накладывают на цепи между регистрами источниками сигнала и приемниками. Где в вашей команде указано что это относиться к регистрами ? :))

Share this post


Link to post
Share on other sites

В моём кнстрейте описывается, что все регистры в модуле bch_berlekamp:berlekamp работают на частоте в два раза меньше. Т.е. источником и приемником является эти регистры. Или я не прав?

Если я захочу сделать частоту в 2 раза меньше, то в PLL я должен выдать синхроную частоту. Как это описать?

post-33753-1340685001_thumb.png

Edited by Denisnovel

Share this post


Link to post
Share on other sites
В моём кнстрейте описывается, что все регистры в модуле bch_berlekamp:berlekamp работают на частоте в два раза меньше. Т.е. источником и приемником является эти регистры. Или я не прав?

хммм, вообще то регистры описываются через команду get_registers ;)

 

Если я захочу сделать частоту в 2 раза меньше, то в PLL я должен выдать синхроную частоту. Как это описать?

хммм, сгененрировать PLL и посмотреть на вейвформы ее работы?

 

Share this post


Link to post
Share on other sites

А если написать так, то между регистрами модуля БМ будет увеличенный период?

set_multicycle_path -from [get_registers{*bch_berlekamp:berlekamp|*}] -to  [get_registers{*bch_berlekamp:berlekamp|*}] -setup -end 2
set_multicycle_path -from  [get_registers{*bch_berlekamp:berlekamp|*}] -to  [get_registers{*bch_berlekamp:berlekamp|*}] -hold -end 1

С PLL не поял? Допустим, я сделал синхронную частоту в два раза меньше, подал её на модуль БМ, как синхронизировать данные между этими clock domain? :(

Share this post


Link to post
Share on other sites
А если написать так, то между регистрами модуля БМ будет увеличенный период?

смотрите что говорит TQ, если он скажет что будет, значит будет. %)

С PLL не поял? Допустим, я сделал синхронную частоту в два раза меньше, подал её на модуль БМ, как синхронизировать данные между этими clock domain? :(

а если сделаете пусть и на одной частоте но с clkena синхронизировать не потребуется ? :) Повторю еще раз, прочитайте что такое PLL и ее свойства. Сгенерируйте в мегавизарде PLL и посмотрите на вейвформы выходных сигналов. Тогда сразу все поймете %)

 

Share this post


Link to post
Share on other sites

По PLL я имею ввиду, что одна ПЛЛ генерирует быстрый и медленный клок, то есть они синхронные, как на картинке выше . Ну да оставим PLL.

У меня работает первый вариант задания контстрейтов :rolleyes: , TQ распознает их как мультисайкл. Самый критичный путь в этом случае от clken до регистров модуля БМ.

Еще вопрос. Правильно ли я понимаю, что БЧХ может детектировать ошибки больше t, но меньше 2t, и определять их количество?

 

Share this post


Link to post
Share on other sites
Еще вопрос. Правильно ли я понимаю, что БЧХ может детектировать ошибки больше t, но меньше 2t, и определять их количество?

БЧХ может детектировать 2t ошибок

Share this post


Link to post
Share on other sites
Еще вопрос. Правильно ли я понимаю, что БЧХ может детектировать ошибки больше t, но меньше 2t, и определять их количество?

Количество не может. Только сам факт наличия где-то ошибок кратности от 1 до d-1.

 

Share this post


Link to post
Share on other sites
У меня работает первый вариант задания контстрейтов :rolleyes: , TQ распознает их как мультисайкл.

значит TQ вас понял %)

 

Количество не может. Только сам факт наличия где-то ошибок кратности от 1 до d-1.

Вот интересно, как я понял из учебников по кодированию, сам код БЧХ позволяет обнаружить большее кол-во ошибок, но не все из них. Ограничение d-1 связанно с использованием стандартных методов декодирования, через решение системы уравнений. Интересно чисто теоретически, есть ли методы позволяющие преодолеть эту границу? (ну кроме полного перебора или синдромного декодирования что почти тоже самое).

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