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

Maratz

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник
  1. Лучшие результаты из нескольких рассмотренных вариантов показала такая схема: сравнивать знаки априорной и внешней информации внутреннего декодера и в случае совпадения увеличивать надежность внешней информации на соответствующих позициях и уменьшать в случае несовпадения. Например, на входе 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 коды - это разновидность 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. Господа, может у кого-нибудь есть статья "Low complexity FPGA implementation of Register Exchange Based Viterbi decoder"? Буду очень признателен.
  6. Здравствуйте. Помогите разобраться со следующим вопросом: при реализации обратного прохода необходимо сравнивать выживший путь и путь-конкурент. Но как правильно его выбрать? К примеру, возьмем решетку на 4 состояния, скорость 1/2. В каждое состояние приходит два сравниваемых ребра. После процедуры ССВ на данном участке решетки из 8 возможных остается 4 ребра, одно из которых соответствует правильному пути. В литературе (при обратном проходе методом register exchange) рекомендуют в этот момент зафиксировать три параметра: выживший путь, абсолютную разницу метрик и были ли равны биты, соответствующие ребрам. Но ведь в точку состояния могут прийти только разные биты, значит речь идет о соотношении 4 выживших ребер. Не могу понять, как соотносить между собой выжившие ребра.
  7. Если лень основательно разбираться, можно получить точки через Матлаб, делайте конструктор модулятора, поле данных с нужным дискретом передавайте в заданном созвездии, принимайте через конструктор демодулятора с указанием получать демодулированный сигнал в ЛЛР. Кстати, там очень доступная справка по этому вопросу.
  8. Есть ли у кого-нибудь материалы или сведения о влиянии длины окна при обратном проходе в SOVA на исправляющую способность?
  9. В настройках синтезатора можно указать, что делать с неприкаянными сигналами. Но чтоб от этого не зависеть, лучше указывать в явном виде, вот моя позиция. Но вообще топик был о методах инициализации. По теме один ответ и тот по СВ.
  10. Я согласен с тем, что надо инициализировать. Вы сказали, что память инициализируется мусором. Я сказал, что из праздного интереса это проверял и это не так. Я не говорю, что надо этим пользоваться или рассчитывать на это. В обоих случаях (с инициализацией или без) там будут результаты прошлого запуска, блочную память нельзя сбросить за такт.
  11. Какие? Согласен насчет того, что надо все инициализировать, а насчет мусора нет - скомпилил проект в ISE на Kintex7, содержащий неинициализированный массив. Просмотрел содержимое ПЗУ с помощью ILA. Только нули.
  12. Извините, не хочу показаться неблагодарным, но вопрос был в том, знает ли кто-нибудь еще какие-то методы инициализации. То, почему мне не хватает этих - ну это мои заморочки. Параметры удобны, но надо не забывать их менять. А директива others=>others=> '0' вообще ни к чему не привязана, я про это. Затем, что неинициализированный массив выдает неопределенность 'U' и отладка в ISim превращается в сущий ад. Ну массив и задумывался, как ПЗУ на блочной памяти. Я хочу сообщить об этом компилятору, но не знаю как. Если вы знаете, подскажите пожалуйста, буду признателен)
  13. Здравствуйте. Сильно не бейте, пожалуйста, только приступил к изучению Verilog'а. (Да, в дальнейшем собираюсь на СВ, пока нет возможности, потому что работаю в ISE). Собственно, вопросы у меня по памятям: 1. Для того, чтобы инициализировать массив нулями в VHDL достаточно было указать :=(others => (others => '0)); В Verilog я нашел очень удобную инициализацию файлом, умеренно удобную циклом и неудобную ручками. Но файл каждый раз подключать лень, указывать каждый раз размеры массива в цикле - увеличивается вероятность ошибиться. Есть ли какой-то универсальный метод, как вышеуказанный VHDL'ный? 2. Создал массив, инициализировал файлом. Из массива данные только вычитываются, поэтому массив распознается компилятором как ПЗУ и выводит warning, сообщающий об этом. Некритично, но неприятно. В VHDL можно было указать, что массив - не сигнал, а константа. Что можно сделать в Verilog? Спасибо.
  14. Re(y)=(Re(x)-Im(x))*0,707; Im(y)=(Re(x)+Im(x))*0,707;
×
×
  • Создать...