des00 25 19 июня, 2011 Опубликовано 19 июня, 2011 · Жалоба сделал отдельную тему для проекта с началом здесь сообщения из кросс тем переместил. продолжаем пиарить красоту SV. итак новый релиз проекта БЧХ : 1. переписана работа с математикой в полях галуа. Теперь ква собирает декодер много быстрее, почти не задумываясь и не требует кучу памяти %) 2. переписан статически конфигурируемый БЧХ кодер/декодер, удалены лишние модули, ясность выше код чище 3. добавлен статический конфигурируемый RS кодер/декодер, стиль унифицирован с БЧХ кодером. Внимание : в сорцах есть реализация BM алгоритма, требующая на декодирование всего check тактов (!!! именно тактов а не шагов). 4. модифицированы random constraints тестбенчи, ясность выше, код чище. 5. Все как и прежде, не требует каких либо генераторов, скриптов и т.д. Вычисляется и синтезируется по месту. Расчет генераторного полинома БЧХ по прежнему не сделан %( Динамически конфигурируемые кодеры/декодеры выкладывать не буду, это уж как нить сами ;) UPD. Естественно осталась возможность использовать несколько инстансов кодеров с разными параметрами в одном проекте %) bch_rs_release_19062011.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба Таки нашел время добить reformulated IBM алгоритм для БЧХ кодов, который приведен в статье Low-Power High-Throughput BCH Error Correction VLSI Design for Multi-Level Cell NAND Flash Memories со случайно(хотя скорее преднамеренно !!!) допущенной ошибкой. В итоге вывел свою реализацию на основе RIBM для РС кодов. SRIBM позволяет за t тактов (!!!) вычислить полином локаторов + шикарно ложиться на архитектуру плис. В зависимости от используемого кода и требуемой производительности позволяет получить хорошие результаты по ресурсу(!!!). В комплекте 3 РТЛ реализации этого алгоритма + идеалки используемые для вывода алгоритма. bch_rs_release_15072011.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 марта, 2012 Опубликовано 16 марта, 2012 · Жалоба 1. Причесал описание, для БЧХ добавил полиномов, кое что поправил в тестбенче 2. Добавил статически конфигурируемый декодер РС со стираниями, по алгоритму ribm, правда реализации только самая быстрая и самая медленная. 3. Различные алгоритмы декодирования РС со стираниями в идеалках (BM, IBM, rIBM, RIBM) ЗЫ. точнее не самая быстрая, можно посчитать также за check тактов, если полином локаторов стираний, рассчитать заранее используя блок rs_eras_syndrome_count_poly для вычисления синдрома и полинома локаторов стираний :) bch_rs_release_16032012.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
negiin 0 16 марта, 2012 Опубликовано 16 марта, 2012 (изменено) · Жалоба для БЧХ добавил полиномов Не нашел. Функция generate_pol_coeficients таже. Изменено 16 марта, 2012 пользователем Denisnovel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 марта, 2012 Опубликовано 16 марта, 2012 · Жалоба Не нашел. Функция generate_pol_coeficients таже. хммм, наверное в другом проекте инклудник лежит, позже соберу все полиномы с которыми работал и дополню. Но вообще кому надо полиномы до 511 просто считаются в матлабе. потом копи пастом вбиваются в инклудник bch_gen_poly.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
negiin 0 16 марта, 2012 Опубликовано 16 марта, 2012 · Жалоба Я думал что добавили функцию расчета полиномов. Проблема в том, что нужно считать больше 511. Ну да ладно. Кстати, нашел еще одну реализацию БМ, можно ли при этом уменьшить обьем на 40%? IEICE_BCH_pub20100401.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 марта, 2012 Опубликовано 16 марта, 2012 · Жалоба Я думал что добавили функцию расчета полиномов. Проблема в том, что нужно считать больше 511. Ну да ладно. все никак время не найду разобраться что там к чему и сделать. Кстати, нашел еще одну реализацию БМ, можно ли при этом уменьшить обьем на 40%? надо глянуть на досуге надо глянуть на досуге хмм, смотрю алгоритм на странице 773, судя по алгоритму должно быть 2*t умножителей GF(2^m), смотрю выложенный код data_t tetta [0 : t2+1]; logic tetta_clear [0 : t2+2]; data_t gamma [0 : t2+2]; те же t2 умножителей %) (t2+1) это константа, а если еще учесть что у них в алгоритме For r = 0 step 1 until 2t-1 do , а в выложенном коде for (int r = 0; r <= t-1; r += 1) я немного смущен %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amelyutin9 0 16 марта, 2012 Опубликовано 16 марта, 2012 · Жалоба 1. Причесал описание, для БЧХ добавил полиномов, кое что поправил в тестбенче 2. Добавил статически конфигурируемый декодер РС со стираниями, по алгоритму ribm, правда реализации только самая быстрая и самая медленная. 3. Различные алгоритмы декодирования РС со стираниями в идеалках (BM, IMB, rIBM, RIBM) ЗЫ. точнее не самая быстрая, можно посчитать также за check тактов, если полином локаторов стираний, рассчитать заранее используя блок rs_eras_syndrome_count_poly для вычисления синдрома и полинома локаторов стираний :) Для кода БЧХ GF(2^11) исправляющего 8 ошибок, какую тактовую частоту может обеспечить ваш декодер? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 марта, 2012 Опубликовано 17 марта, 2012 · Жалоба Для кода БЧХ GF(2^11) исправляющего 8 ошибок, какую тактовую частоту может обеспечить ваш декодер? полином дайте проверю. Из того что делал, декодер с t = 23 в поле GF(2^8), свободно, не особо напрягаясь, работает на 200МГц на третьем сыклоне. Для GF(2^11) проверить надо, но думаю что 150 на том же чипе даст точно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amelyutin9 0 17 марта, 2012 Опубликовано 17 марта, 2012 · Жалоба полином дайте проверю. Из того что делал, декодер с t = 23 в поле GF(2^8), свободно, не особо напрягаясь, работает на 200МГц на третьем сыклоне. Для GF(2^11) проверить надо, но думаю что 150 на том же чипе даст точно. у меня дает 135 на третьем циклоне, а надо 155. Какими способами можно увеличить частоту? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 марта, 2012 Опубликовано 17 марта, 2012 · Жалоба у меня дает 135 на третьем циклоне, а надо 155. полином дайте, проверю сколько получиться. Вот для примера кодер {8191, 8152, 3/7} работа в поле GF(2^13), чип EP3C25...C8, используется TQ, все по дефолту, порты виртуальные результаты LE/REG/Fmax bch_enc 45/44/402.09MHz bch_dec в режиме ribm_t_by_t 823/447/180.6MHz и это при математике в поле GF(2^13), 5-6 слоев логики. При этом TQ показывает пару возможных оптимизаций для разгона, но если учесть что на декодирование уходит 22 такта, а пакет длинной 8191 такт, то можно сделать BM по мультициклу и задрать тактовую/битовую потока под 250-300 МГц %) Какими способами можно увеличить частоту? Единственный способ : оптимизация логических функций и грамотная конвейеризация под целевую ПЛИС. Научиться этому в двух словах не возможно, все приходит с опытом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amelyutin9 0 17 марта, 2012 Опубликовано 17 марта, 2012 · Жалоба полином дайте, проверю сколько получиться. Вот для примера кодер {8191, 8152, 3/7} работа в поле GF(2^13), чип EP3C25...C8, используется TQ, все по дефолту, порты виртуальные полином 2053(x^11+x^2+1), код (2040, 1952) поле GF(2^11) 8 ошибок чип EP3C25...C8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 марта, 2012 Опубликовано 18 марта, 2012 · Жалоба полином 2053(x^11+x^2+1), код (2040, 1952) поле GF(2^11) 8 ошибок чип EP3C25...C8 а где генераторный полином? примитивный полином мне не нужен %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 марта, 2012 Опубликовано 18 марта, 2012 · Жалоба а где генераторный полином? примитивный полином мне не нужен %) без генераторного полинома, bch_enc не собрать, а результаты по декодеру LE/REG/Fmax bch_dec в режиме ribm_t_by_t 1127/790/213,04MHz 4 слоя логики. Если учесть что для этого результата решение BM занимает 129 тактов, а пакет весит 2040, то можно посадить BM для работы на половинном клоке, поставить мультицикл и выжать 250-300 МГц. Но и в базе 200 мегабит в секунду обрабатывает не особо напрягаясь %) если не сложно сообщите генераторный полином для этого кода для коллекции, можно в личку. ну не умею я пока их самостоятельно рассчитывать %( А ковыряние в гугле мне не помогло %( Всем кто решиться использовать этот декодер при низких Eb/N0, надо помнить что в этом декодере, перебор ченя и коррекция ошибок происходят одновременно. Поэтому в случае отказа от декодирования, который определиться в конце ченя, декодер размножает ошибки. Что бы это побороть, нужно немного модифицировать ченя, выплюнуть сырые данные в фифошку/память вместе с коррекцией ошибок ну и потом считать с коррекцией или без %) но это не сложно и делается минут за 10-20 %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amelyutin9 0 18 марта, 2012 Опубликовано 18 марта, 2012 (изменено) · Жалоба без генераторного полинома, bch_enc не собрать, а результаты по декодеру LE/REG/Fmax bch_dec в режиме ribm_t_by_t 1127/790/213,04MHz 4 слоя логики. Если учесть что для этого результата решение BM занимает 129 тактов, а пакет весит 2040, то можно посадить BM для работы на половинном клоке, поставить мультицикл и выжать 250-300 МГц. Но и в базе 200 мегабит в секунду обрабатывает не особо напрягаясь %) если не сложно сообщите генераторный полином для этого кода для коллекции, можно в личку. ну не умею я пока их самостоятельно рассчитывать %( А ковыряние в гугле мне не помогло %( Всем кто решиться использовать этот декодер при низких Eb/N0, надо помнить что в этом декодере, перебор ченя и коррекция ошибок происходят одновременно. Поэтому в случае отказа от декодирования, который определиться в конце ченя, декодер размножает ошибки. Что бы это побороть, нужно немного модифицировать ченя, выплюнуть сырые данные в фифошку/память вместе с коррекцией ошибок ну и потом считать с коррекцией или без %) но это не сложно и делается минут за 10-20 %) Да, интересный у вас результаты получились. Меня интересует именно декодер. Вроде для него генераторный полином я не использовал, но посмотрю. Точно сейчас посмотреть не могу, но приблизительно sibm/5000 LE/700-800 Reg/135 Fmin Mhz (требуется 155), но результат за 16 тактов. На решение не более 32 тактов, иначе не успею. Интересно какие при таком условии будет характеристики вашего декодера. Можете объяснить как посадить BM для работы на половинном клоке и что значит поставить мультицикл и выжать 250-300 МГц, вообще как-то не очень понятно что вы имеете ввиду. Если можно, объясните поподробнее. Изменено 18 марта, 2012 пользователем Gold777 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться