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

Дробное понижение тактовой частоты после АЦП

Добрый день.

Для QPSK демодулятора пытаюсь сделать систему символьной синхронизации на основе полиномиального интерполтора и NCO. Трудность в том что сигнал оцифровывается с частотой 6 отсчётов на символ, а практически вся схема должна работать на 4-х, 2-х и 1-м отсчёте на символ. Соорудил модель в simulink в которой с помощю NCO и интерполятора получаю деление на 6/4. Вроде всё работает нормально. Но при реализации её на Verilog получаю неправильную работу - созвездие при скачках сигнала delta (смотри модель) разваливается. Корень проблемы, как мне видится, во времянке которую выдаёт verilog версия NCO. Собственно у меня просьба, кто разбирается в данном вопросе не могли бы взглянуть на модель и на код NCO и подсказать что не так, и как делать правильно.

Заранее спасибо.

symbol_nco_otr_frac.zip timing_recovery_6_4sps_tmp_matlab2006b.zip

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


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

1. я же засылал в твою почту модель дробного децимирующего NCO. Не помогло ? %)))

2. в коде разъезжаются delta_o и sps4_ce_o. ну и остальные стробы

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


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

Для des00

1. Посмотрел почту, там только интерполирующий NCO, либо может это было очень давно :) . Собственно simulink модель которую я прикрепил к сообщению работает, или в ней что то не так ?

2. То что в коде всё разезжается, я тоже заметил. Но вот понять почему так происходит и исправить ситуацию моего мозга уже не хватает :wacko:

 

Не могу понять как вообще подходить к проектированию подобной системы. Я в начале нарисовал на бумаге дискретные отсчёты с АЦП, посчитал точки в которых надо интерполировать последовательность, попытался интуитивно соорудить такой генератор-интерполятор, но ничего рабочего пока не получилось. Может есть какие то методики по которым можно синтезировать подобную схему?

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


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

1. Посмотрел почту, там только интерполирующий NCO, либо может это было очень давно :) . Собственно simulink модель которую я прикрепил к сообщению работает, или в ней что то не так ?

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

2. То что в коде всё разезжается, я тоже заметил. Но вот понять почему так происходит и исправить ситуацию моего мозга уже не хватает :wacko: Не могу понять как вообще подходить к проектированию подобной системы.

вот этот разъезд и нужно убрать. на выходе дельта и се, на котором эта дельта была посчитанна, должны быть в один и тот же момент времени. Под этот же момент времени должны быть подогнанны остальные се "клоки". Ну и при обработке надо не забывать что се должны быть выровненны относительно друг друга и выходов блоков %)

 

подходить как к обычному NCO, решая вопрос, как посчитать 4спс сигнал, на 6спс частоте. дельта зависит от того, какой именно интерполятор вы используете (порядок и архитектура).

 

Ну и при построении дробного интерполирующего и децимирующего NCO есть большая разница, если первый реализуется как счетчик с дробным инкрементом по фиксированному модулю == 1, то второй как счетчик с фиксированным инкрементом по дробному модулю. Как я вижу у вас с этим все нормально. Странно что не работает.

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


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

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

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

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

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

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

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

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

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

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