реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Изменение фазы РЧ сигнала на небольшой угол
Vagant
сообщение Aug 27 2009, 04:52
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Здравствуйте,

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

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

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

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

Спасибо.

Сообщение отредактировал Vagant - Aug 27 2009, 04:54
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 27 2009, 05:55
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



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

Если для аналога, то вот: Фазосдвигающие цепи

Сообщение отредактировал Taradov Alexander - Aug 27 2009, 05:57
Go to the top of the page
 
+Quote Post
Vagant
сообщение Aug 27 2009, 16:52
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



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


В цифровой.
Go to the top of the page
 
+Quote Post
i.cf
сообщение Aug 27 2009, 17:24
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-08-09
Из: Украина, Харьков
Пользователь №: 52 034



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

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

Сообщение отредактировал i.cf - Aug 27 2009, 17:28
Go to the top of the page
 
+Quote Post
Vagant
сообщение Aug 27 2009, 17:55
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(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) задержка должна прибавляться ко времени, которое умножено на частоту, а фаза то складывается с произведением частоты и времени. То есть задержка и фаза по разному учитываются.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 27 2009, 18:02
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Цитата(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: единственное неудобство тут то, что нужно иметь достаточно большое число отсчетов, чтобы обеспечить плавное изменение фазы. Если привлекапть математику, то может потребоваться сложная обработка (фильтрация). Но зато можно иметь совсем мало отсчетов.

Сообщение отредактировал Taradov Alexander - Aug 27 2009, 18:04
Go to the top of the page
 
+Quote Post
Vagant
сообщение Aug 27 2009, 18:04
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



А можно ли использовать такой подход:

Вращение вектора, представляющего гармоническое колебание, на угол phi можно представить как результат произведения его компонент на cos(phi) и sin(phi). То есть надо составить таблицу коэффициентов для разных углов вращения и для нужного угла умножать компоненты сигнала на соответствующие этому углу коэффициенты, а потом эти произведения (новые компоненты сигнала) сложить чтобы получить сигнал после вращения.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 27 2009, 18:06
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Цитата(Vagant @ Aug 27 2009, 22:04) *
А можно ли использовать такой подход:

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


Тогда из исходного синуса нужно еще косинус получить. Если он будет, то вышеупомянутая фильтрация не нужна и предложеный метод - это то, что я и имел в виду. В общем формулы тригонометрии помогут.
Go to the top of the page
 
+Quote Post
Vagant
сообщение Aug 27 2009, 18:16
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



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


Спасибо. Попробую вариант с вращением.
Go to the top of the page
 
+Quote Post
i.cf
сообщение Aug 27 2009, 18:45
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-08-09
Из: Украина, Харьков
Пользователь №: 52 034



Цитата(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доб я написал в посте, просто не расписывал. Что Вас там смутило?

Сообщение отредактировал i.cf - Aug 27 2009, 18:46
Go to the top of the page
 
+Quote Post
Vagant
сообщение Aug 27 2009, 20:24
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(i.cf @ Aug 27 2009, 21:45) *
Что Вас там смутило?


Для моей системы задержки порядка микросекунд слишком велики поэтому такой метод мне не подходит.

Сообщение отредактировал Vagant - Aug 27 2009, 20:36
Go to the top of the page
 
+Quote Post
=AK=
сообщение Sep 18 2009, 04:42
Сообщение #12


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



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


Можно умножить частоту раза в два, а потом двигать фазу как захочется при помощи CDCF5801A . У нее шаг примерно полградуса.
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Sep 22 2009, 10:38
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Цитата(Vagant @ Aug 27 2009, 22:04) *
А можно ли использовать такой подход:

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


На случай, если еще актуально.
Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле.
Прикрепленные файлы
Прикрепленный файл  crdcsrvy.pdf ( 120.74 килобайт ) Кол-во скачиваний: 132
 
Go to the top of the page
 
+Quote Post
Vagant
сообщение Oct 22 2009, 13:07
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



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


Да, ещё актуально. Спасибо большое. smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01461 секунд с 7
ELECTRONIX ©2004-2016