Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Изменение фазы РЧ сигнала на небольшой угол
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Цифровые схемы, высокоскоростные ЦС
Vagant
Здравствуйте,

Пожалуйста, посоветуйте как можно изменять фазу радиочастотного сигнала (с частотой 8 МГц и амплитудой 5 вольт) на определённый угол который можно изменять, например на один (или несколько) градусов.

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

Иначе говоря, интересует метод по которому работает схема на входе которой РЧ сигнал с некоторой фазой а на выходе этот же РЧ сигнал но фаза увеличена на несколько градусов.

P.S. Предполагается реализовывать схему на ПЛИС (набор Xilinx Microblaze 1600E) или микропроцессорном наборе Rabbit RCM3200. Я пока только учусь программировать системы на этих наборах.

Спасибо.
ataradov
Раз уж речь зашлп о ПЛИС, возникает вопрос: Вам это в цифровой форме нужно или в аналоговой? Вы для поворотоа фазы собралось оцифровывать сигнал, а потом переводить его обратно в аналог?

Если для аналога, то вот: Фазосдвигающие цепи
Vagant
Цитата(Taradov Alexander @ Aug 27 2009, 08:55) *
Раз уж речь зашлп о ПЛИС, возникает вопрос: Вам это в цифровой форме нужно или в аналоговой?


В цифровой.
i.cf
Цитата
В цифровой.

Если я все правильно понял - то Вам будет достаточно организовать задержку, которая и обеспечит сдвиг фазы.
Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус.
Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать.
Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.
Vagant
Цитата(i.cf @ Aug 27 2009, 20:24) *
Если я все правильно понял - то Вам будет достаточно организовать задержку, которая и обеспечит сдвиг фазы.
Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус.
Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать.
Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.


А разве временная задержка и фазовый сдвиг это одно и тоже?

P.S. В уравнении колебания S(t)=S*cos(w*t+Phi) задержка должна прибавляться ко времени, которое умножено на частоту, а фаза то складывается с произведением частоты и времени. То есть задержка и фаза по разному учитываются.
ataradov
Цитата(Vagant @ Aug 27 2009, 21:55) *
А разве временная задержка и фазовый сдвиг это одно и тоже?

P.S. В уравнении колебания S(t)=S*cos(w*t+Phi) задержка должна прибавляться ко времени, которое умножено на частоту, а фаза то складывается с произведением частоты и времени. То есть задержка и фаза по разному учитываются.


Да, но можно посмотреть с другой стороны на это S(t)=S*cos(w*t+Phi) = S*cos(w*(t-t0)+(Phi+w*t0)).
w*t0 - константа, искомый сдвиг. То что время немного поменялось - это не страшно.

PS: единственное неудобство тут то, что нужно иметь достаточно большое число отсчетов, чтобы обеспечить плавное изменение фазы. Если привлекапть математику, то может потребоваться сложная обработка (фильтрация). Но зато можно иметь совсем мало отсчетов.
Vagant
А можно ли использовать такой подход:

Вращение вектора, представляющего гармоническое колебание, на угол phi можно представить как результат произведения его компонент на cos(phi) и sin(phi). То есть надо составить таблицу коэффициентов для разных углов вращения и для нужного угла умножать компоненты сигнала на соответствующие этому углу коэффициенты, а потом эти произведения (новые компоненты сигнала) сложить чтобы получить сигнал после вращения.
ataradov
Цитата(Vagant @ Aug 27 2009, 22:04) *
А можно ли использовать такой подход:

Вращение вектора, представляющего гармоническое колебание, на угол phi можно представить как результат произведения его компонент на cos(phi) и sin(phi). То есть надо составить таблицу коэффициентов для разных углов вращения и для нужного угла умножать компоненты сигнала на соответствующие этому углу коэффициенты, а потом эти произведения (новые компоненты сигнала) сложить чтобы получить сигнал после вращения.


Тогда из исходного синуса нужно еще косинус получить. Если он будет, то вышеупомянутая фильтрация не нужна и предложеный метод - это то, что я и имел в виду. В общем формулы тригонометрии помогут.
Vagant
Цитата(Taradov Alexander @ Aug 27 2009, 21:06) *
Тогда из исходного синуса нужно еще косинус получить. Если он будет, то вышеупомянутая фильтрация не нужна и предложеный метод - это то, что я и имел в виду. В общем формулы тригонометрии помогут.


Спасибо. Попробую вариант с вращением.
i.cf
Цитата(Taradov Alexander @ Aug 27 2009, 21:02) *
Да, но можно посмотреть с другой стороны на это S(t)=S*cos(w*t+Phi) = S*cos(w*(t-t0)+(Phi+w*t0)).

Вот именно!
И можно увидеть, что Phi можно заменить на w*tдоб.
Специально расписываю:
Код
S(t)=S*cos(w*t+Phi)
Phi = w*tдоб
w = 2pi * 8MHz
tдоб = Phi/w = Phi / (2pi*8000000)

Для Phi = 360 = 2pi
tдоб =  = 2pi / (2pi*8000000) - 1/8000000 = 0,125 * 10^-6

Для Phi = 180 = pi
tдоб =  = pi / (2pi*8000000) - 1/8000000 = 0,0625 * 10^-6

Для Phi = 1 = pi/180
tдоб =  = (pi/180) / (2pi*8000000) - 1/8000000 = ,0003472 * 10^-6


Цитата(Vagant @ Aug 27 2009, 20:55) *
А разве временная задержка и фазовый сдвиг это одно и тоже?

Вот и получается, что почти тоже самое!
Как получить угол в градусах в зависимости от tдоб я написал в посте, просто не расписывал. Что Вас там смутило?
Vagant
Цитата(i.cf @ Aug 27 2009, 21:45) *
Что Вас там смутило?


Для моей системы задержки порядка микросекунд слишком велики поэтому такой метод мне не подходит.
=AK=
Цитата(i.cf @ Aug 28 2009, 02:54) *
Если я все правильно понял - то Вам будет достаточно организовать задержку, которая и обеспечит сдвиг фазы.
Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус.
Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать.
Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.


Можно умножить частоту раза в два, а потом двигать фазу как захочется при помощи CDCF5801A . У нее шаг примерно полградуса.
hobgoblin
Цитата(Vagant @ Aug 27 2009, 22:04) *
А можно ли использовать такой подход:

Вращение вектора, представляющего гармоническое колебание, на угол phi можно представить как результат произведения его компонент на cos(phi) и sin(phi). То есть надо составить таблицу коэффициентов для разных углов вращения и для нужного угла умножать компоненты сигнала на соответствующие этому углу коэффициенты, а потом эти произведения (новые компоненты сигнала) сложить чтобы получить сигнал после вращения.


На случай, если еще актуально.
Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле.
Vagant
Цитата(hobgoblin @ Sep 22 2009, 13:38) *
На случай, если еще актуально.
Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле.


Да, ещё актуально. Спасибо большое. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.