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

Изменение фазы РЧ сигнала на небольшой угол

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

 

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

 

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

 

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

 

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

 

Спасибо.

Изменено пользователем Vagant

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


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

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

 

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

Изменено пользователем Taradov Alexander

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


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

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

 

В цифровой.

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


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

В цифровой.

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

Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус.

Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать.

Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.

Изменено пользователем i.cf

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


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

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

Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус.

Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать.

Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.

 

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

 

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

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


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

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

 

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

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


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

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

 

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

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


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

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

 

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

 

Тогда из исходного синуса нужно еще косинус получить. Если он будет, то вышеупомянутая фильтрация не нужна и предложеный метод - это то, что я и имел в виду. В общем формулы тригонометрии помогут.

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


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

Тогда из исходного синуса нужно еще косинус получить. Если он будет, то вышеупомянутая фильтрация не нужна и предложеный метод - это то, что я и имел в виду. В общем формулы тригонометрии помогут.

 

Спасибо. Попробую вариант с вращением.

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


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

Да, но можно посмотреть с другой стороны на это 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

 

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

Вот и получается, что почти тоже самое!

Как получить угол в градусах в зависимости от tдоб я написал в посте, просто не расписывал. Что Вас там смутило?

Изменено пользователем i.cf

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


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

Что Вас там смутило?

 

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

Изменено пользователем Vagant

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


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

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

Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус.

Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать.

Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.

 

Можно умножить частоту раза в два, а потом двигать фазу как захочется при помощи CDCF5801A . У нее шаг примерно полградуса.

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


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

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

 

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

 

На случай, если еще актуально.

Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле.

crdcsrvy.pdf

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


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

На случай, если еще актуально.

Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле.

 

Да, ещё актуально. Спасибо большое. :)

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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