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

Maratz

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о Maratz

  • Звание
    Участник
  1. Repeat Accumulate коды

    Лучшие результаты из нескольких рассмотренных вариантов показала такая схема: сравнивать знаки априорной и внешней информации внутреннего декодера и в случае совпадения увеличивать надежность внешней информации на соответствующих позициях и уменьшать в случае несовпадения. Например, на входе SPC имеем 4 значения - [1.0 0.7 -0.8 0.6]. На выходе SPC получается [0.7 -0.6] (априорная информация). Предположим, что на выходе внутреннего декодера [0.2 0.1] (внешняя информация). В первом случае знак совпадает, значит надежность значений, из которых получен первый элемент растет на 0.2. Во втором, знаки не совпадают - надежность уменьшается. Соответственно восстановленные значения [1.2 0.9 -0.7 0.5].
  2. Repeat Accumulate коды

    Добрый день. Repeat Accumulate коды - это разновидность SCCC турбо-свёрточных кодов. По построению декодера вопросов в целом не имеется. Не уверен в правильности восстановления выколотых бит. Поясню на примере: Имеем сообщение длиной N = 1024. Внешний кодер с r = 1/2, перемежитель на 2N элементов, блок SPC (Single Parity Check) с постоянным Q = 8 и внутренний кодер с r = 1/1. Блок SPC - находит сумму по модулю 2 у Q элементов. В рамках данного примера, мы получим 2048/8 = 256 бит, которые подлежат кодирование внутренним кодером, они же будут проверочной частью кодового слова. Вопрос стоит в том, как правильно восстановить 256 значений, полученных на выходе внутреннего декодера в 2048?
  3. Да, действительно, спасибо
  4. Здравствуйте. Имеется модуль "package_func_v.v", содержащий функции. Подгружается с помощью директивы `include: Код`include "package_func_v.v"; Проверка синтаксиса в ISE 14.7 выдает следующую ошибку: nested module not allowed in this dialect. Use system verilog mode. Можно ли в тандеме ISE/Verilog как-то поместить все функции в отдельный модуль/пакет/библиотеку и вызывать их оттуда?
  5. Реализация SOVA

    Цитата(Grizzzly @ Feb 27 2017, 12:12) Пожалуйста: [attachment=105814:muhammad2013.pdf] Спасибо!
  6. Реализация SOVA

    Господа, может у кого-нибудь есть статья "Low complexity FPGA implementation of Register Exchange Based Viterbi decoder"? Буду очень признателен.
  7. Реализация SOVA

    Здравствуйте. Помогите разобраться со следующим вопросом: при реализации обратного прохода необходимо сравнивать выживший путь и путь-конкурент. Но как правильно его выбрать? К примеру, возьмем решетку на 4 состояния, скорость 1/2. В каждое состояние приходит два сравниваемых ребра. После процедуры ССВ на данном участке решетки из 8 возможных остается 4 ребра, одно из которых соответствует правильному пути. В литературе (при обратном проходе методом register exchange) рекомендуют в этот момент зафиксировать три параметра: выживший путь, абсолютную разницу метрик и были ли равны биты, соответствующие ребрам. Но ведь в точку состояния могут прийти только разные биты, значит речь идет о соотношении 4 выживших ребер. Не могу понять, как соотносить между собой выжившие ребра.
  8. LDPC, turbo-code

    Если лень основательно разбираться, можно получить точки через Матлаб, делайте конструктор модулятора, поле данных с нужным дискретом передавайте в заданном созвездии, принимайте через конструктор демодулятора с указанием получать демодулированный сигнал в ЛЛР. Кстати, там очень доступная справка по этому вопросу.
  9. Есть ли у кого-нибудь материалы или сведения о влиянии длины окна при обратном проходе в SOVA на исправляющую способность?
  10. Цитата(Lerk @ Nov 11 2016, 12:14) Вы, простите, бредите. Куча нулей - такой же мусор, как и куча единиц. И куда у вас встанет бистабильная ячейка при подаче питания зависит от уймы факторов, начиная технологическим разбросом параметров при изготовлении пластины с кристаллами, и заканчивая включенной LED лампочкой с импульсным БП на вашем рабочем столе. Так что выделенное жирным, как раз таки не так. В настройках синтезатора можно указать, что делать с неприкаянными сигналами. Но чтоб от этого не зависеть, лучше указывать в явном виде, вот моя позиция. Но вообще топик был о методах инициализации. По теме один ответ и тот по СВ.
  11. Я согласен с тем, что надо инициализировать. Вы сказали, что память инициализируется мусором. Я сказал, что из праздного интереса это проверял и это не так. Я не говорю, что надо этим пользоваться или рассчитывать на это. Цитата(Bad0512 @ Nov 11 2016, 11:18) 2. "я посмотрел - у меня там нули" - отличная логика. А если вы запускаете свой дизайн повторно, не перегружая целиком ПЛИС? Там тоже нули будут? В обоих случаях (с инициализацией или без) там будут результаты прошлого запуска, блочную память нельзя сбросить за такт.
  12. Цитата(Bad0512 @ Nov 11 2016, 06:10) В ISE есть способы работы с СВ, и даже не один. Какие? Цитата(Bad0512 @ Nov 11 2016, 06:10) И совершенно правильно симулятор поступает! Вы должны благодарить его за такое поведение. Потому что в реальном железе будет то же самое - если вы не записали в память изначально ничего, то там лежит именно мусор, а не нули. Согласен насчет того, что надо все инициализировать, а насчет мусора нет - скомпилил проект в ISE на Kintex7, содержащий неинициализированный массив. Просмотрел содержимое ПЗУ с помощью ILA. Только нули.
  13. Извините, не хочу показаться неблагодарным, но вопрос был в том, знает ли кто-нибудь еще какие-то методы инициализации. То, почему мне не хватает этих - ну это мои заморочки. Цитата(iosifk @ Nov 10 2016, 19:01) Ну, во первых есть параметры. И они указываются один раз на весь проект. Параметры удобны, но надо не забывать их менять. А директива others=>others=> '0' вообще ни к чему не привязана, я про это. Цитата(iosifk @ Nov 10 2016, 19:01) Зачем нужно что-то "инициализировать", Если это не пустой массив, то туда будет сначала что-то писаться и только потом читаться... Затем, что неинициализированный массив выдает неопределенность 'U' и отладка в ISim превращается в сущий ад. Цитата(iosifk @ Nov 10 2016, 19:01) Во-вторых фраза: "как ПЗУ .... Некритично, но неприятно" - ну это просто смешно... А как организовывать массив констант по-вашему? на логике или на триггерах, если есть свободные блоки памяти? Ну массив и задумывался, как ПЗУ на блочной памяти. Я хочу сообщить об этом компилятору, но не знаю как. Если вы знаете, подскажите пожалуйста, буду признателен)
  14. Здравствуйте. Сильно не бейте, пожалуйста, только приступил к изучению Verilog'а. (Да, в дальнейшем собираюсь на СВ, пока нет возможности, потому что работаю в ISE). Собственно, вопросы у меня по памятям: 1. Для того, чтобы инициализировать массив нулями в VHDL достаточно было указать :=(others => (others => '0)); В Verilog я нашел очень удобную инициализацию файлом, умеренно удобную циклом и неудобную ручками. Но файл каждый раз подключать лень, указывать каждый раз размеры массива в цикле - увеличивается вероятность ошибиться. Есть ли какой-то универсальный метод, как вышеуказанный VHDL'ный? 2. Создал массив, инициализировал файлом. Из массива данные только вычитываются, поэтому массив распознается компилятором как ПЗУ и выводит warning, сообщающий об этом. Некритично, но неприятно. В VHDL можно было указать, что массив - не сигнал, а константа. Что можно сделать в Verilog? Спасибо.
  15. Вращение созвездия

    Цитата(KalashKS @ Oct 7 2016, 18:31) Re(y)=Re(x)-Im(x); Im(y)=Re(x)+Im(x); Re(y)=(Re(x)-Im(x))*0,707; Im(y)=(Re(x)+Im(x))*0,707;