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

Алгоритм Витерби.

Доброго времени суток.

Встала задача разобраться в аппаратной реализации алгоритма Витерби на ПЛИС.

Открыл документацию на IP ядро Xilinx viterbi_ds247, а там в табл. 8 на стр. 28 есть три варианта реализации, параллельный, последовательный и мультиканальный.

Вот смотрю я на параллельный вариант со следующими параметрами K=7, R=1/2, Traceback=96, Soft Width=3. А там пропускная способность равна тактовой. 8-).

Вот как так получается, что там 64 состояния с разрядностью не менее 3 бит, т.е. не менее 192 бит, за один такт надо положить в два (!) блока памяти.

У меня получается даже в True Dual Port Mode, за такт можно положить не более 36*2*2=144 бит.

Подскажите пожалуйста, где я что-то упустил или не так понял.

Всем спасибо.

 

PS Интересно а внутренние метрики какой разрядности?

PPS Файл прикрепил.

 

 

viterbi_ds247.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же только трейсбек на памяти реализован. ACS реализован без памяти, под каждое состояние свой аккумулятор. Трейсбек не требует записи мягкой метрики состояния, т.к. для двоичных решеток, там будет 1 бит на состояние. Ну и реализуется трейсбек как LIFO, поэтому и стоит там 2 LIFO, для работы в режиме интерливинга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же только трейсбек на памяти реализован.

 

Видимо, я не так понимаю этот процесс.

Подскажите пожалуйста, где про трейсбек и извлечения декодированных данных написано по подробнее, чем в прокисе?

Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо, я не так понимаю этот процесс.

Подскажите пожалуйста, где про трейсбек и извлечения декодированных данных написано по подробнее, чем в прокисе?

мне морелоса-сарагосы хватило, а так в сети информации как грязи. а набрав в матлабе hdlcoderviterbi у вас будет прекрасная возможность изучить на кубиках как строиться декодер витерби без обратного прохода (на регистрах)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А так в сети информации как грязи.

 

В этом и проблема, чтобы найти что-то достойное надо перелопатить кучу не очень достойного.

 

а набрав в матлабе hdlcoderviterbi

 

hdl coder viterbi :)

Спасибо.

 

Там же только трейсбек на памяти реализован. ACS реализован без памяти, под каждое состояние свой аккумулятор. Трейсбек не требует записи мягкой метрики состояния, т.к. для двоичных решеток, там будет 1 бит на состояние. Ну и реализуется трейсбек как LIFO, поэтому и стоит там 2 LIFO, для работы в режиме интерливинга.

Извините, еще пара уточняющих вопросов.

Допустим трейсбек равен 100. R=1/2. Декодер начинает, декодировать из нулевого состояния.

Правильно ли я понимая, что через 100 информационных бит (200 символов) он должен выбрать максимальную метрику и из этой метрики будет только один путь назад? Таким образом все данные можно извлечь или только, тот бит который был 200 символов назад.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все зависит от конструкции кода. Почитайте, как вам советовал Des00,

 

Искусство помехоустойчивого кодирования - методы, алгоритмы, применение

Морелос-Сарагоса Р.

 

Там описаны особенности применения алгоритма Витерби для блоковых конструкций с termination и tail-biting.

 

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

 

Допустим трейсбек равен 100. R=1/2. Декодер начинает, декодировать из нулевого состояния.

Правильно ли я понимая, что через 100 информационных бит (200 символов) он должен выбрать максимальную метрику и из этой метрики будет только один путь назад? Таким образом все данные можно извлечь или только, тот бит который был 200 символов назад.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Чтобы получить один бит данных.

Для линии задержки - это одно обращение к памяти, а для обратного прохода (длиной TB) - количество обращений к памяти равно TB.

Это так?

 

Но при этом в случае использования обратного прохода - объем памяти равен равен 2^(K-1)*TB, а в случае линии задержки 2^(K-1)*TB^2?

K- кодовое ограничение.

 

Я правильно понял Морлеса-Саргосу?

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть 2 способа обновления памяти путей и получения информационного бита:

 

1. Обратный проход (Trace back). Обычно используется в аппаратной реализации, в которой память путей реализована на триггерах (ЛЗ). Требует [2^(K-1)]*TB бит для памяти путей 1 канала декодирования. Потенциально может работать на скорости 1 бит на выходе за 1 такт.

 

2. Обмен между регистрами (Register exchange). Обычно используется при реализации, в которой память путей реализована на блоке или блоках памяти, например при программной реализации. Требует [2^(K-1)]*TB*2 бит для памяти путей

 

Разница между ними в том, когда применяется диаграмма состояний кодера. Для (1) - при вычитывании информационного бита, для (2) - при обновлении путей декодирования и путевых метрик.

 

Литературы и примеров для обоих способов очень много.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...