Jump to content

    
Sign in to follow this  
MKS

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

Recommended Posts

Добрый день.

Для 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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Для des00

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

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

 

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

Share this post


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

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this